Advertisement
xiaomianao666

邀您一起看:喜欢听音乐的梦

Dec 22nd, 2024
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥喜欢听音乐的梦@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbXSxcInBhcmFtc1wiOlwie1xcXCJjbHNcXFwiOlxcXCJlbGVsaXN0IOaXpeW4uOS5puetvue7hCDlvIDlhbNcXFwiLFxcXCJpZFxcXCI6XFxcIuaIkeeahOS4u+mhtSPpn7PkuZDmrYzljZVcXFwiLFxcXCJsb25nQ2xpY2tcXFwiOlt7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICBldmFsKGZldGNoKGpVcmwpKTtcXFxcbiAgICBjb25zdCBMb2NhbGZpbGUgPSBIaWtlckhvbWUuZ2V0TG9jYWxmaWxlKCk7XFxcXG4gICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcIkJvb2ttYXJrc0xpc3RcXFxcXFxcIikpO1xcXFxuICAgIGlmIChpc0dyb3VwKSB7XFxcXG4gICAgICAgIHZhciB0ZW0gPSBib29rTWFyay5nZXRfZ3JvdXAoa2V5LCBpbmRleCk7XFxcXG4gICAgICAgIHRlbS5zdGF0dXMgPSAhdGVtLnN0YXR1cztcXFxcbiAgICAgICAgYm9va01hcmsubW9kaWZ5X2dyb3VwKGtleSwgdGVtLCBpbmRleCk7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdmFyIHRlbSA9IGJvb2tNYXJrLmdldChrZXkpO1xcXFxuICAgICAgICB0ZW0uc3RhdHVzID0gIXRlbS5zdGF0dXM7XFxcXG4gICAgICAgIGJvb2tNYXJrLm1vZGlmeShrZXksIHRlbSk7XFxcXG4gICAgfVxcXFxuICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG59XFxcXG4pKDIsXFxcXFxcXCJoaWtlcjovL2Fzc2V0cy9ob21lLmpzXFxcXFxcXCIsMTEsdHJ1ZSlcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuWFsyDpl61cXFwifSx7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgZ3JvdXBOYW1lKSA9PiB7XFxcXG4gICAgZXZhbChmZXRjaChqVXJsKSk7XFxcXG4gICAgcmV0dXJuICQoKS54NWNLZXkoXFxcXFxcXCJtb2RpZnlAXFxcXFxcXCIgKyBrZXkgKyBcXFxcXFxcIkBcXFxcXFxcIiArIChncm91cE5hbWUgfHwgXFxcXFxcXCIjXFxcXFxcXFx1N2E3YVxcXFxcXFxcdTc2N2RcXFxcXFxcXHU3ZWM0I1xcXFxcXFwiKSk7XFxcXG59XFxcXG4pKDIsXFxcXFxcXCJoaWtlcjovL2Fzc2V0cy9ob21lLmpzXFxcXFxcXCIsXFxcXFxcXCLml6XluLjkuabnrb7nu4RcXFxcXFxcIilcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuS/riDmlLlcXFwifSx7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgbiwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICBldmFsKGZldGNoKGpVcmwpKTtcXFxcbiAgICBjb25maXJtKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcXHU2ZTI5XFxcXFxcXFx1OTlhOFxcXFxcXFxcdTYzZDBcXFxcXFxcXHU3OTNhXFxcXFxcXCIsIGNvbnRlbnQ6IFxcXFxcXFwiXFxcXFxcXFx1Nzg2ZVxcXFxcXFxcdThiYTRcXFxcXFxcXHU1MjIwXFxcXFxcXFx1OTY2NFxcXFxcXFxcdTMwMGNcXFxcXFxcIiArIG4gKyBcXFxcXFxcIlxcXFxcXFxcdTMwMGQ/XFxcXFxcXCIsIGNvbmZpcm06ICQudG9TdHJpbmcoKGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICAgICAgZXZhbChmZXRjaChqVXJsKSk7XFxcXG4gICAgICAgIGNvbnN0IExvY2FsZmlsZSA9IEhpa2VySG9tZS5nZXRMb2NhbGZpbGUoKTtcXFxcbiAgICAgICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcIkJvb2ttYXJrc0xpc3RcXFxcXFxcIikpO1xcXFxuICAgICAgICBpZiAoaXNHcm91cCkge1xcXFxuICAgICAgICAgICAgYm9va01hcmsuZGVsX2dyb3VwKGtleSwgaW5kZXgpO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgYm9va01hcmsuZGVsKGtleSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcdTVkZjJcXFxcXFxcXHU1MjIwXFxcXFxcXFx1OTY2NFxcXFxcXFwiO1xcXFxuICAgIH1cXFxcbiAgICAsIGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApfSk7XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxufVxcXFxuKSgyLFxcXFxcXFwiaGlrZXI6Ly9hc3NldHMvaG9tZS5qc1xcXFxcXFwiLFxcXFxcXFwi6Z+z5LmQ5q2M5Y2VXFxcXFxcXCIsMTEsdHJ1ZSlcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuWIoCDpmaRcXFwifV19XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuaIkeeahOS4u+mhtVwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub1JlY29yZEhpc3RvcnkjO2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxNe+8m++8myAyNDA3RlJLOEVDIEJ1aWxkL0FQM0EuMjQwNjE3LjAwOO+8m++8myB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzEyOC4wLjY2MTMuMTI3IE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcImljb25fc21hbGxfNFwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKCkgPT4ge1xcbiAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NTU5Y1xcXFx1NmIyMlxcXFx1NTQyY1xcXFx1OTdmM1xcXFx1NGU1MFxcXFx1NzY4NFxcXFx1NjhhNlxcXCIpO1xcbiAgICBsZXQgZCA9IFtdO1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGlkID0gZ2V0SXRlbShcXFwibXVzaWNfaW1nXFxcIiwgXFxcImRvbmdtYW5cXFwiKTtcXG4gICAgICAgIHZhciBmaWxlID0gXFxcImhpa2VyOi8vZmlsZXMvSm0vcG5nL1xcXCIgKyBpZCArIFxcXCIuanNvblxcXCI7XFxuICAgICAgICB2YXIgaW1nbGlzdCA9IEpTT04ucGFyc2UoZmV0Y2goZmlsZSkpO1xcbiAgICAgICAgbGV0IG1heCA9IGltZ2xpc3QubGVuZ3RoIC0gMTtcXG4gICAgICAgIGxldCBtaW4gPSAwO1xcbiAgICAgICAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XFxuICAgICAgICB2YXIgc2hvd0ltZyA9IGltZ2xpc3RbbnVtXTtcXG4gICAgfVxcbiAgICBjYXRjaCB7XFxuICAgIH1cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NmMzOFxcXFx1OGZkY1xcXFx1NzZmOFxcXFx1NGZlMVxcXFx1N2Y4ZVxcXFx1NTk3ZFxcXFx1NzY4NFxcXFx1NGU4YlxcXFx1NjBjNVxcXFx1NTM3M1xcXFx1NWMwNlxcXFx1NTNkMVxcXFx1NzUxZlxcXFx1ZmYwMVxcXCIsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjggXFxcXHU0ZWFjXFxcXHU2OGE2XFxcXG5cXFxcblxcXFx1ZDgzZFxcXFx1ZGM0OVxcXFx1ZDgzY1xcXFx1ZGZmYiBcXFxcdTY3MmNcXFxcdTU3MzBcXFxcdTk3ZjNcXFxcdTRlNTBcXFwiLCBwaWM6IHNob3dJbWcgfHwgXFxcIlxcXCIsIHVybDogXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7b3B0aW9uczogW1xcXCJcXFxcdTY3MmNcXFxcdTU3MzBcXFxcdTk3ZjNcXFxcdTRlNTBcXFwiLCBcXFwiXFxcXHU2NmY0XFxcXHU2MzYyXFxcXHU1NmZlXFxcXHU3MjQ3XFxcIl0sIGF0dGFjaFZpZXc6IHRydWUsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIlxcXFx1NjcyY1xcXFx1NTczMFxcXFx1OTdmM1xcXFx1NGU1MFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2xvY2FsTWVkaWFcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IFtcXFwiXFxcXHU1MmE4XFxcXHU2ZjJiXFxcIiwgXFxcIlxcXFx1N2Y4ZVxcXFx1NTk3M1xcXCIsIFxcXCJcXFxcdTk4Y2VcXFxcdTY2NmZcXFwiLCBcXFwiXFxcXHU2YzdkXFxcXHU4ZjY2XFxcIiwgXFxcIlxcXFx1NTJhOFxcXFx1NTZmZVxcXCJdO1xcbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBbXFxcImRvbmdtYW5cXFwiLCBcXFwibWVpbnZcXFwiLCBcXFwiZmVuZ2ppbmdcXFwiLCBcXFwicWljaGVcXFwiLCBcXFwiZ2lmXFxcIl07XFxuICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gdGl0bGUubWFwKChpdGVtLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtuYW1lOiBpdGVtLCBpZDogaWRbaW5kZXhdfTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxpc3QubWFwKGogPT4gai5uYW1lKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgMiwgXFxcIlxcXFx1Mjc1N1xcXFx1ZmUwZlxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1NWYxNVxcXFx1NzUyOFxcXFx1NzY4NFxcXFx1NTkyOVxcXFx1NmMxNFxcXCIpLnNlbGVjdCgobGlzdCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBsaXN0LmZpbmRJbmRleChqID0+IGoubmFtZSA9PSBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gbGlzdFthXS5pZDtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIm11c2ljX2ltZ1xcXCIsIHVybCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgbGlzdCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgKX0pfSwge2NvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIn0sIHtjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJ9LCB7dGl0bGU6IFxcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFxcdTZiNGNcXFxcdTUzNTVcXFwiLCBjb2xfdHlwZTogXFxcImljb25fM19yb3VuZF9maWxsXFxcIiwgcGljOiBcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy84NS5zdmdcXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSkge1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIiwgXFxcIlt7XFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXHU3MGVkXFxcXHU2NDFjXFxcXHU2YjRjXFxcXHU2NmYyXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9oS0ZyaWJNaHdINENsd05XSnhpY3VDeGp1d0lrYlpQcTRIVlQwUWd4c2RiOEpXUVhYQzJURnN1US82MDA/bj0xXFxcXFxcXCIsXFxcXFxcXCJpZFxcXFxcXFwiOjc1MzI2NzA1Mzh9LHtcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcdTYyOTZcXFxcdTk3ZjNcXFxcdTcwZWRcXFxcdTk1ZThcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL1dwdmRKWGZuNzk4aWJENGdjZmp3ME5TdUJrRlRKWXBZNVFPZXYzRXhjQlFpYW1SY29ia3BONzdnLzYwMD9uPTFcXFxcXFxcIixcXFxcXFxcImlkXFxcXFxcXCI6NzYzMDMwMzQ3NH1dXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgIHJldHVybiAkKGdlZGFuLCAyLCBcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcXHU2YjRjXFxcXHU1MzU1XFxcIikuc2VsZWN0KChnZWRhbikgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgYSA9IGdlZGFuLmZpbmRJbmRleCh0ID0+IHQudGl0bGUgPT0gaW5wdXQpO1xcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBnZWRhblthXS5pZDtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1NmI0Y1xcXFx1NTM1NVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9xcW11c2ljL3YyP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXNvbmdsaXN0JmlkPVxcXCIgKyBpZCkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IGh0bWwubGlzdC5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai50aXRsZSwgc2luZ2VyOiBqLmF1dGhvciwgYWxidW06IGouYWxidW0ubmFtZSwgcGljOiBqLnBpYywgaWQ6IGoubWlkfTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBodG1sLmluZm8udGl0bGUsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjhcXFxcdFxcXCIgKyBodG1sLmluZm8uY3JlYXRvci5uaWNrICsgXFxcIlxcXFxuXFxcXG5cXFxcdWQ4M2NcXFxcdWRmYmNcXFxcdFxcXCIgKyBodG1sLmluZm8uc29uZ251bSArIFxcXCJcXFxcdTk5OTZcXFwiLCBwaWM6IGh0bWwuaW5mby5waWN1cmwsIHVybDogJChcXFwiXFxcIiwgXFxcIlxcXFx1NjZmMlxcXFx1NTQwZFxcXFx1NjIxNlxcXFx1NmI0Y1xcXFx1NjI0YlxcXCIpLmlucHV0KChqc29uKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2VhcmNoKGFycmF5LCBuYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheS5maWx0ZXIoaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5hbWUudG9Mb3dlckNhc2UoKSkgfHwgaXRlbS5zaW5nZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gc2VhcmNoKGpzb24sIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5XFxcIikucnVsZSgocmVzdWx0cykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTY0MWNcXFxcdTdkMjJcXFxcdTdlZDNcXFxcdTY3OWNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCBwaWM6IGoucGljLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL211c2ljL2xyYz9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1xcSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybCwgbHlyaWM6IGxyY30pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2V9fSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcmVzdWx0cyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NmNhMVxcXFx1NjcwOVxcXFx1NjI3ZVxcXFx1NTIzMFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLCBqc29uKSwgZXh0cmE6IHtsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdWQ4M2RcXFxcdWRjZTBcXFxcdTU5MGRcXFxcdTUyMzZcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTVcXFwiLCBqczogJC50b1N0cmluZygoaHRtbCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBodG1sLmluZm8ucGljdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLCBodG1sKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCBwaWNfdXJsOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLmRhdGEudXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfV19fSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgaWQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAsIGdlZGFuKTtcXG4gICAgICAgIH1cXG4gICAgICAgICksIGV4dHJhOiB7bG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHVkODNkXFxcXHVkYzllIFxcXFx1ODNiN1xcXFx1NTNkNlxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIlxcXFx1Mjc1N1xcXFx1ZmUwZlxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTk4MlxcXFx1Njc5Y1xcXFx1NjcwOVxcXFx1NjViMFxcXFx1NTg5ZVxcXFx1ZmYwY1xcXFx1NTIxOVxcXFx1OTcwMFxcXFx1ODk4MVxcXFx1OTFjZFxcXFx1NjViMFxcXFx1ODNiN1xcXFx1NTNkNlxcXFxuXFxcXG5RUVxcXFx1OGQyNlxcXFx1NTNmN1xcXFx1ODNiN1xcXFx1NTNkNlxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL211c2ljL3FxL3VzZXJfbGlzdC5waHA/cXE9XFxcIiArIGlucHV0KSkubXlwbGF5bGlzdC5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIGljb246IGoucGljLCBpZDogai5pZH07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgZ2VkYW4gPSBnZWRhbi5jb25jYXQoanNvbik7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTZkZmJcXFxcdTUyYTBcXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX0sIHt0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGQzMCBcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTdiYTFcXFxcdTc0MDZcXFwiLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU2YjRjXFxcXHU1MzU1XFxcXHU3YmExXFxcXHU3NDA2XFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTYzZDBcXFxcdTUzZDZpZFxcXCIsIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLCBkZXNjOiBcXFwiXFxcXHU4YmY3XFxcXHU4ZjkzXFxcXHU1MTY1XFxcXHU1MjA2XFxcXHU0ZWFiXFxcXHU1NDBlXFxcXHU1OTBkXFxcXHU1MjM2XFxcXHU3Njg0XFxcXHU5NGZlXFxcXHU2M2E1XFxcIiwgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU0ZTBkXFxcXHU4MGZkXFxcXHU0ZTNhXFxcXHU3YTdhXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHQgPSBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1MSA9IHR4dC5zcGxpdChcXFwiJlxcXCIpWzRdO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gdTEuc3BsaXQoXFxcIj1cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvcHkoaWRbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NWRmMlxcXFx1NTkwZFxcXFx1NTIzNlxcXCIgKyBpZFsxXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTZkZmJcXFxcdTUyYTBcXFwiLCBjb2xfdHlwZTogXFxcImlucHV0XFxcIiwgZGVzYzogXFxcIlxcXFx1NjYzZVxcXFx1NzkzYVxcXFx1NTQwZFxcXFx1NzlmMEBcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTVAUVFcXFxcdTk3ZjNcXFxcdTRlNTBpZFxcXCIsIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1OGJmN1xcXFx1NjgzOVxcXFx1NjM2ZVxcXFx1NjNkMFxcXFx1NzkzYVxcXFx1OGY5M1xcXFx1NTE2NVxcXFx1NTE4NVxcXFx1NWJiOVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7dGl0bGU6IG5bMF0sIGljb246IG5bMV0sIGlkOiBuWzJdfTtcXG4gICAgICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU2ZGZiXFxcXHU1MmEwXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApLCBleHRyYToge3R5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsIGhlaWdodDogMn19KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1OTRmZVxcXFx1NjNhNVxcXFx1NTNlZlxcXFx1NGVlNVxcXFx1NTcyOFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NGU4Y1xcXFx1N2VhN1xcXFx1NmQ3N1xcXFx1NjJhNVxcXFx1OTU3ZlxcXFx1NjMwOVxcXFx1NTkwZFxcXFx1NTIzNlxcXFx1ZmYwY1xcXFx1NjI0MFxcXFx1NGVlNVxcXFx1NTNlZlxcXFx1NGVlNVxcXFx1NTE0OFxcXFx1NmRmYlxcXFx1NTJhMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTE4ZFxcXFx1N2YxNlxcXFx1OGY5MVxcXFx1NmRmYlxcXFx1NTJhMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1ZmYwY1xcXFx1NjIxNlxcXFx1ODAwNVxcXFx1ODFlYVxcXFx1NWRmMVxcXFx1OTAwOVxcXFx1NGUwMFxcXFx1NWYyMFxcXFx1NTZmZVxcXFx1NGY1Y1xcXFx1NGUzYVxcXFx1NWMwMVxcXFx1OTc2MlxcXFx1MzAwMlxcXCIsIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAwO1xcbiAgICAgICAgICAgICAgICBnZWRhbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGoudGl0bGUgKyBcXFwiQFxcXCIgKyBqLmljb24gKyBcXFwiQFxcXCIgKyBqLmlkO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaW5kZXggKyBcXFwiLlxcXCIgKyBqLnRpdGxlLCBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLCBwaWM6IGouaWNvbiwgdXJsOiAkKFtcXFwiXFxcXHU3ZjE2XFxcXHU4ZjkxXFxcIiwgXFxcIlxcXFx1NzlmYlxcXFx1NGY0ZFxcXCIsIFxcXCJcXFxcdTUyMjBcXFxcdTk2NjRcXFwiXSwgMywgXFxcIlxcXFx1OGJmN1xcXFx1OTAwOVxcXFx1NjJlOVxcXCIpLnNlbGVjdCgoaW5kZXgsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIlxcXFx1N2YxNlxcXFx1OGY5MVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoaXRlbSwgXFxcIlxcXFx1NjBmM1xcXFx1ODk4MVxcXFx1NjZmNFxcXFx1NjM2MlxcXFx1NzY4NFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTQwZCxcXFxcdTZiNGNcXFxcdTUzNTVpZCxcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTUgXFxcIikuaW5wdXQoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuW2luZGV4XSA9IHt0aXRsZTogblswXSwgaWNvbjogblsxXSwgaWQ6IG5bMl19O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU2NmY0XFxcXHU2NTM5XFxcXHU2MjEwXFxcXHU1MjlmflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFxcdTc5ZmJcXFxcdTRmNGRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIlxcXFx1ODk4MVxcXFx1NzlmYlxcXFx1NTJhOFxcXFx1NTIzMFxcXFx1NTRlYVxcXFx1NGUyYVxcXFx1NWU4ZlxcXFx1NTNmN1xcXFx1NTI0ZFxcXFx1OTc2Mi9cXFxcdTU0MGVcXFxcdTk3NjJcXFwiKS5pbnB1dCgoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGdlZGFuW2luZGV4XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5wdXQsIDAsIHRlbXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA8IGluZGV4KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCArIDEsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU3OWZiXFxcXHU0ZjRkXFxcXHU2MjEwXFxcXHU1MjlmflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NTIyMFxcXFx1OTY2NFxcXFx1NjIxMFxcXFx1NTI5Zn5cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLCBpbmRleCwgaXRlbSl9KTtcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX0sIHt0aXRsZTogXFxcIlxcXFx1MjY3YlxcXFx1ZmUwZiBcXFxcdTYwNjJcXFxcdTU5MGRcXFxcdTllZDhcXFxcdThiYTRcXFwiLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTYwNjJcXFxcdTU5MGRcXFxcdTllZDhcXFxcdThiYTRcXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX1dfX0pO1xcbiAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1Njk5Y1xcXFx1NTM1NVxcXCIsIGNvbF90eXBlOiBcXFwiaWNvbl8zX3JvdW5kX2ZpbGxcXFwiLCBwaWM6IFxcXCJoaWtlcjovL2ZpbGVzL0ptL2xtL211c2ljLzUxLnN2Z1xcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShmYyhcXFwiaHR0cDovL211c2ljLjE2My5jb20vYXBpL3RvcGxpc3RcXFwiLCAyNCkpLmxpc3QubWFwKGwgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBsLm5hbWUsIGljb246IGwuY292ZXJJbWdVcmwsIGlkOiBsLmlkfTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICByZXR1cm4gJChnZWRhbiwgMiwgXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1NjM5MlxcXFx1ODg0Y1xcXFx1Njk5Y1xcXCIpLnNlbGVjdCgoZ2VkYW4pID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBnZWRhbi5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTtcXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gZ2VkYW5bYV0uaWQ7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcXHU2YjRjXFxcXHU1MzU1XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS92Ni9wbGF5bGlzdC9kZXRhaWw/bj0xMDAwJmlkPVxcXCIgKyBpZCwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwMi4wLjAuMCBTYWZhcmkvNTM3LjM2XFxcIiwgXFxcIkNvb2tpZVxcXCI6IFxcXCJvcz1wYzsgTVVTSUNfVT0wMDE3Mzk5N0U1N0RDMTYxMTJEMkUxNTc5RjU1NTQ0NDgxMkU1MTMzRjE2QzM0MjEzRDlCQjVFM0VDRUM4MTg4NDVERjhBMzM2QTNCOUQ0OTVFRTE4MkYzMDAxQUZFQUY5RTk3MTU5MUNDRURDNDcxMzg0MkYzMjk2QTFFNzlERkI3ODE3QThDN0JCODE1NEZGMTU0ODM2NDhGMTg0RDBFNzJEN0QyNkE1NjVFNDQ1MDczODA4MjQ5MDJDMjE1MkNDMEJCNURCOUEzNzlFODBGNkYwM0QwRDk4QjI3OTNBMjAzMjMwMzRERTRBMEJCQjQ2NzJENDhGOTM2Mjk2MEVGMjEzNjE1M0QwMkU3REYxNEM5Q0U4NEYxRjY0QzE2RUIzMDdBNUJCQjU4Njg2QzYwOTUwODJBQTQ1MDU4M0U2NEVBQ0QzRTZCNUJFMERGQ0FDQTkxMjVGMDM1MDU3RkUxN0I1QkRBNjFEODlERjVBQkQ3NzkwNkY1RTVEODU4Qzc0REIyRTE3OEEzQjBFNjA5NURENzU1MThENDgyREM5RDYxMDgwQTYxRDlCNzY1RDdFOThFQkUyMzBDRjAxN0NEOTAyMDgzOTJEM0UxMERFOTY0QTY4MTIxQjZDNjZEMDhDOTAyQTk4RUQ3MTEzQUFFNTlEMUU1NTU5QjA3MURFODMxMjZCOEMyOTVDNzgwQ0NENEIwQjRERTM2RTM1QzA5QUE2MzQzNTVBRURFMkY4ODA5OTg3MTkyNzdFNUVGOUM3QjlDQUZGQzkwRTI3OUFBQTJCQUZDQTQ0QzBBODM1MzdENjA5RTJEQUE1RDVENzc0ODQ4Qzk4REQyODcxMTg4OTVDMUMzRDY1NzQ0NjZGOTI2MkRFQ0UwNzI5MkFDMTU3QzFEQjcwQ0I3MDM5NThBN0ZFNTUzNDRFMjczNDIyRTY5XFxcIn19KSkucGxheWxpc3Q7XFxuICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IGh0bWwudHJhY2tzLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hci5tYXAobiA9PiBuLm5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dGl0bGU6IGoubmFtZSwgc2luZ2VyOiBzaW5nZXIsIGFsYnVtOiBqLnRucywgcGljOiBqLmFsLnBpY1VybCwgaWQ6IGouaWQsIHZpZDogai5tdn07XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbC5kZXNjcmlwdGlvbiwgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcIiArIGh0bWwuY3JlYXRvci5uaWNrbmFtZSArIFxcXCJcXFxcblxcXFxuXFxcXHVkODNjXFxcXHVkZmJjXFxcXHRcXFwiICsgaHRtbC50cmFja0NvdW50ICsgXFxcIlxcXFx1OTk5NlxcXCIsIHBpYzogaHRtbC5jb3ZlckltZ1VybCwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgcGljX3VybDogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gKFxcXCJodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc29uZy9seXJpYz9vcz1wYyZsdj0tMSZrdj0tMSZ0dj0tMSZpZD1cXFwiICsgai5pZCkpLmxyYy5seXJpYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9XFxcIiArIGoudGl0bGUpKS5kYXRhLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfV19fSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgaWQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAsIGdlZGFuKTtcXG4gICAgICAgIH1cXG4gICAgICAgICl9KTtcXG4gICAgICAgIGQucHVzaCh7dGl0bGU6IGdldEl0ZW0oXFxcImt3Z2RcXFwiLCBcXFwibmV3XFxcIikgPT0gXFxcIm5ld1xcXCIgPyBcXFwiXFxcXHU2NzAwXFxcXHU2NWIwXFxcXHU2YjRjXFxcXHU1MzU1XFxcIiA6IFxcXCJcXFxcdTY3MDBcXFxcdTcwZWRcXFxcdTZiNGNcXFxcdTUzNTVcXFwiLCBjb2xfdHlwZTogXFxcImljb25fM19yb3VuZF9maWxsXFxcIiwgcGljOiBcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy84Mi5zdmdcXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHNldEl0ZW0oXFxcImt3Z2RcXFwiLCBnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpID09IFxcXCJuZXdcXFwiID8gXFxcImhvdFxcXCIgOiBcXFwibmV3XFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCJcXFxcdTVkZjJcXFxcdTUyMDdcXFxcdTYzNjJcXFwiICsgKGdldEl0ZW0oXFxcImt3Z2RcXFwiLCBcXFwibmV3XFxcIikgPT0gXFxcIm5ld1xcXCIgPyBcXFwiXFxcXHU2NzAwXFxcXHU2NWIwXFxcXHU2YjRjXFxcXHU1MzU1XFxcIiA6IFxcXCJcXFxcdTY3MDBcXFxcdTcwZWRcXFxcdTZiNGNcXFxcdTUzNTVcXFwiKSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgICl9LCB7dGl0bGU6IFxcXCJcXFxcdTY0MWNcXFxcdTdkMjJcXFwiLCBjb2xfdHlwZTogXFxcImlucHV0XFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZFxcXFx1ZGM0OVxcXFx1ZDgzY1xcXFx1ZGZmYiBcXFxcdTZiNGNcXFxcdTU0MGRcXFxcdTMwMDFcXFxcdTZiNGNcXFxcdTYyNGJcXFxcdTMwMDFcXFxcdTY5OWNcXFxcdTUzNTVcXFxcdTU0MGRcXFxcdTc5ZjBcXFwiLCB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmICghaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1OGJmN1xcXFx1OGY5M1xcXFx1NTE2NVxcXFx1NTE3M1xcXFx1OTUyZVxcXFx1OGJjZFxcXFx1NjQxY1xcXFx1N2QyMlxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciB0eHQgPSBpbnB1dDtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJzc3B0X2lucHV0XFxcIiwgdHh0KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7b3B0aW9uczogW1xcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFwiLCBcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcIiwgXFxcIlxcXFx1NWMwZlxcXFx1ODNiNFxcXCJdLCBhdHRhY2hWaWV3OiB0cnVlLCBqczogJC50b1N0cmluZygodHh0KSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh0eHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1NjQxY1xcXFx1N2QyMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHlpeWFuID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9KbS95aXlhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXggPSB5aXlhbi5sZW5ndGggLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW4gPSAwO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEaXNwbGF5ID0geWl5YW5bbnVtXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvcXFtdXNpYy92Mj9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1zbyZwYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZwZXJfcGFnZT0zMCZ3b3JkPVxcXCIgKyB0eHQpKS5kYXRhLmxpc3QubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLnRpdGxlLCBzaW5nZXI6IGouYXV0aG9yLCBwaWM6IGoucGljLCBhbGJ1bTogai5hbGJ1bS5uYW1lLCBpZDogai5taWR9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGQwZVxcXFx0XFxcIiArIHR4dCwgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcXHU1YzBmXFxcXHU0ZTAzXFxcXHU5N2YzXFxcXHU0ZTUwXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZhOFxcXFx0XFxcIiArIERpc3BsYXkucmVwbGFjZSgv77yMfOOAgi9nLCBcXFwiIFxcXCIpLCBwaWM6IGpzb25bMF0ucGljLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIn0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmZvckVhY2goaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgcGljX3VybDogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD1cXFwiICsgai5pZCkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybCwgbHlyaWM6IGxyY30pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX0sIHt0aXRsZTogXFxcIlxcXFx1ODljMlxcXFx1NzcwYk1WXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkuZGF0YS51cmxdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmx9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopfV19fSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLCB0eHQpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFxcdTVjMGZcXFxcdTgyYjhcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKHR4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1NjQxY1xcXFx1N2QyMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeWl5YW4gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL0ptL3lpeWFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXggPSB5aXlhbi5sZW5ndGggLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEaXNwbGF5ID0geWl5YW5bbnVtXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc2VhcmNoL2dldC93ZWI/dHlwZT0xJm9mZnNldD0wJmxpbWl0PTkwJnM9XFxcIiArIHR4dCkpLnJlc3VsdC5zb25ncy5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hcnRpc3RzLm1hcChzID0+IHMubmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIHNpbmdlcjogc2luZ2VyWzBdLCBwaWM6IFxcXCJodHRwczovL3dhbmdodW4udG9wL3FxbXVzaWMvd3ltdXNpYy5waHA/dHlwZT1waWMmaWQ9XFxcIiArIGouaWQsIGFsYnVtOiBqLmFsYnVtLm5hbWUsIGlkOiBqLmlkLCB2aWQ6IGoubXZpZH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGQwZVxcXFx0XFxcIiArIHR4dCwgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcXHU1YzBmXFxcXHU4MmI4XFxcXHU5N2YzXFxcXHU0ZTUwXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZhOFxcXFx0XFxcIiArIERpc3BsYXkucmVwbGFjZSgv77yMfOOAgi9nLCBcXFwiIFxcXCIpLCBwaWM6IGpzb25bMF0ucGljLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIn0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBwaWNfdXJsOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gKFxcXCJodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS9zb25nL2x5cmljP29zPXBjJmx2PS0xJmt2PS0xJnR2PS0xJmlkPVxcXCIgKyBqLmlkKSkubHJjLmx5cmljO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2UsIGxvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1NGUwYlxcXFx1OGY3ZFxcXFx1NmI0Y1xcXFx1NjZmMlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX0sIHt0aXRsZTogXFxcIlxcXFx1ODljMlxcXFx1NzcwYk1WXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHQuc3BsaXQoXFxcIiBcXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCB0eHQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKHR4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1ODNiNFxcXFx1NjQxY1xcXFx1N2QyMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeWl5YW4gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL0ptL3lpeWFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXggPSB5aXlhbi5sZW5ndGggLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEaXNwbGF5ID0geWl5YW5bbnVtXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3NlYXJjaC5rdXdvLmNuL3Iucz9jbGllbnQ9a3QmcG49XFxcIiArIChNWV9QQUdFIC0gMSkgKyBcXFwiJnJuPTMwJnZpcHZlcj0xJmZ0PW11c2ljJmVuY29kaW5nPXV0ZjgmcmZvcm1hdD1qc29uJm1vYmk9MSZhbGw9XFxcIiArIHR4dCkpLmFic2xpc3QubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltZyA9IChcXFwiaHR0cDovL2ltZzEua3djZG4ua3V3by5jbi9zdGFyL2FsYnVtY292ZXIvNTAwXFxcIiArIGoud2ViX2FsYnVtcGljX3Nob3J0LnNwbGl0KFxcXCIxMjBcXFwiKVsxXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLlNPTkdOQU1FLCBzaW5nZXI6IGouQVJUSVNULCBwaWM6IGltZywgYWxidW06IGouQUxCVU0sIHJpZDogai5EQ19UQVJHRVRJRCwgdmlkOiBqLm12cGF5aW5mby52aWR9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMGVcXFxcdFxcXCIgKyB0eHQsIHBpYzoganNvblswXS5waWMsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjhcXFxcdFxcXFx1NWMwZlxcXFx1ODNiNFxcXFx1OTdmM1xcXFx1NGU1MFxcXFxuXFxcXG5cXFxcdWQ4M2NcXFxcdWRmYThcXFxcdFxcXCIgKyBEaXNwbGF5LnJlcGxhY2UoL++8jHzjgIIvZywgXFxcIiBcXFwiKSwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgcGljOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9XFxcIiArIGoudGl0bGUpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gZmV0Y2goXFxcImh0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPVxcXCIgKyBqLnJpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVxcXCIgKyBqLnJpZCkpLmRhdGEubHJjbGlzdC5tYXAoZCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IChkLnRpbWUgJSA2MCkudG9GaXhlZCgyKS5wYWRTdGFydCg1LCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSAoKGQudGltZSAtIHMpIC8gNjApLnRvRml4ZWQoMCkucGFkU3RhcnQoMiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiW1xcXCIgKyBtICsgXFxcIjpcXFwiICsgcyArIFxcXCJdXFxcIiArIGQubGluZUx5cmljO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbihcXFwiXFxcXG5cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybCwgbHlyaWM6IGxyY30pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9XFxcIiArIGoudGl0bGUpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnRpc2VydmVyLmt1d28uY24vYW50aS5zP3R5cGU9Y29udmVydF91cmwmZm9ybWF0PW1wMyZyaWQ9XFxcIiArIGoucmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX0sIHt0aXRsZTogXFxcIlxcXFx1ODljMlxcXFx1NzcwYk1WXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9XFxcIiArIGoudGl0bGUpKS5kYXRhLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKFxcXCJodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9XFxcIiArIGoudmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBodG1sLnNwbGl0KFxcXCI9XFxcIilbM107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gYS5zcGxpdChcXFwiP1xcXCIpWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gYjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyB1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCB0eHQpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICwgdHh0KX0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgKSwgZXh0cmE6IHtkZWZhdWx0VmFsdWU6IGdldEl0ZW0oXFxcInNzcHRfaW5wdXRcXFwiLCBcXFwiXFxcIil9fSk7XFxuICAgIH1cXG4gICAgbGV0IGt3Z2QgPSBnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpO1xcbiAgICBsZXQgaHRtbCA9IChcXFwiaHR0cDovL3dhcGkua3V3by5jbi9hcGkvcGMvY2xhc3NpZnkvcGxheWxpc3QvZ2V0UmNtUGxheUxpc3Q/bG9naW5VaWQ9MCZsb2dpblNpZD0wJmFwcFVpZD03NjAzOTU3NiYmcG49XFxcIiArIE1ZX1BBR0UgKyBcXFwiJnJuPTM2Jm9yZGVyPVxcXCIgKyBrd2dkKTtcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGh0bWwpKS5kYXRhO1xcbiAgICBqc29uLmRhdGEubWFwKGRhdGEgPT4ge1xcbiAgICAgICAgZC5wdXNoKHt0aXRsZTogZGF0YS5uYW1lLCBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLCBwaWM6IGRhdGEuaW1nLCB1cmw6ICQoXFxcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChkYXRhKSA9PiB7XFxuICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTgzYjRcXFxcdTZiNGNcXFxcdTUzNTVcXFwiKTtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDVhcHAvd2FwaS9hcGkvd3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mbz9waWQ9XFxcIiArIGRhdGEuaWQgKyBcXFwiJnJuPTMwJnVhPSZpcD0mcG49XFxcIiArIE1ZX1BBR0UpKS5kYXRhO1xcbiAgICAgICAgICAgIHZhciBqc29uID0gaHRtbC5tdXNpY0xpc3QubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIHNpbmdlcjogai5hcnRpc3QsIGFsYnVtOiBqLmFsYnVtLCBwaWM6IGoucGljLCBpZDogai5yaWQsIHZpZDogai5tdnBheWluZm8udmlkLCB0aW1lOiBqLnNvbmdUaW1lTWludXRlc307XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBodG1sLm5hbWUsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIHBpYzogaHRtbC5pbWc3MDAgfHwgaHRtbC51UGljLCBkZXNjOiBcXFwiXFxcXHVkODNlXFxcXHVkZGY4XFxcXHRcXFwiICsgaHRtbC51c2VyTmFtZSArIFxcXCJcXFxcblxcXFxuXFxcXHVkODNjXFxcXHVkZmJjXFxcXHRcXFwiICsgZGF0YS50b3RhbCArIFxcXCJcXFxcdTk5OTZcXFwiLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIn0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBqc29uLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCBwaWM6IGoucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9XFxcIiArIGoudGl0bGUpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gZmV0Y2goXFxcImh0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vbS5rdXdvLmNuL25ld2g1L3NpbmdsZXMvc29uZ2luZm9hbmRscmM/bXVzaWNJZD1cXFwiICsgai5pZCkpLmRhdGEubHJjbGlzdC5tYXAoZCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gKGQudGltZSAlIDYwKS50b0ZpeGVkKDIpLnBhZFN0YXJ0KDUsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtID0gKChkLnRpbWUgLSBzKSAvIDYwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiW1xcXCIgKyBtICsgXFxcIjpcXFwiICsgcyArIFxcXCJdXFxcIiArIGQubGluZUx5cmljO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybCwgbHlyaWM6IGxyY30pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9LdXdvX0JEX25ldy8/bj0xJmJyPTUmbmFtZT1cXFwiICsgai50aXRsZSkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IGZldGNoKFxcXCJodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGpzb247XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLCBqKX0sIHt0aXRsZTogXFxcIlxcXFx1ODljMlxcXFx1NzcwYk1WXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChqLnZpZCA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHQuc3BsaXQoXFxcIiBcXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9XFxcIiArIGoudGl0bGUpKS5kYXRhLnVybDtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGh0bWwuc3BsaXQoXFxcIj1cXFwiKVszXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gYjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgdXJsO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgail9XX19KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICB9XFxuICAgICAgICAsIGRhdGEpfSk7XFxuICAgIH1cXG4gICAgKTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG4pKClcIixcImdyb3VwXCI6XCLikaDmjqjojZBcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwifSIsInBpY1VybCI6Imhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xOC5wbmciLCJ0aXRsZSI6IuWWnOasouWQrOmfs+S5kOeahOaipiJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement