Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@小红影视@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5bCP57qi5b2x6KeGIiwiYXV0aG9yIjoi54uX5rWp5ZWKIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjaHR0cHM6Ly94aWFvaHlzLmNvbS9zaG93L21vdmllL3BhZ2UvZnlwYWdlLmh0bWwiLCJ2ZXJzaW9uIjo2LCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIGRlc2M6IFwi5pCc5L2g5oOz6KaB55qELi4uXCIsXG4gICAgICAgIHRpdGxlOiBcIvCflI1cIixcbiAgICAgICAgdXJsOiBcIidoaWtlcjovL3NlYXJjaD9ydWxlPVwiICsgTVlfUlVMRS50aXRsZSArIFwiJnM9JytpbnB1dFwiLFxuICAgICAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgIH0pO1xufVxubGV0IHRydWVfdXJsID0gZ2V0TXlWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xuXG5cbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge8KgwqDCoMKgwqDCoMKgXG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO8KgwqDCoMKgwqBcbn1cbi8v5Yqo5oCB5YiG57G75a6a5LmJIFxuY29uc3Qg5YiG57G76aKc6ImyID0gZ2V0UmFuZ2VDb2xvcnMoKTtcbmNvbnN0IOWkp+exu+WumuS9jSA9ICcuc3dpcGVyLXdyYXBwZXImJmxpOm5vdCg6bWF0Y2hlcyjpppbpobV85oiR55qEfFHnvqR85ZGo5pyffOS4k+mimCkpJztcbmNvbnN0IOWkp+exu+agh+mimCA9ICdhJiZUZXh0JztcbmNvbnN0IOWkp+exu+mTvuaOpSA9ICdhJiZocmVmJztcblxuY29uc3Qg5ou85o6l5YiG57G7ID0gJ2JvZHktLS5zd2lwZXItd3JhcHBlci0tLnN3aXBlci13cmFwcGVyJiYuc3dpcGVyLXdyYXBwZXInO1xuY29uc3Qg5bCP57G75a6a5L2NID0gJ2JvZHkmJmxpJztcbmNvbnN0IOWIhuexu+agh+mimCA9ICdhJiZUZXh0JztcbmNvbnN0IOWIhuexu+mTvuaOpSA9ICdsaSYmZGF0YS10eXBlQEBAbGkmJmRhdGEtdmFsJztcbmNvbnN0IOa4hemZpOmUriA9IFsnY2xhc3MnLCAnYXJlYScsICdsb25nJywgJ3ZlcnNpb24nLCAnc3RhdGUnLCAnbGV0dGVyJ107XG5cbnZhciBodG1sID0gcmVxdWVzdCh0cnVlX3VybC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5IyMnLCAnJykpXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2R0ZmwnKSkucnVsZSk7XG5cbnR5cGUgPSBwZGZoKGh0bWwsICcjZGF0YUxpc3QmJmRhdGEtdHlwZScpO1xudGltZSA9IFwiXCIgKyBNYXRoLmNlaWwobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxua2V5ID0gbWQ1KFwiRFNcIiArIHRpbWUgKyBcIkRDQzE0N0QxMTk0M0FGNzVcIilcblxuXG4vKuaVsOaNriA9IEpTT04ucGFyc2UocG9zdChcImh0dHBzOi8veGlhb2h5cy5jb20vL2luZGV4LnBocC9hcGkvdm9kXCIsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiOiBcIlhNTEh0dHBSZXF1ZXN0XCIsXG4gICAgICAgIFwiVXNlci1BZ2VudFwiOiBcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMjsgMjIwMTEyMkMgQnVpbGQvU0tRMS4yMTEwMDYuMDAxOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzk1LjAuNDYzOC43NCBNb2JpbGUgU2FmYXJpLzUzNy4zNlwiXG4gICAgfSxcbiAgICBib2R5OiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgcGFnZTogcGFnZSxcbiAgICAgICAgICAgIHRpbWU6IHRpbWUsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGNsYXNzOiBnZXRNeVZhcignZHRfY2xhc3MnLCAnJyksXG4gICAgICAgICAgICBhcmVhOiBnZXRNeVZhcignZHRfYXJlYScsICcnKSxcbiAgICAgICAgICAgIHllYXI6IGdldE15VmFyKCdkdF95ZWFyJywgJycpLFxuICAgICAgICAgICAgbGFuZzogZ2V0TXlWYXIoJ2R0X2xhbmcnLCAnJyksXG4gICAgICAgICAgICBsZXR0ZXI6IGdldE15VmFyKCdkdF9sZXR0ZXInLCAnJyksXG4gICAgICAgICAgICBzdGF0ZTogZ2V0TXlWYXIoJ2R0X3N0YXRlJywgJycpLFxuICAgICAgICAgICAgdmVyc2lvbjogZ2V0TXlWYXIoJ2R0X3ZlcnNpb24nLCAnJyksXG4gICAgICAgICAgICBieTogZ2V0TXlWYXIoJ2R0X3RpbWUnLCAnJyksXG4gICAgICAgIH1cbn0pKS5saXN0XG4qL1xuXG5cbuaVsOaNriA9IEpTT04ucGFyc2UocG9zdChcImh0dHBzOi8veGlhb2h5cy5jb20vL2luZGV4LnBocC9hcGkvdm9kXCIsIHtcblxuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJYLVJlcXVlc3RlZC1XaXRoXCI6IFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEyOyAyMjAxMTIyQyBCdWlsZC9TS1ExLjIxMTAwNi4wMDE7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvOTUuMC40NjM4Ljc0IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCJcblxuICAgIH0sXG4gICAgYm9keToge1xuICAgICAgICAndHlwZSc6IHR5cGUsXG4gICAgICAgICdwYWdlJzogcGFnZSxcbiAgICAgICAgJ3RpbWUnOiB0aW1lLFxuICAgICAgICAna2V5Jzoga2V5LFxuICAgICAgICBjbGFzczogZ2V0TXlWYXIoJ2R0X2NsYXNzJywgJycpLFxuICAgICAgICBhcmVhOiBnZXRNeVZhcignZHRfYXJlYScsICcnKSxcbiAgICAgICAgeWVhcjogZ2V0TXlWYXIoJ2R0X3llYXInLCAnJyksXG4gICAgICAgIGxhbmc6IGdldE15VmFyKCdkdF9sYW5nJywgJycpLFxuICAgICAgICBsZXR0ZXI6IGdldE15VmFyKCdkdF9sZXR0ZXInLCAnJyksXG4gICAgICAgIHN0YXRlOiBnZXRNeVZhcignZHRfc3RhdGUnLCAnJyksXG4gICAgICAgIHZlcnNpb246IGdldE15VmFyKCdkdF92ZXJzaW9uJywgJycpLFxuICAgICAgICBieTogZ2V0TXlWYXIoJ2R0X3RpbWUnLCAnJyksXG4gICAgfVxuXG5cblxuXG59KSkubGlzdFxuXG5jb25zdCBsaXN0ID0g5pWw5o2uXG5cbmxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICB2YXIgdXJsbCA9IFwiaHR0cHM6Ly94aWFvaHlzLmNvbS9kZXRhaWwvXCIgKyBpdGVtLnZvZF9pZCsgJy8nICsgXCIjaW1tZXJzaXZlVGhlbWUjXCI7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udm9kX25hbWUsXG4gICAgICAgIGRlc2M6IGl0ZW0udm9kX3JlbWFya3MsXG4gICAgICAgIGltZzogaXRlbS52b2RfcGljLFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZWojbm9IaXN0b3J5IyNpbW1lcnNpdmVUaGVtZSMnLFxuICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgdXJsOiB1cmxsLFxuICAgICAgICAgICAgcGljOiBpdGVtLnZvZF9waWNcbiAgICAgICAgfSxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLFxuICAgIH0pXG59KVxuXG5zZXRSZXN1bHQoZCk7Iiwic2VhcmNoX3VybCI6Ii9zZWFyY2gqKi9wYWdlL2Z5cGFnZS8iLCJncm91cCI6IjAyICDlvbHop4YiLCJzZWFyY2hGaW5kIjoianM6XG52YXIgZCA9IFtdO1xudmFyIGh0bWwgPSBnZXRSZXNDb2RlKClcbmxldCBjID0gZ2V0VmFyKFwiY2VjaWR5XCIsIFwiXCIpO1xuaWYgKGMgIT0gXCJcIikge1xuICAgIHNldEl0ZW0oTVlfSE9NRSwgYyk7XG4gICAgY2xlYXJWYXIoXCJjZWNpZHlcIik7XG59XG4vL2NsZWFySXRlbShNWV9IT01FKVxudmFyIGNvb2tpZSA9IGdldEl0ZW0oTVlfSE9NRSwgXCJcIilcblxubGV0IGhlYWRlcnMgPSB7XG4gICAgXCJDb29raWVcIjogY29va2llLFxuICAgIFwiVXNlci1BZ2VudFwiOiBNT0JJTEVfVUEsXG59O1xuLy9sb2coY29va2llKVxubGV0IGh0bWwgPSBmZXRjaChNWV9VUkwsIHtcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxufSk7XG5cbmlmIChodG1sLmluY2x1ZGVzKFwi6aqM6K+BXCIpKSB7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwi5Lq65py66aqM6K+BXCIsXG4gICAgICAgIGNvbF90eXBlOiBcInRleHRfY2VudGVyXzFcIixcbiAgICAgICAgdXJsOiBNWV9VUkwgKyAkKFwiXCIpLnJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIGQgPSBbXTtcbiAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBNWV9VUkwsXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFwieDVfd2Vidmlld19zaW5nbGVcIixcbiAgICAgICAgICAgICAgICBkZXNjOiBcImZsb2F0JiYxMDAlXCIsXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgdWE6IE1PQklMRV9VQSxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2soKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGMgPSBmYmEuZ2V0Q29va2llKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZWFyY2gtYm94Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXMgJiYgbm9kZXMubGVuZ3RoID4gMCAmJiBjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5wdXRWYXIoXCJjZWNpZHlcIiwgYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5sb2coYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLnBhcnNlTGF6eVJ1bGUoJCQkKCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVjaywgMjUwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgIH0pXG4gICAgfSlcbn1cclxudmFyIGxpc3QgPSBwZGZhKGh0bWwsICdib2R5JiYuc2VhcmNoLWJveCcpOy8v5YiX6KGoXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcbnZhciBpbWc9cGQobGlzdFtqXSwgJy5sYXp5JiZkYXRhLXNyYycpKydAUmVmZXJlcj0nOy8v5Zu+54mHXG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJy50aHVtYi10eHQmJlRleHQnKSwvL+agh+mimFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcudGh1bWItZWxzZSYmVGV4dCcpLC8v56ys5Yeg6ZuG5oiW5riF5pmw5bqmXG4gICAgICAgIGltZzogaW1nLFxuY29udGVudDpwZGZoKGxpc3Rbal0sICcudGh1bWItYmx1cmImJlRleHQnKSwvL+eugOS7i+aIluW9seeJh+S/oeaBr1xuICAgICAgICB1cmw6ICQocGQobGlzdFtqXSwgJ2EmJmhyZWYnKS5yZXBsYWNlKC9cXC9wbGF5XFwvKC4qPyktXFxkKy1cXGQrXFwuaHRtbC8sIFwiL2Jhbmd1bWkvJDEuaHRtbFwiKSsgXCIjaW1tZXJzaXZlVGhlbWUjXCIpLnJ1bGUoKCk9PntcbnJlcXVpcmUgKCdoaWtlcjovL3BhZ2UvZWonKVxufSksXG5leHRyYToge1xuICBcbiAgICAgICAgICAgIHBpYzogaW1nXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfSk7XG59XHJcbnNldFJlc3VsdChkKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XG5cbnZhciBhcnRzID0gcGRmYShodG1sLCAnLm5hdi1zd2lwZXImJmE6bm90KDptYXRjaGVzKOS4i+i9vSkpJyk7XG5cbnZhciB0YWJzID0gW107XG5mb3IgKHZhciBpIGluIGFydHMpIHtcbiAgICB0YWJzLnB1c2gocGRmaChhcnRzW2ldLCAnVGV4dCcpKVxufVxuXG52YXIgY29udHMgPSBwZGZhKGh0bWwsICdib2R5JiYuYW50aG9sb2d5LWxpc3QtYm94Jyk7XG5cbnZhciBsaXN0cyA9IFtdO1xuZm9yICh2YXIgaSBpbiBjb250cykge1xuICAgIGxpc3RzLnB1c2gocGRmYShjb250c1tpXSwgJ2JvZHkmJmEnKSlcbn1cbnRyeSB7XG5kLnB1c2goe1xuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcuc2VhcmNoLXNob3cmJmxpOmNvbnRhaW5zKOWvvOa8lO+8mikmJlRleHQnKS5zdWJzdHJpbmcoMCwgMTgpICtcbiAgICAgICAgJ1xcbicgK1xuICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgcGRmaChodG1sLFxuJy5zZWFyY2gtc2hvdyYmbGk6Y29udGFpbnMo5Li75ryU77yaKSYmVGV4dCcpLnN1YnN0cmluZygwLCAxOCksXG4gICAgZGVzYzogcGRmaChodG1sLCAnLnNlYXJjaC1zaG93JiZsaTpjb250YWlucyjmm7TmlrDvvJopJiZUZXh0JyksXG4gICAgaW1nOiBNWV9QQVJBTVMucGljLFxuICAgIHVybDogTVlfVVJMLFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsZXh0cmE6IHtncmFkaWVudDogdHJ1ZX1cbn0pO1xudmFyIOeugOS7iyA9IHBkZmgoaHRtbCwgJy50b3AyNiYmVGV4dCcpXG5kLnB1c2goe1xuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPVwiI2ZmMTQ4ZThlXCI+566A5LuL77yaJyArIOeugOS7iy5zdWJzdHIoMCwgNTUpICsgJy4uLjwvZm9udD48c21hbGw+PGZvbnQgY29sb3I9XCJyZWRcIj7or6bmg4U8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgJ1xcbicgKyDnroDku4sgKycjbm9IaXN0b3J5IycgKyBgQHJ1bGU9anM6IHZhciBkID0gW107ZC5wdXNoKHt0aXRsZTon5b2x54mH566A5LuL77yaJysgTVlfVVJMLnNwbGl0KCcjJylbMV0sY29sX3R5cGU6ICdsb25nX3RleHQnfSk7IHNldFJlc3VsdChkKTtgLFxuICAgIGNvbF90eXBlOiAndGV4dF8xJ1xufSk7XG59IGNhdGNoIChlKSB7XG5kLnB1c2goe1xuICAgIGltZzogcGQoaHRtbCwgXG4nLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJykgKydAUmVmZXJlcj0nLFxuICAgIHVybDogTVlfVVJMLFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsZXh0cmE6IHtncmFkaWVudDogdHJ1ZX1cbn0pO1xufVxuXG4gZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eScsIHt9KSkucnVsZSk7XG5cbmZ1bmN0aW9uIHNldFRhYnModGFicywgdmFyaSkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVwiY29sb3I6ICNGRjAwMDBcIj7pgIbluo88L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XCJjb2xvcjogIzFhYWQxOVwiPuato+W6jzwvc3Bhbj48L2I+JyxcbiAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnydgLFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xuICAgIH0pXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB1cmwgPSBcIiNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRWYXIoJ1wiICsgdmFyaSArIFwiJywgJ1wiICsgaSArIFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcIjtcbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIodmFyaSwgJzAnKSA9PSBpID8gJ+KAnOKAnCcgKyB0YWJzW2ldICsgJ+KAneKAnScgOiB0YWJzW2ldLFxuICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XG4gICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF07XG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XG4gICAgICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdLnJldmVyc2UoKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiBpbiBsaXN0KSB7XG4gICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmVGV4dCcpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL+esrChcXGQrKembhi8sICckMScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJ+esrCcsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCfmnJ8nLCAnJyksXG4gICAgICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyBsYXp5LFxuICAgICAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMidcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XG5kLnB1c2goe1xuICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXG59KTtcbmQucHVzaCh7XG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xufSk7XG5kLnB1c2goe1xuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSMyMGIyYWE+5pWw5o2u6LWE5rqQ5pS26ZuG5LqO572R57uc77yM5rW36ZiU5LiN5o+Q5L6b5Lu75L2V6LWE5rqQ77yBPC9mb250Pjwvc21hbGw+JyxcbiAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSNmZjdmNTA+5pys6KeE5YiZ5LuF6ZmQ5a2m5Lmg5LiO5Lqk5rWB77yM6K+35a+85YWl5ZCOMjTlsI/ml7blhoXliKDpmaTvvIzor7fli7/kvKDmkq3vvIE8L2ZvbnQ+PC9zbWFsbD4nLFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxuICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgZXh0cmE6IHtcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTtcblxuIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IioiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJpbml0Q29uZmlnKHtcbiAgICBob3N0OiBnZXRJdGVtKCdsaW5rJywgJ2h0dHA6Ly9rYW44LnR2Jylcbn0pOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJsYXp5XCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKChNWV9IT01FKSA9PiB7XFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG5cXG4gICAgZnVuY3Rpb24gdmlkZW90eXBlKHVybCwgdHlwZSkge1xcbiAgICAgICAgdmFyIHR5cGUgPSB0eXBlIHx8ICdtcDQnO1xcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFxcXCJtM3U4XFxcIikgPiAwKSB7XFxuICAgICAgICAgICAgdGhldHlwZSA9IFxcXCJtM3U4XFxcIlxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZihcXFwiLmZsdlxcXCIpID4gMCkge1xcbiAgICAgICAgICAgIHRoZXR5cGUgPSBcXFwiZmx2XFxcIlxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZihcXFwiLnRzXFxcIikgPiAwKSB7XFxuICAgICAgICAgICAgdGhldHlwZSA9IFxcXCJ0c1xcXCJcXG4gICAgICAgIH0gZWxzZSBpZiAodXJsLmluZGV4T2YoXFxcIi5ta3ZcXFwiKSA+IDApIHtcXG4gICAgICAgICAgICB0aGV0eXBlID0gXFxcIm1rdlxcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gXFxcImhsc1xcXCIgfHwgdHlwZSA9PSBcXFwibTN1OFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdGhldHlwZSA9IFxcXCJtM3U4XFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBleHQgPSB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZignLicpICsgMSk7XFxuICAgICAgICAgICAgICAgIHRoZXR5cGUgPSB0eXBlID8gdHlwZSA6IGV4dFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB0aGV0eXBlXFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gY3J5cHRKcyh0ZXh0LCBrZXksIGl2LCB0eXBlKSB7XFxuICAgICAgICB2YXIgdHlwZSA9IHR5cGUgfHwgZmFsc2U7XFxuICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoa2V5IHx8ICc4JyArICdScycgKyAnTk1jJyArICdTcycgKyAncjFUJyArICdZNycgKyAnalgnICsgJ2MnKTtcXG4gICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2IHx8ICdkJyArICdrJyArICd6JyArICdhJyArICdYJyArICdpJyArICd3SycgKyAncWwnICsgJ2lXJyArICc1NScgKyAnRVknKTtcXG4gICAgICAgIGlmICh0eXBlKSB7XFxuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICAgICAgaXY6IGl2LFxcbiAgICAgICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICAgICAgaXY6IGl2LFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOClcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBjb250ZW50XFxuICAgIH1cXG4gICAgdmFyIGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcXG4gICAgdmFyIE1hY1BsYXllciA9IEpTT04ucGFyc2UoaHRtbC5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKVxcbiAgICAvL2xvZyhNYWNQbGF5ZXIpXFxuXFxuXFxuICAgIGlmICgveGdkbS8udGVzdChNYWNQbGF5ZXIuZnJvbSkpIHtcXG4gICAgICAgIC8vIOWvhumSpe+8jOeUqOS6jueUn+aIkCBITUFDIOetvuWQjVxcbiAgICAgICAgY29uc3Qgc2VjcmV0S2V5ID0gXFxcImExYjJjM2Q0ZTVmNmc3aDhpOWowazFsMm0zbjRvNXA2XFxcIjtcXG5cXG4gICAgICAgIC8vIOW9k+WJjeaXtumXtOaIs++8iOenku+8iVxcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XFxuXFxuICAgICAgICAvLyDnlJ/miJDmjIflrprplb/luqbnmoTpmo/mnLrlrZfnrKbkuLLvvIhub25jZe+8iVxcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVOb25jZShsZW5ndGgpIHtcXG4gICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggfHwgMTY7IC8vIOm7mOiupOmVv+W6puS4uiAxNlxcbiAgICAgICAgICAgIGNvbnN0IGNoYXJzID0gXFxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XFxcIjtcXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8g55Sf5oiQ562+5ZCN77yISE1BQy1TSEEyNTbvvIlcXG4gICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlU2lnbmF0dXJlKHBhcmFtcywga2V5KSB7XFxuICAgICAgICAgICAgY29uc3Qgc29ydGVkS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcykuc29ydCgpO1xcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gc29ydGVkS2V5cy5tYXAoayA9PiBgJHtrfT0ke3BhcmFtc1trXX1gKS5qb2luKFxcXCImXFxcIik7XFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkhtYWNTSEEyNTYocXVlcnlTdHJpbmcsIGtleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAvLyDpmo/mnLrlrZfnrKbkuLJcXG4gICAgICAgIGNvbnN0IG5vbmNlID0gZ2VuZXJhdGVOb25jZSgpO1xcblxcbiAgICAgICAgLy8g562+5ZCN5Y+C5pWw5a+56LGhXFxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xcbiAgICAgICAgICAgIHVybDogTWFjUGxheWVyLnVybCxcXG4gICAgICAgICAgICB0aW1lc3RhbXAsXFxuICAgICAgICAgICAgbm9uY2UsXFxuICAgICAgICB9O1xcblxcbiAgICAgICAgLy8g55Sf5oiQ562+5ZCNXFxuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBnZW5lcmF0ZVNpZ25hdHVyZShwYXlsb2FkLCBzZWNyZXRLZXkpO1xcblxcbiAgICAgICAgLy8g5p6E6YCg6K+35rGC5Zyw5Z2AXFxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHtNWV9IT01FfS9hcGkveGdwbGF5ZXIvZGVjLnBocD91cmw9JHtlbmNvZGVVUklDb21wb25lbnQoTWFjUGxheWVyLnVybCl9JnRpbWVzdGFtcD0ke3RpbWVzdGFtcH0mbm9uY2U9JHtub25jZX0mc2lnbmF0dXJlPSR7c2lnbmF0dXJlfWA7XFxuXFxuICAgICAgICAvLyDor7fmsYLop6Plr4bmjqXlj6PvvIzojrflj5bmnIDnu4jmkq3mlL7lnLDlnYBcXG4gICAgICAgIGNvbnN0IHhndXJsID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaVVybCkpLnVybDtcXG5cXG4gICAgICAgIC8vIOS7jui/lOWbnueahCBVUkwg5Lit5o+Q5Y+WIHZpZFxcbiAgICAgICAgY29uc3QgdmlkID0geGd1cmwuc3BsaXQoJ3ZpZD0nKVsxXTtcXG5cXG4gICAgICAgIC8vIOaehOmAoCBtM3U4IOaSreaUvuWIl+ihqOi3r+W+hFxcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBgaHR0cHM6Ly94Z2N0LXZpZGVvLnZ6Y2RuLm5ldC8ke3ZpZH0vYDtcXG5cXG4gICAgICAgIC8vIOiOt+WPliBtM3U4IOWGheWuuVxcbiAgICAgICAgY29uc3QgbTN1OENvbnRlbnQgPSBmZXRjaChiYXNlUGF0aCArIFxcXCJwbGF5bGlzdC5tM3U4XFxcIik7XFxuXFxuICAgICAgICAvLyDljLnphY3miYDmnIkgbTN1OCDliIbmrrXlnLDlnYBcXG4gICAgICAgIGNvbnN0IHBsYXlsaXN0ID0gbTN1OENvbnRlbnQubWF0Y2goLy4qP20zdTgvZykubWFwKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnJlcGxhY2UoLy4reCguKj8pXFxcXC8uKy9nLCBcXFwiJDFQXFxcIiksXFxuICAgICAgICAgICAgICAgIHVybDogYmFzZVBhdGggKyBpdGVtLFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIC8vIOaPkOWPluaJgOacieWIhuauteagh+mimOWSjOWcsOWdgFxcbiAgICAgICAgY29uc3QgdGl0bGVzID0gcGxheWxpc3QubWFwKGl0ZW0gPT4gaXRlbS50aXRsZSk7XFxuICAgICAgICBjb25zdCB1cmxzID0gcGxheWxpc3QubWFwKGl0ZW0gPT4gaXRlbS51cmwpO1xcblxcbiAgICAgICAgLy8g6L+U5ZueIEpTT04g5a2X56ym5LiyXFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG5hbWVzOiB0aXRsZXMsXFxuICAgICAgICAgICAgdXJsczogdXJscyxcXG4gICAgICAgIH0pO1xcbiAgICB9IGVsc2UgaWYgKC8xMDgwenlrLy50ZXN0KE1hY1BsYXllci5mcm9tKSkge1xcblxcbiAgICAgICAgcmV0dXJuIE1hY1BsYXllci51cmwrXFxcIiNpc1ZpZGVvPXRydWUjXFxcIlxcblxcblxcbiAgICB9ZWxzZSBpZiAoL3hoeXMvLnRlc3QoTWFjUGxheWVyLmZyb20pKSB7XFxuXFxuICAgICAgICBldmFsKHJlcXVlc3QoXFxcImh0dHBzOi8vangueGlhb2h5cy5jb20vYXBpL2N0eXVuLz91cmw9XFxcIitNYWNQbGF5ZXIudXJsKS5tYXRjaCgvdmFyIHJhbmQgPShbXFxcXHNcXFxcU10qPzspezJ9LylbMF0pXFxuXFxuICAgICAgICAgICAgZnVuY3Rpb24ganNfZGVjcnlwdChzdHIsIGtleSwgaXYpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoa2V5KTtcXG4gICAgICAgICAgICAgICAgdmFyIGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoaXYpO1xcbiAgICAgICAgICAgICAgICB2YXIgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3RyLCBrZXksIHtcXG4gICAgICAgICAgICAgICAgICAgIGl2OiBpdixcXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBkZWNyeXB0ZWRcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgdmFyIHZpZGVvID0gSlNPTi5wYXJzZShqc19kZWNyeXB0KHBsYXllciwgJ1ZGQlR6ZHVqcFI5RldCaGUnLCByYW5kKSkudXJsXFxuICAgICAgICAgICAgcmV0dXJuIHZpZGVvICsgJyNpc1ZpZGVvPXRydWUjJ1xcblxcblxcbiAgICB9ZWxzZSBpZigvYmlsaS8udGVzdChNYWNQbGF5ZXIuZnJvbSkpe1xcbiAgICAgICBcXG4gICAgICAgXFxuICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lrpjmlrnpk77mjqXmh5LlvpflhpnlhY3ll4VcXFwiXFxuICAgIH1cXG5cXG4gIFxcbiAgICBpZiAodHlwZW9mKE1hY1BsYXllcikgIT09ICd1bmRlZmluZWQnKSB7XFxuICAgICAgICB2aWRlb1VybCA9IE1hY1BsYXllci51cmw7XFxuICAgICAgICAvL2xvZyh2aWRlb1VybClcXG4gICAgICAgIGlmICh0eXBlb2YoTWFjUGxheWVyLnVybF9uZXh0KSAhPT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgICAgICAgICBuZXh0ID0gTWFjUGxheWVyLnVybF9uZXh0O1xcbiAgICAgICAgICAgIHByZSA9IE1hY1BsYXllci5saW5rX3ByZVxcbiAgICAgICAgfVxcbiAgICAgICAgdm9kX25hbWUgPSBwZGZoKGh0bWwsIFxcXCJoZWFkJiZ0aXRsZSYmVGV4dFxcXCIpO1xcbiAgICAgICAgaWYgKHR5cGVvZihNYWNQbGF5ZXIuZnJvbSkgIT09ICd1bmRlZmluZWQnKSB7XFxuICAgICAgICAgICAgdm9kX25hbWUgKz0gXFxcIiAtIFxcXFx1NjRhZFxcXFx1NjUzZVxcXFx1N2YxNlxcXFx1NzgwMVxcXFx1ZmYxYVxcXCIgKyBNYWNQbGF5ZXIuZnJvbSArIFxcXCJcXFwiXFxuICAgICAgICB9XFxuICAgICAgICBpZiAodHlwZW9mKE1hY1BsYXllci5uaWQpICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAgIHZvZF9uYW1lICs9IFxcXCIgLSBcXFxcdTdiMmNcXFwiICsgTWFjUGxheWVyLnNpZCArIFxcXCItXFxcIiArIE1hY1BsYXllci5uaWQgKyBcXFwiXFxcXHU5NmM2XFxcIlxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIC8vbG9nKHZvZF9uYW1lKVxcbiAgICBpZiAodmlkZW9VcmwgPT0gJycpIHtcXG4gICAgICAgIHN0cmF5LmVycm9yKCdcXFxcdTY0YWRcXFxcdTY1M2VcXFxcdTU3MzBcXFxcdTU3NDBcXFxcdTRlMGRcXFxcdTVmOTdcXFxcdTRlM2FcXFxcdTdhN2EnKTtcXG4gICAgICAgIHJldHVybiBmYWxzZVxcbiAgICB9XFxuICAgIHR5cGUgPSB2aWRlb3R5cGUodmlkZW9VcmwpO1xcbiAgICAvL2xvZyh0eXBlKVxcbiAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UocG9zdChNWV9IT01FICsgJy9zdGF0aWMvcGxheWVyL2FydHBsYXllci9hcGkucGhwP2FjPWdldGRhdGUnLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIngtcmVxdWVzdGVkLXdpdGhcXFwiOiBcXFwiWE1MSHR0cFJlcXVlc3RcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiB2aWRlb1VybCxcXG4gICAgICAgICAgICBcXFwidHlwZVxcXCI6IHR5cGUsXFxuICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogdm9kX25hbWUsXFxuICAgICAgICAgICAgXFxcInJlZmVyZXJcXFwiOiBpbnB1dFxcbiAgICAgICAgfVxcbiAgICB9KSlcXG4gICAgaWYgKGRhdGEuY29kZSA9PSAyMDApIHtcXG4gICAgICAgIGtleSA9IENyeXB0b0pTLk1ENShcXFwieGlhb2h5cy5jb21cXFwiKS50b1N0cmluZygpLnNsaWNlKDAsIDE2KTtcXG4gICAgICAgIGNvbmZpZyA9IEpTT04ucGFyc2UoY3J5cHRKcyhkYXRhLnBsYXllciwga2V5LCBkYXRhLml2KSk7XFxuICAgICAgICBwbGF5X2luZm8gPSBKU09OLnBhcnNlKGNyeXB0SnMoZGF0YS5kYXRhLCBrZXksIGRhdGEuaXYpKTtcXG4gICAgICAgIGxvZyhwbGF5X2luZm8pXFxuICAgICAgICBwbGF5dXJsID0gcGxheV9pbmZvLnVybFxcblxcblxcbiAgICAgICB9ZWxzZSBpZiAocGxheXVybCA9PT0gdmlkZW9VcmwgfHwgL1xcXFwuKG0zdTh8bXA0fGZsdnxhdml8bWt2KShcXFxcP3wkKS9pLnRlc3QocGxheXVybCkgPT09IGZhbHNlKSB7XFxuICAgIHJldHVybiAndG9hc3Q6Ly/op4bpopHlnLDlnYDml6DmlYjvvIzml6Dms5Xmkq3mlL4nXFxuICAgfVxcbiAgICAgICAgcmV0dXJuIHBsYXl1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnXFxuICAgIFxcblxcbn0sIE1ZX0hPTUUpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpqozor4HnoIFcIixcInBhdGhcIjpcInl6bVwiLFwicnVsZVwiOlwid2hpbGUgKC/ovpPlhaXpqozor4HnoIF857O757uf5a6J5YWo6aqM6K+BLy50ZXN0KGh0bWwpKSB7XFxucmMoJ2h0dHBzOi8vZ2l0Y29kZS5uZXQvbGl1emFveXVlL2hhaS8tL3Jhdy9tYXN0ZXIvanV5dWUuanMnLCAyNCk7IFxcbiAgICBsZXQgaGVhZGVycyA9IHtcXG4gICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogTU9CSUxFX1VBLFxcbiAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBNWV9VUkxcXG4gICAgfVxcbiAgICBsZXQgc3ogPSBvY3IoTVlfSE9NRSArICcvdmVyaWZ5L2luZGV4Lmh0bWw/JywgaGVhZGVycyk7ICAgIFxcbiAgICAgZmV0Y2goTVlfSE9NRSArIGh0bWwubWF0Y2goL1xcXFwvaW5kZXgucGhwLio/dmVyaWZ5PS8pWzBdICsgc3osIHtcXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KSAgIFxcbiAgICB2YXIgeXogPSBNWV9VUkxcXG4gICAvLyBsb2coTVlfVVJMKVxcbiAgICBodG1sID0gcmVxdWVzdCh5eiwge1xcbiAgICAgICAgLy8gICBoZWFkZXJzOiBoZWFkZXJzXFxuICAgIH0pXFxufVxcbmlmICgv6aKR57mB5pON5L2cLy50ZXN0KGh0bWwpKSB7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiAn572R56uZ5pCc57Si5pe26Ze06Ze06ZqU5Y2B56eSJyxcXG4gICAgZGVzYzogXFxcIuWNgeenkuWQjuS4i+aLieWIt+aWsOmHjeivlVxcXCJcXG59KVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuefreinhuWKqOaAgVwiLFwicGF0aFwiOlwiZHRmbFwiLFwicnVsZVwiOlwianM6XFxuLypcXG5WZXIgMjAyMy0xMC0yOCAxLjBcXG7lpIfms6jvvJrkuI3opoHnlKjmtbfpmJTku6PnoIHmoLzlvI/ljJYg5YaF5a655Lya5Ye66ZSZXFxu5b+F6aG75Y+C5pWw77yaXFxu5YiG57G76aKc6ImyIOWkp+exu+WumuS9jSBcXG7lsI/nsbvlrprkvY0g5YiG57G75qCH6aKYIOWIhuexu+mTvuaOpVxcbmh0bWwgPT7mupDnoIEgcGFnZSA9PumhteeggVxcbuWPr+mAieWPguaVsO+8mlxcbuaLvOaOpeWIhuexuyDmipjlj6DmoIforrAg5bGV5byA5qCH6K6wIOaOkumZpFxcbuWkp+exu+mTvuaOpSDlpKfnsbvmoIfpopgg5riF6Zmk6ZSuIOW8gOWQr+aKmOWPoFxcbumZhOWKoOWumuS9jVxcbuivtOaYju+8mlxcbuWklumdoueUqGdldE15VmFyKE1ZX1JVTEUudXJsKSDmiJbogIUg54q25oCBIOWPlumTvuaOpVxcbumtlOaUuTrOsVxcbiovXFxuXFxubGV0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbmxldCBjYXRlZ29yaWVzID0gW107XFxuaWYgKHR5cGVvZiAo5ou85o6l5YiG57G7KSAhPSAndW5kZWZpbmVkJyAmJiDmi7zmjqXliIbnsbsgIT0gJycpIHtcXG4gICAgY2F0ZWdvcmllcyA9IFtwZGZhKGh0bWwsIOWkp+exu+WumuS9jSkuam9pbignXFxcXG4nKV07XFxuICAgIGlmICjmi7zmjqXliIbnsbsuaW5jbHVkZXMoJzsnKSkge1xcbiAgICAgICAg5ou85o6l5YiG57G7ID0g5ou85o6l5YiG57G7LnNwbGl0KCc7Jyk7XFxuICAgIH1cXG4gICAgaWYgKOaLvOaOpeWIhuexuy5jb25zdHJ1Y3RvciA9PSBBcnJheSkge1xcbiAgICAgICAg5ou85o6l5YiG57G7LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMuY29uY2F0KHBkZmEoaHRtbCwgaXRlbSkpO1xcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGNhdGVnb3JpZXMgPSBbcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmpvaW4oJ1xcXFxuJyldLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpO1xcbiAgICB9XFxuICAgIGlmICh0eXBlb2YgKOmZhOWKoOWumuS9jSkgIT0gJ3VuZGVmaW5lZCcgJiYg6ZmE5Yqg5a6a5L2NLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIOmZhOWKoOWumuS9jS5mb3JFYWNoKHggPT4ge1xcbiAgICAgICAgICAgIHZhciDkuIDnuqcgPSBwZGZhKGh0bWwsIHgu5LiA57qn5a6a5L2NKS5tYXAocyA9PiB7XFxuICAgICAgICAgICAgICAgIHZhciDlrprkvY0gPSBwZGZhKHMsIHgu5bCP57G7KS5tYXAocSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHEsIHgu5qCH6aKYKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAnYSdcXG4gICAgICAgICAgICAgICAgICAgIGlmICh4LumTvuaOpS5pbmNsdWRlcygnQEAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0geC7pk77mjqUuc3BsaXQoJ0BAJylbMF1cXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBkZmgocSwgeC7pk77mjqUuc3BsaXQoJ0BAJylbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lui9rOaNoiA9PSB0cnVlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGxpIGRhdGEtdHlwZT1cXFwiJHtzdGF0ZX1cXFwiIGRhdGEtdmFsPVxcXCIke3ZhbHVlfVxcXCI+PGEgaHJlZj1cXFwiXFxcIj4ke3RpdGxlfTwvYT48L2xpPmBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxhIHR5cGU9XFxcIkBleHRyYVxcXCIgc3RhdGU9XFxcIiR7c3RhdGV9XFxcIiB2YWx1ZT1cXFwiJHt2YWx1ZX1cXFwiPiR7dGl0bGV9PC9hPmA7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gcGQocSwgeC7pk77mjqUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cXFwiJHtocmVmfVxcXCI+JHt0aXRsZX08L2E+YDtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiDlrprkvY07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKOS4gOe6py5qb2luKCdcXFxcbicpKTtcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgY2F0ZWdvcmllcyA9IFtwZGZhKGh0bWwsIOWkp+exu+WumuS9jSkuam9pbignXFxcXG4nKV07XFxufVxcblxcbmxldCBpdGVtcyA9IFtdO1xcbmxldCBjYXRlcyA9IFtdO1xcbmxldCBpbml0X2NhdGUgPSBuZXcgQXJyYXkoMjApLmZpbGwoXFxcIjBcXFwiKTtcXG5jb25zdCBmb2xkID0gZ2V0TXlWYXIoTVlfUlVMRS5ncm91cCwgXFxcIjBcXFwiKTtcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGdldE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKSk7XFxudmFyIOaKmOWPoOeKtuaAgSA9ICh0eXBlb2YgKOW8gOWQr+aKmOWPoCkgIT0gJ3VuZGVmaW5lZCcpID8g5byA5ZCv5oqY5Y+gIDogdHJ1ZTtcXG52YXIg5oqY5Y+gID0gKHR5cGVvZiAo5oqY5Y+g5qCH6K6wKSAhPSAndW5kZWZpbmVkJyAmJiDmipjlj6DmoIforrAgIT0gJycpID8g5oqY5Y+g5qCH6K6wIDogJ+KAnOKAnOKAneKAnScgKyAn4oioJy5mb250Y29sb3IoXFxcIiNGRjAwMDBcXFwiKTtcXG52YXIg5bGV5byAID0gKHR5cGVvZiAo5bGV5byA5qCH6K6wKSAhPSAndW5kZWZpbmVkJyAmJiDlsZXlvIDmoIforrAgIT0gJycpID8g5bGV5byA5qCH6K6wIDogJ+KAnOKAnOKAneKAnScgKyAn4oinJy5mb250Y29sb3IoXFxcIiMxYWFkMTlcXFwiKTtcXG52YXIg5riF6ZmkID0gKHR5cGVvZiAo5riF6Zmk6ZSuKSAhPSAndW5kZWZpbmVkJyAmJiDmuIXpmaTplK4gIT0gJycpID8g5riF6Zmk6ZSuIDogW107XFxudmFyIOeKtuaAgSA9ICh0eXBlb2YgKOeKtuaAgeagh+iusCkgIT0gJ3VuZGVmaW5lZCcgJiYg54q25oCB5qCH6K6wICE9ICcnKSA/IOeKtuaAgeagh+iusCA6IE1ZX1JVTEUudXJsO1xcbnZhciDlpKfnsbvlpITnkIYgPSB0eXBlb2YgKOS4gOe6p+WIhuexu+WkhOeQhikgIT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogZmFsc2U7XFxudmFyIOaQnOe0oiA9IHR5cGVvZiAo5byA5ZCv5pCc57SiKSAhPSAndW5kZWZpbmVkJyA/IOW8gOWQr+aQnOe0oiA6IGZhbHNlO1xcbnZhciDlhajmuIUgPSAodHlwZW9mICjlhajmuIXplK4pICE9ICd1bmRlZmluZWQnICYmIOWFqOa4hemUriAhPSAnJykgPyDlhajmuIXplK4gOiBbXTtcXG7lhajmuIUudW5zaGlmdCgneWlfZmlyc3RwYWdlJyk7XFxuXFxuXFxuaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgIGlmICjmkJzntKIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcIidoaWtlcjovL3NlYXJjaD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZzPScraW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCLmkJzntKLlhbPplK7or41cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2tleXdvcmQnLCAnJyksXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdrZXl3b3JkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgaWYgKOaKmOWPoOeKtuaAgSkge1xcbiAgICAgICAgaWYgKHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZm9sZCA9PT0gJzEnID8g5oqY5Y+gIDog5bGV5byALFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHRpdGxlLCBmb2xkLCB1LCBhbGwsIGV4cHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb2xkID0gZ2V0TXlWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgW+WxleW8gCwg5oqY5Y+gXSA9IGV4cHM7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN4ID0gZmluZEl0ZW1zQnlDbHModGl0bGUgKyAnY2F0ZV9idXR0b24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcignY2F0ZV9idXR0b24nLCBjeCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKHRpdGxlICsgJ2NhdGVfYnV0dG9uJyk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjeCA9IHN0b3JhZ2UwLmdldE15VmFyKCdjYXRlX2J1dHRvbicsIFtdKS5tYXAoeCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhbJ2NvbF90eXBlJ10gPSB4Wydjb2xfdHlwZSddID8geFsnY29sX3R5cGUnXSA6IHhbJ3R5cGUnXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUFmdGVyKHRpdGxlICsgJ2NhdGVfbGluZScsIGN4KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgLyphbGwuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7Ki9cXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0odGl0bGUgKyAnY2F0ZV9leHAnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvbGQgPT0gMSA/IOWxleW8gCA6IOaKmOWPoCxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihNWV9SVUxFLmdyb3VwLCBmb2xkID09PSBcXFwiMVxcXCIgPyBcXFwiMFxcXCIgOiBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgfSwgTVlfUlVMRS50aXRsZSwgZm9sZCwg54q25oCBLCDlhajmuIUsIFvlsZXlvIAsIOaKmOWPoF0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6IE1ZX1JVTEUudGl0bGUgKyAnY2F0ZV9leHAnLFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5riF6Zmk54q25oCBJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoeCwgYWxsLCBjbCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKHgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdoZWFkLmNhdGUnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2wuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIOeKtuaAgSwg5YWo5riFLCDmuIXpmaQpXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgc2V0VGl0bGUgPSAoaywgaSwgdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIGsgPT0gaSA/IFxcXCLigJzigJzigJ3igJ1cXFwiICsgdC5mb250Y29sb3Io5YiG57G76aKc6ImyKSA6IHRcXG4gICAgfVxcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gW107XFxuICAgICAgICBpZiAo5bCP57G75a6a5L2NLmluY2x1ZGVzKCc7JykpIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHBkZmEoY2F0ZWdvcnksIOWwj+exu+WumuS9jS5zcGxpdCgnOycpWzBdKTtcXG4gICAgICAgICAgICBpZiAoc3ViX2NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0uc3BsaXQoJzsnKVsxXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHBkZmEoY2F0ZWdvcnksIOWwj+exu+WumuS9jSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IF/lpKfnsbvpk77mjqUgPSAodHlwZW9mICjlpKfnsbvpk77mjqUpICE9ICd1bmRlZmluZWQnICYmIOWkp+exu+mTvuaOpSAhPSAnJykgPyDlpKfnsbvpk77mjqUgOiDliIbnsbvpk77mjqU7XFxuXFxuICAgICAgICAgICAgICAgIGxldCBf5aSn57G75qCH6aKYID0gKHR5cGVvZiAo5aSn57G75qCH6aKYKSAhPSAndW5kZWZpbmVkJyAmJiDlpKfnsbvmoIfpopggIT0gJycpID8g5aSn57G75qCH6aKYIDog5YiG57G75qCH6aKYO1xcblxcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIF/lpKfnsbvmoIfpopgpO1xcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICjmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcXG4gICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLCBrZXk6IGtleSwgcGFnZTogcGFnZSwgY2xlYXJzOiDmuIXpmaQsIHN0YXRlOiDnirbmgIEsIGFsbGNsZWFyczog5YWo5riFXFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IHBkKGl0ZW0sIF/lpKfnsbvpk77mjqUpO1xcbiAgICAgICAgICAgICAgICBpZiAo5aSn57G75aSE55CGKSB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyjkuIDnuqfliIbnsbvlpITnkIYpXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZygkLnN0cmluZ2lmeSjkuIDnuqfliIbnsbvlpITnkIYpKVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwicmVzdWx0ID0gXFxcIiArIOS4gOe6p+WIhuexu+WkhOeQhik7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhyZXN1bHQpXFxuICAgICAgICAgICAgICAgICAgICB1cmwgPSByZXN1bHQ7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2V0VGl0bGUoa2V5LnRvU3RyaW5nKCksIGNhdGVfdGVtcFtpbmRleF0sIHRpdGxlKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfY2F0ZSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWxsY2xlYXJzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcC5mb3JFYWNoKChjYXRlLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY2F0ZS5wdXNoKGluZGV4ID09PSAwID8gcGFyYW1zLmtleS50b1N0cmluZygpIDogXFxcIjBcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnN0YXRlLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtcylcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6IE1ZX1JVTEUudGl0bGUgKyAnY2F0ZV9saW5lJyxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICB2YXIgZXh0cmFwb3MgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5jbHVkZXMoJ3R5cGU9XFxcIkBleHRyYVxcXCInKSkge1xcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFwb3MgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coJ+mZhOWKoOWumuS9jScpXFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhcG9zKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sICdhJiZUZXh0Jyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mICjmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZShuZXcgUmVnRXhwKOaOkumZpCwgXFxcImdcXFwiKSwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcGRmaChpdGVtLCAnYSYmc3RhdGUnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGRmaChpdGVtLCAnYSYmdmFsdWUnKSxcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG5cXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9ICcnO1xcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSDliIbnsbvpk77mjqUuaW5jbHVkZXMoJ0BAQCcpOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcGRmaChpdGVtLCDliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzBdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwZGZoKGl0ZW0sIOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug5YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQCcpOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog5YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzBdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBkZmgoaXRlbSwg5YiG57G76ZO+5o6lLnNwbGl0KCdAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gcGQoaXRlbSwg5YiG57G76ZO+5o6lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAvKnZhciBqc29uPeWIhuexu+mTvuaOpS5pbmNsdWRlcygnQEBAJyk/e1xcbiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzBdKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6cGRmaChpdGVtLOWIhuexu+mTvuaOpS5zcGxpdCgnQEBAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgIH06cGQoaXRlbSzliIbnsbvpk77mjqUpO1xcbiAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQCcpP3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTrliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAJylbMV0pLFxcbiAgICAgICAgICAgICAgICAgICAgIH06cGQoaXRlbSzliIbnsbvpk77mjqUpOyovXFxuXFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcXG4gICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLCBpbmRleDogaW5kZXgsIGtleToga2V5LCBwYWdlOiBwYWdlLCBqc29uOiBqc29uLCBzdGF0ZTog54q25oCBLCBhbGxjbGVhcnM6IOWFqOa4hVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGNhdGVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNldFRpdGxlKGtleS50b1N0cmluZygpLCBjYXRlX3RlbXBbaW5kZXhdLCB0aXRsZSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hbGxjbGVhcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmpzb24uY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZHRfJyArIHBhcmFtcy5qc29uLnR5cGUsIHBhcmFtcy5qc29uLnZhbHVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuc3RhdGUsIHBhcmFtcy5qc29uKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtcyksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IE1ZX1JVTEUudGl0bGUgKyAnY2F0ZV9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBjYXRlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBjbHM6IE1ZX1JVTEUudGl0bGUgKyAnY2F0ZV9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcblxcbmlmIChmb2xkID09PSBcXFwiMVxcXCIgfHwg5oqY5Y+g54q25oCBID09IGZhbHNlKSB7XFxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGNhdGVzKTtcXG59XFxuaWYgKGZvbGQgPT09IFxcXCIwXFxcIikge1xcbiAgICBzdG9yYWdlMC5wdXRNeVZhcignY2F0ZV9idXR0b24nLCBjYXRlcylcXG59XFxuaWYgKHR5cGVvZiBzZXRQcmVSZXN1bHQgIT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgaXRlbXMgPSBkLmNvbmNhdChpdGVtcyk7XFxuICAgIC8v5riF56m657un5om/5pWw57uEXFxuICAgIGQubGVuZ3RoID0gMDtcXG4gICAgc2V0UHJlUmVzdWx0KGl0ZW1zKTtcXG59IGVsc2Uge1xcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgZC5wdXNoKGl0ZW0pO1xcbiAgICB9KVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p1wiLFwicGF0aFwiOlwiZWpcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuXFxudmFyIGFydHMgPSBwZGZhKGh0bWwsICcubmF2LXN3aXBlciYmYTpub3QoOm1hdGNoZXMo5LiL6L29KSknKTtcXG5cXG52YXIgdGFicyA9IFtdO1xcbmZvciAodmFyIGkgaW4gYXJ0cykge1xcbiAgICB0YWJzLnB1c2gocGRmaChhcnRzW2ldLCAnVGV4dCcpKVxcbn1cXG5cXG52YXIgY29udHMgPSBwZGZhKGh0bWwsICdib2R5JiYuYW50aG9sb2d5LWxpc3QtYm94Jyk7XFxuXFxudmFyIGxpc3RzID0gW107XFxuZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICBsaXN0cy5wdXNoKHBkZmEoY29udHNbaV0sICdib2R5JiZhJykpXFxufVxcbnRyeSB7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHBkZmgoaHRtbCwgJy5zZWFyY2gtc2hvdyYmbGk6Y29udGFpbnMo5a+85ryU77yaKSYmVGV4dCcpLnN1YnN0cmluZygwLCAxOCkgK1xcbiAgICAgICAgJ1xcXFxuJyArXFxuICAgICAgICAnXFxcXG4nICtcXG4gICAgICAgICAgICAgcGRmaChodG1sLFxcbicuc2VhcmNoLXNob3cmJmxpOmNvbnRhaW5zKOS4u+a8lO+8mikmJlRleHQnKS5zdWJzdHJpbmcoMCwgMTgpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICcuc2VhcmNoLXNob3cmJmxpOmNvbnRhaW5zKOabtOaWsO+8mikmJlRleHQnKSxcXG4gICAgaW1nOiBNWV9QQVJBTVMucGljLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxleHRyYToge2dyYWRpZW50OiB0cnVlfVxcbn0pO1xcbnZhciDnroDku4sgPSBwZGZoKGh0bWwsICcudG9wMjYmJlRleHQnKVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPVxcXCIjZmYxNDhlOGVcXFwiPicgKyDnroDku4suc3Vic3RyKDAsIDU1KSArICcuLi48L2ZvbnQ+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuivpuaDhTwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgJ1xcXFxuJyArIOeugOS7iyArJyNub0hpc3RvcnkjJyArIGBAcnVsZT1qczogdmFyIGQgPSBbXTtkLnB1c2goe3RpdGxlOiflvbHniYfnroDku4vvvJonKyBNWV9VUkwuc3BsaXQoJyMnKVsxXSxjb2xfdHlwZTogJ2xvbmdfdGV4dCd9KTsgc2V0UmVzdWx0KGQpO2AsXFxuICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbn0pO1xcbn0gY2F0Y2ggKGUpIHtcXG5kLnB1c2goe1xcbiAgICBpbWc6IHBkKGh0bWwsIFxcbicudGhpcy1waWMtYmomJnN0eWxlJykucmVwbGFjZShcXFwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCdcXFwiLFxcXCJcXFwiKS5yZXBsYWNlKFxcXCInKVxcXCIsXFxcIlxcXCIpICsnQFJlZmVyZXI9JyxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsZXh0cmE6IHtncmFkaWVudDogdHJ1ZX1cXG59KTtcXG59XFxuXFxuIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpLnJ1bGUpO1xcblxcbmZ1bmN0aW9uIHNldFRhYnModGFicywgdmFyaSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ3Noc29ydCcpID09ICcxJykgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkYwMDAwXFxcIj7pgIbluo88L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMWFhZDE5XFxcIj7mraPluo88L3NwYW4+PC9iPicsXFxuICAgICAgICB1cmw6IGBAbGF6eVJ1bGU9LmpzOmxldCBjb25mID0gZ2V0VmFyKCdzaHNvcnQnKTtpZihjb25mPT0nMScpe3B1dFZhcih7a2V5OidzaHNvcnQnLCB2YWx1ZTonMCd9KTt9ZWxzZXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzEnfSl9O3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5o6S5bqP5oiQ5YqfJ2AsXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICB9KVxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciB1cmwgPSBcXFwiI25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOnB1dFZhcignXFxcIiArIHZhcmkgKyBcXFwiJywgJ1xcXCIgKyBpICsgXFxcIicpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip/vvIEnOycjbm9IaXN0b3J5I2hpa2VyOi8vZW1wdHknXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldFZhcih2YXJpLCAnMCcpID09IGkgPyAn4oCc4oCcJyArIHRhYnNbaV0gKyAn4oCd4oCdJyA6IHRhYnNbaV0sXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XFxuICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdO1xcbiAgICBpZiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpIHtcXG4gICAgICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdLnJldmVyc2UoKTtcXG4gICAgfVxcbiAgICBmb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJ2EmJlRleHQnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgv56ysKFxcXFxkKynpm4YvLCAnJDEnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgn56ysJywgJycpXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCfmnJ8nLCAnJyksXFxuICAgICAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpICsgbGF6eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuc2V0VGFicyh0YWJzLCBNWV9VUkwpO1xcbnNldExpc3RzKGxpc3RzLCBnZXRWYXIoTVlfVVJMLCAnMCcpKTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48Zm9udCBjb2xvcj0jMjBiMmFhPuaVsOaNrui1hOa6kOaUtumbhuS6jue9kee7nO+8jOa1t+mYlOS4jeaPkOS+m+S7u+S9lei1hOa6kO+8gTwvZm9udD48L3NtYWxsPicsXFxuICAgIGRlc2M6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9I2ZmN2Y1MD7mnKzop4TliJnku4XpmZDlrabkuaDkuI7kuqTmtYHvvIzor7flr7zlhaXlkI4yNOWwj+aXtuWGheWIoOmZpO+8jOivt+WLv+S8oOaSre+8gTwvZm9udD48L3NtYWxsPicsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KTtcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9XSIsImljb24iOiIiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment