xiaomianao666

小程序:模板·Q

Oct 7th, 2022
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@模板·Q@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5qih5p2/wrdRIiwiYXV0aG9yIjoi5Y+R57Kq5raC5aKZIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6NywiY29sX3R5cGUiOiJ0ZXh0X2NlbnRlcl8xIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ0b29sIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG5pZiAoZ2V0SXRlbShcInN0YXJ0XCIsIFwiXCIpID09IFwiXCIpIHtcbiAgICBzZXRJdGVtKFwic3RhcnRcIiwgXCIxXCIpXG4gICAgY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiAn5rip6aao5o+Q56S6JyxcbiAgICAgICAgY29udGVudDogJ+ivt+WLv+WIoOmZpOaIluaUueWQjeatpOaooeadv++8jOS7peWFjeS+nei1luatpOaooeadv+eahOWwj+eoi+W6j+aXoOazleS9v+eUqO+8ge+8gVxcbuW5tueJueWIq+aEn+iwoiBSZWJvcm4gTG95RGdJa+Wkp+S9rOeahOaKgOacr+aUr+aMgSEhIScsXG4gICAgICAgIGNvbmZpcm06ICcnLFxuICAgICAgICBjYW5jZWw6ICdyZWZyZXNoUGFnZSgpJ1xuICAgIH0pXG59XG4vL2h0dHBzOi8vYWdpdC5haS9semsyMzU1OS9QdWJsaWNSdWxlL3Jhdy9icmFuY2gvbWFzdGVyL3g1cnVsZS5qc1xuYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgIGNsZWFyVmFyKFwidGVtcGxhdGUtdXJsXCIpXG4gICAgY2xlYXJWYXIoXCJ0ZW1wbGF0ZS1zZWFyY2gtdXJsXCIpXG4gICAgY2xlYXJWYXIoXCJ0ZW1wbGF0ZS1wYWdlcy11bmZvbGRcIilcbn0pKVxuXG5sZXQgZDIgPSBbe1xuICAgIGRlc2M6IFwi6L6T5YWl5YiG57G75oiW6K+m5oOF6aG16ZO+5o6l5rWL6K+V5Yy56YWNXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICB1cmw6IFwiaW5wdXRcIixcbiAgICB0aXRsZTogXCLmtYvor5VcIixcbiAgICBleHRyYToge1xuICAgICAgICBvbkNoYW5nZTogXCJwdXRWYXIoJ3RlbXBsYXRlLXVybCcsaW5wdXQpXCJcbiAgICB9XG59LHtcbiAgICBkZXNjOiBcIui+k+WFpeaQnOe0oumTvuaOpe+8jCoq5Li65YWz6ZSu5a2X5Y2g5L2N56ymXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICB1cmw6IFwiaW5wdXRcIixcbiAgICB0aXRsZTogXCLmtYvor5XmkJzntKJcIixcbiAgICBleHRyYToge1xuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcihcInRlbXBsYXRlLXNlYXJjaC11cmxcIiksXG4gICAgICAgIG9uQ2hhbmdlOiBcInB1dFZhcigndGVtcGxhdGUtc2VhcmNoLXVybCcsaW5wdXQpXCJcbiAgICB9XG59LCB7XG4gICAgZGVzYzogXCLovpPlhaXmkJzntKLlhbPplK7or43mtYvor5XljLnphY1cIixcbiAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgIHVybDogJC50b1N0cmluZygocnVsZVRpdGxlKT0+e1xuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9zZWFyY2g/cz1cIiArIGlucHV0ICsgIFwiJnJ1bGU9XCIrIHJ1bGVUaXRsZTtcbiAgICB9LCBNWV9SVUxFLnRpdGxlKSxcbiAgICB0aXRsZTogXCLmtYvor5XmkJzntKJcIixcbn0sIHtcbiAgICB0aXRsZTogXCLnlJ/miJDop4TliJlcIixcbiAgICBjb2xfdHlwZTogXCJ0ZXh0X2NlbnRlcl8xXCIsXG4gICAgdXJsOiBcImlucHV0Oi8vLy8vL+ivt+i+k+WFpeinhOWImeWQjS5qczpcIiArICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICB2YXIgdXJsID0gZ2V0VmFyKCd0ZW1wbGF0ZS11cmwnLCBcIlwiKTtcbiAgICAgICAgaWYgKHVybC5sZW5ndGggPD0gMCB8fCBpbnB1dC5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/or7flhYjovpPlhaXpk77mjqXlkozop4TliJnlkI1cIlxuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlID0ge1xuICAgICAgICAgICAgXCJsYXN0X2NoYXB0ZXJfcnVsZVwiOiBcIlwiLFxuICAgICAgICAgICAgXCJ0aXRsZVwiOiBpbnB1dCxcbiAgICAgICAgICAgIFwiYXV0aG9yXCI6IFwiXCIsXG4gICAgICAgICAgICBcInVybFwiOiB1cmwsXG4gICAgICAgICAgICBcInZlcnNpb25cIjogMCxcbiAgICAgICAgICAgIFwiY29sX3R5cGVcIjogXCJtb3ZpZV8zXCIsXG4gICAgICAgICAgICBcImNsYXNzX25hbWVcIjogXCJcIixcbiAgICAgICAgICAgIFwiY2xhc3NfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcImFyZWFfbmFtZVwiOiBcIlwiLFxuICAgICAgICAgICAgXCJhcmVhX3VybFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJzb3J0X25hbWVcIjogXCJcIixcbiAgICAgICAgICAgIFwieWVhcl9uYW1lXCI6IFwiXCIsXG4gICAgICAgICAgICBcInNvcnRfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcInllYXJfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcImZpbmRfcnVsZVwiOiBcImpzOlxcbmNvbnN0IHtcXG4gICAgYXV0b1BhZ2VcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXV0bz9ydWxlPeaooeadv8K3UVxcXCIpO1xcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSlcIixcbiAgICAgICAgICAgIFwic2VhcmNoX3VybFwiOiBnZXRWYXIoXCJ0ZW1wbGF0ZS1zZWFyY2gtdXJsXCIpLFxuICAgICAgICAgICAgXCJ0aXRsZUNvbG9yXCI6IFwiXCIsXG4gICAgICAgICAgICBcImdyb3VwXCI6IFwi5rWL6K+VXCIsXG4gICAgICAgICAgICBcInNlYXJjaEZpbmRcIjogXCJqczpcXG5jb25zdCB7XFxuICAgIGF1dG9QYWdlXFxufSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2F1dG8/cnVsZT3mqKHmnb/Ct1FcXFwiKTtcXG5hdXRvUGFnZShnZXRSZXNDb2RlKCkpXCIsXG4gICAgICAgICAgICBcImRldGFpbF9jb2xfdHlwZVwiOiBcIm1vdmllXzFcIixcbiAgICAgICAgICAgIFwiZGV0YWlsX2ZpbmRfcnVsZVwiOiBcImpzOlxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSlcXG4gICAgdmFyIHVybCA9IGh0bWwudXJsXFxuICAgIGlmIChodG1sLmVuY3J5cHQgPT0gJzEnKSB7XFxuICAgICAgICB1cmwgPSB1bmVzY2FwZSh1cmwpO1xcbiAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHtcXG4gICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKTtcXG4gICAgfVxcbiAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHtcXG4gICAgICAgIHJldHVybiB1cmxcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiAndmlkZW86Ly8nK2lucHV0XFxuICAgIH1cXG59KVxcblxcbmNvbnN0IHtcXG4gICAgYXV0b1BhZ2VcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXV0bz9ydWxlPeaooeadv8K3UVxcXCIpO1xcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSlcIixcbiAgICAgICAgICAgIFwic2RldGFpbF9jb2xfdHlwZVwiOiBcIm1vdmllXzFcIixcbiAgICAgICAgICAgIFwic2RldGFpbF9maW5kX3J1bGVcIjogXCIqXCIsXG4gICAgICAgICAgICBcInVhXCI6IFwibW9iaWxlXCIsXG4gICAgICAgICAgICBcInByZVJ1bGVcIjogXCJcIixcbiAgICAgICAgICAgIFwicGFnZXNcIjogXCJbXVwiXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZe+/pVwiICsgSlNPTi5zdHJpbmdpZnkocnVsZSlcbiAgICB9KVxufSx7XG50aXRsZTogJ+aWh+Wtl+aVmeeoiycsXG5jb2xfdHlwZTogJ3RleHRfMicsXG51cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU96KeG55WM6K665Z2bUicsXG5leHRyYToge1xuICAgIHVybDogJ2h0dHBzOi8vaGFpa3Vvc2hpamllLmNuL3RvcGljLzg0NDAjZnlwYWdlI25vSGlzdG9yeSMnLFxufVxufSx7XG50aXRsZTogJ+inhumikeaVmeeoiycsXG5jb2xfdHlwZTogJ3RleHRfMicsXG51cmw6ICQoXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vQlYxZE00eTFnN3JlP3NoYXJlX3NvdXJjZT1jb3B5X3dlYlwiKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgIHNob3dMb2FkaW5nKFwi5by65Yqb5ZeF5o6i5Lit77yM6K+356iN5YCZ4oCm4oCmXCIpXG4gICAgICAgIGxldCBpbnB1dFZhbHVlID0gaW5wdXRcbiAgICAgICAgcmV0dXJuICQoaW5wdXRWYWx1ZSkueDVMYXp5KCgpID0+IHtcbiAgICAgICAgICAgIHZhciB1cmxzID0gX2dldFVybHMoKVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBleGNlcHRLZXlzIOaYr+aOkumZpOeahOWFs+mUruWtl+WIl+ihqFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgZXhjZXB0S2V5cyA9IFtcIm0zdThkamtzaWVqXCIsIFwicGxheW0zdThcIiwgXCJtM3U4LnR2XCIsIFwibWluLmNzc1wiXVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBzZWFyY2hLZXlzIOaYr+WMuemFjeeahOWFs+mUruWtl+WIl+ihqFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgc2VhcmNoS2V5cyA9IFtcIi5tcDNcIiwgXCIubXA0XCIsIFwiLm0zdThcIiwgXCIuZmx2XCIsIFwiLmF2aVwiLCBcIi4zZ3BcIiwgXCJtcGVnXCIsIFwiLndtdlwiLCBcIi5tb3ZcIiwgXCJybXZiXCIsIFwiLmRhdFwiLCBcInFxQkZkb3dubG9hZFwiLCBcIm1pbWU9dmlkZW8lMkZcIl1cbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKEpTT04uc3RyaW5naWZ5KHVybHMpKVxuICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB1cmxzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4Y2VwdEtleXMuZXZlcnkoKGtleSk9PiAhdXJsc1tpXS5pbmNsdWRlcyhrZXkpKSBcbiAgICAgICAgICAgICAgICAgICAgJiYgc2VhcmNoS2V5cy5zb21lKChrZXkpPT4gdXJsc1tpXS5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2codXJsc1tpXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSlcbn0se1xudGl0bGU6IGdldFZhcigndGVtcGxhdGUtcGFnZXMtdW5mb2xkJywgJ2ZhbHNlJykgPT09ICd0cnVlJz8gJ+eCueaIkeaUtue8qeaooeadv+WIl+ihqCc6ICfngrnmiJHlsZXlvIDmqKHmnb/liJfooagnLFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbnVybDogJChcIiNub0xvYWRpbmcjXCIpLmxhenlSdWxlKChwYWdlVW5mb2xkKSA9PiB7XG4gICAgIHB1dFZhcigndGVtcGxhdGUtcGFnZXMtdW5mb2xkJywgcGFnZVVuZm9sZCA9PT0gJ3RydWUnID8gJ2ZhbHNlJyA6ICd0cnVlJylcbnJlZnJlc2hQYWdlKGZhbHNlKVxucmV0dXJuICd0b2FzdDovLycgKyAoZ2V0VmFyKCd0ZW1wbGF0ZS1wYWdlcy11bmZvbGQnLCAnZmFsc2UnKSA9PT0gJ3RydWUnPyAn5bGV5byA5oiQ5YqfJzogJ+aUtue8qeaIkOWKnycpXG59LCBnZXRWYXIoJ3RlbXBsYXRlLXBhZ2VzLXVuZm9sZCcsICdmYWxzZScpKVxufSx7XG50aXRsZTogJ+a1i+ivlemmlumhtemTvuaOpemcgOimgeaKiumhteeggeaUueaIkGZ5cGFnZSzlpoLmnpzkuIrpnaLnmoTmtYvor5XpgJrov4fog73mmL7npLrlm77niYfvvIzpgqPkuYjlsLHor7TmmI7mmK/lj6/ku6XnlJ/miJDop4TliJnnmoTvvIzkvp3mrKHloavlhaXliIbnsbvpk77mjqXkuI7mkJzntKLpk77mjqXvvIznrKzkuInkuKrmoYbnlZnnqbrngrnlh7vnlJ/miJDop4TliJnvvIzloavlpb3lkI3lrZfljbPlj6/vvIzor6bnu4bmt7vliqDliIbnsbvor43kuYvnsbvnmoTor7fngrnlh7vkuIrpnaLnmoTkuKTkuKrmlZnnqIvpk77mjqXlj4LogIPvvIHvvIEnLFxuY29sX3R5cGU6ICdyaWNoX3RleHQnXG59XVxuaWYoZ2V0VmFyKCd0ZW1wbGF0ZS1wYWdlcy11bmZvbGQnLCAnZmFsc2UnKSA9PT0gJ3RydWUnKSB7XG5sZXQgZCA9IFtdXG5kLnB1c2goe1xuICAgIHRpdGxlOiAn54K55Ye75qih5p2/5Y+v5p+l55yL5Luj56CB77yaJyxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcbn0pXG5sZXQgcGFnZUxpc3QgPSBNWV9SVUxFLnBhZ2VMaXN0LmZpbHRlcihwYWdlID0+IHBhZ2UubmFtZSAhPSAn5a2X56ym5Liy5aSE55CG5bel5YW3J1xuJiYgcGFnZS5uYW1lICE9ICcjTWFwcGluZydcbiYmIHBhZ2UubmFtZSAhPSAnI2F1dG8nKVxuZm9yIChsZXQgcGFnZSBvZiBwYWdlTGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwYWdlLm5hbWUsXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcbiAgICAgICAgdXJsOiAkKCkucnVsZSgocGFnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGh0bWxFc2NhcGVcbiAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2Uvc3RyaW5ndG9vbFwiKTtcbiAgICAgICAgICAgIGxldCBkID0gW11cbiAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGh0bWxFc2NhcGUocGFnZS5ydWxlKSxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRSZXN1bHQoZClcbiAgICAgICAgfSwgcGFnZSlcbiAgICB9KVxufVxuZDIucHVzaC5hcHBseShkMiwgZClcbn1cbnNldFJlc3VsdChkMikiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMqKiNmeXBhZ2UuanM6IGxldCBzdXJsID0gIGdldFZhcihcInRlbXBsYXRlLXNlYXJjaC11cmxcIinvvJvvvJtsZXQgaW5zcGxpdHM9aW5wdXQuc3BsaXQoXCIjXCIp77yb77ybbGV0IHVybCA9IHN1cmwucmVwbGFjZShiYXNlNjREZWNvZGUoXCJLaW89XCIpLCBpbnNwbGl0c1sxXSkucmVwbGFjZShiYXNlNjREZWNvZGUoXCJabmx3WVdkbFwiKSwgaW5zcGxpdHNbMl0p77yb77ybdXJs77yb77ybIiwiZ3JvdXAiOiLlt6XlhbciLCJzZWFyY2hGaW5kIjoianM6XG5jb25zdCB7XG4gICAgYXV0b1BhZ2Vcbn0gPSAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvYXV0bz9ydWxlPeaooeadv8K3UVwiKTtcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSkiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8zIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxudmFyIGxhenkgPSAnJztcbmNvbnN0IHtcbiAgICBhdXRvUGFnZVxufSA9ICQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9hdXRvP3J1bGU95qih5p2/wrdRXCIpO1xuYXV0b1BhZ2UoZ2V0UmVzQ29kZSgpKSIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJhdXRvIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdzdHVpLXZvZGxpc3RcIixcInBhdGhcIjpcInN0dWktdm9kbGlzdFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnLnN0dWktdm9kbGlzdCYmbGknKTtcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdhJiZ0aXRsZScpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLnBpYy10ZXh0JiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sICcubGF6eWxvYWR8fGEmJmRhdGEtb3JpZ2luYWwnKSsnQFJlZmVyZXI9JyxcXG4gICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSArICcjaW1tZXJzaXZlVGhlbWUjJ1xcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnLmJcIixcInBhdGhcIjpcIi5iXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICczMzAmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG5cXG50cnkge1xcbiAgICB2YXIgZm0gPSBzZXRfc3dpdGNoXFxufSBjYXRjaCAoZSkge1xcbiAgICBmbSA9IE1ZX1VSTFxcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnLnN0dWktY29udGVudF9fZGV0YWlsLS1oMSYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgn5Zyw5Yy6JywgJ1xcXFxu5Zyw5Yy6JylcXG4gICAgICAgIC5yZXBsYWNlKCfkuLvmvJQnLCAnXFxcXG7kuLvmvJQnKSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLmRlc2N8fC5kZXRhaWwtY29udGVudCYmVGV4dCcpLFxcbiAgICBwaWNfdXJsOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgIHVybDogZm0sXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG52YXIg57q/6LevID0gJ2JvZHkmJi5iJ1xcbnZhciDpgInpm4YgPSDnur/ot69cXG52YXIg57q/6Lev5ZCNID0gJ2gzJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0onN0dWktdm9kbGlzdF9fbWVkaWFcIixcInBhdGhcIjpcInN0dWktdm9kbGlzdF9fbWVkaWFcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJy5zdHVpLXZvZGxpc3RfX21lZGlhJiZsaScpO1xcbmxvZygn5pCc57Si57uT5p6cJylcXG5sb2cobGlzdClcXG5pZiAobGlzdC5sZW5ndGggPT0gMCkgdGhyb3cgXFxcIuaQnOe0ouS4uuepuu+8jOWPr+iDveWMuemFjemUmeivr1xcXCJcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdhJiZ0aXRsZScpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLnBpYy10ZXh0JiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sICdhJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgICAgICBjb250ZW50OiBwZGZoKGxpc3Rbal0sICcuZGV0YWlsLS1oMyYmVGV4dCcpLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpKycjaW1tZXJzaXZlVGhlbWUjJ1xcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qnbXl1aS12b2RsaXN0XCIsXCJwYXRoXCI6XCJteXVpLXZvZGxpc3RcIixcInJ1bGVcIjpcInZhciBkID0gW11cXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnLm15dWktdm9kbGlzdCYmbGknKVxcbmZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJ2g0JiZUZXh0JyksXFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcucGljLXRhZ3x8LnBpYy10ZXh0JiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sICcubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKS5yZXBsYWNlKCd2b2RwbGF5Jywndm9kZGV0YWlsJykgKyAnI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgfSlcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqduYXYtdGFic1wiLFwicGF0aFwiOlwibmF2LXRhYnNcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzMzMCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcblxcbnRyeSB7XFxuICAgIHZhciBmbSA9IHNldF9zd2l0Y2hcXG59IGNhdGNoIChlKSB7XFxuICAgIGZtID0gTVlfVVJMXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcuZGF0YSYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgn5Zyw5Yy677yaJywgJyAgJylcXG4gICAgICAgIC5yZXBsYWNlKCflubTku73vvJonLCAnICAnKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLmRhdGEsMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLmRhdGEsMiYmVGV4dCcpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICcuZGF0YSwzJiZUZXh0JyksXFxuICAgIGltZzogcGQoaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IGZtLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxudmFyIOe6v+i3ryA9ICcubmF2LXRhYnMmJmEnXFxudmFyIOmAiembhiA9ICcudGFiLWNvbnRlbnQmJi5teXVpLWNvbnRlbnRfX2xpc3R8fC5zdHVpLWNvbnRlbnRfX3BsYXlsaXN0J1xcbnZhciDnur/ot6/lkI0gPSAnVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ3VsJiZsaSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJteXVpLXZvZGxpc3RfX21lZGlhXCIsXCJwYXRoXCI6XCJteXVpLXZvZGxpc3RfX21lZGlhXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBsaXN0ID0gcGRmYShnZXRSZXNDb2RlKCksICcjc2VhcmNoTGlzdCYmbGknKTtcXG5sb2coJ+aQnOe0oue7k+aenCcpXFxubG9nKGxpc3QpXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHRocm93IFxcXCLmkJzntKLkuLrnqbrvvIzlj6/og73ljLnphY3plJnor69cXFwiXFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5waWMtdGV4dCYmVGV4dCcpLFxcbiAgICAgICAgcGljX3VybDogcGQobGlzdFtqXSwgJ2EmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgICAgIGNvbnRlbnQ6IHBkZmgobGlzdFtqXSwgJy5kZXRhaWwtLWg0JiZUZXh0JyksXFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykrJyNpbW1lcnNpdmVUaGVtZSMnXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qndm9kbGlzdFwiLFwicGF0aFwiOlwidm9kbGlzdFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnLnZvZGxpc3QmJmxpJyk7XFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnYSYmVGV4dCcpLFxcbiAgICAgICBwaWNfdXJsOiBwZChsaXN0W2pdLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJykrJ0BSZWZlcmVyPScsXFxuICAgICAgIHVybDogcGQobGlzdFtqXSwnYSYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbW8tcGxheS1sb2FkXCIsXCJwYXRoXCI6XCJtby1wbGF5LWxvYWRcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzMzMCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcblxcbnRyeSB7XFxuICAgIHZhciBmbSA9IHNldF9zd2l0Y2hcXG59IGNhdGNoIChlKSB7XFxuICAgIGZtID0gTVlfVVJMXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcudmlkZW8taW5mby1pdGVtcywyJiZUZXh0JylcXG4gIC5yZXBsYWNlKCfliIbnsbt8JywgJycpXFxuICAucmVwbGFjZSgn5Zyw5Yy677yaJywgJycpXFxuICAucmVwbGFjZSgn5bm05Lu977yaJywgJyAnKS5zdWJzdHJpbmcoMCwgMTgpICsgJ1xcXFxuJyArICdcXFxcbicgKyBcXG4gIHBkZmgoaHRtbCwgJy52aWRlby1pbmZvLWl0ZW1zLDEmJlRleHQnKS5zdWJzdHJpbmcoMCwgMTgpLFxcbiAgICBwaWNfdXJsOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLXNyYycpLFxcbiAgICB1cmw6IGZtLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuXFxudmFyIOe6v+i3ryA9ICdib2R5JiYubW9kdWxlLXRhYi1jb250ZW50JiYubW9kdWxlLXRhYi1pdGVtJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnNvcnQtaXRlbSdcXG52YXIg57q/6Lev5ZCNID0gJ3NwYW4mJlRleHQnXFxudmFyIOmAiembhuWIl+ihqCA9ICdib2R5JiZhJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p25hdi10YWJzMVwiLFwicGF0aFwiOlwibmF2LXRhYnMxXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICczMzAmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG5cXG50cnkge1xcbiAgICB2YXIgZm0gPSBzZXRfc3dpdGNoXFxufSBjYXRjaCAoZSkge1xcbiAgICBmbSA9IE1ZX1VSTFxcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAncCwxJiZUZXh0JylcXG4gICAgICAgIC5yZXBsYWNlKCfnsbvlnovvvJonLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCflnLDljLrvvJonLCAnICcpXFxuICAgICAgICAucmVwbGFjZSgn5bm05Lu977yaJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn6K+t6KiA77yaJywgJycpICtcXG4gICAgICAgICdcXFxcblxcXFxuJyArIHBkZmgoaHRtbCwgJ3AsNCYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDMwKSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAncCwyJiZUZXh0JyksXFxuICAgIHBpY191cmw6IHBkKGh0bWwsICcubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgdXJsOiBmbSxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcblxcbnZhciDnur/ot68gPSAnLm5hdi10YWJzJiZhJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnN0dWktY29udGVudF9fcGxheWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdhJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcImZsZXhfYnV0dG9uXCIsXCJuYW1lXCI6XCLlrprkvY3kuoznuqdcIixcInBhdGhcIjpcImVyamlcIixcInJ1bGVcIjpcInZhciB0YWJzID0gW11cXG52YXIgbGlzdHMgPSBbXVxcblxcbnBkZmEoaHRtbCwg57q/6LevKS5mb3JFYWNoKChkYXRhLCBpZCkgPT4ge1xcbiAgICBkYXRhID0gcGRmaChkYXRhLCDnur/ot6/lkI0pXFxuICAgIGlmICh0eXBlb2Yo5o6S6ZmkKSAhPSAndW5kZWZpbmVkJyAmJiDmjpLpmaQgIT0gJycpIHtcXG4gICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UobmV3IFJlZ0V4cCjmjpLpmaQsIFxcXCJnXFxcIiksIFxcXCJcXFwiKVxcbiAgICB9XFxuXFxuICAgIHRhYnMucHVzaChkYXRhKVxcbn0pXFxuXFxucGRmYShodG1sLCDpgInpm4YpLmZvckVhY2goKGRhdGEsIGlkKSA9PiB7XFxuICAgIGxpc3RzLnB1c2gocGRmYShkYXRhLCDpgInpm4bliJfooagpKVxcbn0pXFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcihcXFwibGlzdHNcXFwiKTtcXG59KSk7XFxuc3RvcmFnZTAucHV0TXlWYXIoXFxcImxpc3RzXFxcIiwgbGlzdHMpO1xcbnZhciBsaXN0ID0gbGlzdHNbZ2V0TXlWYXIoTVlfVVJMLCAnMCcpXTtcXG52YXIg5o6S5bqPID0gZ2V0TXlWYXIoTVlfVVJMICsgXFxcIueroOiKguaOkuW6j1xcXCIsICcjMWFhZDE5XFxcIj7mraPluo8nKTtcXG52YXIg5o+Q56S6ID0g5o6S5bqPID09ICcjRkYwMDAwXFxcIj7lgJLluo8nID8gJyMxYWFkMTlcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXCI+5YCS5bqPJztcXG52YXIg5o6S5bqP5ZCNID0gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjrmjpLluo88L3NwYW4+PC9iPidcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogJyArIOaOkuW6jyArICc8L3NwYW4+PC9iPicsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgo5o6S5bqP5ZCNLCBsYXp5KSA9PiB7XFxuICAgICAgICB2YXIgbGlzdHMgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwibGlzdHNcXFwiKTtcXG4gICAgICAgIHZhciDnq6DoioIgPSBsaXN0c1tnZXRNeVZhcihNWV9VUkwsICcwJyldO1xcbiAgICAgICAgdmFyIOaOkuW6jyA9IGdldE15VmFyKE1ZX1VSTCArIFxcXCLnq6DoioLmjpLluo9cXFwiLCAnIzFhYWQxOVxcXCI+5q2j5bqPJyk7XFxuICAgICAgICB2YXIg5o+Q56S6ID0g5o6S5bqPID09ICcjRkYwMDAwXFxcIj7lgJLluo8nID8gJyMxYWFkMTlcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXCI+5YCS5bqPJztcXG4gICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBNWV9VUkwgKyBcXFwiX+aOkuW6j1xcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHRpdGxlOiDmjpLluo/lkI0ucmVwbGFjZSgn5o6S5bqPJywg5o+Q56S6KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGlmICjmjpLluo8gPT0gJyMxYWFkMTlcXFwiPuato+W6jycpIHtcXG4gICAgICAgICAgICDnq6DoioIucmV2ZXJzZSgpXFxuICAgICAgICB9XFxuICAgICAgICBsZXQgY3AgPSDnq6DoioIubWFwKChkYXRhLCBzc2lkKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGF0YSwgJ2EmJlRleHQnKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZChkYXRhLCAnYSYmaHJlZicpICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IOeroOiKgi5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsczogTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiKTtcXG4gICAgICAgIGFkZEl0ZW1CZWZvcmUoTVlfVVJMICsgXFxcImZvb3RlclxcXCIsIGNwKTtcXG4gICAgICAgIHB1dE15VmFyKE1ZX1VSTCArIFxcXCLnq6DoioLmjpLluo9cXFwiLCDmj5DnpLopXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIOaOkuW6j+WQjSwgbGF6eSksXFxuICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJf5o6S5bqPXFxcIlxcbiAgICB9XFxufSlcXG50YWJzLmZvckVhY2goKGRhdGEsIGlkKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoTVlfVVJMLCAnMCcpID09IGlkID8gJ+KAnOKAnCcgKyBkYXRhICsgJ+KAneKAnScgOiBkYXRhLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCjnur/ot68sIGxhenksIGlkKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGxpc3RzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImxpc3RzXFxcIik7XFxuICAgICAgICAgICAgdmFyIOaOkuW6jyA9IGdldE15VmFyKE1ZX1VSTCArIFxcXCLnq6DoioLmjpLluo9cXFwiLCAnIzFhYWQxOVxcXCI+5q2j5bqPJyk7XFxuICAgICAgICAgICAgdmFyIOaPkOekuiA9IOaOkuW6jyA9PSAnI0ZGMDAwMFxcXCI+5YCS5bqPJyA/ICcjMWFhZDE5XFxcIj7mraPluo8nIDogJyNGRjAwMDBcXFwiPuWAkuW6jyc7XFxuICAgICAgICAgICAg57q/6LevLmZvckVhY2goKGRhdGEsIHhsaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaWQgPT0geGxpZCA/ICfigJzigJwnICsgZGF0YSArICfigJ3igJ0nIDogZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJf57q/6LevXFxcIiArIHhsaWRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwdXRNeVZhcihNWV9VUkwsIGlkKVxcbiAgICAgICAgICAgIHZhciDnq6DoioIgPSBsaXN0c1tnZXRNeVZhcihNWV9VUkwsICcwJyldO1xcbiAgICAgICAgICAgIGlmICjmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycpIHtcXG4gICAgICAgICAgICAgICAg56ug6IqCLnJldmVyc2UoKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsZXQgY3AgPSDnq6DoioIubWFwKChkYXRhLCBzc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChkYXRhLCAnYSYmVGV4dCcpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwZChkYXRhLCAnYSYmaHJlZicpICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiDnq6DoioIubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKE1ZX1VSTCArIFxcXCJf6YCJ6ZuGXFxcIik7XFxuICAgICAgICAgICAgYWRkSXRlbUJlZm9yZShNWV9VUkwgKyBcXFwiZm9vdGVyXFxcIiwgY3ApO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIHRhYnMsIGxhenksIGlkKSxcXG4gICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogTVlfVVJMICsgXFxcIl/nur/ot69cXFwiICsgaWRcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSlcXG5cXG5pZiAo5o6S5bqPID09ICcjRkYwMDAwXFxcIj7lgJLluo8nKSB7XFxuICAgIGxpc3QucmV2ZXJzZSgpXFxufVxcbmxpc3QuZm9yRWFjaCgoZGF0YSwgaWQpID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGRhdGEsICdhJiZUZXh0JyksXFxuICAgICAgICB1cmw6IHBkKGRhdGEsICdhJiZocmVmJykgKyBsYXp5LFxcbiAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGNsczogTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pXFxubGV0IG5ld3N0aXAgPSBsaXN0Lmxlbmd0aDtcXG5pZiAobmV3c3RpcCkge1xcbiAgICBzZXRMYXN0Q2hhcHRlclJ1bGUoJ2pzOicgKyAkLnRvU3RyaW5nKChuZXdzdGlwKSA9PiB7XFxuICAgICAgICBzZXRSZXN1bHQoJ+abtOaWsOiHszog56ysJyArIG5ld3N0aXAgKyBcXFwi6ZuGXFxcIik7XFxuICAgIH0sIG5ld3N0aXApKTtcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IE1ZX1VSTCArIFxcXCJmb290ZXJcXFwiXFxuICAgIH1cXG59KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p3BsYXlfc291cmNlX3RhYlwiLFwicGF0aFwiOlwicGxheV9zb3VyY2VfdGFiXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcucmVtYXJrcyYmVGV4dCcpICtcXG4gICAgICAgICdcXFxcbicgKyBwZGZoKGh0bWwsICcucy10b3AtaW5mby1kZXRhaWwmJmEmJlRleHQnKSArXFxuICAgICAgICBwZGZoKGh0bWwsICcucy10b3AtaW5mby1kZXRhaWwmJmEsMSYmVGV4dCcpICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5zLXRvcC1pbmZvLWRldGFpbCYmYSwyJiZUZXh0JykgK1xcbiAgICAgICAgJ1xcXFxu4oCc4oCc566A5LuL77ya5LiN6IO955So5bCx5Yig5o6J5ZCn4oCd4oCdJyxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLmRlc2NfdHh0JiZUZXh0Jykuc3Vic3RyaW5nKDAsIDIwKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmltZy1jb3Zlcnx8LnZvZC1kZXRhaWwtYmomJnNyYycpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbnZhciDnur/ot68gPSAnLnBsYXlfc291cmNlX3RhYiYmYSdcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5wbGF5ZXJfbGlzdHx8I3BsYXlsaXN0Ym94fHwjcGxheXN4J1xcbnZhciDnur/ot6/lkI0gPSAnYSYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ3VsJiZsaSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdmZWQtcGxheS1pdGVtXCIsXCJwYXRoXCI6XCJmZWQtcGxheS1pdGVtXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcbmQucHVzaCh7XFxuICAgIGRlc2M6ICczMzAmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG50cnkge1xcbiAgICB2YXIgZm0gPSBzZXRfc3dpdGNoXFxufSBjYXRjaCAoZSkge1xcbiAgICBmbSA9IE1ZX1VSTFxcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnZGQmJmxpLDMmJlRleHQnKSArXFxuICAgICAgICAnXFxcXG4nICsgcGRmaChodG1sLCAnZGQmJmxpLDQmJlRleHQnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJ2RkJiZsaSw1JiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTUpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICdkZCYmbGksNiYmVGV4dCcpLnN1YnN0cmluZygwLCAyNSksXFxuICAgIHBpY191cmw6IHBkKGh0bWwsICcuZmVkLWxhenkmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgdXJsOiBmbSxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG59KTtcXG52YXIg57q/6LevID0gJ2JvZHkmJi5mZWQtZHJvcC1idG5zJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLmZlZC1wbGF5LWl0ZW0nXFxudmFyIOe6v+i3r+WQjSA9ICdhJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAnYm9keSYmLmZlZC1idG5zLWluZm8nXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57SiZGxcIixcInBhdGhcIjpcImRsXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBsaXN0ID0gcGRmYShnZXRSZXNDb2RlKCksICdib2R5JiZkbCcpO1xcbmxvZygn5pCc57Si57uT5p6cJylcXG5sb2cobGlzdClcXG5pZiAobGlzdC5sZW5ndGggPT0gMCkgdGhyb3cgXFxcIuaQnOe0ouS4uuepuu+8jOWPr+iDveWMuemFjemUmeivr1xcXCJcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gIGQucHVzaCh7XFxuICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdoMSYmVGV4dCcpLFxcbiAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcuZmVkLWxpc3QtcmVtYXJrcyYmVGV4dCcpLFxcblxcdCAgICBjb250ZW50OiBwZGZoKGxpc3Rbal0sICcuZmVkLXBhcnQtZXNhbi0tc3BhbiYmVGV4dCcpLFxcbiAgICAgICBpbWc6IHBkKGxpc3Rbal0sICdhJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKVxcbiAgfSk7XFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiI01hcHBpbmdcIixcInBhdGhcIjpcIk1hcHBpbmdcIixcInJ1bGVcIjpcImpzOlxcbiQuZXhwb3J0cyA9IHtcXG4gICAgXFxcImhvbWVcXFwiOiBbe1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwiIGIgXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwiLmJcXFwiLFxcbiAgICAgICAgICAgIC8vICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibmF2LXRhYnNcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJuYXYtdGFic1xcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibXl1aS1jb250ZW50X19saXN0XFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibXl1aS1jb250ZW50X19saXN0XFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJuYXYtdGFic1xcXCIsIFxcXCJzdHVpLWNvbnRlbnRfX3BsYXlsaXN0XFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibmF2LXRhYnMxXFxcIixcXG4gICAgICAgICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwiaDNcXFwiLCBcXFwic3R1aS1jb250ZW50X19wbGF5bGlzdFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcImgzXFxcIixcXG4gICAgICAgICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibXl1aS12b2RsaXN0IFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIm15dWktdm9kbGlzdFxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW8tbW92cy1pdGVtXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW8tbW92cy1pdGVtXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtb2R1bGUtdGFiLWl0ZW1cXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtb2R1bGUtdGFiLWl0ZW1cXFwiLFxcbiAgICAgICAgICAgIC8vICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcInktcGxheUxpc3RcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJ5LXBsYXlMaXN0XFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJzdHVpLXZvZGxpc3QgXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwic3R1aS12b2RsaXN0XFxcIixcXG4gICAgICAgICAgICAvLyAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcInBsYXlfc291cmNlX3RhYlxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcInBsYXlfc291cmNlX3RhYlxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwiZmVkLXBsYXktaXRlbVxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcImZlZC1wbGF5LWl0ZW1cXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm1vZHVsZS1pdGVtXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW9kdWxlLWl0ZW1zXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJ2b2RsaXN0IFxcXCIsIFxcXCJsYXp5bG9hZFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcInZvZGxpc3RcXFwiLFxcbiAgICAgICAgICAgIGFsbEtleTogdHJ1ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtby1wbGF5LWxvYWRcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtby1wbGF5LWxvYWRcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcImZlZC1saXN0LXRpdGxlXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwiZmVkLWxpc3QtdGl0bGVcXFwiLFxcbiAgICAgICAgICAgIC8vYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcInBhY2steWtwYWNrXFxcXFxcXCJcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJwYWNrLXlrcGFja1xcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAgLypcXG4gICAgICAgICAgICAgICAge1xcbiAgICAgICAgICAgICAgICAgICAga2V5czogW1xcXCJpdGVtXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJpdGVtXFxcIixcXG4gICAgICAgICAgICAgICAgfSwqL1xcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwiZGF0YV9saXN0XFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwiZGF0YV9saXN0XFxcIixcXG4gICAgICAgIH0sXFxuICAgIF0sXFxuICAgIFxcXCJzZWFyY2hcXFwiOiBbe1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwic3R1aS12b2RsaXN0X19tZWRpYVxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcInN0dWktdm9kbGlzdF9fbWVkaWFcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm15dWktdm9kbGlzdF9fbWVkaWFcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJteXVpLXZvZGxpc3RfX21lZGlhXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtb2R1bGUtc2VhcmNoLWl0ZW1cXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtb2R1bGUtc2VhcmNoLWl0ZW1cXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcInN0dWktdm9kbGlzdCBcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJzdHVpLXZvZGxpc3RcXFwiLFxcbiAgICAgICAgICAgIC8vICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwiZGwgXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwiZGxcXFwiLFxcbiAgICAgICAgICAgIGFsbEtleTogdHJ1ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtb2R1bGUtaXRlbXNcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtb2R1bGUtaXRlbXNcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgXVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIiNhdXRvXCIsXCJwYXRoXCI6XCJhdXRvXCIsXCJydWxlXCI6XCJqczpcXG5mdW5jdGlvbiBnZXRQYWdlU291cmNlKGtleSkge1xcbiAgICBsZXQgc3JjID0gcmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL1xcXCIgKyBrZXkgKyBcXFwiP3J1bGU95qih5p2/wrdRXFxcIik7XFxuICAgIHNyYyA9IEpTT04ucGFyc2Uoc3JjKS5ydWxlO1xcbiAgICByZXR1cm4gc3JjO1xcbn1cXG5jb25zdCBzb3VyY2VNYXAgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9NYXBwaW5nP3J1bGU95qih5p2/wrdRXFxcIik7XFxuXFxuZnVuY3Rpb24gYXV0b1BhZ2UoaHRtbHNyYywgdHlwZSkge1xcbiAgICBsZXQgcGFnZVJ1bGVzID0gW10sXFxuICAgICAgICBodG1sU291cmNlID0gaHRtbHNyYyxcXG4gICAgICAgIHBhZ2VUeXBlLFxcbiAgICAgICAgbU1hcHBpbmc7XFxuICAgIGlmICh0eXBlICE9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgIHBhZ2VUeXBlID0gdHlwZTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHBhZ2VUeXBlID0gTVlfVFlQRTtcXG4gICAgfVxcbiAgICBtTWFwcGluZyA9IHNvdXJjZU1hcFtwYWdlVHlwZV07XFxuICAgIGlmIChtTWFwcGluZyA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KG1NYXBwaW5nKSkge1xcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLkuI3lrZjlnKhcXFwiICsgcGFnZVR5cGUgKyBcXFwi57G75Z6L55qE5qih5p2/XFxcIik7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgaXRlbSBvZiBtTWFwcGluZykge1xcbiAgICAgICAgaWYgKGl0ZW0uYWxsS2V5KSB7XFxuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5cy5ldmVyeShrZXkgPT4gaHRtbFNvdXJjZS5pbmNsdWRlcyhrZXkpKSkge1xcbiAgICAgICAgICAgICAgICBwYWdlUnVsZXMucHVzaChpdGVtKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChpdGVtLmtleXMuc29tZShrZXkgPT4gaHRtbFNvdXJjZS5pbmNsdWRlcyhrZXkpKSkge1xcbiAgICAgICAgICAgICAgICBwYWdlUnVsZXMucHVzaChpdGVtKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYocGFnZVJ1bGVzLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBsb2coXFxcIuaaguaXoOWQiOmAgueahOaooeadv1xcXCIpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IHBhZ2VSdWxlIG9mIHBhZ2VSdWxlcykge1xcbiAgICAgICAgbG9nKFxcXCLmraPlnKjljLnphY3vvJpcXFwiICsgcGFnZVJ1bGUudXJsKTtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgZXZhbC5jYWxsKG51bGwsIFxcXCI7KGZ1bmN0aW9uKCl7XFxcIiArIGdldFBhZ2VTb3VyY2UocGFnZVJ1bGUudXJsKSArIFxcXCJ9KSgpXFxcIik7XFxuICAgICAgICAgICAgbG9nKFxcXCLljLnphY3mqKHmnb/miJDlip/vvIzmraPlnKjnu5PmnZ/ljLnphY3ov5vnqItcXFwiKTtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICBsb2coXFxcIuWMuemFjeaooeadv+mUmeivr1xcXCIpO1xcbiAgICAgICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpXFxuICAgICAgICAgICAgbG9nKFxcXCLmraPlnKjljLnphY3kuIvkuIDkuKrmqKHmnb8uLi4uLi5cXFwiKVxcbiAgICAgICAgICAgIGlmIChwYWdlUnVsZS51cmwgPT0gcGFnZVJ1bGVzW3BhZ2VSdWxlcy5sZW5ndGggLSAxXS51cmwpIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCLlt7LljLnphY3liLDmnIDlkI7kuIDkuKrmqKHmnb/vvIzmmoLml6DlkIjpgILnmoTmqKHmnb9cXFwiKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG59XFxuJC5leHBvcnRzLmF1dG9QYWdlID0gYXV0b1BhZ2U7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdwYWNrLXlrcGFja1wiLFwicGF0aFwiOlwicGFjay15a3BhY2tcIixcInJ1bGVcIjpcInZhciBkID1bXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmLnBhY2steWtwYWNrJyk7XFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnc3BhbiwtMSYmVGV4dCcpLFxcbiAgICAgICBpbWc6IHBkKGxpc3Rbal0sICcuZWNsYXp5JiZkYXRhLW9yaWdpbmFsJykrJ0BSZWZlcmVyPScsXFxuICAgICAgIHVybDogcGQobGlzdFtqXSwnYSYmaHJlZicpKyAnI2ltbWVyc2l2ZVRoZW1lIydcXG4gIH0pO1xcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdtb2R1bGUtaXRlbXNcIixcInBhdGhcIjpcIm1vZHVsZS1pdGVtc1wiLFwicnVsZVwiOlwiTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGQgPSBbXVxcbnZhciBsaXN0ID0gcGRmYShnZXRSZXNDb2RlKCksICdib2R5JiYubW9kdWxlLWl0ZW0nKTtcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdzdHJvbmd8fGEmJlRleHR8fHRpdGxlJyksXFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcubW9kdWxlLWl0ZW0tdGV4dHx8Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQnKSxcXG4gICAgICAgIHBpY191cmw6IHBkKGxpc3Rbal0sICdpbWd8fC5sYXp5JiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbHx8c3JjJykgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSArIFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIlxcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbW9kdWxlLXRhYi1pdGVtXCIsXCJwYXRoXCI6XCJtb2R1bGUtdGFiLWl0ZW1cIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzMzMCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnRyeSB7XFxuICAgIHZhciBmbSA9IHNldF9zd2l0Y2hcXG59IGNhdGNoIChlKSB7XFxuICAgIGZtID0gTVlfVVJMXFxufVxcblxcbnRyeSB7XFxuICAgIHZhciB0aXRsZSA9IHBkZmEoaHRtbCwgJ2JvZHktLWEmJi50YWctbGluaycpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdmFyIHRpdGxlID0gJyc7XFxufVxcbnZhciBUID0gW107XFxuZm9yICh2YXIgaSBpbiB0aXRsZSkge1xcbiAgICBULnB1c2gocGRmaCh0aXRsZVtpXSwgJ2EmJlRleHQnKSlcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFQuam9pbignICAnKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLnZpZGVvLWluZm8taXRlbXMsMSYmVGV4dCcpXFxuICAgICAgICAuc3BsaXQoJy8nKS5qb2luKCcgICcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDIwKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLnZpZGVvLWluZm8taXRlbXMmJlRleHQnKVxcbiAgICAgICAgLnNwbGl0KCcvJykuam9pbignICAnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAyMCksXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy52aWRlby1pbmZvLWl0ZW1zLDImJlRleHQnKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyY3x8c3JjJyksXFxuICAgIHVybDogZm0sXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG52YXIg57q/6LevID0gJ2JvZHkmJi5tb2R1bGUtdGFiLWl0ZW0nXFxudmFyIOmAiembhiA9ICdib2R5JiYuc2Nyb2xsLWJveC15fHwubW9kdWxlLWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdzcGFuJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAnYm9keSYmYSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJtb2R1bGUtc2VhcmNoLWl0ZW1cIixcInBhdGhcIjpcIm1vZHVsZS1zZWFyY2gtaXRlbVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmLm1vZHVsZS1zZWFyY2gtaXRlbScpO1xcbmxvZygn5pCc57Si57uT5p6cJylcXG5sb2cobGlzdClcXG5pZiAobGlzdC5sZW5ndGggPT0gMCkgdGhyb3cgXFxcIuaQnOe0ouS4uuepuu+8jOWPr+iDveWMuemFjemUmeivr1xcXCJcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdoMyYmVGV4dCcpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLnZpZGVvLXNlcmlhbCYmVGV4dCcpLFxcbiAgICAgICAgY29udGVudDogcGRmaChsaXN0W2pdLCAnLnZpZGVvLWluZm8tYXV4JiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sICdpbWcmJmRhdGEtb3JpZ2luYWx8fGRhdGEtc3JjJyksXFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICcudmlkZW8tc2VyaWFsJiZocmVmJykgKyAnI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgfSk7XFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qnaXRlbVwiLFwicGF0aFwiOlwiaXRlbVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmLml0ZW0nKTtcXG5mb3IgKGxldCBpIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3RbaV0sICdpbWcmJmFsdCcpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2ldLCAncCYmVGV4dCcpLFxcbiAgICAgICAgcGljX3VybDogcGQobGlzdFtpXSwgJ2ltZyYmc3JjJyksXFxuICAgICAgICB1cmw6IHBkKGxpc3RbaV0sICdhJiZocmVmJyksXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJuYW1lXCI6XCLkuIDnuqdkYXRhX2xpc3RcIixcInBhdGhcIjpcImRhdGFfbGlzdFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnI2RhdGFfbGlzdCYmbGknKTtcXG5mb3IgKGxldCBpIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3RbaV0sICdhJiZ0aXRsZScpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2ldLCAnZW0mJlRleHQnKSxcXG4gICAgICAgIHBpY191cmw6IHBkKGxpc3RbaV0sICdpbWcmJmRhdGEtc3JjJyksXFxuICAgICAgICB1cmw6IHBkKGxpc3RbaV0sICdhJiZocmVmJyksXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnaDNcIixcInBhdGhcIjpcImgzXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICczMzAmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG5cXG50cnkge1xcbiAgICB2YXIgZm0gPSBzZXRfc3dpdGNoXFxufSBjYXRjaCAoZSkge1xcbiAgICBmbSA9IE1ZX1VSTFxcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnLmRhdGEsMiYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgn57G75Z6L77yaJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn5Zyw5Yy677yaJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn5bm05Lu977yaJywgJyAnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAxOCkgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5kYXRhLDEmJlRleHQnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5kYXRhJiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTUpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICcuZGV0YWlsLXNrZXRjaHx8LmRhdGEsM3x8I2Rlc2MmJlRleHQnKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgIHVybDogZm0sXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5cXG52YXIg57q/6LevID0gJ2JvZHkmJi5zdHVpLXBhbm5lbDpoYXMoLnN0dWktY29udGVudF9fcGxheWxpc3QpJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnN0dWktY29udGVudF9fcGxheWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdoMyYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ3VsJiZsaSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdmZWQtbGlzdC10aXRsZVwiLFwicGF0aFwiOlwiZmVkLWxpc3QtdGl0bGVcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxuTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJy5mZWQtbGlzdC1pbmZvJiZsaScpO1xcbmZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJy5mZWQtbGlzdC10aXRsZSYmVGV4dCcpLFxcbiAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcuZmVkLXRleHQtY2VudGVyJiZUZXh0JyksXFxuICAgICAgIGltZzogcGQobGlzdFtqXSwgJ2EmJmRhdGEtb3JpZ2luYWwnKSsnQFJlZmVyZXI9JyxcXG4gICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpXFxuICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdteXVpLWNvbnRlbnRfX2xpc3RcIixcInBhdGhcIjpcIm15dWktY29udGVudF9fbGlzdFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5kLnB1c2goe1xcbiAgICBkZXNjOiAnMzMwJiZmbG9hdCcsXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxufSk7XFxudHJ5IHtcXG4gICAgdmFyIGZtID0gc2V0X3N3aXRjaFxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgZm0gPSBNWV9VUkxcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHBkZmgoaHRtbCwgJy5kYXRhLDAmJlRleHQnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+WcsOWMuu+8micsICcgICcpXFxuICAgICAgICAucmVwbGFjZSgn5bm05Lu977yaJywgJyAgJykgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5kYXRhLDEmJlRleHQnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5kYXRhLDImJlRleHQnKSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLmRhdGEsMyYmVGV4dCcpLFxcbiAgICBwaWNfdXJsOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgIHVybDogZm0sXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG52YXIg57q/6LevID0gJ2JvZHkmJi5teXVpLXBhbmVsLWJveDpoYXMoLm15dWktY29udGVudF9fbGlzdCknXFxudmFyIOmAiembhiA9ICdib2R5JiYubXl1aS1jb250ZW50X19saXN0J1xcbnZhciDnur/ot6/lkI0gPSAnaDMmJlRleHQnXFxudmFyIOmAiembhuWIl+ihqCA9ICd1bCYmbGknXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5a2X56ym5Liy5aSE55CG5bel5YW3XCIsXCJwYXRoXCI6XCJzdHJpbmd0b29sXCIsXCJydWxlXCI6XCJqczpcXG5jb25zdCBtYXRjaExpc3QgID0ge1xcbiAgLy8gXFxcIjxcXFwiOlxcXCImbHQ7XFxcIixcXG4gIC8vIFxcXCI+XFxcIjogXFxcIiZndDtcXFwiLFxcbiAgLy8gXFxcIiZcXFwiOiBcXFwiJmFtcDtcXFwiLFxcbiAgLy8gJ1xcXCInOiBcXFwiJnF1b3Q7XFxcIixcXG4gIC8vIFxcXCInXFxcIjogXFxcImFjdXRlO1xcXCIsXFxuICBcXFwiIFxcXCI6IFxcXCImbmJzcDtcXFwiLFxcbiAgXFxcIlxcXFxuXFxcIjpcXFwiPGJyPlxcXCJcXG59XFxuLy8g5a2X56ym6L+H5ruk5ZmoXFxuZnVuY3Rpb24gaHRtbEVzY2FwZSh0ZXh0KXtcXG4gIGxldCByZWdTdHIgPSAnKCcgKyBPYmplY3Qua2V5cyhtYXRjaExpc3QpLnRvU3RyaW5nKCkgKyAnKSdcXG4gIHJlZ1N0ciA9IHJlZ1N0ci5yZXBsYWNlKC8sL2csICcpfCgnKSAgXFxuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKHJlZ1N0ciwgJ2cnKVxcbiAgcmV0dXJuIHRleHQucmVwbGFjZShyZWdFeHAsIG1hdGNoID0+IG1hdGNoTGlzdFttYXRjaF0pXFxufVxcbiQuZXhwb3J0cy5odG1sRXNjYXBlID0gaHRtbEVzY2FwZVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yqo5oCB5YiG57G7MVwiLFwicGF0aFwiOlwiZHRmbFwiLFwicnVsZVwiOlwiY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5pZiAodHlwZW9mKOaLvOaOpeWIhuexuykgIT0gJ3VuZGVmaW5lZCcgJiYg5ou85o6l5YiG57G7ICE9ICcnKSB7XFxuICAgIHZhciBjYXRlZ29yaWVzID0gcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpXFxufSBlbHNlIHtcXG4gICAgdmFyIGNhdGVnb3JpZXMgPSBwZGZhKGh0bWwsIOWkp+exu+WumuS9jSlcXG59XFxuXFxubGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG59XFxuXFxuY29uc3QgZm9sZCA9IGdldFZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpXFxuY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/ICfigJzigJzigJ3igJ08Yj4nICsgJ+KIqCcuZm9udGNvbG9yKFxcXCIjRkYwMDAwXFxcIikgKyAnPC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+JyArICfiiKcnLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpICsgJzwvYj4nLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGZvbGQpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCA9PT0gJzEnID8gJzAnIDogJzEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgZm9sZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICB9KVxcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NKTtcXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZijmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0aXRsZS5mb250Y29sb3Io5YiG57G76aKc6ImyKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW11cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkobmV3X2NhdGUpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2UgaWYgKGZvbGQgPT09ICcxJykge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZijmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0aXRsZS5mb250Y29sb3Io5YiG57G76aKc6ImyKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p+WFrOWFseaooeadv1wiLFwicGF0aFwiOlwieWlqaVwiLFwicnVsZVwiOlwiZnVuY3Rpb24g5LiA57qnKCkge307XFxuT2JqZWN0LmFzc2lnbijkuIDnuqcucHJvdG90eXBlLCB7XFxuICAgIGNvbnN0cnVjdG9yOiDkuIDnuqcsXFxuICAgIHRlc3QoKSB7fSxcXG4gICAg6I635Y+W5rqQ56CBKHVybCwgaGVhZGVyKSB7XFxuICAgICAgICByZXR1cm4gZmV0Y2godHJ1ZV91cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXIgfHwge1xcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSAvLyDpu5jorqTnu5/kuIDkvb/nlKhQQyBVQVxcbiAgICB9LFxcbiAgICDojrflj5bmraPnoa7pk77mjqUocGFnZSwgcmVnZXgpIHtcXG4gICAgICAgIGxldCB0cnVlX3VybCA9IGdldE15VmFyKCdoZWFkZXIudXJsJywgTVlfVVJMKTtcXG4gICAgICAgIGxldCDpk77mjqXlpITnkIblt6XlhbcgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91cmwtcHJvY2Vzc29yP3J1bGU95qih5p2/wrdRJylcXG4gICAgICAgIHRydWVfdXJsID0g6ZO+5o6l5aSE55CG5bel5YW3XFxuICAgICAgICAgICAgLumTvuaOpSh0cnVlX3VybClcXG4gICAgICAgICAgICAu6aG156CBKHBhZ2UpXFxuICAgICAgICAgICAgLuaPkuWFpeaWsOWkhOeQhuinhOWImShyZWdleCB8fCBbXSlcXG4gICAgICAgICAgICAu6I635Y+W5aSE55CG57uT5p6cKCk7XFxuICAgICAgICByZXR1cm4gdHJ1ZV91cmw7XFxuICAgIH0sXFxuICAgIOaJk+mAoOWIhuexuyhydWxlTGlzdCkge1xcbiAgICAgICAgLy8gJzAnIOS4uum7mOiupOS4jeaKmOWPoO+8jCcxJyDkuLrpu5jorqTmipjlj6BcXG4gICAgICAgIGNvbnN0IOW9k+WJjeaKmOWPoOeKtuaAgSA9IGdldE15VmFyKCdoZWFkZXIuZm9sZCcsICcxJylcXG5cXG4gICAgICAgIC8vIOW8leWFpeWKqOaAgeWIhuexu+S+nei1llxcbiAgICAgICAgbGV0IGh0bWxDYXRlZ29yaWVzID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXI/cnVsZT3mqKHmnb/Ct1EnKVxcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCl7XFxuwqDCoMKgwqDCoMKgwqAgcmV0dXJuICcjJysoJzAwMDAwJysoTWF0aC5yYW5kb20oKSoweDEwMDAwMDA8PDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcXG7CoMKgwqDCoMKgIH1cXG4gICAgICAgIGh0bWxDYXRlZ29yaWVzLueVjOmdoihkKVxcbiAgICAgICAgICAgIC8vIC7liIbnsbvpk77mjqUodHJ1ZV91cmwpXFxuICAgICAgICAgICAgLua6kOeggShodG1sKVxcbiAgICAgICAgICAgIC7pobXnoIEocGFnZSlcXG4gICAgICAgICAgICAu5re75Yqg5YiG57G75a6a5L2NKHJ1bGVMaXN0KVxcbiAgICAgICAgICAgIC7lvIDlkK/lhoXnva7mipjlj6Dlip/og70oKSAvLyDlv4XpobtcXG4gICAgICAgICAgICAu5oqY5Y+gKOW9k+WJjeaKmOWPoOeKtuaAgSkgLy8g5b+F6aG7XFxuICAgICAgICAgICAgLumAieS4reeahOWIhuexu+minOiJsihnZXRSYW5nZUNvbG9ycygpKVxcbiAgICAgICAgIC8vICAgLumAieS4reeahOWIhuexu+minOiJsignIzA5OEFDMScpXFxuICAgICAgICAgICAgLuW8gOWni+aJk+mAoOWIhuexuygpO1xcbiAgICB9LFxcbiAgICDnlJ/miJDniYfljZUoZCwgaHRtbCkge1xcbiAgICAgICAgbGV0IGxpc3QgPSBwZGZhKGh0bWwsIOWIl+ihqCk7XFxuICAgICAgICBmb3IgKGxldCBqIGluIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgaW1nID0gcGQobGlzdFtqXSwg5Zu+54mHKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCDmoIfpopgpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sIOaPj+i/sCksXFxuICAgICAgICAgICAgICAgIGltZzogaW1nICsgJ0BSZWZlcmVyPScgKyBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogcGQobGlzdFtqXSwg6ZO+5o6lKS5yZXBsYWNlKCd2b2RwbGF5Jywndm9kZGV0YWlsJykgKyBcXFwiI2ltbWVyc2l2ZVRoZW1lI1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn0pXFxuXFxuJC5leHBvcnRzID0gbmV3IOS4gOe6pygpO1xcbiQuZXhwb3J0c1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yqo5oCB5YiG57G7MlwiLFwicGF0aFwiOlwiY2F0ZWdvcmllcy1oZWFkZXJcIixcInJ1bGVcIjpcImNvbnN0IHN5bWJvbE1hcCA9IHtcXG4gICAgLy8gY2hlY2tQYXJhbXM6IFN5bWJvbCgnY2hlY2tQYXJhbXMnKSxcXG4gICAgbUxheW91dDogU3ltYm9sKCdtTGF5b3V0JyksXFxuICAgIHRydWVfdXJsOiBTeW1ib2woJ3RydWVfdXJsJyksXFxuICAgIG1QYWdlOiBTeW1ib2woJ21QYWdlJyksXFxuICAgIHNyYzogU3ltYm9sKCdzcmMnKSxcXG4gICAgcnVsZU9iakxpc3Q6IFN5bWJvbCgncnVsZU9iakxpc3QnKSxcXG4gICAgbUZvbGQ6IFN5bWJvbCgnbUZvbGQnKSxcXG4gICAgbUZvbGRJbm5lckVuYWJsZTogU3ltYm9sKCdtRm9sZElubmVyRW5hYmxlJyksXFxuICAgIG1Gb2xkSW5kZXg6IFN5bWJvbCgnbUZvbGRJbmRleCcpLFxcbiAgICBtRm9sZExheW91dDogU3ltYm9sKCdtRm9sZExheW91dCcpLFxcbiAgICBtQ29sb3I6IFN5bWJvbCgnbUNvbG9yJyksXFxuICAgIG1UYWc6IFN5bWJvbCgnbVRhZycpLFxcbn1cXG5cXG5mdW5jdGlvbiBDYXRlZ29yaWVzSGVhZGVyKGNvbG9yKSB7XFxuICAgIC8vICd1c2Ugc3RyaWN0JztcXG4gICAgLy8gLi4uXFxuICAgIC8vIHRoaXNbc3ltYm9sTWFwLmxpc3RSdWxlXSA9IFtdXFxuICAgIC8vIHRoaXNbc3ltYm9sTWFwLnN1Ykxpc3RSdWxlXSA9IFtdXFxuICAgIHRoaXNbc3ltYm9sTWFwLm1Db2xvcl0gPSBjb2xvciB8fCBcXFwiI0ZBNzI5OFxcXCI7XFxuICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XSA9IFtdXFxuICAgIHRoaXMuVkFSTUFQID0ge1xcbiAgICAgICAgQ0FURUdPUlk6IFxcXCJoZWFkZXIuY2F0ZWdvcnlcXFwiLFxcbiAgICAgICAgVVJMOiBcXFwiaGVhZGVyLnVybFxcXCIsXFxuICAgICAgICBGT0xEOiBcXFwiaGVhZGVyLmZvbGRcXFwiLFxcbiAgICB9XFxuICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkTGF5b3V0XSA9IHtcXG4gICAgICAgIGluamVjdEluZGV4OiAxXFxuICAgIH1cXG4gICAgdGhpc1tzeW1ib2xNYXAubUZvbGRJbmRleF0gPSAxXFxufVxcblxcbk9iamVjdC5hc3NpZ24oQ2F0ZWdvcmllc0hlYWRlci5wcm90b3R5cGUsIHtcXG4gICAgLy8gT3ZlcnJpZGUg5p6E6YCg5pa55rOV77yM55u45b2T5LqOIGZ1bmN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICguLi4pID0+IHsuLi5977yMbmV3IGZ1bmN0aW9uKCkg55qE5pe25YCZ5Lya6Ieq5Yqo5omn6KGMXFxuICAgIGNvbnN0cnVjdG9yOiBDYXRlZ29yaWVzSGVhZGVyLFxcbiAgICAvLyDlrprkuYnnp4HmnInmlrnms5VcXG4gICAgVkVSU0lPTjogMjAyMTEyMDExOTAwLFxcbiAgICBjaGVja1BhcmFtcygpIHtcXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubUxheW91dF0pIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+iwg+eUqCBsYXlvdXQoZCkg5Lyg5YWl5b2T5YmN55WM6Z2iXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghKHRoaXNbc3ltYm9sTWFwLnNyY10gfHwgdGhpc1tzeW1ib2xNYXAudHJ1ZV91cmxdKSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+36LCD55SoIHRydWVVcmwodXJsKSDkvKDlhaXlvZPliY3liIbnsbvnmoTpk77mjqXmiJbosIPnlKggaHRtbChtSHRtbCkg5Lyg5YWl5b2T5YmN5YiG57G76aG16Z2i55qE5rqQ56CBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubVBhZ2VdKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7fosIPnlKggcGFnZShtUGFnZSkg5Lyg5YWl5b2T5YmN6aG15pWwXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF0ubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+36LCD55So55u45YWz5pa55rOV5Lyg5YWl5a6a5L2N6KeE5YiZXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubUZvbGRdKSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRdID0gJzAnXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIGxheW91dChtTGF5b3V0KSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XSA9IG1MYXlvdXRcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHRydWVVcmwodXJsKSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC50cnVlX3VybF0gPSB1cmxcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHBhZ2UobVBhZ2UpIHtcXG4gICAgICAgIGlmICh0eXBlb2YgKG1QYWdlKSA9PT0gJ3N0cmluZycpIHtcXG4gICAgICAgICAgICBtUGFnZSA9IHBhcnNlSW50KG1QYWdlKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubVBhZ2VdID0gbVBhZ2VcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIGh0bWwobVNyYykge1xcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAuc3JjXSA9IG1TcmNcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIGxpc3QocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJsaXN0KHJ1bGUpIGFkZChydWxlT2JqKSDlj6rog73kuozpgInkuIDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdID0gW3t9XVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLmxpc3RSdWxlID0gcnVsZVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfkuIDnuqfliIbnsbsnXSA9IHJ1bGVcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHN1Ykxpc3QocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJzdWJMaXN0KHJ1bGUpIGFkZChydWxlT2JqKSDlj6rog73kuozpgInkuIDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKCF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0gfHwgKCF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0ubGlzdFJ1bGUgJiYgIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXVsn5LiA57qn5YiG57G7J10pKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7flhYjosIPnlKggbGlzdChydWxlKSDmiJYg5LiA57qn5YiG57G7KHJ1bGUpIOWumuS9jeS4gOe6p+WIhuexu1xcXCIpXFxuICAgICAgICB9XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0uc3ViTGlzdFJ1bGUgPSBydWxlXFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF1bJ+WtkOWIhuexuyddID0gcnVsZVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgdGl0bGUocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJ0aXRsZShydWxlKSBhZGQocnVsZU9iaikg5Y+q6IO95LqM6YCJ5LiA77yBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdIHx8ICghdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLmxpc3RSdWxlICYmICF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF1bJ+S4gOe6p+WIhuexuyddKSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35YWI6LCD55SoIGxpc3QocnVsZSkg5oiWIOS4gOe6p+WIhuexuyhydWxlKSDlrprkvY3kuIDnuqfliIbnsbtcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLnRpdGxlUnVsZSA9IHJ1bGVcXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXVsn5YiG57G75qCH6aKYJ10gPSB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0udGl0bGVSdWxlXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICB1cmwocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJ1cmwocnVsZSkgYWRkKHJ1bGVPYmopIOWPquiDveS6jOmAieS4gO+8gVxcXCIpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXSB8fCAoIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS5saXN0UnVsZSAmJiAhdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfkuIDnuqfliIbnsbsnXSkpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+WFiOiwg+eUqCBsaXN0KHJ1bGUpIOaIliDkuIDnuqfliIbnsbsocnVsZSkg5a6a5L2N5LiA57qn5YiG57G7XFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS51cmxSdWxlID0gcnVsZVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfliIbnsbvpk77mjqUnXSA9IHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS51cmxSdWxlXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICog5piv5ZCm5byA5ZCv5oqY5Y+g5Yqf6IO9XFxuICAgICAqXFxuICAgICAqIEBwYXJhbSBlbmFibGVkIHRydWUg6KGo56S65byA5ZCv77yMZmFsc2Ug6KGo56S656aB55SoXFxuICAgICAqIEByZXR1cm5zIHtDYXRlZ29yaWVzSGVhZGVyfVxcbiAgICAgKi9cXG4gICAgZm9sZElubmVyKGVuYWJsZWQpIHtcXG4gICAgICAgIGlmICghKHR5cGVvZiAoZW5hYmxlZCkgPT09ICdib29sZWFuJykpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+S8oOWFpSB0cnVlIOaIliBmYWxzZSDooajnpLrlvIDlkK/miJblhbPpl63mipjlj6Dlip/og73vvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRJbm5lckVuYWJsZV0gPSBlbmFibGVkXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICog5LuO56ysIGluZGV4IOihjOW8gOWni+aKmOWPoFxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gaW5kZXgg5byA5aeL5oqY5Y+g55qE6KGM5pWwXFxuICAgICAqIEByZXR1cm5zIHtDYXRlZ29yaWVzSGVhZGVyfVxcbiAgICAgKi9cXG4gICAgZm9sZEluZGV4KGluZGV4KSB7XFxuICAgICAgICBpZiAoISh0eXBlb2YgKGluZGV4KSA9PT0gJ251bWJlcicpKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLlvIDlp4vmipjlj6DooYzor7fkvKDlhaXmlbDlrZfvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGluZGV4IDwgMSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5byA5aeL5oqY5Y+g6KGM6K+35Lyg5YWl5aSn5LqOIDAg55qE5pW05pWw77yBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdID0gaW5kZXggfHwgMTtcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiDmipjlj6DmjInpkq7nmoTnlYzpnaJcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDkuI4gZC5wdXNoIOe7k+aehOS4gOiHtO+8jFxcbiAgICAgKiAgICAgICAg5L6L77yaeyB0aXRsZTpcXFwi5qCH6aKYMVxcXCIsIHVybDpcXFwieHh4XFxcIiwgY29sX3R5cGU6XFxcInNjcm9sbF9idXR0b25cXFwiIH07XFxuICAgICAqICAgICAgICDlj4LmlbDph4fnlKjlj6/pgInopobnm5bmqKHlvI/vvIzkuI3lhpnnmoTlj4LmlbDliJnkvb/nlKjpu5jorqQ7XFxuICAgICAqICAgICAgICDmr5TlpoLkvKDlhaUgeyBjb2xfdHlwZTpcXFwidGV4dF8xXFxcIiB977yM6YKj5pyA57uI57uT5p6c5bCx5pivIHsgdGl0bGU6XFxcIuagh+mimDFcXFwiLCB1cmw6XFxcInh4eFxcXCIsIGNvbF90eXBlOlxcXCJ0ZXh0XzFcXFwiIH1cXG4gICAgICogQHJldHVybnMge0NhdGVnb3JpZXNIZWFkZXJ9XFxuICAgICAqL1xcbiAgICBmb2xkTGF5b3V0KGxheW91dCkge1xcbiAgICAgICAgaWYgKHR5cGVvZiBsYXlvdXQgPT09ICdvYmplY3QnKSB7XFxuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhsYXlvdXQpXFxuICAgICAgICAgICAgbGV0IGluamVjdEluZGV4ID0gbGF5b3V0LmluamVjdEluZGV4IHx8IGxheW91dFsn5oqY5Y+g5oyJ6ZKu5o+S5YWl6KGMJ11cXG4gICAgICAgICAgICBpZiAobGF5b3V0LnRpdGxlIHx8IGxheW91dC51cmwgfHwgbGF5b3V0LmNvbF90eXBlIHx8IGluamVjdEluZGV4KSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRMYXlvdXRdW2tleV0gPSBsYXlvdXRba2V5XTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl5q2j56Gu55qE5oqY5Y+g55WM6Z2i5YWD57Sg77yBXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8gaW5qZWN0SW5kZXgg5oqY5Y+g5oyJ6ZKu5o+S5YWl56ysIGluamVjdEluZGV4IOihjFxcbiAgICAgICAgICAgIGlmIChpbmplY3RJbmRleCkge1xcbiAgICAgICAgICAgICAgICBpZiAoISh0eXBlb2YgKGluamVjdEluZGV4KSA9PT0gJ251bWJlcicpKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuaKmOWPoOaMiemSruaPkuWFpeihjOivt+S8oOWFpeaVsOWtl++8gVxcXCIpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGluamVjdEluZGV4IDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLmipjlj6DmjInpkq7mj5LlhaXooYzor7fkvKDlhaXlpKfkuo4gMCDnmoTmlbTmlbDvvIFcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChpbmplY3RJbmRleCA+IHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuaKmOWPoOaMiemSruaPkuWFpeihjOS4jeW+l+Wkp+S6juaYvuekuuaKmOWPoOihjOaVsO+8geivt+iwg+eUqCAuZm9sZEluZGV4KGluZGV4KSDmiJYgLuesrOWHoOihjOW8gOWni+aKmOWPoChpbmRleCkg5Lyg5YWl5q2j56Gu55qE5pi+56S65oqY5Y+g6KGM5pWwXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uaW5qZWN0SW5kZXggPSBpbmplY3RJbmRleCB8fCAxO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7fkvKDlhaXmraPnoa7nmoTmipjlj6DnlYzpnaLlhYPntKDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXM7XFxuICAgIH0sXFxuICAgIC8vIOW9k+WJjeaYr+WQpuaKmOWPoFxcbiAgICBmb2xkKGlzRm9sZCkge1xcbiAgICAgICAgaWYgKHR5cGVvZiAoaXNGb2xkKSA9PT0gJ3N0cmluZycpIHtcXG4gICAgICAgICAgICBpc0ZvbGQgPSBpc0ZvbGQgPT09ICcxJ1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlzRm9sZCkge1xcbiAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkXSA9ICcxJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRdID0gJzAnO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgY29sb3IobUNvbG9yKSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5tQ29sb3JdID0gbUNvbG9yXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICB0YWcobVRhZykge1xcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubVRhZ10gPSBtVGFnXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICBhZGQocnVsZU9iaikge1xcbiAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KHJ1bGVPYmopKVxcbiAgICAgICAgaWYgKHJ1bGVPYmouY29uc3RydWN0b3IgPT09IEFycmF5KSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdID0gdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdLmNvbmNhdChydWxlT2JqKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF0ucHVzaChydWxlT2JqKVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXM7XFxuICAgIH0sXFxuICAgIGV2YWxKU1J1bGUoaXRlbSwganNSdWxlKSB7XFxuICAgICAgICBsZXQgcnVsZSA9IGpzUnVsZS5yZXBsYWNlKFxcXCJAanM6XFxcIiwgXFxcIlxcXCIpXFxuICAgICAgICBydWxlID0gcnVsZS50cmltKClcXG4gICAgICAgIC8vIGxvZygkLnN0cmluZ2lmeShydWxlKSlcXG4gICAgICAgIGxldCBpbnB1dCA9IGl0ZW1cXG4gICAgICAgIGlmIChydWxlLnN0YXJ0c1dpdGgoXFxcIihcXFwiKSkge1xcbiAgICAgICAgICAgIGV2YWwoJ3Jlc3VsdCA9ICcgKyBydWxlKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDov5jljp/miJAgJC50b1N0cmluZyguLi4pIOeahOacgOe7iOe7k+aenO+8jOi+vuWIsOacgOe7iOWkhOeQhuaWueW8j+i3n+S4iumdoueahCBpZiDkuIDoh7TnmoTnm67nmoRcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBldmFsKCdyZXN1bHQgPSAnICsgJygoKSA9PiB7JyArIHJ1bGUgKyAnfSkoKScpXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gKHJlc3VsdCB8fCAnJylcXG4gICAgfSxcXG4gICAgZ2V0VGl0bGUoc3JjLCBjYXRlZ29yeSkge1xcbiAgICAgICAgbGV0IHRpdGxlID0gJydcXG4gICAgICAgIGxldCB0aXRsZVJ1bGUgPSBjYXRlZ29yeS50aXRsZVJ1bGUgfHwgJ2EmJlRleHQnXFxuICAgICAgICBpZiAodGl0bGVSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgIHRpdGxlID0gdGhpcy5ldmFsSlNSdWxlKHNyYywgdGl0bGVSdWxlKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChzcmMsIHRpdGxlUnVsZSlcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB0aXRsZSB8fCBcXFwiXFxcIjtcXG4gICAgfSxcXG4gICAgZ2V0VXJsKHNyYywgY2F0ZWdvcnkpIHtcXG4gICAgICAgIGxldCB1cmwgPSAnJ1xcbiAgICAgICAgbGV0IHVybFJ1bGUgPSBjYXRlZ29yeS51cmxSdWxlIHx8ICdhJiZocmVmJ1xcbiAgICAgICAgaWYgKHR5cGVvZiB1cmxSdWxlID09PSAnb2JqZWN0Jykge1xcbiAgICAgICAgICAgIGxldCBtVXJsUnVsZSA9IHVybFJ1bGUucnVsZSB8fCB1cmxSdWxlWyfop6PmnpDop4TliJknXSB8fCAnYSYmaHJlZic7XFxuICAgICAgICAgICAgaWYgKG1VcmxSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmV2YWxKU1J1bGUoc3JjLCBtVXJsUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlID0gcGFyc2VEb207XFxuICAgICAgICAgICAgICAgIGlmICh1cmxSdWxlLnBhcnNlT3B0aW9uKSB7XFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHVybFJ1bGUucGFyc2VPcHRpb24pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwYXJzZURvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwicGRcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwYXJzZURvbUZvckh0bWxcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBkZmhcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tRm9ySHRtbDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2UgPSBwYXJzZURvbTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxSdWxlW1xcXCLop6PmnpDmlrnms5VcXFwiXSkge1xcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1cmxSdWxlW1xcXCLop6PmnpDmlrnms5VcXFwiXSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBhcnNlRG9tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwZFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlID0gcGFyc2VEb207XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBhcnNlRG9tRm9ySHRtbFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwicGRmaFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlID0gcGFyc2VEb21Gb3JIdG1sO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHVybCA9IHBhcnNlKHNyYywgbVVybFJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodXJsUnVsZS5kZWFsVXJsKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IHVybFJ1bGUuZGVhbFVybCh1cmwpXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxSdWxlWyfkuozmrKHlpITnkIYnXSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmxSdWxlWyfkuozmrKHlpITnkIYnXSh1cmwpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAodXJsUnVsZS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy5ldmFsSlNSdWxlKHNyYywgdXJsUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gcGFyc2VEb20oc3JjLCB1cmxSdWxlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdXJsIHx8IFxcXCJcXFwiO1xcbiAgICB9LFxcbiAgICBidWlsZCgpIHtcXG4gICAgICAgIC8vIOajgOa1i+aYr+WQpuS8oOWFpemcgOimgeeahOWPguaVsFxcbiAgICAgICAgdGhpcy5jaGVja1BhcmFtcygpXFxuICAgICAgICAvLyDmr4/kuIDkuKrliIbnsbvnmoTllK/kuIDmoIfor4ZcXG4gICAgICAgIGxldCBtVGFnID0gdGhpc1tzeW1ib2xNYXAubVRhZ10gfHwgXFxcIlxcXCJcXG4gICAgICAgIC8v57+76aG1IOmcgOimgeagueaNruWunumZheabv+aNolxcbiAgICAgICAgY29uc3QgaHRtbCA9IHRoaXNbc3ltYm9sTWFwLnNyY10gfHwgcmVxdWVzdCh0aGlzW3N5bWJvbE1hcC50cnVlX3VybF0pXFxuICAgICAgICBjb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgLy/ojrflj5bliJfooahcXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBbXVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdLm1hcChydWxlT2JqID0+IHtcXG4gICAgICAgICAgICBsZXQgbGlzdCA9IFtdXFxuICAgICAgICAgICAgbGV0IGxpc3RSdWxlID0gcnVsZU9iai5saXN0UnVsZSB8fCBydWxlT2JqW1xcXCLkuIDnuqfliIbnsbtcXFwiXVxcbiAgICAgICAgICAgIGlmIChsaXN0UnVsZS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KGxpc3RSdWxlKSlcXG4gICAgICAgICAgICAgICAgbGlzdCA9IHRoaXMuZXZhbEpTUnVsZShodG1sLCBsaXN0UnVsZSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBsaXN0UnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8gbG9nKGxpc3QpXFxuICAgICAgICAgICAgbGlzdC5tYXAoY2F0ZWdvcnkgPT4ge1xcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdDogY2F0ZWdvcnksXFxuICAgICAgICAgICAgICAgICAgICBzdWJMaXN0UnVsZTogcnVsZU9iai5zdWJMaXN0UnVsZSB8fCBydWxlT2JqW1xcXCLlrZDliIbnsbtcXFwiXSxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlUnVsZTogcnVsZU9iai50aXRsZVJ1bGUgfHwgcnVsZU9ialtcXFwi5YiG57G75qCH6aKYXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICB1cmxSdWxlOiBydWxlT2JqLnVybFJ1bGUgfHwgcnVsZU9ialtcXFwi5YiG57G76ZO+5o6lXFxcIl0sXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcblxcbiAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KGNhdGVnb3JpZXMpKVxcblxcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldE15VmFyKG1UYWcgKyB0aGlzLlZBUk1BUC5DQVRFR09SWSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAodGhpc1tzeW1ib2xNYXAubVBhZ2VdID09PSAxKSB7XFxuXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgLy8g5oqY5Y+gIFVJXFxuICAgICAgICAgICAgICAgIGlmICh0aGlzW3N5bWJvbE1hcC5tRm9sZElubmVyRW5hYmxlXSAmJiB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uaW5qZWN0SW5kZXggPT09IChpbmRleCsxKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvbGRMYXlvdXQgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXNbc3ltYm9sTWFwLm1Gb2xkTGF5b3V0XS50aXRsZSB8fCAodGhpc1tzeW1ib2xNYXAubUZvbGRdID09PSAnMScgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkYwMDAwXFxcIj7iiKg8L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMWFhZDE5XFxcIj7iiKc8L3NwYW4+PC9iPicpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpc1tzeW1ib2xNYXAubUZvbGRMYXlvdXRdLnVybCB8fCAkKFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5tVGFnICsgcGFyYW1zLlZBUk1BUC5GT0xELCBnZXRNeVZhcihwYXJhbXMubVRhZyArIHBhcmFtcy5WQVJNQVAuRk9MRCwgcGFyYW1zLmlzRm9sZCkgPT09ICcxJyA/ICcwJyA6ICcxJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGFnOiBtVGFnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGQ6IHRoaXNbc3ltYm9sTWFwLm1Gb2xkXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSTUFQOiB0aGlzLlZBUk1BUFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uY29sX3R5cGUgfHwgXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUxheW91dF0ucHVzaChmb2xkTGF5b3V0KVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIC8v5YW35L2T5YiX6KGo5LiL55qE5YiG57G7XFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuc3ViTGlzdFJ1bGUuc3RhcnRzV2l0aChcXFwiQGpzOlxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHRoaXMuZXZhbEpTUnVsZShjYXRlZ29yeS5saXN0LCBjYXRlZ29yeS5zdWJMaXN0UnVsZSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGFyc2VEb21Gb3JBcnJheShjYXRlZ29yeS5saXN0LCBjYXRlZ29yeS5zdWJMaXN0UnVsZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgKHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdIHx8IDEpKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFRpdGxlKGl0ZW0sIGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSB0aGlzLmdldFVybChpdGVtLCBjYXRlZ29yeSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScgKyB0aGlzW3N5bWJvbE1hcC5tQ29sb3JdICsgJz4nICsgdGl0bGUgKyAnIDwvZm9udD48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5pbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMudGFnICsgcGFyYW1zLlZBUk1BUC5DQVRFR09SWSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmluZGV4ID09PSAwID8gbmV3X2NhdGUgOiBwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy50YWcgKyBwYXJhbXMuVkFSTUFQLlVSTCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUk1BUDogdGhpcy5WQVJNQVAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IG1UYWcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXNbc3ltYm9sTWFwLm1QYWdlXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpc1tzeW1ib2xNYXAubUZvbGRdID09PSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGUoaXRlbSwgY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHRoaXMuZ2V0VXJsKGl0ZW0sIGNhdGVnb3J5KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1MYXlvdXRdLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9JyArIHRoaXNbc3ltYm9sTWFwLm1Db2xvcl0gKyAnPicgKyB0aXRsZSArICcgPC9mb250PjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnRhZyArIHBhcmFtcy5WQVJNQVAuQ0FURUdPUlksIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnRhZyArIHBhcmFtcy5WQVJNQVAuVVJMLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSTUFQOiB0aGlzLlZBUk1BUCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogbVRhZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpc1tzeW1ib2xNYXAubVBhZ2VdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1MYXlvdXRdLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9LFxcblxcbiAgICDnlYzpnaIobGF5b3V0KSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQobGF5b3V0KVxcbiAgICB9LFxcbiAgICDliIbnsbvpk77mjqUodHJ1ZVVybCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ1ZVVybCh0cnVlVXJsKTtcXG4gICAgfSxcXG4gICAg6aG156CBKHBhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2UocGFnZSk7XFxuICAgIH0sXFxuICAgIOa6kOeggShodG1sKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5odG1sKGh0bWwpO1xcbiAgICB9LFxcbiAgICDlrprkvY3kuIDnuqfliIbnsbsobGlzdCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdChsaXN0KTtcXG4gICAgfSxcXG4gICAg5a6a5L2N5a2Q5YiG57G7KHN1Ykxpc3QpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnN1Ykxpc3Qoc3ViTGlzdCk7XFxuICAgIH0sXFxuICAgIOWumuS9jeWIhuexu+agh+mimCh0aXRsZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUodGl0bGUpO1xcbiAgICB9LFxcbiAgICDlrprkvY3liIbnsbvpk77mjqUodXJsKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy51cmwodXJsKTtcXG4gICAgfSxcXG4gICAg5byA5ZCv5YaF572u5oqY5Y+g5Yqf6IO9KCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9sZElubmVyKHRydWUpO1xcbiAgICB9LFxcbiAgICDlhbPpl63lhoXnva7mipjlj6Dlip/og70oKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5mb2xkSW5uZXIoZmFsc2UpO1xcbiAgICB9LFxcbiAgICDnrKzlh6DooYzlvIDlp4vmipjlj6AoaW5kZXgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmZvbGRJbmRleChpbmRleCk7XFxuICAgIH0sXFxuICAgIOaKmOWPoOaMiemSruagt+W8jyhsYXlvdXQpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmZvbGRMYXlvdXQobGF5b3V0KVxcbiAgICB9LFxcbiAgICDmipjlj6AoZm9sZCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9sZChmb2xkKTtcXG4gICAgfSxcXG4gICAg6YCJ5Lit55qE5YiG57G76aKc6ImyKGNvbG9yKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5jb2xvcihjb2xvcik7XFxuICAgIH0sXFxuICAgIOWUr+S4gOagh+ivhihtVGFnKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy50YWcobVRhZylcXG4gICAgfSxcXG4gICAg5re75Yqg5YiG57G75a6a5L2NKHJ1bGVPYmopIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmFkZChydWxlT2JqKTtcXG4gICAgfSxcXG4gICAg5byA5aeL5omT6YCg5YiG57G7KCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGQoKTtcXG4gICAgfSxcXG5cXG59KVxcbiQuZXhwb3J0cyA9IG5ldyBDYXRlZ29yaWVzSGVhZGVyKCk7XFxuJC5leHBvcnRzXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpk77mjqXlpITnkIblt6XlhbdcIixcInBhdGhcIjpcInVybC1wcm9jZXNzb3JcIixcInJ1bGVcIjpcIi8qKlxcbiAqIOacrOWcsOe9kemhteaPkuS7tumTvuaOpSBoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL1VybFByb2Nlc3Nvci5qc1xcbiAqIOWtkOmhtemdoumTvuaOpSBoaWtlcjovL3BhZ2UvdXJsLXByb2Nlc3NvclxcbiAqIOmBk+mVv+S7k+W6k+mTvuaOpSBodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD0yODQ5XFxuICog56CB5LqRIEdpdGVlIOmTvuaOpSBodHRwczovL2dpdGVlLmNvbS9yZWJvcm4wL0hpa2VyUnVsZXMvcmF3L21hc3Rlci9wbHVnaW5zL1VybFByb2Nlc3Nvci5qc1xcbiAqL1xcbmZ1bmN0aW9uIFVybFByb2Nlc3NvcigpIHtcXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxcbiAgICB0aGlzLnJlZ2V4TWFwID0gW1xcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJyh2b2R0eXBlfHZpZGVvdClcXFxcXFxcXC9cXFxcXFxcXHcrJyxcXG4gICAgICAgICAgICBleGVjOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy51cmxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8tXFxcXGQrLmh0bWwvLCAnLScgKyB0aGlzLnBhcmFtcy5wYWdlICsgJy5odG1sJylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oKHZvZHR5cGV8dmlkZW90KVxcXFwvXFxcXHcrKS5odG1sLywgJyQxLScgKyB0aGlzLnBhcmFtcy5wYWdlICsgJy5odG1sJylcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJ1xcXFxcXFxcLz9bXFxcXFxcXFx3XFxcXFxcXFxkXSstLio/LS4qPy0uKj8tLio/LS4qPy0uKj8tLio/LVxcXFxcXFxcZCotLS1cXFxcXFxcXGQqLmh0bWwnLFxcbiAgICAgICAgICAgIGV4ZWM6ICgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnVybFxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxkKigtLS0uaHRtbCkvLCB0aGlzLnBhcmFtcy5wYWdlICsgJyQxJylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oLS0tXFxcXGQrLmh0bWwpLywgdGhpcy5wYXJhbXMucGFnZSArICckMScpOyAvLyDmi7zmjqXpobXnoIFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJygoXFxcXFxcXFwvdm9kXFxcXFxcXFwvc2hvdyk/KFxcXFxcXFxcL2FyZWFcXFxcXFxcXC9bXFxcXFxcXFx3XFxcXFxcXFxkJV0rKT8oXFxcXFxcXFwvYnlcXFxcXFxcXC9bXFxcXFxcXFx3XFxcXFxcXFxkJV0rKT8oXFxcXFxcXFwvaWRcXFxcXFxcXC9cXFxcXFxcXGQrKT8oXFxcXFxcXFwvbGV0dGVyXFxcXFxcXFwvW1xcXFxcXFxcd1xcXFxcXFxcZCVdKyk/KShcXFxcXFxcXC9wYWdlXFxcXFxcXFwvXFxcXFxcXFxkKyk/KFxcXFxcXFxcL3llYXJcXFxcXFxcXC9cXFxcXFxcXGQrKT9cXFxcXFxcXC5odG1sJyxcXG4gICAgICAgICAgICBleGVjOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCByZWdFeHAgPSAvKChcXFxcL3ZvZFxcXFwvc2hvdyk/KFxcXFwvYXJlYVxcXFwvW1xcXFx3XFxcXGQlXSspPyhcXFxcL2J5XFxcXC9bXFxcXHdcXFxcZCVdKyk/KFxcXFwvaWRcXFxcL1xcXFxkKyk/KFxcXFwvbGV0dGVyXFxcXC9bXFxcXHdcXFxcZCVdKyk/KShcXFxcL3BhZ2VcXFxcL1xcXFxkKyk/KFxcXFwveWVhclxcXFwvXFxcXGQrKT9cXFxcLmh0bWwvXFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy51cmxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlZ0V4cCwgJyQxJyArIChcXFwiL3BhZ2UvXFxcIiArIHRoaXMucGFyYW1zLnBhZ2UpICsgJyQ4JyArIFxcXCIuaHRtbFxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICBdXFxufVxcblxcbk9iamVjdC5hc3NpZ24oVXJsUHJvY2Vzc29yLnByb3RvdHlwZSwge1xcbiAgICBjb25zdHJ1Y3RvcjogVXJsUHJvY2Vzc29yLFxcbiAgICBjaGVja1BhcmFtcygpIHtcXG4gICAgICAgIGlmICghdGhpcy5wYXJhbXMudXJsKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7flhYjosIPnlKggLmJhc2VVcmwodXJsKSDkvKDlhaXpk77mjqXov5vooYzliJ3lp4vljJYhXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpcy5wYXJhbXMucGFnZSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35YWI6LCD55SoIC5wYWdlKHBhZ2UpIOS8oOWFpemhteeggei/m+ihjOWIneWni+WMliFcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBiYXNlVXJsKHVybCl7XFxuICAgICAgICB0aGlzLnBhcmFtcy51cmwgPSB1cmxcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHBhZ2UocGFnZSl7XFxuICAgICAgICB0aGlzLnBhcmFtcy5wYWdlID0gcGFnZVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgYWRkRXh0cmEocmVnRXhwKSB7XFxuICAgICAgICBpZiAocmVnRXhwLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xcbiAgICAgICAgICAgIHRoaXMucmVnZXhNYXAgPSB0aGlzLnJlZ2V4TWFwLmNvbmNhdChyZWdFeHApXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHRoaXMucmVnZXhNYXAucHVzaChyZWdFeHApXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgfSxcXG4gICAgZGVidWcoKSB7XFxuICAgICAgICB0aGlzLnBhcmFtcy5kZWJ1ZyA9IHRydWVcXG4gICAgICAgIHJldHVybiB0aGlzO1xcbiAgICB9LFxcbiAgICBleGVjKCkge1xcbiAgICAgICAgdGhpcy5jaGVja1BhcmFtcygpXFxuICAgICAgICBsZXQgdHJ1ZV91cmwgPSAnJ1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZ2V4TWFwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IHJlZ09iaiA9IHRoaXMucmVnZXhNYXBbaV07XFxuICAgICAgICAgICAgbGV0IHVybEV4cCA9IHJlZ09iai5yZWc7XFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxFeHAgPT09ICdzdHJpbmcnKSB7XFxuICAgICAgICAgICAgICAgIHVybEV4cCA9IG5ldyBSZWdFeHAodXJsRXhwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodXJsRXhwLnRlc3QodGhpcy5wYXJhbXMudXJsKSkge1xcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyh1cmxFeHAudG9TdHJpbmcoKSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB0cnVlX3VybCA9IHJlZ09iai5leGVjKCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0cnVlX3VybCkge1xcbiAgICAgICAgICAgIHJldHVybiB0cnVlX3VybDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnVybFxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICDojrflj5blpITnkIbnu5PmnpwoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5leGVjKClcXG4gICAgfSxcXG4gICAg6ZO+5o6lKHVybCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVybCh1cmwpXFxuICAgIH0sXFxuICAgIOmhteeggShwYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5wYWdlKHBhZ2UpXFxuICAgIH0sXFxuICAgIOaPkuWFpeaWsOWkhOeQhuinhOWImShyZWdFeHApIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmFkZEV4dHJhKHJlZ0V4cClcXG4gICAgfSxcXG4gICAg6LCD6K+V5qih5byPKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWcoKTtcXG4gICAgfVxcbn0pXFxuJC5leHBvcnRzPW5ldyBVcmxQcm9jZXNzb3IoKVxcbiQuZXhwb3J0c1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJqeGhzXCIsXCJydWxlXCI6XCJ2YXIgZmZ0dCA9ICdNdzhnaXlIMUNxblR6M0I3VkhqN01UenZjdVhJRXJncjFEL1B1Z0ZtaE9XdkY2V1RuS1Y1NE0xdVVja01seG5MSVVNYlo3RmlxZ0x1UldjYndHWGhiKzY3ZlNNQmR6NVZzZjZ6UDFkdjlmNGhReHRuc1dLcUF1NUZaeHZBWmVGdjhraStBWlB2TnNkLzBKVlJCalVIQzVRbXRDa1ZobE0va3BuL0JGV3RScjBIL1pIUVFxNGw0SkROelhuTVhBMG15eXZMU05aV2Mvc0luL3ZXU0FIVTlrQWJqVTRxU1pzU0F1OWJ5MGJNd2RDUERzVTRwcHNrVTM5ckJTUEZOREJ6WXl2WHNKaHJ6dGFhYm5leFd6NjVjcGN4L0gzNGxFQ2p1cFAwb0xDa21PRE80V1pYaTFDMkduQUEraDFJN1lEZHl5dkxTTlpXYy9zSW4vdldTQUhVOWtCVXY3Z2QxUWo1b1JhQ1VVN3IySTBtbUZhb0QzUTlScERobVNlbnhVRUlQNyt6VVUxUVcwLzB5dlNLT0xEL3dyWkVWVWNhN2xEMG1mbm1IdUNPUExnMTdRQ0M2eUo5cUljeG8zUmgvWUZNUEtpQjF4b2VETmNDRDk3Q3M4UUJ3aGRidXg2eHovSHRPU2xNR3R1OS9BV25yNXRJM2FYNSt4OFZjQ1Z3Si95K1NYdTkrbDk3VzdLY0FUeUUvQTRmeTk2M1hnSlkyelM0OERMUy9raUJVM1E4NzNMbHlCSzRLOVEvejdvQlpvVGxlcFl6ZDZibmh6S2dEQmo1L2ZYMXNES0hBQkl5TXM0UHFEQnkxRXBtenUzY1hSdlBHRmoxeG1nNHNZVHcvRXBheXl2TFNOWldjL3NJbi92V1NBSFU5cXBSWXdQU1ZhZWswU1ErTG9QckdQMTI4YUVxc3NpUEpyWFhJR25Zc3kzTW13ZVBlNDFIVEk2TWhKbEFWZCtGMVVrWTd3TFRuTDRRUzdHUEpzQnZ2ZllwMXhXY2dWcURXa1I3R29OT09NTndveVJ5OGJNUFRaSjJ4ZXFWQ0VoWHlMNENzdXFiaW5OWGRkcW9sb1llQU9rcXpWa1hEL1ZTOTAzZkIybER1bjBwalZ6bkhOSlFGaGdpYTZRTHEycVpnOVUrU1ZPaVhPeVZnMmxOb3ZJTld1V2ZoYzcrVHk3alh6UjRDWEFyY1VyMkl0ZHR6UXZqNEEwMjI5WnRCQVhqMUIyazhvY21DYlcxK2ZKNCt4SlRPRWVubkFlTTB6Qkw3WmUrVzlNRlpyOUVvT2VvVG9xN1ZFcW1VRUJkcEt3UXpwc0d0R2o5T0x5czI2NGhDSUY4RmM0ZEllT053aFJqdVVpMUxmcG0yaTBzd0hlbEQxbG9FZXNDeUQ1MDFIN1JZekNGbVB2bjh6bmV3cGhmYk5HQTVKUC9meG9SclNOdytKbm9PQ1NnTHVKVWcvL1hTdkRVV05DazRJR3I1WVhUT1N1T0tMZXVMbmNaNTBIOEpSVTdmQ1k9JztcXG52YXIgc3N5eiA9ICdUbG9Hbm5pa1RocmZzLzVmRE5sazVDU3NiYUd0QUg3Vy91TVpqdVlvSXVwQjZiQ29vOUNvdExRSGZQSWRHZ2JrYnluS3FMMmFVRTJYeTU1OFgyUXhIWXRUVTA5dkQrNG9hQ0RJdVNaTzdueERiTGZSR2ZXajd6cWwreU1idkYrYUpvRC9tNlBzZncvUHlZT0FwL1pWR2RyUHphQ0J5ZmQwSEw1REZWU3crWUYyT0M0MFY4U1A5UnhkRktLZHJCdVB4Q1dkeFVDRnJKKzFsUnkvVFUzTEM4NEM0eHhFQmhndWQ3UnRCcDB6WkFycUJFMDYrWjNKdERQMGVGQ3ovRDVYMDQwOXFQSEszZTF5L0x1VWdjY3V4cEhuallMRTFHamxQOHdZQTJoUVdlN3lQbmdnZ1FCSHczMy9ndmIzdHVDY3hFS1RXZ21haC9SMzJBSDlaRjhqRjdXZW1UMjZsVWl6VlhlL3NwQ2RoRGdIUi96VWhPREQ0UE82Z2xJOEpQaGR1K1Z3ZlB5UkxHMkQ3Q1VvMUw2U0lGKzBmWWYwb1RPV04xM1VQSVRvNSt1WmQvV25RUUxVOE5ZeC9XRkNUaEVua2J6bG45WUd0NjBmUnhzSCs4dU1ERmdhQmlDK3oyU3BjeEI5Z1o2R1h5cExTWFdhaitxRVViR0pLRXgraksvdjVmbnJrSWhDZHdOYmtwOWRSa3M2ZG1sWWxCaWZ6b1dGOFJrdUMzcnFQdG9TY0JrTU9NWnU3R2lWdG9IRWRIVW96bW5VSWRyVTFMR0lxcTlXbkc3WDJhM3lIOHM2NW1qTHVMbmQzcTBVOHYrTE1QbkhMMi9HalF1VFFLVmgrUktFUHFLL0pkckNoR0xOcmpjSHZMSERiSEVzaHJHWnVRT2RFcGhieC9Qa2hrdmFZeTRLMU1PODRSMTdndVJzS3MvVjZuaVVQYUwrWGJRN2MzZnFKUzRWSEp3bHVkSlREZTAyZXVmZkdDbTBQSklQbEFPZ0xIblgwaXpKaEE2cTczOFIyVXdRY1dCUWpKdDc5YUYra3lxU2R5dDFRUFZRVmphQzNJcFJmN1Bnc0RoRUo3Ymk5blNjbHlJemdKOURDSjRUKzhkRzF4SGhLeVphc1Q3TC94OUxmcjFNZ3M4bkJaRVIyVzlheDdpVGtOSytYNUFDVS8vcC9Zb1AvdUFhbkR0YjNEMGlLVVV1WEZIK0piYjB4MVAzMjJTMnc2Qko0Nm51TkhCTUhUcFZ1V3doWmVaenJpR2g3cW9PeXdMV2lFeEJNS3l4VEdMbm1LaDdyMDMveVhLWVdJSm5wQk4yTU15Y1ZIUlpKN1J1bUhWNENJc1ZycTdpUlA0ODgyM1JKVnQ5T3R5UDd1dWMzd0JCVjNrY1pVemJiYVlkV0J4MStBdStPZDJ1N2xSNmpvT0w4MTBtY0ptL2Y3SjVUdkdRUDZIR3BoMVlISFg0Qzc0NTNhN3VWSHFPZ3lqamg1RUJkNzIwTUVCWTIzYytUS3EvejlVcFdERE9nNDhaRm53U0loRnFpdFdkaVppcXNhWXVOMC9TWHdpSzhFRzllUTI5dTJYREpvRFc0bWx3dGNSTzd2YVg1WGNGc2dmNC9tTFUwN21pJ1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbW8tbW92cy1pdGVtXCIsXCJwYXRoXCI6XCJtby1tb3ZzLWl0ZW1cIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfliIbnsbvvvJonICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMi0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICcgfCAnICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMy0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICcgfCAnICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksNC0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICdcXFxcbicgKyBwZGZoKGh0bWwsICcubW8tY29scy1sYXlzJiZsaSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSArXFxuICAgICAgICAnXFxcXG4nICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSxcXG4gICAgZGVzYzogJ+abtOaWsOaXtumXtO+8micgKyBwZGZoKGh0bWwsICcubW8tY29scy1sYXlzJiZsaSw1JiZUZXh0Jykuc3Vic3RyaW5nKDAsIDE1KSxcXG4gICAgaW1nOiBwZChodG1sLCAnLm1vLXNpdHUtcGljcyYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcblxcbnZhciDnur/ot68gPSAnYm9keSYmLm1vLW1vdnMtYnRucydcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5tby1tb3ZzLWl0ZW0nXFxudmFyIOe6v+i3r+WQjSA9ICdUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaVsOWtl+mqjOivgeeggVwiLFwicGF0aFwiOlwieXptXCIsXCJydWxlXCI6XCJpZiAoL+mqjOivgeeggXzns7vnu5/lronlhajpqozor4EvLnRlc3QoaHRtbCkpIHtcXG5cXG4gICAgbGV0IGhlYWRlcnMgPSB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IE1PQklMRV9VQSxcXG4gICAgICAgIFxcXCJSZWZlcmVyXFxcIjogTVlfVVJMXFxuICAgIH07XFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2Uvanhocz9ydWxlPeaooeadv8K3UScpKS5ydWxlKTtcXG4gICAgZXZhbFByaXZhdGVKUyhzc3l6KTtcXG5cXG4gICAgbGV0IHZjb2RlID0gZ2V0VkNvZGUyKE1ZX0hPTUUgKyAnL2luZGV4LnBocC92ZXJpZnkvaW5kZXguaHRtbD8nLCBKU09OLnN0cmluZ2lmeShoZWFkZXJzKSwgJ251bScpO1xcbiAgICBmZXRjaChNWV9IT01FICsgaHRtbC5tYXRjaCgvXFxcXC9pbmRleC5waHAuKj92ZXJpZnk9LylbMF0gKyBKU09OLnBhcnNlKHZjb2RlKS5yZXQsIHtcXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KVxcbiAgICB2YXIgeXogPSBNWV9UWVBFPT0naG9tZScgPyB0cnVlX3VybCA6IE1ZX1VSTFxcbmxvZyh5eilcXG4gICAgaHRtbCA9IGZldGNoKHl6LCB7XFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXFxuICAgIH0pO1xcbn1cXG5pZiAoLzXnp5J86aKR57mBLy50ZXN0KGh0bWwpJiYhTVlfVFlQRT09J2hvbWUnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aQnOe0oumXtOmalDXnp5LvvIzkuIvmi4nliLfmlrAnXFxuICAgIH0pfVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qneS1wbGF5TGlzdFwiLFwicGF0aFwiOlwieS1wbGF5TGlzdFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcubW9kdWxlLWluZm8taXRlbSwzJiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTgpICtcXG4gICAgICAgICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW0sMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE4KSArXFxuICAgICAgICAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLDQmJlRleHQnKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxzcmMnKSArXFxuICAgICAgICAnQFJlZmVyZXI9JyxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLDV8fC5tb2R1bGUtaW5mby1pdGVtJiZUZXh0JyksXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5cXG52YXIg57q/6LevID0gJyN5LXBsYXlMaXN0JiZzcGFuJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLm1vZHVsZS1wbGF5LWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAnYm9keSYmYSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9XSIsImljb24iOiJodHRwOi8vcTEucWxvZ28uY24vZz9iPXFxJm5rPTU2OTYxNzA3OSZzPTY0MCIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment