Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@AI生成器@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiQUnnlJ/miJDlmagiLCJhdXRob3IiOiIiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyMiLCJ2ZXJzaW9uIjoxOSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ0b29sIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLnu4jmnoHlpKfmi5vvvIzovpPlhaXnvZHnq5nlnLDlnYDnlJ/miJDop4TliJlcIixcbiAgICB1cmw6IFwiXCIsXG4gICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiLFxuICAgIGRlc2M6IFwiXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwiXCIsXG4gICAgdXJsOiBcIlwiLFxuICAgIGNvbF90eXBlOiBcImlucHV0XCIsXG4gICAgZGVzYzogXCLor7fovpPlhaXopoHnlJ/miJDnmoTlsI/nqIvluo/lkI1cIixcbiAgICBwaWNfdXJsOiBcIlwiLFxuICAgIGV4dHJhOiB7XG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgIHB1dE15VmFyKFwicjFcIiwgaW5wdXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcInIxXCIsIFwiXCIpXG4gICAgfVxufSk7XG5kLnB1c2goe1xuICAgIHRpdGxlOiBcIlwiLFxuICAgIHVybDogXCJcIixcbiAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgIGRlc2M6IFwi6K+36L6T5YWl572R56uZ5Zyw5Z2A77yM5aaCaHR0cHM6Ly9jbi5iaW5nLmNvbS9cIixcbiAgICBwaWNfdXJsOiBcIlwiLFxuICAgIGV4dHJhOiB7XG4gICAgICAgIHR5cGU6IFwidGV4dGFyZWFcIixcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICBoaWdobGlnaHQ6IHRydWUsXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgIHB1dE15VmFyKFwicnVsZVwiLCBpbnB1dCk7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFwicnVsZVwiLCBcIlwiKVxuICAgIH1cbn0pO1xuXG5kLnB1c2goe1xuICAgIHRpdGxlOiBcIueUn+aIkOinhOWImVwiLFxuICAgIHVybDogJChcIiNub0xvYWRpbmcjXCIpLmxhenlSdWxlKChydWxlMSkgPT4ge1xuICAgICAgICBsZXQgdXJsID0gZ2V0TXlWYXIoXCJydWxlXCIsIFwiXCIpO1xuICAgICAgICBsZXQgcjEgPSBnZXRNeVZhcihcInIxXCIsIFwiXCIpO1xuICAgICAgICBpZiAodXJsID09IFwiXCIgfHwgcjEgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/or7flhYjlnKjkuIrpnaLovpPlhaXnvZHnq5nlnLDlnYDlkozlkI3np7BcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/nvZHnq5nlnLDlnYDmoLzlvI/kuI3lr7lcIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYXJyID0gc3RvcmFnZTAuZ2V0SXRlbShcImxpc3RcIiwgW10pO1xuICAgICAgICBhcnIgPSBhcnIuZmlsdGVyKGl0ID0+IGl0LnVybCAhPSB1cmwpO1xuICAgICAgICBhcnIucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiByMSxcbiAgICAgICAgICAgIHVybDogdXJsXG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFwibGlzdFwiLCBhcnIpO1xuICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICBydWxlID0gSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vaG9tZUBcIiArIHJ1bGUxKSk7XG4gICAgICAgIHJ1bGUuZmluZF9ydWxlID0gXCJqczpcXG52YXIg572R56uZID0gJ3tSVUxFfSc7XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaG9tZScpKS5ydWxlKVwiO1xuICAgICAgICBydWxlLnVybCA9IFwiaGlrZXI6Ly9lbXB0eVwiO1xuICAgICAgICByZXR1cm4gXCLmtbfpmJTop4bnlYzvv6Vob21lX3J1bGXvv6VcIiArIEpTT04uc3RyaW5naWZ5KHJ1bGUpXG4gICAgICAgICAgICAucmVwbGFjZShcIntSVUxFfVwiLCB1cmwpXG4gICAgICAgICAgICAucmVwbGFjZShydWxlMSwgcjEpO1xuICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxuICAgIGNvbF90eXBlOiBcInRleHRfMlwiLFxuICAgIGRlc2M6IFwiXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi5p2l5Liq56S65L6LXCIsXG4gICAgdXJsOiAkKFwiI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBwdXRNeVZhcihcInJ1bGVcIiwgXCJodHRwczovL2NuLmJpbmcuY29tL1wiKTtcbiAgICAgICAgcHV0TXlWYXIoXCJyMVwiLCBcIuW/heW6lEFJXCIpO1xuICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICByZXR1cm4gXCJoaWtlcjovL2VtcHR5XCJcbiAgICB9KSxcbiAgICBjb2xfdHlwZTogXCJ0ZXh0XzJcIixcbiAgICBkZXNjOiBcIlwiLFxuICAgIHBpY191cmw6IFwiXCJcbn0pO1xubGV0IGFyciA9IHN0b3JhZ2UwLmdldEl0ZW0oXCJsaXN0XCIsIFtdKS5yZXZlcnNlKCk7XG5mb3IgKGxldCBpdCBvZiBhcnIpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogaXQubmFtZSxcbiAgICAgICAgdXJsOiAkKFwiI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHB1dE15VmFyKFwicnVsZVwiLCBpdGVtLnVybCk7XG4gICAgICAgICAgICBwdXRNeVZhcihcInIxXCIsIGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/lt7LloavlhYVcIlxuICAgICAgICB9LCBpdCksXG4gICAgICAgIGNvbF90eXBlOiBcImZsZXhfYnV0dG9uXCIsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwi5Yig6ZmkXCIgKyBpdC5uYW1lLFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh1KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSBzdG9yYWdlMC5nZXRJdGVtKFwibGlzdFwiLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIGFyciA9IGFyci5maWx0ZXIoaXQgPT4gaXQudXJsICE9IHUpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFwibGlzdFwiLCBhcnIpO1xuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ0b2FzdDovL+W3suWIoOmZpFwiXG4gICAgICAgICAgICAgICAgfSwgaXQudXJsKVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIui3s+i9rFwiICsgaXQubmFtZSxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodSkgPT4geyAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vaG9tZUBcIiArIHVcbiAgICAgICAgICAgICAgICB9LCBpdC5uYW1lKVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBcIuWIoOmZpOWFqOmDqFwiLFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFwibGlzdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/lt7LliKDpmaRcIlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbnNldFJlc3VsdChkKTsiLCJzZWFyY2hfdXJsIjoiIiwiZ3JvdXAiOiLikaJBSSIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwieXNmeFwiLFwicGF0aFwiOlwieXNmeFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgcnVsZSA9IGdldFBhcmFtKFxcXCJyXFxcIikuc3BsaXQoXFxcIiMjXFxcIilbMF07XFxubGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXTtcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdVxcXCIpKHJ1bGUsIGdldEhvbWUodXJsKSk7XFxubGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAoZG9jdW1lbnQudGl0bGUgJiYgZG9jdW1lbnQudGl0bGUubGVuZ3RoKSB7XFxuICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUodCk7XFxuICAgICAgICAgICAgfSwgZG9jdW1lbnQudGl0bGUpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTtcXG4gICAgfVxcbn0pO1xcbmxldCBqczIgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS94NWFpXFxcIikocnVsZSwgdXJsKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogdXJsLFxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB1cmxJbnRlcmNlcHRvcjogaXRlLFxcbiAgICAgICAganM6IGpzICsgXFxcIjtcXFxcblxcXCIgKyBqczIsXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcbiAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcbiAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZVxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiB1cmxcXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInVcIixcInBhdGhcIjpcInVcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIG9yaWdpbikge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygocnVsZSwgb3JpZ2luKSA9PiB7XFxuICAgICAgICBsZXQgaG9zdCA9IG9yaWdpbi5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcImh0dHA6Ly98aHR0cHM6Ly9cXFwiKSwgXFxcIlxcXCIpLnNwbGl0KFxcXCIvXFxcIilbMF07XFxuICAgICAgICBsZXQgaG9zdHMgPSBob3N0LnNwbGl0KFxcXCIuXFxcIik7XFxuICAgICAgICBpZiAoaG9zdHMubGVuZ3RoID4gMikge1xcbiAgICAgICAgICAgIGhvc3QgPSBob3N0c1tob3N0cy5sZW5ndGggLSAyXSArIFxcXCIuXFxcIiArIGhvc3RzW2hvc3RzLmxlbmd0aCAtIDFdO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcIm1hZ25ldFxcXCIpKSB7XFxuICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcIuajgOa1i+WIsOaWsOeahOejgemTvuWcsOWdgO+8jOeCueWHu+ehruWumuaMiemSruWNs+WPr+aSreaUvu+8jOeCueWHu+WPlua2iOaMiemSruWPr+S7peWkjeWItumTvuaOpVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKG1hZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hZztcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpLFxcbiAgICAgICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKG1hZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIG1hZ1xcbiAgICAgICAgICAgICAgICB9LCBpbnB1dClcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiYWxpeXVuZHJpdmUuY29tXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIGxldCByMSA9IGZldGNoKFxcXCJoaWtlcjovL2hvbWVA5LqR55uY5rGH5b2xXFxcIik7XFxuICAgICAgICAgICAgaWYgKCFyMSB8fCByMS5sZW5ndGggPD0gNSkge1xcbiAgICAgICAgICAgICAgICBsZXQgcnUgPSAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwi5rW36ZiU6KeG55WM6KeE5YiZ5YiG5Lqr77yM5b2T5YmN5YiG5Lqr55qE5piv77ya5bCP56iL5bqP77+laG9tZV9ydWxlX3Yy77+lYmFzZTY0Oi8vQOS6keebmOaxh+W9sUBleUpzWVhOMFgyTm9ZWEIwWlhKZmNuVnNaU0k2SWlJc0luUnBkR3hsSWpvaTVMcVI1NXVZNXJHSDViMnhJaXdpWVhWMGFHOXlJam9pVFhKR2JIa2lMQ0oxY213aU9pSm9hV3RsY2pvdkwyVnRjSFI1SkNRa1pubHdZV2RsSWl3aWRtVnljMmx2YmlJNk5pd2lZMjlzWDNSNWNHVWlPaUowWlhoMFh6RWlMQ0pqYkdGemMxOXVZVzFsSWpvaUlpd2lkSGx3WlNJNkltRnNiQ0lzSW1Oc1lYTnpYM1Z5YkNJNklpSXNJbUZ5WldGZmJtRnRaU0k2SWlJc0ltRnlaV0ZmZFhKc0lqb2lJaXdpYzI5eWRGOXVZVzFsSWpvaUlpd2llV1ZoY2w5dVlXMWxJam9pSWl3aWMyOXlkRjkxY213aU9pSWlMQ0o1WldGeVgzVnliQ0k2SWlJc0ltWnBibVJmY25Wc1pTSTZJbXB6T2x4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeHVZV3hwTG1odmJXVlFZV2RsS0NrN0lpd2ljMlZoY21Ob1gzVnliQ0k2SW1ocGEyVnlPaTh2Wlcxd2RIa2tKQ1FxS2lRa0pHWjVjR0ZuWlNRa0pDSXNJbWR5YjNWd0lqb2k0cEdnNTcyUjU1dVlJaXdpYzJWaGNtTm9SbWx1WkNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbk5sWVhKamFGQmhaMlVvZEhKMVpTazdYRzRpTENKa1pYUmhhV3hmWTI5c1gzUjVjR1VpT2lKdGIzWnBaVjh4SWl3aVpHVjBZV2xzWDJacGJtUmZjblZzWlNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbVJsZEdGcGJGQmhaMlVvS1RzaUxDSnpaR1YwWVdsc1gyTnZiRjkwZVhCbElqb2liVzkyYVdWZk1TSXNJbk5rWlhSaGFXeGZabWx1WkY5eWRXeGxJam9pSWl3aWRXRWlPaUp0YjJKcGJHVWlMQ0p3Y21WU2RXeGxJam9pZG1GeUlHRnNhV3B6SUQwZ1ptVjBZMmdvSjJoMGRIQnpPaTh2WjJsMFpXVXVZMjl0TDJac2VURXpPVGN2YUdsclpYSXRhV041TDNKaGR5OXRZWE4wWlhJdllXeHBMbXB6SnlrN1hHNXBaaWdoWVd4cGFuTWdmSHdnSVdGc2FXcHpMbWx1WTJ4MVpHVnpLQ2RoYkdrbktTbDdYRzVjZEdGc2FXcHpJRDBnWm1WMFkyZ29KMmgwZEhCek9pOHZZMlJ1TG1welpHVnNhWFp5TG01bGRDOW5hQzltYkhreE16azNMMmhwYTJWeUxXbGplUzloYkdrdWFuTW5LVnh1ZlZ4dWFXWW9JV0ZzYVdweklIeDhJQ0ZoYkdscWN5NXBibU5zZFdSbGN5Z25ZV3hwSnlrcGUxeHVYSFJoYkdscWN5QTlJR1psZEdOb0tDZG9kSFJ3T2k4dmJHWnBZM2t1WTI5dE9qTXdNREF3TDIxeVpteDVMMmhwYTJWeUxXbGplUzl5WVhjdmJXRnpkR1Z5TDJGc2FTNXFjeWNwWEc1OVhHNXBaaWhoYkdscWN5a2dlMXh1WEhSM2NtbDBaVVpwYkdVb1hDSm9hV3RsY2pvdkwyWnBiR1Z6TDNKMWJHVnpMMmxqZVM5aGJHa3Vhbk5jSWl4aGJHbHFjeWs3WEc1Y2RHVjJZV3dvWVd4cGFuTXBPMXh1WEhSaGJHa3VjSEpsVW5Wc1pTZ3BPMXh1ZlZ4dUlpd2ljR0ZuWlhNaU9pSmJlMXdpWTI5c1gzUjVjR1ZjSWpwY0ltMXZkbWxsWHpOY0lpeGNJbTVoYldWY0lqcGNJdWU5a2VlYm1PaXZwdWFEaFZ3aUxGd2ljR0YwYUZ3aU9sd2laR1YwWVdsc1hDSXNYQ0p5ZFd4bFhDSTZYQ0pxY3pwY1hHNWxkbUZzS0dabGRHTm9LQ2RvYVd0bGNqb3ZMMlpwYkdWekwzSjFiR1Z6TDJsamVTOWhiR2t1YW5NbktTazdYRnh1WVd4cExtbHVhWFJEYjI1bWFXY29LVHRjWEc1aGJHa3VZV3hwVW5Wc1pTZ3BPMXdpZlN4N1hDSmpiMnhmZEhsd1pWd2lPbHdpYlc5MmFXVmZNVjlzWldaMFgzQnBZMXdpTEZ3aWJtRnRaVndpT2x3aTZMV0U1cnFRNTcyUjZhRzE2SyttNW9PRlhDSXNYQ0p3WVhSb1hDSTZYQ0p6YVhSbExXUmxkR0ZwYkZ3aUxGd2ljblZzWlZ3aU9sd2lhbk02WEZ4dVpYWmhiQ2htWlhSamFDZ25hR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6SnlrcE8xeGNibUZzYVM1a1pYUmhhV3hRWVdkbEtDazdYQ0o5TEh0Y0ltTnZiRjkwZVhCbFhDSTZYQ0p0YjNacFpWOHpYQ0lzWENKdVlXMWxYQ0k2WENMa3VLcmt1cnJudlpIbm01am9yNmJtZzRWY0lpeGNJbkJoZEdoY0lqcGNJbVJ5YVhabFhDSXNYQ0p5ZFd4bFhDSTZYQ0pxY3pwY1hHNWxkbUZzS0dabGRHTm9LQ2RvYVd0bGNqb3ZMMlpwYkdWekwzSjFiR1Z6TDJsamVTOWhiR2t1YW5NbktTazdYRnh1WVd4cExtbHVhWFJEYjI1bWFXY29LVHRjWEc1aGJHa3ViWGxCYkdsU2RXeGxLQ2s3WENKOVhTSXNJbWxqYjI0aU9pSm9kSFJ3Y3pvdkwyZHBkR1ZsTG1OdmJTOW1iSGt4TXprM0wyaHBhMlZ5TFdsamVTOXlZWGN2YldGemRHVnlMMkZzYVhsMWJpNXdibWNpZlE9PVxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ+acrOinhOWImeS+nei1luS6keebmOaxh+W9seinhOWIme+8jOeCueWHu+S4i+mdoueahOehruWumuaMiemSruWvvOWFpe+8jOazqOaEj+WvvOWFpeWQjuS4gOWumuimgeWcqOS6keebmOaxh+W9seeZu+W9lemYv+mHjOS6keebmOi0puWPt++8jOWQpuWImeS4jeiDveeUqCcsXFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtOiBydSxcXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbDogcnVcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbG9nKFxcXCJpbnB1dFxcXCIpO1xcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6Zi/6YeM5LqR55uYXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPVxcXCIgKyB1cmwgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcXFwuKG1wM3xmbGFjfG00YSkkLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBsYXlWaWRlbyh1cmwpO1xcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuaW5jbHVkZXMoaG9zdCkgJiYgaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJkb3V5aW5cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImRvdWJhblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiaXhpZ3VhLmNvbVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwia3VhaXNob3VcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImJpbGliaWxpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ3ZWlib1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwid2VpeGluXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJiYWlkdVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiem1rLlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic3ViaGRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInRodW5kZXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInhpbmp1Y1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiZ3JhYjRrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCIvYnRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImpzcjEwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJhc3NydFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicXVhcmtcXFwiXFxuICAgICAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IHVybC5pbmNsdWRlcyhpdCkpLmxlbmd0aCA+IDA7XFxuICAgICAgICAgICAgICAgIGlmIChpbldoaXRlKSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+i3s+e9kemhtVxcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFwiICsgcnVsZSArIFxcXCImcj1cXFwiICsgcnVsZSArIFxcXCIjI1xcXCIgKyB1cmwsXFxuICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vQUnop6PmnpBcXG4gICAgICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlbihKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9wP3J1bGU9XFxcIiArIHJ1bGUgKyBcXFwiJnI9XFxcIiArIHJ1bGUgKyBcXFwiJnU9XFxcIiArIGZ5X2JyaWRnZV9hcHAuYmFzZTY0RW5jb2RlKHVybCksXFxuICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKTtcXG4gICAgICAgIH0gZWxzZSBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgLy/og73llKTotbdBUFDnmoTnmb3lkI3ljZVcXG4gICAgICAgICAgICBsZXQgd2hpdGUgPSBbXFxuICAgICAgICAgICAgICAgIFxcXCJxa2xpbmtcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiYmRuZXRkaXNrXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInh1bmxlaWFwcFxcXCJcXG4gICAgICAgICAgICBdO1xcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcbiAgICAgICAgICAgICAgICBcXFwidXJsPVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJmc291LmNvbVxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJiaW5nLlxcXCIsICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgbGV0IGluV2hpdGUgPSB3aGl0ZS5maWx0ZXIoaXQgPT4gaW5wdXQuaW5jbHVkZXMoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmIChpbldoaXRlKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IHJlZyA9IG5ldyBSZWdFeHAoXFxcIltcXFxcdTRlMDAtXFxcXHU5ZmE1XStcXFwiLCBcXFwiZ1xcXCIpO1xcbiAgICAgICAgICAgIGxldCByID0gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KTtcXG4gICAgICAgICAgICBpZiAocmVnLnRlc3QocikgfHwgKGlucHV0LnN0YXJ0c1dpdGgob3JpZ2luKSAmJiBpbnB1dC5sZW5ndGggLSBvcmlnaW4ubGVuZ3RoID4gMikpIHtcXG4gICAgICAgICAgICAgICAgLy/mnInkuK3mlofvvIzlupTor6XmmK/lnKjmkJzntKLvvIzot7PmlrDpobXpnaJcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3lzZng/cnVsZT1cXFwiICsgcnVsZSArIFxcXCImcj1cXFwiICsgcnVsZSArIFxcXCIjI1xcXCIgKyB1cmwsXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sIHJ1bGUsIG9yaWdpbik7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qn6Kej5p6QXCIsXCJwYXRoXCI6XCJwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcInVcXFwiKSk7XFxubGV0IGxpc3QgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJ3aGl0ZVxcXCIsIFtdKTtcXG5sZXQgaW5XaGl0ZSA9IGxpc3QuaW5jbHVkZXModXJsKTtcXG5sZXQgZCA9IFtdO1xcbmlmICghaW5XaGl0ZSkge1xcbiAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcXG4gICAgbGV0IHdlYiA9IGdldEl0ZW0oJ3dlYicsICcwJykgPT0gXFxcIjFcXFwiO1xcbiAgICBsZXQgcnVsZSA9IGdldFBhcmFtKFxcXCJyXFxcIik7XFxuICAgIGxldCBwYXJzZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3BhcnNlXFxcIik7XFxuICAgIGQgPSBwYXJzZShydWxlLCB3ZWIsIHVybCwgaHRtbCk7XFxufVxcbmlmIChkLmxlbmd0aCA9PSAwKSB7XFxuICAgIC8v5Yy56YWN5aSx6LSlXFxuICAgIGxldCBpdGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS91XFxcIikoZ2V0UGFyYW0oXFxcInJcXFwiKSwgZ2V0SG9tZSh1cmwpKTtcXG4gICAgbGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC50aXRsZSAmJiBkb2N1bWVudC50aXRsZS5sZW5ndGgpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcbiAgICAgICAgICAgICAgICB9LCBkb2N1bWVudC50aXRsZSk7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTtcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCBqczIgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS94NWFpXFxcIikoZ2V0UGFyYW0oXFxcInJcXFwiKSwgdXJsKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGpzOiBqcyArIFxcXCI7XFxcXG5cXFwiICsganMyLFxcbiAgICAgICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxuICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcbiAgICAgICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiB1cmxcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgdG9hc3QoXFxcIkFJ5Yy56YWN5aSx6LSl77yM5bey5L2/55SoWDXliqDovb1cXFwiKTtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoZCk7XFxufSBlbHNlIHtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p3BhcnNlXCIsXCJwYXRoXCI6XCJwYXJzZVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24ocnVsZSwgd2ViLCB1cmwsIGh0bWwpIHtcXG4gICAgbGV0IGQgPSBbXTtcXG5cXG4gICAgbGV0IGFsaXN0ID0gcGRmYShodG1sLCBcXFwiYm9keSYmYVxcXCIpO1xcbiAgICBsZXQgYXJyID0gYWxpc3QubWFwKGl0ID0+IHtcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgLy9odG1sOiBpdCxcXG4gICAgICAgICAgICB0ZXh0OiBwZGZoKGl0LCBcXFwiYSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcXFwiYSYmdGl0bGVcXFwiKSxcXG4gICAgICAgICAgICBocmVmOiBwZChpdCwgXFxcImEmJmhyZWZcXFwiLCB1cmwpXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICAvL2xvZyhhcnIpO1xcbiAgICBsZXQgZGVidWcgPSBmYWxzZTtcXG5cXG4gICAgZnVuY3Rpb24gY2xlYXJUZXh0KGl0KSB7XFxuICAgICAgICByZXR1cm4gaXQucmVwbGFjZSgv56ysfOmbhnznq6AvZywgXFxcIlxcXCIpO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGlzTW92aWUoaXQpIHtcXG4gICAgICAgIGlmIChpdCA9PSBudWxsIHx8IGl0LnRleHQgPT0gbnVsbCkge1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCB0aXQgPSBpdC50aXRsZSB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGl0ID0gaXQudGV4dCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpdCA9PSBcXFwiXFxcIiB8fCBpdC5sZW5ndGggPiA4KSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy/mjpLpmaRcXG4gICAgICAgIGxldCByZWcgPSAvXFxcXC586auY5riF55u05pKtfOWGmeecn+aOqOiNkHzlvbHpmaJ85b2x6KeGfOiTneWFieeUteW9sXzpq5jmuIXnlLXlvbF856ys5LiA5a2jfOesrOS6jOWto3znrKzkuInlraN856ys5Zub5a2jfOesrOS6lOWtoy87XFxuICAgICAgICBpZiAodGl0ICE9IFxcXCJcXFwiICYmICF0aXQuaW5jbHVkZXMoaXQpIHx8IHJlZy50ZXN0KGl0KSkge1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBpdC5tYXRjaCgv5Y6f55S7fOWkh+eUqHzok53lhYl86LaF5riFfOmrmOa4hXzmraPniYd86Z+p54mIfDRLfDRrfDEwODBQfDcyMFB8VEN8SER8QkQvKVxcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIG5vdENoYXB0ZXIoaXQpIHtcXG4gICAgICAgIGlmIChpdCA9PSBudWxsIHx8IGl0LnRleHQgPT0gbnVsbCkge1xcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGl0LnRleHQubWF0Y2goL1swLTldXFxcXC5bMC05XeWIhi8pO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGlzQ2hhcHRlcihpdCwgcHJlLCBuZXh0KSB7XFxuICAgICAgICBpZiAobm90Q2hhcHRlcihpdCkpIHtcXG4gICAgICAgICAgICAvL+S8mOWFiOaOkumZpFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8v5Yik5pat5piv5LiN5piv55S15b2xXFxuICAgICAgICBpZiAoaXNNb3ZpZShpdCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBpc0NoYXB0ZXIwKGl0LCBwcmUpIHx8IGlzQ2hhcHRlcjAoaXQsIG5leHQpO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGdldENoYXB0ZXJOdW0oaXQpIHtcXG4gICAgICAgIGlmIChpdCA9PSBudWxsIHx8IGl0LnRleHQgPT0gbnVsbCkge1xcbiAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgIH1cXG4gICAgICAgIGl0ID0gaXQudGV4dCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpdCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgIH1cXG4gICAgICAgIGl0ID0gY2xlYXJUZXh0KGl0KTtcXG4gICAgICAgIGxldCByZWcgPSAvXlswLTldKiQvO1xcbiAgICAgICAgaWYgKCFyZWcudGVzdChpdCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICB9XFxuICAgICAgICBpdCA9IHBhcnNlSW50KGl0KTtcXG4gICAgICAgIGlmIChpc05hTihpdCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gLTE7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaXQgPiAxOTAwICYmIGl0IDwgMjEwMCkge1xcbiAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBpdDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBpc0NoYXB0ZXIwKGl0LCBicm90aGVyKSB7XFxuICAgICAgICAvKmlmIChkZWJ1Zykge1xcbiAgICAgICAgICAgIGxvZyh7XFxuICAgICAgICAgICAgICAgIGl0OiBpdCxcXG4gICAgICAgICAgICAgICAgYnJvdGhlcjogYnJvdGhlclxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSovXFxuICAgICAgICBpdCA9IGdldENoYXB0ZXJOdW0oaXQpO1xcbiAgICAgICAgLy9pZiAoZGVidWcpIGxvZyhpdCk7XFxuICAgICAgICBpZiAoaXQgPCAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgYnJvdGhlciA9IGdldENoYXB0ZXJOdW0oYnJvdGhlcik7XFxuICAgICAgICAvL2lmIChkZWJ1ZykgbG9nKGJyb3RoZXIpO1xcbiAgICAgICAgaWYgKGJyb3RoZXIgPCAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGl0IC0gYnJvdGhlciA8IDIgJiYgaXQgLSBicm90aGVyID4gLTI7XFxuICAgIH1cXG5cXG4gICAgbGV0IF93ZWIgPSAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGxldCB1cmxzID0gX2dldFVybHMoKTtcXG4gICAgICAgIGxldCByZWcgPSAvXFxcXC5odG1sfFxcXFwuY3NzfFxcXFwuanMvO1xcbiAgICAgICAgZm9yIChsZXQgayBpbiB1cmxzKSB7XFxuICAgICAgICAgICAgaWYgKCFyZWcudGVzdCh1cmxzW2tdKSAmJiB1cmxzW2tdLm1hdGNoKC9cXFxcLm1wNHxcXFxcLm0zdTgvKSkge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmxvZyh1cmxzW2tdKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ5X2JyaWRnZV9hcHAuZ2V0SGVhZGVyVXJsKHVybHNba10ucmVwbGFjZSgvLio/dXJsPS8sIFxcXCJcXFwiKSkgKyBcXFwiI2lnbm9yZUltZz10cnVlI1xcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgIGxldCB0ID0gaXQudGV4dDtcXG4gICAgICAgIGlmICghaXQuaHJlZiB8fCBpdC5ocmVmID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgcHJlID0gaSA9PSAwID8gbnVsbCA6IGFycltpIC0gMV07XFxuICAgICAgICBsZXQgbmV4dCA9IGkgPT0gKGFyci5sZW5ndGggLSAxKSA/IG51bGwgOiBhcnJbaSArIDFdO1xcbiAgICAgICAgaWYgKGlzQ2hhcHRlcihpdCwgcHJlLCBuZXh0KSkge1xcbiAgICAgICAgICAgIGlmICh3ZWIpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybHggPSBcXFwid2ViUnVsZTovL1xcXCIgKyBpdC5ocmVmICsgXFxcIkBcXFwiICsgX3dlYjtcXG4gICAgICAgICAgICAgICAgdmFyIGV4dHJheCA9IHtcXG4gICAgICAgICAgICAgICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdC5ocmVmLFxcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tSdWxlczogWycubTRhJywgJy5tcDMnLCAnLmZsdicsICcuYXZpJywgJy4zZ3AnLCAnLm1wZWcnLCAnLndtdicsICcubW92JywgJy5ybXZiJywgJy5naWYnLCAnLmpwZWcnLCAnLnBuZycsICcuaWNvJywgJy5zdmcnXVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB1cmx4ID0gXFxcInZpZGVvOi8vXFxcIiArIGl0LmhyZWY7XFxuICAgICAgICAgICAgICAgIHZhciBleHRyYXggPSB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogaXQuaHJlZlxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdCxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmx4LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYXhcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAoZC5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICBkLnNwbGljZSgwLCAwLCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLwn5SXXFxcIiArIHVybCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiMjXFxcIiArIHVybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCJcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgLy/kuLrnur/ot6/liqDliIblibLnur9cXG4gICAgICAgIGxldCBkMiA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgZDIucHVzaChkW2ldKTtcXG4gICAgICAgICAgICBpZiAoaSA8IGQubGVuZ3RoIC0gMSkge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBkW2ldO1xcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBwYXJzZUludChjbGVhclRleHQoaXQudGl0bGUpKTtcXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBkW2kgKyAxXTtcXG4gICAgICAgICAgICAgICAgbGV0IHQyID0gcGFyc2VJbnQoY2xlYXJUZXh0KG5leHQudGl0bGUpKTtcXG4gICAgICAgICAgICAgICAgaWYgKHQyIC0gdDEgPiAxIHx8IHQxIC0gdDIgPiAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBkMi5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgZDIucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkMi5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZDIucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLljLnphY3mnInor6/vvJ/ngrnmiJHkuI3lho3ljLnphY3mraTpobXpnaJcXFwiLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuKnppqjmj5DnpLpcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXFxcIuWmguaenOWPquaYr+WNleasoeWMuemFjeWksei0pe+8jOeCueWHu+S4i+aWueWPlua2iOaMiemSruWIt+aWsOmhtemdoumHjeaWsOWMuemFje+8jOWmguaenOehruiupOaXoOazleWMuemFje+8jOeCueWHu+S4i+aWueehruWumuaMiemSruWKoOWFpeeZveWQjeWNlVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjYW5jZWw6IFxcXCJyZWZyZXNoUGFnZSgpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwid2hpdGVcXFwiLCBbXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwid2hpdGVcXFwiLCBsaXN0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LliqDlhaXnmb3lkI3ljZVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB1cmwpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgdXJsKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvYWNjb3VudFxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIGQyO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwieDVBSVwiLFwicGF0aFwiOlwieDVhaVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24ocnVsZSwgYW5jaG9ySWQpIHtcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIGFuY2hvcklkLCB3aGl0ZSkgPT4ge1xcbiAgICAgICAgaWYgKHdpbmRvdy5jaGVjazAgPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrMCgpIHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcXFwiaHRtbFxcXCIpLmlubmVySFRNTDtcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5wdXRWYXIoXFxcImh0bWwwXFxcIiwgaHRtbCk7XFxuICAgICAgICAgICAgICAgICAgICBmYmEucGFyc2VMYXp5UnVsZUFzeW5jKCQkJCgpLmxhenlSdWxlKChydWxlLCB1cmwsIGFuY2hvcklkLCB3aGl0ZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZ2V0VmFyKFxcXCJodG1sMFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoXFxcImh0bWwwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3ZWIgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdoaXRlMiA9IFtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJmc291LmNvbVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiYmluZy5cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5XaGl0ZSA9IHdoaXRlMi5maWx0ZXIoaXQgPT4gdXJsLmluY2x1ZGVzKGl0KSkubGVuZ3RoID4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5XaGl0ZSAmJiAhd2hpdGUuaW5jbHVkZXModXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvcGFyc2U/cnVsZT1cXFwiICsgcnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2UocnVsZSwgd2ViLCB1cmwsIGh0bWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5XaGl0ZSAmJiBkLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJmlmcmFtZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnIubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3JjID0gcGRmaChhcnJbMF0sIFxcXCJpZnJhbWUmJnNyY1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuiOt+WPluWIsGlmcmFtZe+8mlxcXCIgKyBzcmMpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdoaXRlLmluY2x1ZGVzKHNyYykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmMgJiYgc3JjLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSAmJiAhc3JjLm1hdGNoKC9cXFxcLm1wNHxcXFxcLm0zdTh8XFxcXC5tcDN8XFxcXC5mbHZ8XFxcXC5ta3YvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHNyYyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlKHJ1bGUsIHdlYiwgc3JjLCBodG1sKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIuWwneivleiOt+WPlmlmcmFtZeWksei0pVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRbMF0udXJsID0gJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYW5jaG9ySWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVzYyA9IGdldFZhcihhbmNob3JJZCwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYyA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1RGVzYyhcXFwiZmxvYXQmJnNjcmVlbi0xNzBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKGFuY2hvcklkLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hYNURlc2MoXFxcImZsb2F0JiYwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGFuY2hvcklkICsgXFxcIng1XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkWzBdLnRpdGxlID0gXFxcIuWxleW8gC/mlLbotbdcXFwiICsgZFswXS50aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihhbmNob3JJZCArIFxcXCJ4NVxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoWDVEZXNjKFxcXCJmbG9hdCYmMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgZCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRyYSA9IGl0LmV4dHJhIHx8IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmNscyA9IFxcXCJ4NWFpXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5leHRyYSA9IGV4dHJhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJ4NWFpXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoYW5jaG9ySWQsIGQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIkFJ5Yy56YWN5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCJwYXJzZUxhenlSdWxlQXN5bmM6XFxcIiArIGQubGVuZ3RoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5sZW5ndGggPiAwID8gXFxcIjFcXFwiIDogXFxcIjBcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUudG9TdHJpbmcoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgcnVsZSwgbG9jYXRpb24uaHJlZiwgYW5jaG9ySWQsIHdoaXRlKSwgJCQkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXFxcIjBcXFwiID09IGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaGVja2MgPSB3aW5kb3cuY2hlY2tjICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAod2luZG93LmNoZWNrYyA+IDEyMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmxvZyhcXFwi5omn6KGM6LaF6L+HMzDnp5LvvIzml6Dms5Xop6PmnpBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsqL1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdpbmRvdy5jaGVjazAsIDI1MCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jaGVja3VybCA9IGxvY2F0aW9uLmhyZWY7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrdTAoKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmNoZWNrdXJsICE9IGxvY2F0aW9uLmhyZWYpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2hhc2jlj5HnlJ/kuoblj5jljJZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2hlY2tjID0gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2swKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2t1MCwgMjUwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3UwKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICBmYmEubG9nKGUudG9TdHJpbmcoKSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdpbmRvdy5jaGVjazAsIDI1MCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgd2luZG93LmNoZWNrYyA9IDA7XFxuICAgICAgICAgICAgd2luZG93LmNoZWNrMCA9IGNoZWNrMDtcXG4gICAgICAgICAgICBjaGVjazAoKTtcXG4gICAgICAgIH1cXG4gICAgfSwgcnVsZSwgYW5jaG9ySWQsIHN0b3JhZ2UwLmdldEl0ZW0oXFxcIndoaXRlXFxcIiwgW10pKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobVcIixcInBhdGhcIjpcImhvbWVcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxubGV0IHVybCA9IOe9keermTtcXG5sZXQgYW5jaG9ySWQgPSB1cmw7XFxubGV0IGpzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDVhaVxcXCIpKE1ZX1JVTEUudGl0bGUsIGFuY2hvcklkKTtcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdVxcXCIpKE1ZX1JVTEUudGl0bGUsIGdldEhvbWUodXJsKSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IHVybCxcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdXJsSW50ZXJjZXB0b3I6IGl0ZSxcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBqczoganMsXFxuICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWVcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogYW5jaG9ySWRcXG4gICAgfVxcbn0pO1xcblxcbnNldFJlc3VsdChkKTtcIn1dIiwiaWNvbiI6IiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment