xiaomianao666

邀您一起看:京梦音乐

Nov 24th, 2024
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥京梦音乐@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbXSxcInBhcmFtc1wiOlwie1xcXCJjbHNcXFwiOlxcXCJlbGVsaXN0IOW9semfs+e7hCAjMVxcXCIsXFxcImlkXFxcIjpcXFwi5oiR55qE5Li76aG1I+S6rOaipumfs+S5kFxcXCIsXFxcIm5ld1dpbmRvd1xcXCI6dHJ1ZSxcXFwid2luZG93SWRcXFwiOlxcXCLkuqzmoqbpn7PkuZBcXFwifVwiLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLmiJHnmoTkuLvpobVcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5I2Z5cGFnZSNnYW1lVGhlbWUjI25vUmVjb3JkSGlzdG9yeSM7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDE077yb77ybIDIzMDEzUks3NUMgQnVpbGQvVUtRMS4yMzA4MDQuMDAx77yb77ybIHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvMTE4LjAuMC4wIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcImljb25fc21hbGxfNFwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKCkgPT4ge1xcbiAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NGVhY1xcXFx1NjhhNlxcXFx1OTdmM1xcXFx1NGU1MFxcXCIpO1xcbiAgICBsZXQgZCA9IFtdO1xcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe2NvbF90eXBlOiBcXFwicGljXzFfZnVsbFxcXCIsIHRpdGxlOiBcXFwiMFxcXCIsIGltZzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS93ZWlzeXIvaW1nL1RvcEltZzAucG5nXFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9sb2NhbE1lZGlhXFxcIn0sIHt0aXRsZTogXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1NmI0Y1xcXFx1NTM1NVxcXCIsIGNvbF90eXBlOiBcXFwiaWNvbl8zX3JvdW5kX2ZpbGxcXFwiLCBwaWM6IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL211c2ljLzg1LnN2Z1xcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBcXFwiW3tcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcdTcwZWRcXFxcdTY0MWNcXFxcdTZiNGNcXFxcdTY2ZjJcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL2hLRnJpYk1od0g0Q2x3TldKeGljdUN4anV3SWtiWlBxNEhWVDBRZ3hzZGI4SldRWFhDMlRGc3VRLzYwMD9uPTFcXFxcXFxcIixcXFxcXFxcImlkXFxcXFxcXCI6NzUzMjY3MDUzOH0se1xcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFx1NjI5NlxcXFx1OTdmM1xcXFx1NzBlZFxcXFx1OTVlOFxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaHR0cDovL3FwaWMueS5xcS5jb20vbXVzaWNfY292ZXIvV3B2ZEpYZm43OThpYkQ0Z2NmancwTlN1QmtGVEpZcFk1UU9ldjNFeGNCUWlhbVJjb2JrcE43N2cvNjAwP249MVxcXFxcXFwiLFxcXFxcXFwiaWRcXFxcXFxcIjo3NjMwMzAzNDc0fV1cXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgcmV0dXJuICQoZ2VkYW4sIDIsIFxcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFxcdTZiNGNcXFxcdTUzNTVcXFwiKS5zZWxlY3QoKGdlZGFuKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBhID0gZ2VkYW4uZmluZEluZGV4KHQgPT4gdC50aXRsZSA9PSBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHZhciBpZCA9IGdlZGFuW2FdLmlkO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcXHU2YjRjXFxcXHU1MzU1XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c29uZ2xpc3QmaWQ9XFxcIiArIGlkKSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gaHRtbC5saXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLnRpdGxlLCBzaW5nZXI6IGouYXV0aG9yLCBhbGJ1bTogai5hbGJ1bS5uYW1lLCBwaWM6IGoucGljLCBpZDogai5taWR9O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGh0bWwuaW5mby50aXRsZSwgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcIiArIGh0bWwuaW5mby5jcmVhdG9yLm5pY2sgKyBcXFwiXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZiY1xcXFx0XFxcIiArIGh0bWwuaW5mby5zb25nbnVtICsgXFxcIlxcXFx1OTk5NlxcXCIsIHBpYzogaHRtbC5pbmZvLnBpY3VybCwgdXJsOiAkKFxcXCJcXFwiLCBcXFwiXFxcXHU2NmYyXFxcXHU1NDBkXFxcXHU2MjE2XFxcXHU2YjRjXFxcXHU2MjRiXFxcIikuaW5wdXQoKGpzb24pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZWFyY2goYXJyYXksIG5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5LmZpbHRlcihpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmFtZS50b0xvd2VyQ2FzZSgpKSB8fCBpdGVtLnNpbmdlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5hbWUudG9Mb3dlckNhc2UoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBzZWFyY2goanNvbiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHlcXFwiKS5ydWxlKChyZXN1bHRzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NjQxY1xcXFx1N2QyMlxcXFx1N2VkM1xcXFx1Njc5Y1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpYzogai5waWMsIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD1cXFwiICsgai5pZCkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZX19KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCByZXN1bHRzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU2Y2ExXFxcXHU2NzA5XFxcXHU2MjdlXFxcXHU1MjMwXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAsIGpzb24pLCBleHRyYToge2xvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGNlMFxcXFx1NTkwZFxcXFx1NTIzNlxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1OTRmZVxcXFx1NjNhNVxcXCIsIGpzOiAkLnRvU3RyaW5nKChodG1sKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIGh0bWwuaW5mby5waWN1cmw7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAsIGh0bWwpfV0sIGdyYWRpZW50OiB0cnVlfX0pO1xcbiAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCBwaWNfdXJsOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLmRhdGEudXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfV19fSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgaWQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAsIGdlZGFuKTtcXG4gICAgICAgIH1cXG4gICAgICAgICksIGV4dHJhOiB7bG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHVkODNkXFxcXHVkYzllIFxcXFx1ODNiN1xcXFx1NTNkNlxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIlxcXFx1Mjc1N1xcXFx1ZmUwZlxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTk4MlxcXFx1Njc5Y1xcXFx1NjcwOVxcXFx1NjViMFxcXFx1NTg5ZVxcXFx1ZmYwY1xcXFx1NTIxOVxcXFx1OTcwMFxcXFx1ODk4MVxcXFx1OTFjZFxcXFx1NjViMFxcXFx1ODNiN1xcXFx1NTNkNlxcXFxuXFxcXG5RUVxcXFx1OGQyNlxcXFx1NTNmN1xcXFx1ODNiN1xcXFx1NTNkNlxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL211c2ljL3FxL3VzZXJfbGlzdC5waHA/cXE9XFxcIiArIGlucHV0KSkubXlwbGF5bGlzdC5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIGljb246IGoucGljLCBpZDogai5pZH07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgZ2VkYW4gPSBnZWRhbi5jb25jYXQoanNvbik7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTZkZmJcXFxcdTUyYTBcXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX0sIHt0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGQzMCBcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTdiYTFcXFxcdTc0MDZcXFwiLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU2YjRjXFxcXHU1MzU1XFxcXHU3YmExXFxcXHU3NDA2XFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTYzZDBcXFxcdTUzZDZpZFxcXCIsIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLCBkZXNjOiBcXFwiXFxcXHU4YmY3XFxcXHU4ZjkzXFxcXHU1MTY1XFxcXHU1MjA2XFxcXHU0ZWFiXFxcXHU1NDBlXFxcXHU1OTBkXFxcXHU1MjM2XFxcXHU3Njg0XFxcXHU5NGZlXFxcXHU2M2E1XFxcIiwgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU0ZTBkXFxcXHU4MGZkXFxcXHU0ZTNhXFxcXHU3YTdhXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHQgPSBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1MSA9IHR4dC5zcGxpdChcXFwiJlxcXCIpWzRdO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gdTEuc3BsaXQoXFxcIj1cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvcHkoaWRbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NWRmMlxcXFx1NTkwZFxcXFx1NTIzNlxcXCIgKyBpZFsxXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTZkZmJcXFxcdTUyYTBcXFwiLCBjb2xfdHlwZTogXFxcImlucHV0XFxcIiwgZGVzYzogXFxcIlxcXFx1NjYzZVxcXFx1NzkzYVxcXFx1NTQwZFxcXFx1NzlmMEBcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTVAUVFcXFxcdTk3ZjNcXFxcdTRlNTBpZFxcXCIsIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1OGJmN1xcXFx1NjgzOVxcXFx1NjM2ZVxcXFx1NjNkMFxcXFx1NzkzYVxcXFx1OGY5M1xcXFx1NTE2NVxcXFx1NTE4NVxcXFx1NWJiOVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7dGl0bGU6IG5bMF0sIGljb246IG5bMV0sIGlkOiBuWzJdfTtcXG4gICAgICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU2ZGZiXFxcXHU1MmEwXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICApLCBleHRyYToge3R5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsIGhlaWdodDogMn19KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1OTRmZVxcXFx1NjNhNVxcXFx1NTNlZlxcXFx1NGVlNVxcXFx1NTcyOFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NGU4Y1xcXFx1N2VhN1xcXFx1NmQ3N1xcXFx1NjJhNVxcXFx1OTU3ZlxcXFx1NjMwOVxcXFx1NTkwZFxcXFx1NTIzNlxcXFx1ZmYwY1xcXFx1NjI0MFxcXFx1NGVlNVxcXFx1NTNlZlxcXFx1NGVlNVxcXFx1NTE0OFxcXFx1NmRmYlxcXFx1NTJhMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTE4ZFxcXFx1N2YxNlxcXFx1OGY5MVxcXFx1NmRmYlxcXFx1NTJhMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTZmZVxcXFx1NzI0N1xcXFx1ZmYwY1xcXFx1NjIxNlxcXFx1ODAwNVxcXFx1ODFlYVxcXFx1NWRmMVxcXFx1OTAwOVxcXFx1NGUwMFxcXFx1NWYyMFxcXFx1NTZmZVxcXFx1NGY1Y1xcXFx1NGUzYVxcXFx1NWMwMVxcXFx1OTc2MlxcXFx1MzAwMlxcXCIsIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAwO1xcbiAgICAgICAgICAgICAgICBnZWRhbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGoudGl0bGUgKyBcXFwiQFxcXCIgKyBqLmljb24gKyBcXFwiQFxcXCIgKyBqLmlkO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaW5kZXggKyBcXFwiLlxcXCIgKyBqLnRpdGxlLCBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLCBwaWM6IGouaWNvbiwgdXJsOiAkKFtcXFwiXFxcXHU3ZjE2XFxcXHU4ZjkxXFxcIiwgXFxcIlxcXFx1NzlmYlxcXFx1NGY0ZFxcXCIsIFxcXCJcXFxcdTUyMjBcXFxcdTk2NjRcXFwiXSwgMywgXFxcIlxcXFx1OGJmN1xcXFx1OTAwOVxcXFx1NjJlOVxcXCIpLnNlbGVjdCgoaW5kZXgsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIlxcXFx1N2YxNlxcXFx1OGY5MVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoaXRlbSwgXFxcIlxcXFx1NjBmM1xcXFx1ODk4MVxcXFx1NjZmNFxcXFx1NjM2MlxcXFx1NzY4NFxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1NTQwZCxcXFxcdTZiNGNcXFxcdTUzNTVpZCxcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTUgXFxcIikuaW5wdXQoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuW2luZGV4XSA9IHt0aXRsZTogblswXSwgaWNvbjogblsxXSwgaWQ6IG5bMl19O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU2NmY0XFxcXHU2NTM5XFxcXHU2MjEwXFxcXHU1MjlmflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFxcdTc5ZmJcXFxcdTRmNGRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIlxcXFx1ODk4MVxcXFx1NzlmYlxcXFx1NTJhOFxcXFx1NTIzMFxcXFx1NTRlYVxcXFx1NGUyYVxcXFx1NWU4ZlxcXFx1NTNmN1xcXFx1NTI0ZFxcXFx1OTc2Mi9cXFxcdTU0MGVcXFxcdTk3NjJcXFwiKS5pbnB1dCgoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGdlZGFuW2luZGV4XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5wdXQsIDAsIHRlbXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA8IGluZGV4KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCArIDEsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU3OWZiXFxcXHU0ZjRkXFxcXHU2MjEwXFxcXHU1MjlmflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NTIyMFxcXFx1OTY2NFxcXFx1NjIxMFxcXFx1NTI5Zn5cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLCBpbmRleCwgaXRlbSl9KTtcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX0sIHt0aXRsZTogXFxcIlxcXFx1MjY3YlxcXFx1ZmUwZiBcXFxcdTYwNjJcXFxcdTU5MGRcXFxcdTllZDhcXFxcdThiYTRcXFwiLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTYwNjJcXFxcdTU5MGRcXFxcdTllZDhcXFxcdThiYTRcXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgKX1dfX0pO1xcbiAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1Njk5Y1xcXFx1NTM1NVxcXCIsIGNvbF90eXBlOiBcXFwiaWNvbl8zX3JvdW5kX2ZpbGxcXFwiLCBwaWM6IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL211c2ljLzUxLnN2Z1xcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShmYyhcXFwiaHR0cDovL211c2ljLjE2My5jb20vYXBpL3RvcGxpc3RcXFwiLCAyNCkpLmxpc3QubWFwKGwgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBsLm5hbWUsIGljb246IGwuY292ZXJJbWdVcmwsIGlkOiBsLmlkfTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICByZXR1cm4gJChnZWRhbiwgMiwgXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1NjM5MlxcXFx1ODg0Y1xcXFx1Njk5Y1xcXCIpLnNlbGVjdCgoZ2VkYW4pID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBnZWRhbi5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTtcXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gZ2VkYW5bYV0uaWQ7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcXHU2YjRjXFxcXHU1MzU1XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS92Ni9wbGF5bGlzdC9kZXRhaWw/bj0xMDAwJmlkPVxcXCIgKyBpZCwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwMi4wLjAuMCBTYWZhcmkvNTM3LjM2XFxcIiwgXFxcIkNvb2tpZVxcXCI6IFxcXCJvcz1wYzsgTVVTSUNfVT0wMDE3Mzk5N0U1N0RDMTYxMTJEMkUxNTc5RjU1NTQ0NDgxMkU1MTMzRjE2QzM0MjEzRDlCQjVFM0VDRUM4MTg4NDVERjhBMzM2QTNCOUQ0OTVFRTE4MkYzMDAxQUZFQUY5RTk3MTU5MUNDRURDNDcxMzg0MkYzMjk2QTFFNzlERkI3ODE3QThDN0JCODE1NEZGMTU0ODM2NDhGMTg0RDBFNzJEN0QyNkE1NjVFNDQ1MDczODA4MjQ5MDJDMjE1MkNDMEJCNURCOUEzNzlFODBGNkYwM0QwRDk4QjI3OTNBMjAzMjMwMzRERTRBMEJCQjQ2NzJENDhGOTM2Mjk2MEVGMjEzNjE1M0QwMkU3REYxNEM5Q0U4NEYxRjY0QzE2RUIzMDdBNUJCQjU4Njg2QzYwOTUwODJBQTQ1MDU4M0U2NEVBQ0QzRTZCNUJFMERGQ0FDQTkxMjVGMDM1MDU3RkUxN0I1QkRBNjFEODlERjVBQkQ3NzkwNkY1RTVEODU4Qzc0REIyRTE3OEEzQjBFNjA5NURENzU1MThENDgyREM5RDYxMDgwQTYxRDlCNzY1RDdFOThFQkUyMzBDRjAxN0NEOTAyMDgzOTJEM0UxMERFOTY0QTY4MTIxQjZDNjZEMDhDOTAyQTk4RUQ3MTEzQUFFNTlEMUU1NTU5QjA3MURFODMxMjZCOEMyOTVDNzgwQ0NENEIwQjRERTM2RTM1QzA5QUE2MzQzNTVBRURFMkY4ODA5OTg3MTkyNzdFNUVGOUM3QjlDQUZGQzkwRTI3OUFBQTJCQUZDQTQ0QzBBODM1MzdENjA5RTJEQUE1RDVENzc0ODQ4Qzk4REQyODcxMTg4OTVDMUMzRDY1NzQ0NjZGOTI2MkRFQ0UwNzI5MkFDMTU3QzFEQjcwQ0I3MDM5NThBN0ZFNTUzNDRFMjczNDIyRTY5XFxcIn19KSkucGxheWxpc3Q7XFxuICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IGh0bWwudHJhY2tzLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hci5tYXAobiA9PiBuLm5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dGl0bGU6IGoubmFtZSwgc2luZ2VyOiBzaW5nZXIsIGFsYnVtOiBqLnRucywgcGljOiBqLmFsLnBpY1VybCwgaWQ6IGouaWQsIHZpZDogai5tdn07XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbC5kZXNjcmlwdGlvbiwgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIiwgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcIiArIGh0bWwuY3JlYXRvci5uaWNrbmFtZSArIFxcXCJcXFxcblxcXFxuXFxcXHVkODNjXFxcXHVkZmJjXFxcXHRcXFwiICsgaHRtbC50cmFja0NvdW50ICsgXFxcIlxcXFx1OTk5NlxcXCIsIHBpYzogaHRtbC5jb3ZlckltZ1VybCwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsIGV4dHJhOiB7Z3JhZGllbnQ6IHRydWV9fSk7XFxuICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpY191cmw6IGoucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL05ldEVhc2VfQ2xvdWRNdXNpY19uZXcvP2JyPTUmc29uZ2lkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmbHY9LTEma3Y9LTEmdHY9LTEmaWQ9XFxcIiArIGouaWQpKS5scmMubHlyaWM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSAoXFxcImh0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfSwge3RpdGxlOiBcXFwiXFxcXHU4OWMyXFxcXHU3NzBiTVZcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGlkKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLCBnZWRhbik7XFxuICAgICAgICB9XFxuICAgICAgICApfSk7XFxuICAgICAgICBkLnB1c2goe3RpdGxlOiBnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpID09IFxcXCJuZXdcXFwiID8gXFxcIlxcXFx1NjcwMFxcXFx1NjViMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIgOiBcXFwiXFxcXHU2NzAwXFxcXHU3MGVkXFxcXHU2YjRjXFxcXHU1MzU1XFxcIiwgY29sX3R5cGU6IFxcXCJpY29uXzNfcm91bmRfZmlsbFxcXCIsIHBpYzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbXVzaWMvODIuc3ZnXFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJrd2dkXFxcIiwgZ2V0SXRlbShcXFwia3dnZFxcXCIsIFxcXCJuZXdcXFwiKSA9PSBcXFwibmV3XFxcIiA/IFxcXCJob3RcXFwiIDogXFxcIm5ld1xcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICB0b2FzdChcXFwiXFxcXHU1ZGYyXFxcXHU1MjA3XFxcXHU2MzYyXFxcIiArIChnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpID09IFxcXCJuZXdcXFwiID8gXFxcIlxcXFx1NjcwMFxcXFx1NjViMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIgOiBcXFwiXFxcXHU2NzAwXFxcXHU3MGVkXFxcXHU2YjRjXFxcXHU1MzU1XFxcIikpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9XFxuICAgICAgICApfSwge3RpdGxlOiBcXFwiXFxcXHU2NDFjXFxcXHU3ZDIyXFxcIiwgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsIGRlc2M6IFxcXCJcXFxcdTZiNGNcXFxcdTU0MGRcXFxcdTMwMDFcXFxcdTZiNGNcXFxcdTYyNGJcXFxcdTMwMDFcXFxcdTY5OWNcXFxcdTUzNTVcXFxcdTU0MGRcXFxcdTc5ZjBcXFwiLCB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmICghaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1OGJmN1xcXFx1OGY5M1xcXFx1NTE2NVxcXFx1NTE3M1xcXFx1OTUyZVxcXFx1OGJjZFxcXFx1NjQxY1xcXFx1N2QyMlxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciB0eHQgPSBpbnB1dDtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJzc3B0X2lucHV0XFxcIiwgdHh0KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7b3B0aW9uczogW1xcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFwiLCBcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcIiwgXFxcIlxcXFx1NWMwZlxcXFx1ODNiNFxcXCJdLCBhdHRhY2hWaWV3OiB0cnVlLCBqczogJC50b1N0cmluZygodHh0KSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh0eHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1NjQxY1xcXFx1N2QyMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c28mcGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImcGVyX3BhZ2U9MzAmd29yZD1cXFwiICsgdHh0KSkuZGF0YS5saXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai50aXRsZSwgc2luZ2VyOiBqLmF1dGhvciwgcGljOiBqLnBpYywgYWxidW06IGouYWxidW0ubmFtZSwgaWQ6IGoubWlkfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFwiLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBkZXNjOiBcXFwiXFxcXHVkODNkXFxcXHVkZDBlXFxcXHRcXFwiICsgdHh0LCBwaWM6IGpzb25bMF0ucGljLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIiwgZXh0cmE6IHtncmFkaWVudDogdHJ1ZX19KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpY191cmw6IGoucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL211c2ljL2xyYz9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1xcSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2UsIGxvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1NGUwYlxcXFx1OGY3ZFxcXFx1NmI0Y1xcXFx1NjZmMlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLmRhdGEudXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICwgdHh0KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh0eHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTgyYjhcXFxcdTY0MWNcXFxcdTdkMjJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc2VhcmNoL2dldC93ZWI/dHlwZT0xJm9mZnNldD0wJmxpbWl0PTkwJnM9XFxcIiArIHR4dCkpLnJlc3VsdC5zb25ncy5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hcnRpc3RzLm1hcChzID0+IHMubmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIHNpbmdlcjogc2luZ2VyWzBdLCBwaWM6IFxcXCJodHRwczovL3dhbmdodW4udG9wL3FxbXVzaWMvd3ltdXNpYy5waHA/dHlwZT1waWMmaWQ9XFxcIiArIGouaWQsIGFsYnVtOiBqLmFsYnVtLm5hbWUsIGlkOiBqLmlkLCB2aWQ6IGoubXZpZH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXCIsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMGVcXFxcdFxcXCIgKyB0eHQsIHBpYzoganNvblswXS5waWMsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLCBleHRyYToge2dyYWRpZW50OiB0cnVlfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogai50aXRsZSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLCBwaWNfdXJsOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLmFsYnVtIDogai5zaW5nZXIgKyBcXFwiIC0tIFxcXCIgKyBqLnRpdGxlLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gKFxcXCJodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS9zb25nL2x5cmljP29zPXBjJmx2PS0xJmt2PS0xJnR2PS0xJmlkPVxcXCIgKyBqLmlkKSkubHJjLmx5cmljO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2UsIGxvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1NGUwYlxcXFx1OGY3ZFxcXFx1NmI0Y1xcXFx1NjZmMlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX0sIHt0aXRsZTogXFxcIlxcXFx1ODljMlxcXFx1NzcwYk1WXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHQuc3BsaXQoXFxcIiBcXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCB0eHQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKHR4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1ODNiNFxcXFx1NjQxY1xcXFx1N2QyMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vc2VhcmNoLmt1d28uY24vci5zP2NsaWVudD1rdCZwbj1cXFwiICsgKE1ZX1BBR0UgLSAxKSArIFxcXCImcm49MzAmdmlwdmVyPTEmZnQ9bXVzaWMmZW5jb2Rpbmc9dXRmOCZyZm9ybWF0PWpzb24mbW9iaT0xJmFsbD1cXFwiICsgdHh0KSkuYWJzbGlzdC5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gKFxcXCJodHRwOi8vaW1nMS5rd2Nkbi5rdXdvLmNuL3N0YXIvYWxidW1jb3Zlci81MDBcXFwiICsgai53ZWJfYWxidW1waWNfc2hvcnQuc3BsaXQoXFxcIjEyMFxcXCIpWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dGl0bGU6IGouU09OR05BTUUsIHNpbmdlcjogai5BUlRJU1QsIHBpYzogaW1nLCBhbGJ1bTogai5BTEJVTSwgcmlkOiBqLkRDX1RBUkdFVElELCB2aWQ6IGoubXZwYXlpbmZvLnZpZH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXCIsIHBpYzoganNvblswXS5waWMsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMGVcXFxcdFxcXCIgKyB0eCwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsIGV4dHJhOiB7Z3JhZGllbnQ6IHRydWV9fSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIHBpYzogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKFxcXCJodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD1cXFwiICsgai5yaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vbS5rdXdvLmNuL25ld2g1L3NpbmdsZXMvc29uZ2luZm9hbmRscmM/bXVzaWNJZD1cXFwiICsgai5yaWQpKS5kYXRhLmxyY2xpc3QubWFwKGQgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtID0gKChkLnRpbWUgLSBzKSAvIDYwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIltcXFwiICsgbSArIFxcXCI6XFxcIiArIHMgKyBcXFwiXVxcXCIgKyBkLmxpbmVMeXJpYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gZmV0Y2goXFxcImh0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPVxcXCIgKyBqLnJpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPVxcXCIgKyBqLnZpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gaHRtbC5zcGxpdChcXFwiPVxcXCIpWzNdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9XX19KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgdHh0KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAsIHR4dCl9KTtcXG4gICAgICAgIH1cXG4gICAgICAgICksIGV4dHJhOiB7ZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXCJzc3B0X2lucHV0XFxcIiwgXFxcIlxcXCIpfX0pO1xcbiAgICB9XFxuICAgIGxldCBrd2dkID0gZ2V0SXRlbShcXFwia3dnZFxcXCIsIFxcXCJuZXdcXFwiKTtcXG4gICAgbGV0IGh0bWwgPSAoXFxcImh0dHA6Ly93YXBpLmt1d28uY24vYXBpL3BjL2NsYXNzaWZ5L3BsYXlsaXN0L2dldFJjbVBsYXlMaXN0P2xvZ2luVWlkPTAmbG9naW5TaWQ9MCZhcHBVaWQ9NzYwMzk1NzYmJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zNiZvcmRlcj1cXFwiICsga3dnZCk7XFxuICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChodG1sKSkuZGF0YTtcXG4gICAganNvbi5kYXRhLm1hcChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7dGl0bGU6IGRhdGEubmFtZSwgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIiwgcGljOiBkYXRhLmltZywgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoZGF0YSkgPT4ge1xcbiAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU1YzBmXFxcXHU4M2I0XFxcXHU2YjRjXFxcXHU1MzU1XFxcIik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vbS5rdXdvLmNuL25ld2g1YXBwL3dhcGkvYXBpL3d3dy9wbGF5bGlzdC9wbGF5TGlzdEluZm8/cGlkPVxcXCIgKyBkYXRhLmlkICsgXFxcIiZybj0zMCZ1YT0maXA9JnBuPVxcXCIgKyBNWV9QQUdFKSkuZGF0YTtcXG4gICAgICAgICAgICB2YXIganNvbiA9IGh0bWwubXVzaWNMaXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai5uYW1lLCBzaW5nZXI6IGouYXJ0aXN0LCBhbGJ1bTogai5hbGJ1bSwgcGljOiBqLnBpYywgaWQ6IGoucmlkLCB2aWQ6IGoubXZwYXlpbmZvLnZpZCwgdGltZTogai5zb25nVGltZU1pbnV0ZXN9O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbC5uYW1lLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBwaWM6IGh0bWwuaW1nNzAwIHx8IGh0bWwudVBpYywgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcIiArIGh0bWwudXNlck5hbWUgKyBcXFwiXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZiY1xcXFx0XFxcIiArIGRhdGEudG90YWwgKyBcXFwiXFxcXHU5OTk2XFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsIGV4dHJhOiB7Z3JhZGllbnQ6IHRydWV9fSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGpzb24ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpYzogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9LdXdvX0JEX25ldy8/bj0xJmJyPTUmbmFtZT1cXFwiICsgai50aXRsZSkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnRpc2VydmVyLmt1d28uY24vYW50aS5zP3R5cGU9Y29udmVydF91cmwmZm9ybWF0PW1wMyZyaWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IFtqcyArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJdO1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVxcXCIgKyBqLmlkKSkuZGF0YS5scmNsaXN0Lm1hcChkID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSAoKGQudGltZSAtIHMpIC8gNjApLnRvRml4ZWQoMCkucGFkU3RhcnQoMiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJbXFxcIiArIG0gKyBcXFwiOlxcXCIgKyBzICsgXFxcIl1cXFwiICsgZC5saW5lTHlyaWM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICkuam9pbihcXFwiXFxcXG5cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gZmV0Y2goXFxcImh0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGopfSwge3RpdGxlOiBcXFwiXFxcXHU4OWMyXFxcXHU3NzBiTVZcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGoudmlkID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdChcXFwiIFxcXCIpWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS52cHMwMi50b3AvQVBJL2tnX211c2ljX212LnBocD9uPTEmdHlwZT1qc29uJm1zZz1cXFwiICsgai50aXRsZSkpLmRhdGEudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKFxcXCJodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gaHRtbC5zcGxpdChcXFwiPVxcXCIpWzNdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gYS5zcGxpdChcXFwiP1xcXCIpWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyB1cmw7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIH1cXG4gICAgICAgICwgZGF0YSl9KTtcXG4gICAgfVxcbiAgICApO1xcbiAgICBzZXRSZXN1bHQoZCk7XFxufVxcbikoKVwiLFwiZ3JvdXBcIjpcIuKRoOaOqOiNkFwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiXCIsXCJwYWdlc1wiOlwiW11cIn0iLCJwaWNVcmwiOiJoaWtlcjovL2ZpbGVzL2ljb24vU3RoZW1lL3NraW5zLzEv6Z+z5LmQLnN2ZyIsInRpdGxlIjoi5Lqs5qKm6Z+z5LmQIn0=
Add Comment
Please, Sign In to add comment