Advertisement
xiaomianao666

邀您一起看:榜上佳婿

May 23rd, 2025
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥榜上佳婿@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWHveaVsFwiLFwicGF0aFwiOlwiaGFuc2h1XCIsXCJydWxlXCI6XCJjb25zdCBob3N0MSA9IGdldE15VmFyKFxcXCJob3N0XFxcIilcXG5jb25zdCB0dWJpYW8xID0gXFxcImh0dHBzOi8vaWNkbi5iaW5tdC5jYy8yNTA0LzY4MTBmM2I2MjkzNDcucG5nXFxcIlxcblxcbmZ1bmN0aW9uIGFlc2VjYmRlKHdvcmQsIGtleXkpIHtcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFwiKTtcXG4gICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoa2V5eSk7XFxuICAgIGxldCBkZWNyeXB0ZWQgPSBDcnlwdG9VdGlsLkFFUy5kZWNyeXB0KHdvcmQsIGtleSwge1xcbiAgICAgICAgbW9kZTogXFxcIkFFUy9FQ0IvUEtDUzdQYWRkaW5nXFxcIlxcbiAgICB9KTtcXG4gICAgcmV0dXJuIGRlY3J5cHRlZC50b1N0cmluZygpXFxufVxcblxcbmZ1bmN0aW9uIGFlc2VjYmVuKHdvcmQsIGtleXkpIHtcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFwiKTtcXG4gICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoa2V5eSk7XFxuICAgIGxldCBlbmNyeXB0ZWQgPSBDcnlwdG9VdGlsLkFFUy5lbmNyeXB0KHdvcmQsIGtleSwge1xcbiAgICAgICAgbW9kZTogXFxcIkFFUy9FQ0IvUEtDUzdQYWRkaW5nXFxcIlxcbiAgICB9KTtcXG4gICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpXFxufVxcblxcbmZ1bmN0aW9uIHJlcTEodXJsMSwgYm9keTEpIHtcXG4gICAgdmFyIGh0bWwxID0gcmVxdWVzdChob3N0MSt1cmwxLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcInZlcnNpb25cXFwiOiBcXFwiMS4yLjBcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keTogYm9keTEsXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KTsgLy9sb2coaHRtbDEpXFxuICAgIHJldHVybiBKU09OLnBhcnNlKGFlc2VjYmRlKGh0bWwxLCBcXFwiYWFzc2Rkd3d4eGxsc3gxeFxcXCIpKVxcbn1cXG5cXG5mdW5jdGlvbiByZXEyKHVybDEsIGtleXkpIHtcXG4gICAgdmFyIGh0bWwxID0gcmVxdWVzdCh1cmwxLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcInZlcnNpb25cXFwiOiBcXFwiMS4yLjBcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiR0VUXFxcIlxcbiAgICB9KTsgLy9sb2coaHRtbDEpXFxuICAgIHJldHVybiBKU09OLnBhcnNlKGFlc2VjYmRlKGh0bWwxLCBrZXl5KSlcXG59XFxuXFxuZnVuY3Rpb24gY29uZmlncygpIHtcXG4gICAgaWYoZ2V0TXlWYXIoJ2EnLCcwJykgPT0gJzAnKXtcXG4gICAgICAgIHRyeXtcXG4gICAgICAgICAgICB2YXIgaG9zdCA9IHJlcTIoXFxcImh0dHA6Ly8xMTYuMjA0LjE3MC4yMjc6MTE2ODEvYXBpLnR4dFxcXCIsIFxcXCJyZWN0YW5nbGVhZHNhZHhhXFxcIilbMF07IGxvZyhob3N0KVxcbiAgICAgICAgICAgIHZhciBodG1sMSA9IHJlcXVlc3QoaG9zdCsnL3NoYXJrL2FwaS5waHA/YWN0aW9uPWNvbmZpZ3MnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogXFxcIjEuMi4wXFxcIlxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAndXNlcm5hbWU9JnRva2VuPScsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgfSk7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShhZXNlY2JkZShodG1sMS5yZXBsYWNlKC88Lio+L2csICcnKS5yZXBsYWNlKC9cXFxcbi9nLCAnJyksIFxcXCJhYXNzZGR3d3h4bGxzeDF4XFxcIikpOyAvL2xvZyhkYXRhKVxcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIHB1dE15VmFyKCdob3N0Jyxob3N0KVxcbiAgICAgICAgICAgIHB1dE15VmFyKCdkbVVybCcsZGF0YS5jb25maWcuZG1VcmwpXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2h1bHVlJyxkYXRhLmNvbmZpZy5odWx1ZS5zcGxpdCgnJicpWzBdKVxcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdwbGF5ZXJpbmZvcycsZGF0YS5wbGF5ZXJpbmZvcylcXG4gICAgICAgICAgICBwdXRNeVZhcignYScsJzEnKVxcbiAgICAgICAgICAgIFxcbiAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gTGlzdDEoZCwgbGlzdCkge1xcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnZvZF9uYW1lLFxcbiAgICAgICAgICAgIGRlc2M6IGl0ZW0udm9kX3JlbWFya3MsXFxuICAgICAgICAgICAgcGljX3VybDogaXRlbS52b2RfcGljLFxcbiAgICAgICAgICAgIHVybDogcnVsZTEoaXRlbS52b2RfaWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfM1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLnZvZF9uYW1lXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcXG59XFxuXFxuZnVuY3Rpb24gZmVubGVpKGQsIGRhdGEsIHVybCkge1xcbiAgICBmb3IobGV0IGEgb2YgZGF0YSl7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhLnNwbGl0KFxcXCIjXFxcIilbMV0gPT0gZ2V0TXlWYXIodXJsLFxcXCIxXFxcIikgPyBhcGl2aWV3LmNvbG9ycihcXFwiI0ZGOEMwMFxcXCIsIGEuc3BsaXQoXFxcIiNcXFwiKVswXSkgOiBhLnNwbGl0KFxcXCIjXFxcIilbMF0sXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChhLCB1cmwpPT57XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKHVybCxhLnNwbGl0KFxcXCIjXFxcIilbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgYSwgdXJsKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIHR1aWppYW4oZCkge1xcbiAgICB2YXIgbGlzdDEgPSByZXEyKGhvc3QxK1xcXCIvYXBpLnBocC92MS5ob21lL2RhdGE/dHlwZV9pZD0yMFxcXCIsIFxcXCJhYXNzZGR3d3h4bGxzeDF4XFxcIikuZGF0YS52ZXJMYW5kTGlzdFxcbiAgICBsaXN0MS5mb3JFYWNoKGl0ZW0xID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0xLnR5cGVfbmFtZSxcXG4gICAgICAgICAgICBpbWc6IHR1YmlhbzEsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KVxcbiAgICAgICAgaXRlbTEudmVydGljYWxfbGFuZHMuZm9yRWFjaChpdGVtMiA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0yLnZvZF9uYW1lLFxcbiAgICAgICAgICAgICAgICBkZXNjIDogaXRlbTIudm9kX3JlbWFya3MsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0yLnZvZF9waWMsXFxuICAgICAgICAgICAgICAgIHVybDogcnVsZTEoaXRlbTIudm9kX2lkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9KVxcbn1cXG5cXG5mdW5jdGlvbiBmZW5sZWkxKGQpIHtcXG4gICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgZmVubGVpKGQsIFtcXFwi55S15b2xIzFcXFwiLCBcXFwi55S16KeG5YmnIzJcXFwiLCBcXFwi5Yqo5ryrIzNcXFwiLCBcXFwi57u86Im6IzRcXFwiLCBcXFwi55+t5YmnIzIxXFxcIiwgXFxcIuS9k+iCsiMyM1xcXCIsIFxcXCLnm7Tmkq0jMjJcXFwiLCBcXFwi5bCR5YS/IzI0XFxcIl0sIFxcXCJ0eXBlX2lkXFxcIilcXG4gICAgfVxcbiAgICB2YXIgbGlzdDEgPSByZXExKFxcXCIvYXBpLnBocC92MS5jbGFzc2lmeS9jb250ZW50P3BhZ2U9XFxcIitwYWdlLCBKU09OLnN0cmluZ2lmeSh7XFxcImFyZWFcXFwiOlxcXCLlhajpg6jlnLDljLpcXFwiLFxcXCJsYW5nXFxcIjpcXFwi5YWo6YOo6K+t6KiAXFxcIixcXFwicmFua1xcXCI6XFxcIuacgOaWsFxcXCIsXFxcInR5cGVcXFwiOlxcXCLlhajpg6jnsbvlnotcXFwiLFxcXCJ0eXBlX2lkXFxcIjpnZXRNeVZhcihcXFwidHlwZV9pZFxcXCIsIFxcXCIxXFxcIiksXFxcInllYXJcXFwiOlxcXCLlhajpg6jlubTku6NcXFwifSkpLmRhdGEudmlkZW9fbGlzdFxcbiAgICBMaXN0MShkLCBsaXN0MSlcXG59XFxuXFxuZnVuY3Rpb24gcGFpaGFuZyhkKSB7XFxuICAgIGZlbmxlaShkLCBbXFxcIueUteW9sSMxXFxcIiwgXFxcIueUteinhuWJpyMyXFxcIiwgXFxcIuWKqOa8qyMzXFxcIiwgXFxcIue7vOiJuiM0XFxcIl0sIFxcXCJyYW5rXFxcIilcXG4gICAgdmFyIGxpc3QxID0gcmVxMihob3N0MStcXFwiL2FwaS5waHAvdjEucmFuay9SYW5rRGF0YT9wYWdlPTEmdHlwZV9pZD1cXFwiK2dldE15VmFyKFxcXCJyYW5rXFxcIiwgXFxcIjFcXFwiKSwgXFxcImFhc3NkZHd3eHhsbHN4MXhcXFwiKS5kYXRhLnZpZGVvc1xcbiAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS52b2RfbmFtZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnZvZF9waWMsXFxuICAgICAgICAgICAgdXJsOiBydWxlMShpdGVtLnZvZF9pZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSlcXG59XFxuXFxuZnVuY3Rpb24gcnVsZTEodm9kX2lkKSB7XFxuICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I1xcXCIrdm9kX2lkK1xcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpLmVyamkoTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV0pXFxuICAgIH0pXFxufVxcblxcbmZ1bmN0aW9uIGVyamkodm9kX2lkKSB7XFxuICAgIHZhciBkID0gW11cXG4gICAgdHJ5e1xcbiAgICB2YXIgZGF0YTEgPSByZXEyKGhvc3QxK1xcXCIvYXBpLnBocC92MS5wbGF5ZXIvZGV0YWlscz92b2RfaWQ9XFxcIit2b2RfaWQsIFxcXCJhYXNzZGR3d3h4bGxzeDF4XFxcIikuZGF0YVxcbiAgICB2YXIgZGV0YWlsID0gZGF0YTEuZGV0YWlsXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZGV0YWlsLnZvZF9uYW1lK1xcXCJcXFxcblxcXCIrZGV0YWlsLnZvZF9hY3RvcixcXG4gICAgICAgIGRlc2M6IGRldGFpbC52b2RfY2xhc3MrXFxcIlxcXFxuXFxcIitkZXRhaWwudm9kX3JlbWFya3MsXFxuICAgICAgICBwaWNfdXJsOiBkZXRhaWwudm9kX3BpYyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZ3JhZGllbnQ6IHRydWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgc2V0RGVzYyhkLCBkZXRhaWwudm9kX2NvbnRlbnQucmVwbGFjZSgvWzxwPnw8L3A+XS9nLCBcXFwiXFxcIikpXFxuICAgIFxcbiAgICB2YXIgdGFiMSA9IFtdXFxuICAgIHZhciBsaXN0MSA9IFtdXFxuICAgIGRldGFpbC5wbGF5X3VybF9saXN0Lm1hcChpdGVtID0+IHtcXG4gICAgICAgIHRhYjEucHVzaChpdGVtLmZyb20pXFxuICAgICAgICBsaXN0MS5wdXNoKGl0ZW0udXJscylcXG4gICAgfSlcXG4gICAgdmFyIGxhenkxID0gJChcXFwiXFxcIikubGF6eVJ1bGUoKHRhYjEpID0+IHtcXG4gICAgICAgIHZhciB7XFxuICAgICAgICAgICAgYWVzZWNiZGVcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuICAgICAgICAvLyDmoLnmja4gcGxheWVybmFtZSDojrflj5blr7nlupTnmoQgcGxheWVyamlla291XFxuICAgICAgICBmdW5jdGlvbiBnZXRQbGF5ZXJKaWVrb3UocGxheWVybmFtZSkge1xcbiAgICAgICAgICAgIGNvbnN0IHBsYXllckluZm8gPSBzdG9yYWdlMC5nZXRNeVZhcigncGxheWVyaW5mb3MnKS5maW5kKGl0ZW0gPT4gaXRlbS5wbGF5ZXJuYW1lID09PSBwbGF5ZXJuYW1lKTtcXG4gICAgICAgICAgICByZXR1cm4gcGxheWVySW5mbyB8fCBcXFwiXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHBhcnNlID0gdGFiMVtnZXRNeVZhcihcXFwieGlhbmx1aW5kZXhcXFwiLCAnMCcpXTsgLy9sb2cocGFyc2UpXFxuICAgICAgICBpZiAocGFyc2UuaW5jbHVkZXMoXFxcInpoaWJvXFxcIikpIHJldHVybiBpbnB1dCtcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiXFxuICAgICAgICB2YXIgamlla291ID0gZ2V0UGxheWVySmlla291KHBhcnNlKS5wbGF5ZXJqaWVrb3U7IC8vbG9nKGppZWtvdSlcXG4gICAgICAgIHZhciBwYXJzZWUgPSBhZXNlY2JkZShqaWVrb3UsIGdldE15VmFyKCdodWx1ZScpKTsgLy9sb2cocGFyc2VlKVxcbiAgICAgICAgdmFyIGh0bWwxID0gcmVxdWVzdChnZXRNeVZhcihcXFwiaG9zdFxcXCIpK1xcXCIvc2hhcmsvYXBpLnBocD9hY3Rpb249cGFyc2V2b2RcXFwiLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwidmVyc2lvblxcXCI6IFxcXCIxLjIuMFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IFxcXCJwYXJzZT1cXFwiK3BhcnNlZStcXFwiJnVybD1cXFwiK2lucHV0K1xcXCImbWF0Y2hpbmc9XFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGFlc2VjYmRlKGh0bWwxLnJlcGxhY2UoLzwuKj4vZywgJycpLnJlcGxhY2UoL1xcXFxuL2csICcnKSwgXFxcImFhc3NkZHd3eHhsbHN4MXhcXFwiKSkudXJsXFxuICAgICAgICBpZiAocGFyc2UuaW5jbHVkZXMoXFxcIk5CWVxcXCIpKSB7XFxuICAgICAgICAgICAgaWYgKHBsYXkuaW5jbHVkZXMoXFxcIi5tcDRcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcGxheSA9IHJlcXVlc3QocGxheSwge1xcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6ZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICBvbmx5SGVhZGVyczp0cnVlXFxuICAgICAgICAgICAgICAgIH0pOyAvL2xvZyhwbGF5KVxcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGF5KS5oZWFkZXJzLmxvY2F0aW9uWzBdK1xcXCIjaXNWaWRlbz10cnVlI1xcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3ZpZGVvLm0zdThcXFwiLCByZXF1ZXN0KHBsYXkpKVxcbiAgICAgICAgICAgIHJldHVybiBnZXRQYXRoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3ZpZGVvLm0zdThcXFwiKStcXFwiI1xcXCIrcGxheVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHBsYXkpIHJldHVybiBwbGF5K1xcXCIjaXNWaWRlbz10cnVlI1xcXCJcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgdGFiMSlcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppaGFuc2h1JykpLnJ1bGUpXFxuICAgIFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnjJzkvaDllpzmrKJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcImh0dHBzOi8vaWNkbi5iaW5tdC5jYy8yNTA0LzY4MTBmM2I2MjkzNDcucG5nXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgIH0pXFxuICAgIExpc3QxKGQsIGRhdGExLmxpa2VzLmxpa2VfdmlkZW8uc2xpY2UoMCw2KSlcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoZClcXG59XFxuXFxuZnVuY3Rpb24gc2VhcmNoKHdvcmQsIHBhZ2UpIHtcXG4gICAgdmFyIGxpc3QxID0gcmVxMihob3N0MStcXFwiL2FwaS5waHAvdjEuc2VhcmNoL2RhdGE/d2Q9XFxcIit3b3JkK1xcXCImdHlwZV9pZD0wJnBhZ2U9XFxcIitwYWdlLCBcXFwiYWFzc2Rkd3d4eGxsc3gxeFxcXCIpLmRhdGEuc2VhcmNoX2RhdGFcXG4gICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udm9kX25hbWUsXFxuICAgICAgICAgICAgY29udGVudDogaXRlbS52b2RfYmx1cmIsXFxuICAgICAgICAgICAgZGVzYzogaXRlbS52b2RfcmVtYXJrcyxcXG4gICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnZvZF9waWMsXFxuICAgICAgICAgICAgdXJsOiBydWxlMShpdGVtLnZvZF9pZClcXG4gICAgICAgIH0pXFxuICAgIH0pXFxufVxcblxcbmNvbnN0IGFwaXZpZXcgPSB7XFxuICAgIGNvbG9yOiAoeWFuc2UsIHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9Jyt5YW5zZSsnPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXG4gICAgfSxcXG4gICAgY29sb3JyOiAoeWFuc2UsIHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIicreWFuc2UrJ1xcXCI+Jyt0ZXN0Kyc8L2ZvbnQ+JztcXG4gICAgfSxcXG4gICAgc3Ryb25nOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXN0ICsgJzwvc3Ryb25nPic7XFxuICAgIH0sXFxuICAgIHNtYWxsOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8c21hbGw+JyArIHRlc3QgKyAnPC9zbWFsbD4nO1xcbiAgICB9LFxcbiAgICBjZW50ZXI6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxwIHN0eWxlPVxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcIj4nICsgdGVzdCArICc8L3A+J1xcbiAgICB9LFxcbiAgICBiaWc6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxiaWc+JyArIHRlc3QgKyAnPC9iaWc+JztcXG4gICAgfSxcXG4gICAgZ3JleTogKHRleHQpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyB0ZXh0ICsgXFxcIjwvZm9udD5cXFwiO1xcblxcbiAgICB9LFxcbiAgICBncmF5OiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCI8Zm9udCBjb2xvcj0nZ3JheSc+XFxcIiArIHRlc3QgKyBcXFwiPC9mb250PlxcXCI7XFxuICAgIH0sXFxuICAgIHJpY2g6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmVxcXCIgKyB0ZXN0O1xcbiAgICB9LFxcbiAgICBhZGRyZXNzVGFnOiAodXJsLCB0ZXh0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxhIGhyZWY9J1xcXCIgKyB1cmwgKyBcXFwiJz5cXFwiICsgdGV4dCArIFxcXCI8L2E+XFxcIlxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIHNldERlc2MoZCwgZGVzYywgbnVtKSB7XFxuICAgIC8vbG9nKGRlc2MpXFxuICAgIGlmIChkZXNjID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgcmV0dXJuO1xcbiAgICB9XFxuICAgIGRlc2MgPSBkZXNjLmNvbnN0cnVjdG9yID09IEFycmF5ID8gZGVzYy5qb2luKCc8YnI+JykgOiBkZXNjO1xcbiAgICBpZiAoZGVzYy5yZXBsYWNlKC8oPGJyPnxcXFxccyt8PFxcXFwvP3A+fCZuYnNwOykvZywgJycpLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgY29uc3QgbWFyayA9ICdkZXNjJztcXG4gICAgbnVtID0gdHlwZW9mKG51bSkgPT0gJ3VuZGVmaW5lZCcgPyA0NSA6IG51bVxcbiAgICBkZXNjID0gZGVzYy5zdGFydHNXaXRoKCfjgIDjgIAnKSA/IGRlc2MgOiAn44CA44CAJyArIGRlc2M7XFxuICAgIGRlc2MgPSBkZXNjLnJlcGxhY2UoLycvZywgXFxcIiYjMzk7XFxcIik7XFxuICAgIGRlc2MgPSBkZXNjLnJlcGxhY2UoL1xcXFxyXFxcXG4vZywgXFxcIjxicj5cXFwiKTtcXG4gICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXHIvZywgXFxcIjxicj5cXFwiKTtcXG4gICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXG4vZywgXFxcIjxicj5cXFwiKTtcXG5cXG4gICAgZnVuY3Rpb24gc3Vic3RyKHN0ciwgbWF4TGVuZ3RoKSB7XFxuICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KGkpID4gMjU1KSB7XFxuICAgICAgICAgICAgICAgIGxlbiArPSAyO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGxlbisrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIuc2xpY2UoMCwgaSkgKyAnLi4uJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gc3RyO1xcbiAgICB9XFxuICAgIGxldCBzZGVzYyA9IHN1YnN0cihkZXNjLCBudW0pO1xcbiAgICB2YXIgY29sb3JzID0ge1xcbiAgICAgICAgc2hvdzogXFxcImJsYWNrXFxcIixcXG4gICAgICAgIGhpZGU6IFxcXCJncmV5XFxcIlxcbiAgICB9XFxuICAgIHZhciBsYXp5ID0gJChgI25vTG9hZGluZyNgKS5sYXp5UnVsZSgoZGMsIHNkYywgbSwgY3MpID0+IHtcXG4gICAgICAgIHZhciBzaG93ID0gc3RvcmFnZTAuZ2V0SXRlbShtLCAnMCcpO1xcbiAgICAgICAgdmFyIHRpdGxlID0gZmluZEl0ZW0oJ2Rlc2MnKS50aXRsZTtcXG4gICAgICAgIHZhciByZSA9IC8oPFxcXFwvc21hbGw+PGJyPi4qPz4pLisvZztcXG4gICAgICAgIHZhciBleHAgPSAn5bGV5byAOic7XFxuICAgICAgICB2YXIgcmV0ID0gJ+aUtui1tzonO1xcbiAgICAgICAgaWYgKHNob3cgPT0gJzEnKSB7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShyZXQsIGV4cClcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgc2RjICsgJzwvc21hbGw+JylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPFxcXFwvc21hbGw+PGJyPlxcXFw8Zm9udCBjb2xvcj1cXFwiKS4qPyhcXFwiPikvLCAnJDEnICsgY3MuaGlkZSArICckMicpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcwJyk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2Rlc2MnLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXhwLCByZXQpXFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShyZSwgJyQxJyArIGRjICsgJzwvc21hbGw+JylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPFxcXFwvc21hbGw+PGJyPlxcXFw8Zm9udCBjb2xvcj1cXFwiKS4qPyhcXFwiPikvLCAnJDEnICsgY3Muc2hvdyArICckMicpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcxJyk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gYGhpa2VyOi8vZW1wdHlgXFxuICAgIH0sIGRlc2MsIHNkZXNjLCBtYXJrLCBjb2xvcnMpXFxuICAgIHZhciBzYyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyAn5bGV5byAOicgOiAn5pS26LW3Oic7XFxuICAgIHZhciBkYyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyBzZGVzYyA6IGRlc2M7XFxuICAgIHZhciBjcyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyBjb2xvcnMuaGlkZSA6IGNvbG9ycy5zaG93O1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICcnICsgJzxiPjxmb250IGNvbG9yPVxcXCIjMDk4QUMxXFxcIj7iiLfliafmg4XnroDku4tcXHQ8L2ZvbnQ+PC9iPicgKyBcXFwiPHNtYWxsPjxhIHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IG5vbmU7JyBocmVmPSdcXFwiICsgbGF6eSArIFxcXCInPlxcXCIgKyBzYyArICc8L2E+PC9zbWFsbD48YnI+PGZvbnQgY29sb3I9XFxcIicgKyBjcyArICdcXFwiPicgKyBgJHtkY31gICsgJzwvc21hbGw+JyxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6ICdkZXNjJyxcXG4gICAgICAgICAgICBsaW5lU3BhY2luZzogNixcXG4gICAgICAgICAgICB0ZXh0U2l6ZTogMTUsXFxuICAgICAgICAgICAgbGluZVZpc2libGU6IHRydWUsXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgYXBpdmlldyxcXG4gICAgdHVpamlhbixcXG4gICAgZmVubGVpMSxcXG4gICAgcGFpaGFuZyxcXG4gICAgZXJqaSxcXG4gICAgc2VhcmNoLFxcbiAgICBjb25maWdzLFxcbiAgICBhZXNlY2JkZVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+WHveaVsFwiLFwicGF0aFwiOlwiZXJqaWhhbnNodVwiLFwicnVsZVwiOlwidmFyIHRhYnMgPSB0YWIxXFxudmFyIGxpc3RzID0gbGlzdDFcXG52YXIgbGF6eSA9IGxhenkxXFxuXFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcihcXFwibGlzdHNcXFwiKTtcXG59KSk7XFxuc3RvcmFnZTAucHV0TXlWYXIoXFxcImxpc3RzXFxcIiwgbGlzdHMpO1xcbnZhciBsaXN0ID0gbGlzdHNbZ2V0TXlWYXIoTVlfVVJMLCAnMCcpXTtcXG52YXIg5o6S5bqPID0gZ2V0TXlWYXIoTVlfVVJMICsgXFxcIueroOiKguaOkuW6j1xcXCIsICcjMWFhZDE5XFxcIj7mraPluo8nKTtcXG52YXIg5o+Q56S6ID0g5o6S5bqPID09ICcjRkYwMDAwXFxcIj7lgJLluo8nID8gJyMxYWFkMTlcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXCI+5YCS5bqPJztcXG52YXIg5o6S5bqP5ZCNID0gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjrmjpLluo88L3NwYW4+PC9iPic7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDmjpLluo8gKyAnPC9zcGFuPjwvYj4nLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHRhYnMsIOaOkuW6j+WQjSwgbGF6eSwgZCwgVFbmjqjpgIEpID0+IHtcXG4gICAgICAgIHZhciBsaXN0cyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJsaXN0c1xcXCIpO1xcbiAgICAgICAgdmFyIOeroOiKgiA9IGxpc3RzW2dldE15VmFyKE1ZX1VSTCwgJzAnKV07XFxuICAgICAgICB2YXIg5o6S5bqPID0gZ2V0TXlWYXIoTVlfVVJMICsgXFxcIueroOiKguaOkuW6j1xcXCIsICcjMWFhZDE5XFxcIj7mraPluo8nKTtcXG4gICAgICAgIHZhciDmj5DnpLogPSDmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXCI+5q2j5bqPJyA6ICcjRkYwMDAwXFxcIj7lgJLluo8nO1xcbiAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJf5o6S5bqPXFxcIixcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCJUVmJveOaOqOmAgVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogVFbmjqjpgIEodGFicywgbGlzdHMsIGQpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB0aXRsZTog5o6S5bqP5ZCNLnJlcGxhY2UoJ+aOkuW6jycsIOaPkOekuilcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKOaOkuW6jyA9PSAnIzFhYWQxOVxcXCI+5q2j5bqPJykge1xcbiAgICAgICAgICAgIOeroOiKgi5yZXZlcnNlKCk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgY3AgPSDnq6DoioIubWFwKChkYXRhLCBzc2lkKSA9PiAoe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgdXJsOiBkYXRhLnVybCArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6IOeroOiKgi5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBjbHM6IE1ZX1VSTCArIFxcXCJf6YCJ6ZuGXFxcIixcXG4gICAgICAgICAgICAgICAgaWQ6IGRhdGEudXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpO1xcbiAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKE1ZX1VSTCArIFxcXCJf6YCJ6ZuGXFxcIik7XFxuICAgICAgICBhZGRJdGVtQmVmb3JlKE1ZX1VSTCArIFxcXCJmb290ZXJcXFwiLCBjcCk7XFxuICAgICAgICBwdXRNeVZhcihNWV9VUkwgKyBcXFwi56ug6IqC5o6S5bqPXFxcIiwg5o+Q56S6KTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgIH0sIHRhYnMsIOaOkuW6j+WQjSwgbGF6eSwgZFswXSwgVFbmjqjpgIEpLFxcbiAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBNWV9VUkwgKyBcXFwiX+aOkuW6j1xcXCIsXFxuICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCJUVmJveOaOqOmAgVxcXCIsXFxuICAgICAgICAgICAganM6IFRW5o6o6YCBKHRhYnMsIGxpc3RzLCBkWzBdKVxcbiAgICAgICAgfV1cXG4gICAgfVxcbn0pO1xcblxcbmZ1bmN0aW9uIFRW5o6o6YCBKHRhYnMsIGxpc3RzLCBkKSB7XFxuICAgIHJldHVybiAkLnRvU3RyaW5nKCh0YWJzLCBsaXN0cywgZCkgPT4ge1xcbiAgICAgICAgdmFyIOaOqOmAgSA9IHtcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IGdldFBhZ2VUaXRsZSgpLFxcbiAgICAgICAgICAgIFxcXCJjb250ZW50XFxcIjogZC5kZXNjLFxcbiAgICAgICAgICAgIFxcXCJwaWNcXFwiOiBkLmltZyB8fCBkLnBpY191cmwsXFxuICAgICAgICAgICAgXFxcImZyb21cXFwiOiB0YWJzLmpvaW4oJyQkJCcpLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBzdG9yYWdlMC5nZXRNeVZhcihcXFwibGlzdHNcXFwiKS5tYXAobGkgPT4gbGkubWFwKGxpMSA9PiBsaTEubmFtZSArICckJyArIGxpMS51cmwpLmpvaW4oJyMnKSkuam9pbignJCQkJylcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9wdXNoP3J1bGU9WFlR5o6o6YCBJnB1c2h1cmw9XFxcIiArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSjmjqjpgIEpKTtcXG4gICAgfSwgdGFicywgbGlzdHMsIGQpO1xcbn1cXG5cXG50YWJzLmZvckVhY2goKGRhdGEsIGlkKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoTVlfVVJMLCAnMCcpID09IGlkID8gYOKAnOKAnCR7ZGF0YX3igJ3igJ1gIDogZGF0YSxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgo57q/6LevLCBsYXp5LCBpZCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBsaXN0cyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJsaXN0c1xcXCIpO1xcbiAgICAgICAgICAgIHZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFwi56ug6IqC5o6S5bqPXFxcIiwgJyMxYWFkMTlcXFwiPuato+W6jycpO1xcbiAgICAgICAgICAgIHZhciDmj5DnpLogPSDmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXCI+5q2j5bqPJyA6ICcjRkYwMDAwXFxcIj7lgJLluo8nO1xcbiAgICAgICAgICAgIOe6v+i3ry5mb3JFYWNoKChkYXRhLCB4bGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGlkID09IHhsaWQgPyBg4oCc4oCcJHtkYXRhfeKAneKAnWAgOiBkYXRhLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogTVlfVVJMICsgXFxcIl/nur/ot69cXFwiICsgeGxpZFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHB1dE15VmFyKE1ZX1VSTCwgaWQpXFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInhpYW5sdWluZGV4XFxcIiwgaWQpXFxuICAgICAgICAgICAgdmFyIOeroOiKgiA9IGxpc3RzW2dldE15VmFyKE1ZX1VSTCwgJzAnKV07XFxuICAgICAgICAgICAgaWYgKOaOkuW6jyA9PSAnI0ZGMDAwMFxcXCI+5YCS5bqPJykge1xcbiAgICAgICAgICAgICAgICDnq6DoioIucmV2ZXJzZSgpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBjcCA9IOeroOiKgi5tYXAoKGRhdGEsIHNzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGRhdGEudXJsICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiDnq6DoioIubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBkYXRhLnVybFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhNWV9VUkwgKyBcXFwiX+mAiembhlxcXCIpO1xcbiAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUoTVlfVVJMICsgXFxcImZvb3RlclxcXCIsIGNwKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9LCB0YWJzLCBsYXp5LCBpZCksXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJf57q/6LevXFxcIiArIGlkXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pXFxuXFxuaWYgKOaOkuW6jyA9PSAnI0ZGMDAwMFxcXCI+5YCS5bqPJykge1xcbiAgICBsaXN0LnJldmVyc2UoKVxcbn1cXG5saXN0LmZvckVhY2goKGRhdGEsIGlkKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZGF0YS5uYW1lLFxcbiAgICAgICAgdXJsOiBkYXRhLnVybCArIGxhenksXFxuICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgY2xzOiBNWV9VUkwgKyBcXFwiX+mAiembhlxcXCIsXFxuICAgICAgICAgICAgaWQ6IGRhdGEudXJsXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pXFxuXFxuc2V0TGFzdENoYXB0ZXJSdWxlKCdqczonICsgJC50b1N0cmluZygocGxheV91cmxfbGlzdCkgPT4ge1xcbiAgICBzZXRSZXN1bHQoJ+abtOaWsOiHszog56ysJyArIHBsYXlfdXJsX2xpc3QubWFwKGl0ZW0gPT4gaXRlbS51cmxzLmxlbmd0aCkuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdICsgXFxcIumbhlxcXCIpO1xcbn0sIGRldGFpbC5wbGF5X3VybF9saXN0KSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJmb290ZXJcXFwiXFxuICAgIH1cXG59KTtcIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLniLHlvbHop4ZBUFBcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5IzE2NjY3NyNpbW1lcnNpdmVUaGVtZSM7Z2V0O1VURi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDE177yb77ybIDI0MDdGUks4RUMgQnVpbGQvQVAzQS4yNDA2MTcuMDA477yb77ybIHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvMTI4LjAuNjYxMy4xMjcgTW9iaWxlIFNhZmFyaS81MzcuMzZ9XCIsXCJjb2xfdHlwZVwiOlwibW92aWVfMVwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKCkgPT4ge1xcbiAgICAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpLmVyamkoTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV0pO1xcbn1cXG4pKClcIixcImdyb3VwXCI6XCJC5b2x6KeGXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCIkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpLmNvbmZpZ3MoKVwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlh73mlbBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaGFuc2h1XFxcIixcXFwicnVsZVxcXCI6XFxcImNvbnN0IGhvc3QxID0gZ2V0TXlWYXIoXFxcXFxcXCJob3N0XFxcXFxcXCIpXFxcXG5jb25zdCB0dWJpYW8xID0gXFxcXFxcXCJodHRwczovL2ljZG4uYmlubXQuY2MvMjUwNC82ODEwZjNiNjI5MzQ3LnBuZ1xcXFxcXFwiXFxcXG5cXFxcbmZ1bmN0aW9uIGFlc2VjYmRlKHdvcmQsIGtleXkpIHtcXFxcbiAgICBjb25zdCBDcnlwdG9VdGlsID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFxcXFxcIik7XFxcXG4gICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoa2V5eSk7XFxcXG4gICAgbGV0IGRlY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQod29yZCwga2V5LCB7XFxcXG4gICAgICAgIG1vZGU6IFxcXFxcXFwiQUVTL0VDQi9QS0NTN1BhZGRpbmdcXFxcXFxcIlxcXFxuICAgIH0pO1xcXFxuICAgIHJldHVybiBkZWNyeXB0ZWQudG9TdHJpbmcoKVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBhZXNlY2Jlbih3b3JkLCBrZXl5KSB7XFxcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcXFxcXCIpO1xcXFxuICAgIGxldCBrZXkgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KGtleXkpO1xcXFxuICAgIGxldCBlbmNyeXB0ZWQgPSBDcnlwdG9VdGlsLkFFUy5lbmNyeXB0KHdvcmQsIGtleSwge1xcXFxuICAgICAgICBtb2RlOiBcXFxcXFxcIkFFUy9FQ0IvUEtDUzdQYWRkaW5nXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgICByZXR1cm4gZW5jcnlwdGVkLnRvU3RyaW5nKClcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gcmVxMSh1cmwxLCBib2R5MSkge1xcXFxuICAgIHZhciBodG1sMSA9IHJlcXVlc3QoaG9zdDErdXJsMSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogXFxcXFxcXCIxLjIuMFxcXFxcXFwiXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIGJvZHk6IGJvZHkxLFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIHJldHVybiBKU09OLnBhcnNlKGFlc2VjYmRlKGh0bWwxLCBcXFxcXFxcImFhc3NkZHd3eHhsbHN4MXhcXFxcXFxcIikpXFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIHJlcTIodXJsMSwga2V5eSkge1xcXFxuICAgIHZhciBodG1sMSA9IHJlcXVlc3QodXJsMSwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogXFxcXFxcXCIxLjIuMFxcXFxcXFwiXFxcXG4gICAgICAgIH0sXFxcXG4gICAgICAgIG1ldGhvZDogXFxcXFxcXCJHRVRcXFxcXFxcIlxcXFxuICAgIH0pOyAvL2xvZyhodG1sMSlcXFxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhZXNlY2JkZShodG1sMSwga2V5eSkpXFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGNvbmZpZ3MoKSB7XFxcXG4gICAgaWYoZ2V0TXlWYXIoJ2EnLCcwJykgPT0gJzAnKXtcXFxcbiAgICAgICAgdHJ5e1xcXFxuICAgICAgICAgICAgdmFyIGhvc3QgPSByZXEyKFxcXFxcXFwiaHR0cDovLzExNi4yMDQuMTcwLjIyNzoxMTY4MS9hcGkudHh0XFxcXFxcXCIsIFxcXFxcXFwicmVjdGFuZ2xlYWRzYWR4YVxcXFxcXFwiKVswXTsgbG9nKGhvc3QpXFxcXG4gICAgICAgICAgICB2YXIgaHRtbDEgPSByZXF1ZXN0KGhvc3QrJy9zaGFyay9hcGkucGhwP2FjdGlvbj1jb25maWdzJywge1xcXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ2ZXJzaW9uXFxcXFxcXCI6IFxcXFxcXFwiMS4yLjBcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgYm9keTogJ3VzZXJuYW1lPSZ0b2tlbj0nLFxcXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgICAgICB9KTsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoYWVzZWNiZGUoaHRtbDEucmVwbGFjZSgvPC4qPi9nLCAnJykucmVwbGFjZSgvXFxcXFxcXFxuL2csICcnKSwgXFxcXFxcXCJhYXNzZGR3d3h4bGxzeDF4XFxcXFxcXCIpKTsgLy9sb2coZGF0YSlcXFxcbiAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2hvc3QnLGhvc3QpXFxcXG4gICAgICAgICAgICBwdXRNeVZhcignZG1VcmwnLGRhdGEuY29uZmlnLmRtVXJsKVxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2h1bHVlJyxkYXRhLmNvbmZpZy5odWx1ZS5zcGxpdCgnJicpWzBdKVxcXFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ3BsYXllcmluZm9zJyxkYXRhLnBsYXllcmluZm9zKVxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2EnLCcxJylcXFxcbiAgICAgICAgICAgIFxcXFxuICAgICAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBMaXN0MShkLCBsaXN0KSB7XFxcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udm9kX25hbWUsXFxcXG4gICAgICAgICAgICBkZXNjOiBpdGVtLnZvZF9yZW1hcmtzLFxcXFxuICAgICAgICAgICAgcGljX3VybDogaXRlbS52b2RfcGljLFxcXFxuICAgICAgICAgICAgdXJsOiBydWxlMShpdGVtLnZvZF9pZCksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8zXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS52b2RfbmFtZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pXFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGZlbmxlaShkLCBkYXRhLCB1cmwpIHtcXFxcbiAgICBmb3IobGV0IGEgb2YgZGF0YSl7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYS5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV0gPT0gZ2V0TXlWYXIodXJsLFxcXFxcXFwiMVxcXFxcXFwiKSA/IGFwaXZpZXcuY29sb3JyKFxcXFxcXFwiI0ZGOEMwMFxcXFxcXFwiLCBhLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVswXSkgOiBhLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVswXSxcXFxcbiAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChhLCB1cmwpPT57XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIodXJsLGEuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSwgYSwgdXJsKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gdHVpamlhbihkKSB7XFxcXG4gICAgdmFyIGxpc3QxID0gcmVxMihob3N0MStcXFxcXFxcIi9hcGkucGhwL3YxLmhvbWUvZGF0YT90eXBlX2lkPTIwXFxcXFxcXCIsIFxcXFxcXFwiYWFzc2Rkd3d4eGxsc3gxeFxcXFxcXFwiKS5kYXRhLnZlckxhbmRMaXN0XFxcXG4gICAgbGlzdDEuZm9yRWFjaChpdGVtMSA9PiB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaXRlbTEudHlwZV9uYW1lLFxcXFxuICAgICAgICAgICAgaW1nOiB0dWJpYW8xLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGl0ZW0xLnZlcnRpY2FsX2xhbmRzLmZvckVhY2goaXRlbTIgPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbTIudm9kX25hbWUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYyA6IGl0ZW0yLnZvZF9yZW1hcmtzLFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0yLnZvZF9waWMsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBydWxlMShpdGVtMi52b2RfaWQpLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcIm1vdmllXzJcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBmZW5sZWkxKGQpIHtcXFxcbiAgICBpZiAocGFnZSA9PSAxKSB7XFxcXG4gICAgICAgIGZlbmxlaShkLCBbXFxcXFxcXCLnlLXlvbEjMVxcXFxcXFwiLCBcXFxcXFxcIueUteinhuWJpyMyXFxcXFxcXCIsIFxcXFxcXFwi5Yqo5ryrIzNcXFxcXFxcIiwgXFxcXFxcXCLnu7zoibojNFxcXFxcXFwiLCBcXFxcXFxcIuefreWJpyMyMVxcXFxcXFwiLCBcXFxcXFxcIuS9k+iCsiMyM1xcXFxcXFwiLCBcXFxcXFxcIuebtOaSrSMyMlxcXFxcXFwiLCBcXFxcXFxcIuWwkeWEvyMyNFxcXFxcXFwiXSwgXFxcXFxcXCJ0eXBlX2lkXFxcXFxcXCIpXFxcXG4gICAgfVxcXFxuICAgIHZhciBsaXN0MSA9IHJlcTEoXFxcXFxcXCIvYXBpLnBocC92MS5jbGFzc2lmeS9jb250ZW50P3BhZ2U9XFxcXFxcXCIrcGFnZSwgSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwiYXJlYVxcXFxcXFwiOlxcXFxcXFwi5YWo6YOo5Zyw5Yy6XFxcXFxcXCIsXFxcXFxcXCJsYW5nXFxcXFxcXCI6XFxcXFxcXCLlhajpg6jor63oqIBcXFxcXFxcIixcXFxcXFxcInJhbmtcXFxcXFxcIjpcXFxcXFxcIuacgOaWsFxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwi5YWo6YOo57G75Z6LXFxcXFxcXCIsXFxcXFxcXCJ0eXBlX2lkXFxcXFxcXCI6Z2V0TXlWYXIoXFxcXFxcXCJ0eXBlX2lkXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKSxcXFxcXFxcInllYXJcXFxcXFxcIjpcXFxcXFxcIuWFqOmDqOW5tOS7o1xcXFxcXFwifSkpLmRhdGEudmlkZW9fbGlzdFxcXFxuICAgIExpc3QxKGQsIGxpc3QxKVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBwYWloYW5nKGQpIHtcXFxcbiAgICBmZW5sZWkoZCwgW1xcXFxcXFwi55S15b2xIzFcXFxcXFxcIiwgXFxcXFxcXCLnlLXop4bliacjMlxcXFxcXFwiLCBcXFxcXFxcIuWKqOa8qyMzXFxcXFxcXCIsIFxcXFxcXFwi57u86Im6IzRcXFxcXFxcIl0sIFxcXFxcXFwicmFua1xcXFxcXFwiKVxcXFxuICAgIHZhciBsaXN0MSA9IHJlcTIoaG9zdDErXFxcXFxcXCIvYXBpLnBocC92MS5yYW5rL1JhbmtEYXRhP3BhZ2U9MSZ0eXBlX2lkPVxcXFxcXFwiK2dldE15VmFyKFxcXFxcXFwicmFua1xcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIiksIFxcXFxcXFwiYWFzc2Rkd3d4eGxsc3gxeFxcXFxcXFwiKS5kYXRhLnZpZGVvc1xcXFxuICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS52b2RfbmFtZSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IGl0ZW0udm9kX3BpYyxcXFxcbiAgICAgICAgICAgIHVybDogcnVsZTEoaXRlbS52b2RfaWQpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMlxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gcnVsZTEodm9kX2lkKSB7XFxcXG4gICAgcmV0dXJuICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5I1xcXFxcXFwiK3ZvZF9pZCtcXFxcXFxcIiNpbW1lcnNpdmVUaGVtZSNcXFxcXFxcIikucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5lcmppKE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV0pXFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZXJqaSh2b2RfaWQpIHtcXFxcbiAgICB2YXIgZCA9IFtdXFxcXG4gICAgdHJ5e1xcXFxuICAgIHZhciBkYXRhMSA9IHJlcTIoaG9zdDErXFxcXFxcXCIvYXBpLnBocC92MS5wbGF5ZXIvZGV0YWlscz92b2RfaWQ9XFxcXFxcXCIrdm9kX2lkLCBcXFxcXFxcImFhc3NkZHd3eHhsbHN4MXhcXFxcXFxcIikuZGF0YVxcXFxuICAgIHZhciBkZXRhaWwgPSBkYXRhMS5kZXRhaWxcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZGV0YWlsLnZvZF9uYW1lK1xcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIrZGV0YWlsLnZvZF9hY3RvcixcXFxcbiAgICAgICAgZGVzYzogZGV0YWlsLnZvZF9jbGFzcytcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiK2RldGFpbC52b2RfcmVtYXJrcyxcXFxcbiAgICAgICAgcGljX3VybDogZGV0YWlsLnZvZF9waWMsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFxcXFxcIixcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGdyYWRpZW50OiB0cnVlXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIHNldERlc2MoZCwgZGV0YWlsLnZvZF9jb250ZW50LnJlcGxhY2UoL1s8cD58PC9wPl0vZywgXFxcXFxcXCJcXFxcXFxcIikpXFxcXG4gICAgXFxcXG4gICAgdmFyIHRhYjEgPSBbXVxcXFxuICAgIHZhciBsaXN0MSA9IFtdXFxcXG4gICAgZGV0YWlsLnBsYXlfdXJsX2xpc3QubWFwKGl0ZW0gPT4ge1xcXFxuICAgICAgICB0YWIxLnB1c2goaXRlbS5mcm9tKVxcXFxuICAgICAgICBsaXN0MS5wdXNoKGl0ZW0udXJscylcXFxcbiAgICB9KVxcXFxuICAgIHZhciBsYXp5MSA9ICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKHRhYjEpID0+IHtcXFxcbiAgICAgICAgdmFyIHtcXFxcbiAgICAgICAgICAgIGFlc2VjYmRlXFxcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbiAgICAgICAgLy8g5qC55o2uIHBsYXllcm5hbWUg6I635Y+W5a+55bqU55qEIHBsYXllcmppZWtvdVxcXFxuICAgICAgICBmdW5jdGlvbiBnZXRQbGF5ZXJKaWVrb3UocGxheWVybmFtZSkge1xcXFxuICAgICAgICAgICAgY29uc3QgcGxheWVySW5mbyA9IHN0b3JhZ2UwLmdldE15VmFyKCdwbGF5ZXJpbmZvcycpLmZpbmQoaXRlbSA9PiBpdGVtLnBsYXllcm5hbWUgPT09IHBsYXllcm5hbWUpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIHBsYXllckluZm8gfHwgXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHZhciBwYXJzZSA9IHRhYjFbZ2V0TXlWYXIoXFxcXFxcXCJ4aWFubHVpbmRleFxcXFxcXFwiLCAnMCcpXTsgLy9sb2cocGFyc2UpXFxcXG4gICAgICAgIGlmIChwYXJzZS5pbmNsdWRlcyhcXFxcXFxcInpoaWJvXFxcXFxcXCIpKSByZXR1cm4gaW5wdXQrXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgIHZhciBqaWVrb3UgPSBnZXRQbGF5ZXJKaWVrb3UocGFyc2UpLnBsYXllcmppZWtvdTsgLy9sb2coamlla291KVxcXFxuICAgICAgICB2YXIgcGFyc2VlID0gYWVzZWNiZGUoamlla291LCBnZXRNeVZhcignaHVsdWUnKSk7IC8vbG9nKHBhcnNlZSlcXFxcbiAgICAgICAgdmFyIGh0bWwxID0gcmVxdWVzdChnZXRNeVZhcihcXFxcXFxcImhvc3RcXFxcXFxcIikrXFxcXFxcXCIvc2hhcmsvYXBpLnBocD9hY3Rpb249cGFyc2V2b2RcXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOiBcXFxcXFxcIjEuMi4wXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBib2R5OiBcXFxcXFxcInBhcnNlPVxcXFxcXFwiK3BhcnNlZStcXFxcXFxcIiZ1cmw9XFxcXFxcXCIraW5wdXQrXFxcXFxcXCImbWF0Y2hpbmc9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgICAgIH0pOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgdmFyIHBsYXkgPSBKU09OLnBhcnNlKGFlc2VjYmRlKGh0bWwxLnJlcGxhY2UoLzwuKj4vZywgJycpLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCAnJyksIFxcXFxcXFwiYWFzc2Rkd3d4eGxsc3gxeFxcXFxcXFwiKSkudXJsXFxcXG4gICAgICAgIGlmIChwYXJzZS5pbmNsdWRlcyhcXFxcXFxcIk5CWVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgaWYgKHBsYXkuaW5jbHVkZXMoXFxcXFxcXCIubXA0XFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHBsYXkgPSByZXF1ZXN0KHBsYXksIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6ZmFsc2UsXFxcXG4gICAgICAgICAgICAgICAgICAgIG9ubHlIZWFkZXJzOnRydWVcXFxcbiAgICAgICAgICAgICAgICB9KTsgLy9sb2cocGxheSlcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGF5KS5oZWFkZXJzLmxvY2F0aW9uWzBdK1xcXFxcXFwiI2lzVmlkZW89dHJ1ZSNcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS92aWRlby5tM3U4XFxcXFxcXCIsIHJlcXVlc3QocGxheSkpXFxcXG4gICAgICAgICAgICByZXR1cm4gZ2V0UGF0aChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvdmlkZW8ubTN1OFxcXFxcXFwiKStcXFxcXFxcIiNcXFxcXFxcIitwbGF5XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKHBsYXkpIHJldHVybiBwbGF5K1xcXFxcXFwiI2lzVmlkZW89dHJ1ZSNcXFxcXFxcIlxcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9LCB0YWIxKVxcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaWhhbnNodScpKS5ydWxlKVxcXFxuICAgIFxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIueMnOS9oOWWnOasolxcXFxcXFwiLFxcXFxuICAgICAgICBwaWNfdXJsOiBcXFxcXFxcImh0dHBzOi8vaWNkbi5iaW5tdC5jYy8yNTA0LzY4MTBmM2I2MjkzNDcucG5nXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbiAgICBMaXN0MShkLCBkYXRhMS5saWtlcy5saWtlX3ZpZGVvLnNsaWNlKDAsNikpXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgIH1cXFxcbiAgICBzZXRSZXN1bHQoZClcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gc2VhcmNoKHdvcmQsIHBhZ2UpIHtcXFxcbiAgICB2YXIgbGlzdDEgPSByZXEyKGhvc3QxK1xcXFxcXFwiL2FwaS5waHAvdjEuc2VhcmNoL2RhdGE/d2Q9XFxcXFxcXCIrd29yZCtcXFxcXFxcIiZ0eXBlX2lkPTAmcGFnZT1cXFxcXFxcIitwYWdlLCBcXFxcXFxcImFhc3NkZHd3eHhsbHN4MXhcXFxcXFxcIikuZGF0YS5zZWFyY2hfZGF0YVxcXFxuICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS52b2RfbmFtZSxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0udm9kX2JsdXJiLFxcXFxuICAgICAgICAgICAgZGVzYzogaXRlbS52b2RfcmVtYXJrcyxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IGl0ZW0udm9kX3BpYyxcXFxcbiAgICAgICAgICAgIHVybDogcnVsZTEoaXRlbS52b2RfaWQpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXFxuY29uc3QgYXBpdmlldyA9IHtcXFxcbiAgICBjb2xvcjogKHlhbnNlLCB0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9Jyt5YW5zZSsnPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXFxcbiAgICB9LFxcXFxuICAgIGNvbG9ycjogKHlhbnNlLCB0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcXFxcXCInK3lhbnNlKydcXFxcXFxcIj4nK3Rlc3QrJzwvZm9udD4nO1xcXFxuICAgIH0sXFxcXG4gICAgc3Ryb25nOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRlc3QgKyAnPC9zdHJvbmc+JztcXFxcbiAgICB9LFxcXFxuICAgIHNtYWxsOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxzbWFsbD4nICsgdGVzdCArICc8L3NtYWxsPic7XFxcXG4gICAgfSxcXFxcbiAgICBjZW50ZXI6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnPHAgc3R5bGU9XFxcXFxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcXFxcXCI+JyArIHRlc3QgKyAnPC9wPidcXFxcbiAgICB9LFxcXFxuICAgIGJpZzogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICc8YmlnPicgKyB0ZXN0ICsgJzwvYmlnPic7XFxcXG4gICAgfSxcXFxcbiAgICBncmV5OiAodGV4dCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCI8Zm9udCBjb2xvcj0nZ3JleSc+XFxcXFxcXCIgKyB0ZXh0ICsgXFxcXFxcXCI8L2ZvbnQ+XFxcXFxcXCI7XFxcXG5cXFxcbiAgICB9LFxcXFxuICAgIGdyYXk6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIjxmb250IGNvbG9yPSdncmF5Jz5cXFxcXFxcIiArIHRlc3QgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIjtcXFxcbiAgICB9LFxcXFxuICAgIHJpY2g6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIuKAmOKAmOKAmeKAmVxcXFxcXFwiICsgdGVzdDtcXFxcbiAgICB9LFxcXFxuICAgIGFkZHJlc3NUYWc6ICh1cmwsIHRleHQpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiPGEgaHJlZj0nXFxcXFxcXCIgKyB1cmwgKyBcXFxcXFxcIic+XFxcXFxcXCIgKyB0ZXh0ICsgXFxcXFxcXCI8L2E+XFxcXFxcXCJcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIHNldERlc2MoZCwgZGVzYywgbnVtKSB7XFxcXG4gICAgLy9sb2coZGVzYylcXFxcbiAgICBpZiAoZGVzYyA9PSB1bmRlZmluZWQpIHtcXFxcbiAgICAgICAgcmV0dXJuO1xcXFxuICAgIH1cXFxcbiAgICBkZXNjID0gZGVzYy5jb25zdHJ1Y3RvciA9PSBBcnJheSA/IGRlc2Muam9pbignPGJyPicpIDogZGVzYztcXFxcbiAgICBpZiAoZGVzYy5yZXBsYWNlKC8oPGJyPnxcXFxcXFxcXHMrfDxcXFxcXFxcXC8/cD58Jm5ic3A7KS9nLCAnJykubGVuZ3RoID09IDApIHtcXFxcbiAgICAgICAgcmV0dXJuO1xcXFxuICAgIH1cXFxcbiAgICBjb25zdCBtYXJrID0gJ2Rlc2MnO1xcXFxuICAgIG51bSA9IHR5cGVvZihudW0pID09ICd1bmRlZmluZWQnID8gNDUgOiBudW1cXFxcbiAgICBkZXNjID0gZGVzYy5zdGFydHNXaXRoKCfjgIDjgIAnKSA/IGRlc2MgOiAn44CA44CAJyArIGRlc2M7XFxcXG4gICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvJy9nLCBcXFxcXFxcIiYjMzk7XFxcXFxcXCIpO1xcXFxuICAgIGRlc2MgPSBkZXNjLnJlcGxhY2UoL1xcXFxcXFxcclxcXFxcXFxcbi9nLCBcXFxcXFxcIjxicj5cXFxcXFxcIik7XFxcXG4gICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXFxcXFxyL2csIFxcXFxcXFwiPGJyPlxcXFxcXFwiKTtcXFxcbiAgICBkZXNjID0gZGVzYy5yZXBsYWNlKC9cXFxcXFxcXG4vZywgXFxcXFxcXCI8YnI+XFxcXFxcXCIpO1xcXFxuXFxcXG4gICAgZnVuY3Rpb24gc3Vic3RyKHN0ciwgbWF4TGVuZ3RoKSB7XFxcXG4gICAgICAgIGxldCBsZW4gPSAwO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KGkpID4gMjU1KSB7XFxcXG4gICAgICAgICAgICAgICAgbGVuICs9IDI7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGxlbisrO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaWYgKGxlbiA+IG1heExlbmd0aCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIuc2xpY2UoMCwgaSkgKyAnLi4uJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gc3RyO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgc2Rlc2MgPSBzdWJzdHIoZGVzYywgbnVtKTtcXFxcbiAgICB2YXIgY29sb3JzID0ge1xcXFxuICAgICAgICBzaG93OiBcXFxcXFxcImJsYWNrXFxcXFxcXCIsXFxcXG4gICAgICAgIGhpZGU6IFxcXFxcXFwiZ3JleVxcXFxcXFwiXFxcXG4gICAgfVxcXFxuICAgIHZhciBsYXp5ID0gJChgI25vTG9hZGluZyNgKS5sYXp5UnVsZSgoZGMsIHNkYywgbSwgY3MpID0+IHtcXFxcbiAgICAgICAgdmFyIHNob3cgPSBzdG9yYWdlMC5nZXRJdGVtKG0sICcwJyk7XFxcXG4gICAgICAgIHZhciB0aXRsZSA9IGZpbmRJdGVtKCdkZXNjJykudGl0bGU7XFxcXG4gICAgICAgIHZhciByZSA9IC8oPFxcXFxcXFxcL3NtYWxsPjxicj4uKj8+KS4rL2c7XFxcXG4gICAgICAgIHZhciBleHAgPSAn5bGV5byAOic7XFxcXG4gICAgICAgIHZhciByZXQgPSAn5pS26LW3Oic7XFxcXG4gICAgICAgIGlmIChzaG93ID09ICcxJykge1xcXFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVcXFxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UocmV0LCBleHApXFxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgc2RjICsgJzwvc21hbGw+JylcXFxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyg8XFxcXFxcXFwvc21hbGw+PGJyPlxcXFxcXFxcPGZvbnQgY29sb3I9XFxcXFxcXCIpLio/KFxcXFxcXFwiPikvLCAnJDEnICsgY3MuaGlkZSArICckMicpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShtLCAnMCcpO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVcXFxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXhwLCByZXQpXFxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgZGMgKyAnPC9zbWFsbD4nKVxcXFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKDxcXFxcXFxcXC9zbWFsbD48YnI+XFxcXFxcXFw8Zm9udCBjb2xvcj1cXFxcXFxcIikuKj8oXFxcXFxcXCI+KS8sICckMScgKyBjcy5zaG93ICsgJyQyJylcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcxJyk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIGBoaWtlcjovL2VtcHR5YFxcXFxuICAgIH0sIGRlc2MsIHNkZXNjLCBtYXJrLCBjb2xvcnMpXFxcXG4gICAgdmFyIHNjID0gc3RvcmFnZTAuZ2V0SXRlbShtYXJrLCAnMCcpID09ICcwJyA/ICflsZXlvIA6JyA6ICfmlLbotbc6JztcXFxcbiAgICB2YXIgZGMgPSBzdG9yYWdlMC5nZXRJdGVtKG1hcmssICcwJykgPT0gJzAnID8gc2Rlc2MgOiBkZXNjO1xcXFxuICAgIHZhciBjcyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyBjb2xvcnMuaGlkZSA6IGNvbG9ycy5zaG93O1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAnJyArICc8Yj48Zm9udCBjb2xvcj1cXFxcXFxcIiMwOThBQzFcXFxcXFxcIj7iiLfliafmg4XnroDku4tcXFxcdDwvZm9udD48L2I+JyArIFxcXFxcXFwiPHNtYWxsPjxhIHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IG5vbmU7JyBocmVmPSdcXFxcXFxcIiArIGxhenkgKyBcXFxcXFxcIic+XFxcXFxcXCIgKyBzYyArICc8L2E+PC9zbWFsbD48YnI+PGZvbnQgY29sb3I9XFxcXFxcXCInICsgY3MgKyAnXFxcXFxcXCI+JyArIGAke2RjfWAgKyAnPC9zbWFsbD4nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogJ2Rlc2MnLFxcXFxuICAgICAgICAgICAgbGluZVNwYWNpbmc6IDYsXFxcXG4gICAgICAgICAgICB0ZXh0U2l6ZTogMTUsXFxcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogdHJ1ZSxcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICBhcGl2aWV3LFxcXFxuICAgIHR1aWppYW4sXFxcXG4gICAgZmVubGVpMSxcXFxcbiAgICBwYWloYW5nLFxcXFxuICAgIGVyamksXFxcXG4gICAgc2VhcmNoLFxcXFxuICAgIGNvbmZpZ3MsXFxcXG4gICAgYWVzZWNiZGVcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuoznuqflh73mlbBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZXJqaWhhbnNodVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdGFicyA9IHRhYjFcXFxcbnZhciBsaXN0cyA9IGxpc3QxXFxcXG52YXIgbGF6eSA9IGxhenkxXFxcXG5cXFxcbmFkZExpc3RlbmVyKFxcXFxcXFwib25DbG9zZVxcXFxcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICBjbGVhck15VmFyKFxcXFxcXFwibGlzdHNcXFxcXFxcIik7XFxcXG59KSk7XFxcXG5zdG9yYWdlMC5wdXRNeVZhcihcXFxcXFxcImxpc3RzXFxcXFxcXCIsIGxpc3RzKTtcXFxcbnZhciBsaXN0ID0gbGlzdHNbZ2V0TXlWYXIoTVlfVVJMLCAnMCcpXTtcXFxcbnZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFxcXFxcIueroOiKguaOkuW6j1xcXFxcXFwiLCAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycpO1xcXFxudmFyIOaPkOekuiA9IOaOkuW6jyA9PSAnI0ZGMDAwMFxcXFxcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXFxcXFwiPuWAkuW6jyc7XFxcXG52YXIg5o6S5bqP5ZCNID0gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I65o6S5bqPPC9zcGFuPjwvYj4nO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogJyArIOaOkuW6jyArICc8L3NwYW4+PC9iPicsXFxcXG4gICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKHRhYnMsIOaOkuW6j+WQjSwgbGF6eSwgZCwgVFbmjqjpgIEpID0+IHtcXFxcbiAgICAgICAgdmFyIGxpc3RzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcXFxcXCJsaXN0c1xcXFxcXFwiKTtcXFxcbiAgICAgICAgdmFyIOeroOiKgiA9IGxpc3RzW2dldE15VmFyKE1ZX1VSTCwgJzAnKV07XFxcXG4gICAgICAgIHZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFxcXFxcIueroOiKguaOkuW6j1xcXFxcXFwiLCAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycpO1xcXFxuICAgICAgICB2YXIg5o+Q56S6ID0g5o6S5bqPID09ICcjRkYwMDAwXFxcXFxcXCI+5YCS5bqPJyA/ICcjMWFhZDE5XFxcXFxcXCI+5q2j5bqPJyA6ICcjRkYwMDAwXFxcXFxcXCI+5YCS5bqPJztcXFxcbiAgICAgICAgdXBkYXRlSXRlbSh7XFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBNWV9VUkwgKyBcXFxcXFxcIl/mjpLluo9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIlRWYm945o6o6YCBXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiBUVuaOqOmAgSh0YWJzLCBsaXN0cywgZClcXFxcbiAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIHRpdGxlOiDmjpLluo/lkI0ucmVwbGFjZSgn5o6S5bqPJywg5o+Q56S6KVxcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgaWYgKOaOkuW6jyA9PSAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycpIHtcXFxcbiAgICAgICAgICAgIOeroOiKgi5yZXZlcnNlKCk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IGNwID0g56ug6IqCLm1hcCgoZGF0YSwgc3NpZCkgPT4gKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsXFxcXG4gICAgICAgICAgICB1cmw6IGRhdGEudXJsICsgbGF6eSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiDnq6DoioIubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGNsczogTVlfVVJMICsgXFxcXFxcXCJf6YCJ6ZuGXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgaWQ6IGRhdGEudXJsXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pKTtcXFxcbiAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKE1ZX1VSTCArIFxcXFxcXFwiX+mAiembhlxcXFxcXFwiKTtcXFxcbiAgICAgICAgYWRkSXRlbUJlZm9yZShNWV9VUkwgKyBcXFxcXFxcImZvb3RlclxcXFxcXFwiLCBjcCk7XFxcXG4gICAgICAgIHB1dE15VmFyKE1ZX1VSTCArIFxcXFxcXFwi56ug6IqC5o6S5bqPXFxcXFxcXCIsIOaPkOekuik7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcbiAgICB9LCB0YWJzLCDmjpLluo/lkI0sIGxhenksIGRbMF0sIFRW5o6o6YCBKSxcXFxcbiAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBpZDogTVlfVVJMICsgXFxcXFxcXCJf5o6S5bqPXFxcXFxcXCIsXFxcXG4gICAgICAgIGxvbmdDbGljazogW3tcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIlRWYm945o6o6YCBXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBqczogVFbmjqjpgIEodGFicywgbGlzdHMsIGRbMF0pXFxcXG4gICAgICAgIH1dXFxcXG4gICAgfVxcXFxufSk7XFxcXG5cXFxcbmZ1bmN0aW9uIFRW5o6o6YCBKHRhYnMsIGxpc3RzLCBkKSB7XFxcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHRhYnMsIGxpc3RzLCBkKSA9PiB7XFxcXG4gICAgICAgIHZhciDmjqjpgIEgPSB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogZ2V0UGFnZVRpdGxlKCksXFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvbnRlbnRcXFxcXFxcIjogZC5kZXNjLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJwaWNcXFxcXFxcIjogZC5pbWcgfHwgZC5waWNfdXJsLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJmcm9tXFxcXFxcXCI6IHRhYnMuam9pbignJCQkJyksXFxcXG4gICAgICAgICAgICBcXFxcXFxcInVybFxcXFxcXFwiOiBzdG9yYWdlMC5nZXRNeVZhcihcXFxcXFxcImxpc3RzXFxcXFxcXCIpLm1hcChsaSA9PiBsaS5tYXAobGkxID0+IGxpMS5uYW1lICsgJyQnICsgbGkxLnVybCkuam9pbignIycpKS5qb2luKCckJCQnKVxcXFxuICAgICAgICB9O1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvcHVzaD9ydWxlPVhZUeaOqOmAgSZwdXNodXJsPVxcXFxcXFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KOaOqOmAgSkpO1xcXFxuICAgIH0sIHRhYnMsIGxpc3RzLCBkKTtcXFxcbn1cXFxcblxcXFxudGFicy5mb3JFYWNoKChkYXRhLCBpZCkgPT4ge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcihNWV9VUkwsICcwJykgPT0gaWQgPyBg4oCc4oCcJHtkYXRhfeKAneKAnWAgOiBkYXRhLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZSgo57q/6LevLCBsYXp5LCBpZCkgPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGxpc3RzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcXFxcXCJsaXN0c1xcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFxcXFxcIueroOiKguaOkuW6j1xcXFxcXFwiLCAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycpO1xcXFxuICAgICAgICAgICAgdmFyIOaPkOekuiA9IOaOkuW6jyA9PSAnI0ZGMDAwMFxcXFxcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXFxcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXFxcXFwiPuWAkuW6jyc7XFxcXG4gICAgICAgICAgICDnur/ot68uZm9yRWFjaCgoZGF0YSwgeGxpZCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaWQgPT0geGxpZCA/IGDigJzigJwke2RhdGF94oCd4oCdYCA6IGRhdGEsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogTVlfVVJMICsgXFxcXFxcXCJf57q/6LevXFxcXFxcXCIgKyB4bGlkXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICBwdXRNeVZhcihNWV9VUkwsIGlkKVxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJ4aWFubHVpbmRleFxcXFxcXFwiLCBpZClcXFxcbiAgICAgICAgICAgIHZhciDnq6DoioIgPSBsaXN0c1tnZXRNeVZhcihNWV9VUkwsICcwJyldO1xcXFxuICAgICAgICAgICAgaWYgKOaOkuW6jyA9PSAnI0ZGMDAwMFxcXFxcXFwiPuWAkuW6jycpIHtcXFxcbiAgICAgICAgICAgICAgICDnq6DoioIucmV2ZXJzZSgpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBsZXQgY3AgPSDnq6DoioIubWFwKChkYXRhLCBzc2lkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBkYXRhLnVybCArIGxhenksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiDnq6DoioIubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IE1ZX1VSTCArIFxcXFxcXFwiX+mAiembhlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGRhdGEudXJsXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9O1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkZWxldGVJdGVtQnlDbHMoTVlfVVJMICsgXFxcXFxcXCJf6YCJ6ZuGXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgYWRkSXRlbUJlZm9yZShNWV9VUkwgKyBcXFxcXFxcImZvb3RlclxcXFxcXFwiLCBjcCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgfSwgdGFicywgbGF6eSwgaWQpLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGlkOiBNWV9VUkwgKyBcXFxcXFxcIl/nur/ot69cXFxcXFxcIiArIGlkXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn0pXFxcXG5cXFxcbmlmICjmjpLluo8gPT0gJyNGRjAwMDBcXFxcXFxcIj7lgJLluo8nKSB7XFxcXG4gICAgbGlzdC5yZXZlcnNlKClcXFxcbn1cXFxcbmxpc3QuZm9yRWFjaCgoZGF0YSwgaWQpID0+IHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZGF0YS5uYW1lLFxcXFxuICAgICAgICB1cmw6IGRhdGEudXJsICsgbGF6eSxcXFxcbiAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBjbHM6IE1ZX1VSTCArIFxcXFxcXFwiX+mAiembhlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IGRhdGEudXJsXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbn0pXFxcXG5cXFxcbnNldExhc3RDaGFwdGVyUnVsZSgnanM6JyArICQudG9TdHJpbmcoKHBsYXlfdXJsX2xpc3QpID0+IHtcXFxcbiAgICBzZXRSZXN1bHQoJ+abtOaWsOiHszog56ysJyArIHBsYXlfdXJsX2xpc3QubWFwKGl0ZW0gPT4gaXRlbS51cmxzLmxlbmd0aCkuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdICsgXFxcXFxcXCLpm4ZcXFxcXFxcIik7XFxcXG59LCBkZXRhaWwucGxheV91cmxfbGlzdCkpO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImJpZ19ibGFua19ibG9ja1xcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGlkOiBNWV9VUkwgKyBcXFxcXFxcImZvb3RlclxcXFxcXFwiXFxcXG4gICAgfVxcXFxufSk7XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly9naW1nMy5iYWlkdS5jb20vZ2ltZy9hcHA9MjAyOCZhbXA7c3JjPWNmaW1nLmNueXVuY2RuLmNvbS91cGxvYWQvdm9kLzIwMjUwNDI1LTEvMzNjNmE3NjUyMTk2MDFmNWZhMDU2ODk4OTM1OWFhMDIuanBnIiwidGl0bGUiOiLmppzkuIrkvbPlqb8ifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement