xiaomianao666

小程序:小程序解析

Apr 24th, 2025
486
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@小程序解析@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5bCP56iL5bqP6Kej5p6QIiwiYXV0aG9yIjoi5LiJ6bKc5rGkIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjIiwidmVyc2lvbiI6NCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ0b29sIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6JC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL21haW5cIik7Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGo5bel5YW3566xIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLov4fmu6Tmm7/mjaJcIixcInBhdGhcIjpcImZpbHRlclJlcGxhY2VcIixcInJ1bGVcIjpcImpzOlxcbi8v6Kej5a+GYmFzZTY05ZCO55qE6L+d56aB6K+N5YiX6KGoXFxudmFyIGRlRmlsdGVyU3RyID0gW107XFxuLy/ov53npoHln5/lkI3liJfooahcXG52YXIgZmlsdGVyX1VybCA9IFtcXFwieW91a3UuY29tXFxcIiwgXFxcImlxaXlpLmNvbVxcXCIsIFxcXCJxcS5jb21cXFwiLCBcXFwibWd0di5jb21cXFwiLCBcXFwiYWNmdW5cXFwiLCBcXFwidHVkb3UuY29tXFxcIiwgXFxcInNvaHUuY29tXFxcIiwgXFxcImJhaWR1LmNvbVxcXCIsIFxcXCJiaWxpYmlsaS5jb21cXFwiLCBcXFwieGltYWxheWFcXFwiLCBcXFwiZG91eWluLmNvbVxcXCIsIFxcXCJpeGlndWEuY29tXFxcIl07XFxuLy/nl4Xmr5Lku6PnoIHnibnlvoHliJfooahcXG52YXIgZGVNYXJrcyA9IFtdO1xcblxcbi8v6YeN5p6E5aSN55So5oCn6auY55qE5pu/5o2i5pa55rOVXFxuZnVuY3Rpb24gcmVwbGFjZVV0aWwoY29kZSwgZmlsdGVyLCBmaWx0ZXJUeXBlKSB7XFxuICAgIC8v5Yik5pat6YCJ5oup55qE5pu/5o2i57G75Z6LXFxuICAgIGlmIChmaWx0ZXJUeXBlID09IDApIHtcXG4gICAgICAgIC8v6I635Y+W6L+d56aB6K+N5pWw57uE5bm25re75Yqg5a2X56ymXFxuICAgICAgICB2YXIgZmlsdGVycyA9IGZpbHRlci5zcGxpdChcXFwiXFxcIik7XFxuICAgICAgICB2YXIgbm9GaWx0ZXIgPSBmaWx0ZXJzLnRvU3RyaW5nKCkucmVwbGFjZUFsbChcXFwiLFxcXCIsIGdldEl0ZW0oXFxcImluZW1wdHlcXFwiLCBcXFwi4oCLXFxcIikpO1xcbiAgICAgICAgLy/nm7TmjqXmm7/mjaLov53npoHor41cXG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoZmlsdGVyLCBub0ZpbHRlcik7XFxuICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSAxKSB7XFxuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlQWxsKGZpbHRlciwgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvVHJhbnNsYXRpb24/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5UcmFkaXRpb25hbGl6ZWQoZmlsdGVyKSlcXG4gICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09IDIpIHtcXG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoZmlsdGVyLCAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9DdXN0b21Db252ZXJ0P3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikuY29udmVydChmaWx0ZXIpKVxcbiAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gMykge1xcbiAgICAgICAgdmFyIHVuaWNvZGVTdHIgPSAnJztcXG4gICAgICAgIC8v6YCQ5a2X56ym6L2s5o2idW5p57yW56CBXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHVuaWNvZGVTdHIgKz0gJ1xcXFxcXFxcdScgKyBmaWx0ZXIuY2hhckNvZGVBdChpKS50b1N0cmluZygxNikucGFkU3RhcnQoNCwgJzAnKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoZmlsdGVyLCB1bmljb2RlU3RyKTtcXG4gICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09IDQpIHtcXG4gICAgICAgIC8v5Lit5paH6L2sdXJp57yW56CBXFxuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlQWxsKGZpbHRlciwgZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcikpO1xcbiAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gNSkge1xcbiAgICAgICAgLy/mnKzmqKHlvI/nlKjkuo7oi7HmlofmiJbnrKblj7flvLrovax1cmnnvJbnoIFcXG4gICAgICAgIHZhciB1cmlDb2RlU3RyID0gJyc7XFxuICAgICAgICAvL+mAkOWtl+espui9rOaNonVyaee8lueggVxcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICB1cmlDb2RlU3RyICs9ICclJyArIGZpbHRlci5jaGFyQ29kZUF0KGkpLnRvU3RyaW5nKDE2KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoZmlsdGVyLCB1cmlDb2RlU3RyKTtcXG4gICAgfVxcbiAgICByZXR1cm4gY29kZTtcXG59XFxuXFxuLy/mo4DmtYvlubbmm7/mjaLov53npoHor41cXG5mdW5jdGlvbiByZXBsYWNlKGNvZGUsIGZpbHRlclR5cGUpIHtcXG4gICAgaWYgKGNvZGUgIT0gbnVsbCAmJiBjb2RlICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAvL+iOt+WPlui/neemgeivjeWIl+ihqFxcbiAgICAgICAgdmFyIGZpbHRlclN0ciA9IGdldEZpbHRlcnMoKTtcXG4gICAgICAgIGZpbHRlclN0ci5mb3JFYWNoKChmaWx0ZXIpID0+IHtcXG4gICAgICAgICAgICAvL+abv+aNoui/neemgeivjVxcbiAgICAgICAgICAgIGNvZGUgPSByZXBsYWNlVXRpbChjb2RlLCBmaWx0ZXIsIGZpbHRlclR5cGUpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gY29kZTtcXG4gICAgfVxcbn1cXG5cXG4vL+WkhOeQhuS7o+eggei/neemgeivjeeahOaWueazlVxcbmZ1bmN0aW9uIHJlcGxhY2VDb2RlKGNvZGUpIHtcXG4gICAgaWYgKGNvZGUgIT0gbnVsbCAmJiBjb2RlICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAvL+i9rOS4uuWtl+espuS4slxcbiAgICAgICAgY29kZSA9IGNvZGUudG9TdHJpbmcoKTtcXG4gICAgICAgIC8v6I635Y+W6L+d56aB6K+N5YiX6KGoXFxuICAgICAgICB2YXIgZmlsdGVyU3RyID0gZ2V0RmlsdGVycygpO1xcbiAgICAgICAgLy/ojrflj5bnl4Xmr5LnibnlvoHliJfooahcXG4gICAgICAgIHZhciBtYXJrcyA9IGdldE1hcmtzKCk7XFxuICAgICAgICAvL+a1t+mYlOW5tuS4jeS8muWIpOaWreWKoOWvhuWGheWuueWGheeahOi/neemgeivjeaVheatpOW6lOivpeivt+eUqOaIt+aJi+WKqOmAieaLqeaYr+WQpuino+WvhlxcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiXFxcIikgPT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICAgICAgLy/op6Plr4bop4TliJlcXG4gICAgICAgICAgICB2YXIgY29kZTIgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICB2YXIga2V5ID0gXFxcImhrNjY2NjY2NjEwOVxcXCJcXG4gICAgICAgICAgICAvL+Wwneivleino+WvhuWkmuWxguWKoOWvhuaVsOaNrlxcbiAgICAgICAgICAgIGRvIHtcXG4gICAgICAgICAgICAgICAgLy/ph43mnoTliqDop6Plr4bnrpfms5VcXG4gICAgICAgICAgICAgICAgaWYgKC9ldmFsUHJpdmF0ZUpTXFxcXChbJ1xcXCJdKFteXFxcIiddKylbJ1xcXCJdXFxcXCkvLnRlc3QoY29kZSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjMiA9IGNvZGUubWF0Y2goL2V2YWxQcml2YXRlSlNcXFxcKFsnXFxcIl0oW15cXFwiJ10rKVsnXFxcIl1cXFxcKS8pWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHljMiA9IGNvZGUubWF0Y2goL2V2YWxQcml2YXRlSlNcXFxcKFsnXFxcIl0oW15cXFwiJ10rKVsnXFxcIl1cXFxcKTs/LylbMF07XFxuICAgICAgICAgICAgICAgICAgICBjMiA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL0FFU1V0aWxzP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikuZGVjcnlwdChrZXksIGMyKTtcXG4gICAgICAgICAgICAgICAgICAgIC8v5q+P5qyh6Kej5a+G5ZCO5qOA5p+l6L+d56aB6K+NXFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJTdHIuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSByZXBsYWNlVXRpbChjMiwgZmlsdGVyLCAzKTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgLy/ov5jljp/liqDlr4bliqDlr4bliKTmlq1cXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKFxcXCJyZV9ldmFsUHJpdmF0ZUpTXFxcIiwgXFxcIjFcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WwhuWKoOWvhuWktOiuvuS4umV2YWxQcml2YXRlQ2F0SlPpmLLmraLmrbvlvqrnjq9cXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKHljMiwgXFxcImV2YWxQcml2YXRlQ2F0SlMoXFxcXFxcXCJcXFwiICsgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvQUVTVXRpbHM/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5lbmNyeXB0KGtleSwgYzIpICsgXFxcIlxcXFxcXFwiKTtcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZSh5YzIsIGMyKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gd2hpbGUgKC9ldmFsUHJpdmF0ZUpTXFxcXChbJ1xcXCJdKFteXFxcIiddKylbJ1xcXCJdXFxcXCkvLnRlc3QoY29kZSkpXFxuICAgICAgICB9XFxuICAgICAgICAvL+i/neemgeivjeaVsOe7hFxcbiAgICAgICAgZmlsdGVyU3RyLmZvckVhY2goKGZpbHRlcikgPT4ge1xcbiAgICAgICAgICAgIC8v5pu/5o2i6L+d56aB6K+NXFxuICAgICAgICAgICAgY29kZSA9IHJlcGxhY2VVdGlsKGNvZGUsIGZpbHRlciwgMyk7XFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIC8v5bCG5Zue5Yqg5a+G55qE5Yqg5a+G5aS05pS55Zue5p2lXFxuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlQWxsKFxcXCJldmFsUHJpdmF0ZUNhdEpTXFxcIiwgXFxcImV2YWxQcml2YXRlSlNcXFwiKTtcXG4gICAgICAgIHJldHVybiBjb2RlO1xcbiAgICB9XFxufVxcblxcbi8v5pu/5o2i5q2j54mIdXJs5Z+f5ZCNXFxuZnVuY3Rpb24gcmVwbGFjZVVybChjb2RlKSB7XFxuICAgIGlmIChjb2RlICE9IG51bGwgJiYgY29kZSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgZmlsdGVyX1VybC5mb3JFYWNoKChmaWx0ZXIpID0+IHtcXG4gICAgICAgICAgICAvL+abv+aNoui/neemgeivjVxcbiAgICAgICAgICAgIGNvZGUgPSByZXBsYWNlVXRpbChjb2RlLCBmaWx0ZXIsIDUpO1xcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBjb2RlO1xcbiAgICB9XFxufVxcblxcbi8v5Y676Zmk55eF5q+S5Luj56CBXFxuZnVuY3Rpb24gcmVwbGFjZU1hcmtzKGNvZGUpIHtcXG4gICAgaWYgKGNvZGUgIT0gbnVsbCAmJiBjb2RlICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAvL+iOt+WPlueXheavkueJueW+geWIl+ihqFxcbiAgICAgICAgdmFyIG1hcmtzID0gZ2V0TWFya3MoKTtcXG4gICAgICAgIC8v5bCd6K+V5Y676Zmk55eF5q+S5Luj56CBXFxuICAgICAgICBtYXJrcy5mb3JFYWNoKChtYXJrKSA9PiB7XFxuICAgICAgICAgICAgY29kZSA9IHJlcGxhY2VVdGlsKGNvZGUsIG1hcmssIDMpO1xcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBjb2RlO1xcbiAgICB9XFxufVxcblxcbi8v6I635Y+W6L+d56aB6K+N5YiX6KGoXFxuZnVuY3Rpb24gZ2V0RmlsdGVycygpIHtcXG4gICAgaWYgKGRlRmlsdGVyU3RyID09IFxcXCJcXFwiIHx8IGRlRmlsdGVyU3RyID09IG51bGwpIHtcXG4gICAgICAgIC8v6L+d56aB6K+N5YiX6KGoXFxuICAgICAgICB2YXIgZmlsdGVyU3RyID0gW1xcXCI1b0NuNTVpK1xcXCIsIFxcXCJVK2U2cHc9PVxcXCIsIFxcXCI1WUczNW91TlxcXCIsIFxcXCI1cGVnNTZDQlxcXCIsIFxcXCI1cHlKNTZDQlxcXCIsIFxcXCI1WStqNTRpR1xcXCIsIFxcXCI1THltNTVDR1xcXCIsIFxcXCI1WldxNVpXcVxcXCIsIFxcXCI1N3FtNTRLdVxcXCIsIFxcXCI1YkNSNWFhSFxcXCIsIFxcXCI1NytZNkllQVxcXCIsIFxcXCI1Wkc3NVpDZlxcXCIsIFxcXCI1WStNNmFPZVxcXCIsIFxcXCI1YWUvNVlxL1xcXCIsIFxcXCI1b09GNklteVxcXCIsIFxcXCI1YVd6NUx5WVxcXCIsIFxcXCI1THE2NWFhN1xcXCIsIFxcXCI1b0NuNTRpeFxcXCIsIFxcXCI1TG14NUx5bVxcXCIsIFxcXCI1Ynk2NWFXNFxcXCIsIFxcXCI2YmloNWJlMFxcXCJdO1xcbiAgICAgICAgZmlsdGVyU3RyLmZvckVhY2goKGZpbHRlcikgPT4ge1xcbiAgICAgICAgICAgIGZpbHRlciA9IGJhc2U2NERlY29kZShmaWx0ZXIpO1xcbiAgICAgICAgICAgIGRlRmlsdGVyU3RyLnB1c2goZmlsdGVyKTtcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgcmV0dXJuIGRlRmlsdGVyU3RyO1xcbn1cXG5cXG4vL+iOt+WPlueXheavkueJueW+geWIl+ihqFxcbmZ1bmN0aW9uIGdldE1hcmtzKCkge1xcbiAgICBpZiAoZGVNYXJrcyA9PSBcXFwiXFxcIiB8fCBkZU1hcmtzID09IG51bGwpIHtcXG4gICAgICAgIC8v6L+d56aB6K+N5YiX6KGoXFxuICAgICAgICB2YXIgbWFya3MgPSBbXFxcIlJVNVdKQT09XFxcIiwgXFxcIllVaFNNR05JVFRaTWVUbHNaRzFHYzJWRE5USmFXRXBxV2xkM2RWbFlRbmRNTW5CNlxcXCIsIFxcXCJkbVZ5WTJWc0xtRndjQT09XFxcIl07XFxuICAgICAgICBtYXJrcy5mb3JFYWNoKChtYXJrKSA9PiB7XFxuICAgICAgICAgICAgbWFyayA9IGJhc2U2NERlY29kZShtYXJrKTtcXG4gICAgICAgICAgICBkZU1hcmtzLnB1c2gobWFyayk7XFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHJldHVybiBkZU1hcmtzO1xcbn1cXG5cXG4vL+ajgOa1i+i/neemgeivjVxcbmZ1bmN0aW9uIGhhc0ZpbHRlcldvcmQoY29kZSkge1xcbiAgICB2YXIgZmlsdGVyU3RyID0gZ2V0RmlsdGVycygpO1xcbiAgICBmb3IgKHZhciBmaWx0ZXIgb2YgZmlsdGVyU3RyKSB7XFxuICAgICAgICBpZiAoY29kZS5pbmNsdWRlcyhmaWx0ZXIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZhbHNlO1xcbn1cXG5cXG4vL+ajgOa1i+eXheavkuS7o+eggVxcbmZ1bmN0aW9uIGhhc01hcmtzV29yZChjb2RlKSB7XFxuICAgIHZhciBtYXJrcyA9IGdldE1hcmtzKCk7XFxuICAgIGZvciAodmFyIG1hcmsgb2YgbWFya3MpIHtcXG4gICAgICAgIGlmIChjb2RlLmluY2x1ZGVzKG1hcmspKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZhbHNlO1xcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGdldEZpbHRlcnMsXFxuICAgIGdldE1hcmtzLFxcbiAgICBoYXNGaWx0ZXJXb3JkLFxcbiAgICBoYXNNYXJrc1dvcmQsXFxuICAgIHJlcGxhY2UsXFxuICAgIHJlcGxhY2VDb2RlLFxcbiAgICByZXBsYWNlVXJsLFxcbiAgICByZXBsYWNlTWFya3NcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkupHliarliIfmnb/op6PmnpBcIixcInBhdGhcIjpcInBhc3RlbWVcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGppZXhpKGNvbnRlbnQsIHR5cGUpIHtcXG4gICAgLy/ljrvpmaTnqbrmoLwg6Ziy5ZGG6K6+6K6hXFxuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2VBbGwoXFxcIiBcXFwiLCBcXFwiXFxcIik7XFxuICAgIC8v5LqRMeWJqui0tOadv1xcbiAgICBpZiAodHlwZSA9PSAxKSB7XFxuICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxcXCLkupExb29vb2xlL1xcXCIsIFxcXCJodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvXFxcIilcXG4gICAgICAgIGJvZHkgPSBmZXRjaChjb250ZW50KTtcXG4gICAgICAgIHJldHVybiBib2R5XFxuICAgIH1cXG4gICAgLy/kupEy5Ymq6LS05p2/XFxuICAgIGlmICh0eXBlID09IDIpIHtcXG4gICAgICAgIGlmICgvXFxcXC9hcGlkYlxcXFwvLy50ZXN0KGNvbnRlbnQpKSB7XFxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcXFwi5LqRMm9vb29sZS9hcGlkYi9cXFwiLCBcXFwiaHR0cHM6Ly90ZXh0ZGIub25saW5lL1xcXCIpXFxuICAgICAgICAgICAgdmFyIGJvZHkgPSBmZXRjaChjb250ZW50KVxcbiAgICAgICAgICAgIC8vaHR0cOWuieWFqGJhc2U2NFxcbiAgICAgICAgICAgIHZhciBTYWZlQmFzZTY0ID0gYm9keS5yZXBsYWNlKC8tL2csIFxcXCIrXFxcIikucmVwbGFjZSgvXy9nLCBcXFwiL1xcXCIpXFxuICAgICAgICAgICAgd2hpbGUgKFNhZmVCYXNlNjQubGVuZ3RoICUgNCAhPT0gMCkge1xcbiAgICAgICAgICAgICAgICBTYWZlQmFzZTY0ICs9IFxcXCI9XFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYm9keSA9IGJhc2U2NERlY29kZShTYWZlQmFzZTY0KVxcbiAgICAgICAgICAgIHJldHVybiBib2R5XFxuICAgICAgICB9IGVsc2UgaWYgKC9cXFxcL3BcXFxcLy8udGVzdChjb250ZW50KSkge1xcbiAgICAgICAgICAgIC8v5oyC5LqGIOayoeazleWGmVxcbiAgICAgICAgICAgIHJldHVybiBcXFwiXFxcIlxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIC8v5LqRNeWJqui0tOadv1xcbiAgICBpZiAodHlwZSA9PSA1KSB7XFxuICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxcXCLkupE1b29vb2xlL1xcXCIsIFxcXCJodHRwczovL2NtZC5pbS9cXFwiKTtcXG4gICAgICAgIHZhciBib2R5ID0gZmV0Y2goY29udGVudCwge1xcbiAgICAgICAgICAgIFxcXCJoZWFkZXJzXFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiSE9TVFxcXCI6IFxcXCJjbWQuaW1cXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiT3JpZ2luXFxcIjogXFxcImh0dHBzOi8vY21kLmltXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9jbWQuaW0vXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNi4wLjAuMCBTYWZhcmkvNTM3LjM2XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYm9keSA9IHBkZmgoYm9keSwgXFxcImJvZHkmJi50ZXN0X2JveCYmVGV4dFxcXCIpXFxuICAgICAgICByZXR1cm4gYm9keVxcbiAgICB9XFxuICAgIC8v5LqRNuWJqui0tOadv1xcbiAgICBpZiAodHlwZSA9PSA2KSB7XFxuICAgICAgICAvL+aKiuWFs+mUruivjeabv+aNouWbnue9keWdgFxcbiAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcXFwi5LqRNm9vb29sZVxcXCIsIFxcXCJodHRwczovL3Bhc3RlbWUudHlyYW50Zy5jb21cXFwiKS5yZXBsYWNlKFxcXCIveHh4eHh4L1xcXCIsIFxcXCIvYXBpL2dldENvbnRlbnQvXFxcIik7XFxuICAgICAgICAvL+WPkei1t+ivt+axguivu+WPlueymOi0tOadv+aVsOaNrlxcbiAgICAgICAgdmFyIGJvZHkgPSBmZXRjaChjb250ZW50LCB7XFxuICAgICAgICAgICAgXFxcImhlYWRlcnNcXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vcGFzdGVtZS50eXJhbnRnLmNvbS9cXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIlxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgLy/ovazkuLpqc29u5qC85byPXFxuICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoYm9keSk7XFxuICAgICAgICAvL+i/lOWbnuaVsOaNrlxcbiAgICAgICAgcmV0dXJuIGpzb24uZGF0YVxcbiAgICB9XFxuICAgIC8v5LqRN+WJqui0tOadv1xcbiAgICBpZiAodHlwZSA9PSA3KSB7XFxuICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxcXCLkupE3b29vb2xlXFxcIiwgXFxcImh0dHBzOi8vbm90ZS5tcy9cXFwiKS5yZXBsYWNlKFxcXCIveC95XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgdmFyIGJvZHkgPSBmZXRjaChjb250ZW50LCB7fSk7XFxuICAgICAgICBib2R5ID0gcGRmaChib2R5LCBcXFwidGV4dGFyZWEmJlRleHRcXFwiKVxcbiAgICAgICAgcmV0dXJuIGJvZHlcXG4gICAgfVxcbiAgICAvL+S6kTnliarotLTmnb9cXG4gICAgaWYgKHR5cGUgPT0gOSkge1xcbiAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcXFwi5LqROW9vb29sZVxcXCIsIFxcXCJodHRwczovL3R4dHBiYmQuY25cXFwiKS5yZXBsYWNlKFxcXCJ0eHRwYmJkLmNuXFxcIiwgXFxcInR4dHBhZC5jblxcXCIpLnJlcGxhY2UoXFxcIi9hL2IvXFxcIiwgXFxcIi9cXFwiKTtcXG4gICAgICAgIHZhciBib2R5ID0gZmV0Y2hDb2RlQnlXZWJWaWV3KGNvbnRlbnQsIHtcXG4gICAgICAgICAgICBjaGVja0pzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxcXCJ0ZXh0YXJlYVxcXCIpLnZhbHVlO1xcbiAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnB1dFZhcigndHh0UGFkJywgYSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoID4gMSA/IDEgOiBudWxsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBib2R5ID0gZ2V0VmFyKFxcXCJ0eHRQYWRcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBjbGVhclZhcihcXFwidHh0UGFkXFxcIik7XFxuICAgICAgICByZXR1cm4gYm9keTtcXG4gICAgfVxcbiAgICAvL+S6kTEw5Ymq6LS05p2/XFxuICAgIGlmICh0eXBlID09IDEwKSB7XFxuICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxcXCLkupExMG9vb29sZVxcXCIsIFxcXCJodHRwczovL2hhc3NkdGViaW4uY29tXFxcIikucmVwbGFjZShcXFwiaHR0cHM6Ly9oYXNzZHRlYmluLmNvbS9zaGFyZS9hL2IvXFxcIiwgXFxcImh0dHBzOi8vaGFzdGViaW4uY29tL3NoYXJlL1xcXCIpO1xcbiAgICAgICAgdmFyIGJvZHkgPSBmZXRjaChjb250ZW50KVxcbiAgICAgICAgYm9keSA9IHBkZmgoYm9keSwgXFxcImNvZGUmJlRleHRcXFwiKTtcXG4gICAgICAgIHJldHVybiBib2R5XFxuICAgIH1cXG59XFxuXFxuXFxuJC5leHBvcnRzID0ge1xcbiAgICBqaWV4aSxcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlofku7bpgInmi6npobXpnaJcIixcInBhdGhcIjpcImZpbGVTZWxlY3RcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGZpbGVTZWxlY3QoaW5wdXQpIHtcXG4gICAgdXBkYXRlSXRlbShcXFwiZmlsZVNlbGVjdFxcXCIsIHtcXG4gICAgICAgIGV4dHJhOiBPYmplY3QuYXNzaWduKGZpbmRJdGVtKFxcXCJmaWxlU2VsZWN0XFxcIikuZXh0cmEsIHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGlucHV0XFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICB2YXIgY29kZSA9IHJlYWRGaWxlKGlucHV0LCAwKTtcXG4gICAgaWYgKC9e5rW36ZiU6KeG55WMLipcXFxc77+laG9tZV9ydWxlKF92Mik/XFxcXO+/pS8udGVzdChjb2RlKSkge1xcbiAgICAgICAgdXBkYXRlSXRlbShcXFwiY29kZVxcXCIsIHtcXG4gICAgICAgICAgICBleHRyYTogT2JqZWN0LmFzc2lnbihmaW5kSXRlbShcXFwiY29kZVxcXCIpLmV4dHJhLCB7XFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogY29kZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdXBkYXRlSXRlbShcXFwiY29kZVxcXCIsIHtcXG4gICAgICAgICAgICBleHRyYTogT2JqZWN0LmFzc2lnbihmaW5kSXRlbShcXFwiY29kZVxcXCIpLmV4dHJhLCB7XFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogaW5wdXRcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGZpbGVTZWxlY3QsXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6KeE5YiZ6Kej5p6QXCIsXCJwYXRoXCI6XCJSdWxlamlleGlcIixcInJ1bGVcIjpcImpzOlxcbi8v6KeE6IyD6L+U5Zue55qE5pWw5o2u5qC85byPXFxuZnVuY3Rpb24gcmVzdWx0KGNvZGUsIGJvZHkpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoXFxcIntcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFwiICsgY29kZSArIFxcXCIsXFxcXFxcXCJib2R5XFxcXFxcXCI6XFxcIiArIEpTT04uc3RyaW5naWZ5KGJvZHkpICsgXFxcIn1cXFwiKTtcXG59XFxuLy/op6PmnpDlsI/nqIvluo/op4TliJlcXG5mdW5jdGlvbiBqaWV4aShjb2RlKSB7XFxuICAgIHZhciBqc29uQ29kZSA9IFxcXCJcXFwiO1xcbiAgICB2YXIgcnVsZUNvZGUgPSBcXFwiXFxcIjtcXG4gICAgdHJ5IHtcXG4gICAgICAgIC8v5YW85a655LiN5a2Y5Zyo5rW36ZiU5Y+j5Luk55qE5bCP56iL5bqP6KeE5YiZXFxuICAgICAgICBpZiAoIS9eKFxcXFx7LipcXFxcfSkkLy50ZXN0KGNvZGUpKSB7XFxuICAgICAgICAgICAgLy/pqozor4HlsI/nqIvluo/niYjmnKzlj4rop4TliJnmmK/lkKbmraPnoa5cXG4gICAgICAgICAgICB2YXIgaG9tZV9ydWxlX3ZlcnNpb24gPSBjb2RlLm1hdGNoKC/vv6UoXFxcXFMqKe+/pS8pWzFdO1xcbiAgICAgICAgICAgIGlmIChob21lX3J1bGVfdmVyc2lvbiA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6KeE5YiZXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvL2hvbWVfcnVsZeWlveWDj+aYr+aYjuaWh1xcbiAgICAgICAgICAgIGlmIChob21lX3J1bGVfdmVyc2lvbiA9PSBcXFwiaG9tZV9ydWxlXFxcIikge1xcbiAgICAgICAgICAgICAgICAvL+WOu+mZpOa1t+mYlOagh+ivhuWktFxcbiAgICAgICAgICAgICAgICB2YXIgcnVsZUhlYWRlciA9IGNvZGUubWF0Y2goL+a1t+mYlOinhueVjC4qP++/pWhvbWVfcnVsZe+/pS8pWzBdO1xcbiAgICAgICAgICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKHJ1bGVIZWFkZXIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy9ob21lX3J1bGVfdjLmmK9iYXNlNjTliqDlr4bop4TliJlcXG4gICAgICAgICAgICBpZiAoaG9tZV9ydWxlX3ZlcnNpb24gPT0gXFxcImhvbWVfcnVsZV92MlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGNvZGVzID0gY29kZS5zcGxpdChcXFwiYmFzZTY0Oi8vXFxcIik7XFxuICAgICAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1sxXTtcXG4gICAgICAgICAgICAgICAgdmFyIGNvZGVUaXRsZSA9IGNvZGUubWF0Y2goL15AKC4qKUAvKVswXTtcXG4gICAgICAgICAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShjb2RlVGl0bGUsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgY29kZSA9IGJhc2U2NERlY29kZShjb2RlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBydWxlQ29kZSA9IGNvZGU7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIC8v5oql6ZSZ6K+B5piO5pWw5o2u5LiN5piv5a2X56ym5Liy57G75Z6L6ZyA6KaB6L2s5a2X56ym5Liy5p+l5om+6L+d56aB6K+NXFxuICAgICAgICBydWxlQ29kZSA9IEpTT04uc3RyaW5naWZ5KGNvZGUpO1xcbiAgICB9XFxuICAgIC8v5byA5ZCv6Kej5a+G5ZCO5ZCv5Yqo5by65Yi26Kej5p6QXFxuICAgIGlmIChnZXRJdGVtKFxcXCJkZV9ldmFsUHJpdmF0ZUpTXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAvL+ajgOa1i+aYr+WQpuWtmOWcqOi/neemgeivjVxcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcInF6X21vZGVzXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiICYmICEkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikuaGFzRmlsdGVyV29yZChydWxlQ29kZSkgJiYgISQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2ZpbHRlclJlcGxhY2U/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5oYXNNYXJrc1dvcmQocnVsZUNvZGUpKSB7XFxuICAgICAgICAgICAgLy/kuI3lrZjlnKjov53npoHor43nm7TmjqXov5Tlm55cXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0KDMwMCwgY29kZSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgdHJ5IHtcXG4gICAgICAgIC8v6I635Y+W6KeE5YiZ55qEanNvbuaVsOaNrlxcbiAgICAgICAganNvbkNvZGUgPSBKU09OLnBhcnNlKGNvZGUpO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAvL+aKpemUmeivgeaYjuacrOadpeWwseaYr2pzb27nsbvlnotcXG4gICAgICAgIGpzb25Db2RlID0gY29kZTtcXG4gICAgfVxcbiAgICAvL+i/lOWbnuino+aekOWQjueahOaVsOaNrlxcbiAgICByZXR1cm4gcmVzdWx0KDIwMCwganNvbkNvZGUpO1xcbn1cXG5cXG4vL+i/h+a7pOi/neemgeivjVxcbmZ1bmN0aW9uIHVwZGF0ZVJ1bGUoanNvbkNvZGUsIGZpbHRlclR5cGUpIHtcXG4gICAgLy/ln7rnoYDlhoXlrrnov4fmu6RcXG4gICAgdmFyIGJhc2ljc1J1bGUgPSBbXFxcInRpdGxlXFxcIiwgXFxcImNsYXNzX25hbWVcXFwiLCBcXFwiYXJlYV9uYW1lXFxcIiwgXFxcInllYXJfbmFtZVxcXCIsIFxcXCJzb3J0X25hbWVcXFwiXTtcXG4gICAgLy/liIbnsbt1cmzov4fmu6RcXG4gICAgdmFyIGNVcmxSdWxlID0gW1xcXCJjbGFzc191cmxcXFwiLCBcXFwiYXJlYV91cmxcXFwiLCBcXFwieWVhcl91cmxcXFwiLCBcXFwic29ydF91cmxcXFwiXTtcXG4gICAgLy9Vcmzov4fmu6RcXG4gICAgdmFyIHVybFJ1bGUgPSBbXFxcInVybFxcXCIsIFxcXCJzZWFyY2hfdXJsXFxcIl1cXG4gICAgLy/ku6PnoIHov4fmu6RcXG4gICAgdmFyIGNvZGVSdWxlID0gW1xcXCJmaW5kX3J1bGVcXFwiLCBcXFwic2VhcmNoRmluZFxcXCIsIFxcXCJkZXRhaWxfZmluZF9ydWxlXFxcIiwgXFxcInNkZXRhaWxfZmluZF9ydWxlXFxcIiwgXFxcInByZVJ1bGVcXFwiXTtcXG5cXG4gICAgYmFzaWNzUnVsZS5mb3JFYWNoKHMgPT4ge1xcbiAgICAgICAganNvbkNvZGVbc10gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZShqc29uQ29kZVtzXSwgZmlsdGVyVHlwZSk7XFxuICAgIH0pO1xcblxcbiAgICBjVXJsUnVsZS5mb3JFYWNoKHMgPT4ge1xcbiAgICAgICAganNvbkNvZGVbc10gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZShqc29uQ29kZVtzXSwgNCk7XFxuICAgIH0pXFxuXFxuICAgIHVybFJ1bGUuZm9yRWFjaChzID0+IHtcXG4gICAgICAgIGpzb25Db2RlW3NdID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZmlsdGVyUmVwbGFjZT9ydWxlPeWwj+eoi+W6j+ino+aekFxcXCIpLnJlcGxhY2VVcmwoanNvbkNvZGVbc10pO1xcbiAgICB9KVxcblxcbiAgICBjb2RlUnVsZS5mb3JFYWNoKHMgPT4ge1xcbiAgICAgICAganNvbkNvZGVbc10gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZUNvZGUoanNvbkNvZGVbc10pO1xcbiAgICB9KVxcblxcbiAgICAvL+WvueavlOWFtuS7lumhtemdouS4reeahOS7o+eggei/neemgeivjVxcbiAgICB2YXIgcGFnZUxpc3QgPSBqc29uQ29kZS5wYWdlcztcXG4gICAgLy/lhbzlrrnpg6jliIbmg4XlhrXmnKzlsLHmmK9qc29u5qC85byP55qE6KeE5YiZXFxuICAgIHRyeSB7XFxuICAgICAgICBwYWdlTGlzdCA9IEpTT04ucGFyc2UocGFnZUxpc3QpO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBwYWdlTGlzdCA9IGpzb25Db2RlLnBhZ2VzO1xcbiAgICB9XFxuICAgIGlmIChwYWdlTGlzdCkge1xcbiAgICAgICAgcGFnZUxpc3QuZm9yRWFjaCgocGFnZSkgPT4ge1xcbiAgICAgICAgICAgIC8v5a+55q+U5YW25LuW6aG16Z2i5Lit55qE5ZCN5a2X5Lit55qE6L+d56aB6K+NXFxuICAgICAgICAgICAgdmFyIHBhZ2VOYW1lID0gcGFnZS5uYW1lO1xcbiAgICAgICAgICAgIHBhZ2UubmFtZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2ZpbHRlclJlcGxhY2U/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5yZXBsYWNlKHBhZ2VOYW1lLCBmaWx0ZXJUeXBlKTtcXG4gICAgICAgICAgICAvL+WvueavlOWFtuS7lumhtemdouS4reeahOS7o+eggei/neemgeivjVxcbiAgICAgICAgICAgIHZhciBwYWdlUnVsZSA9IHBhZ2UucnVsZTtcXG4gICAgICAgICAgICBwYWdlLnJ1bGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZUNvZGUocGFnZVJ1bGUpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBqc29uQ29kZS5wYWdlcyA9IHBhZ2VMaXN0O1xcbiAgICB9XFxuICAgIC8v6L+U5Zue6L+H5ruk5ZCO55qE5pWw5o2uXFxuICAgIHJldHVybiBqc29uQ29kZTtcXG59XFxuXFxuLy/ljrvpmaTnl4Xmr5Lku6PnoIFcXG5mdW5jdGlvbiB1cGRhdGVNYXJrcyhqc29uQ29kZSkge1xcblxcbiAgICAvL+S7o+eggei/h+a7pFxcbiAgICB2YXIgY29kZVJ1bGUgPSBbXFxcImZpbmRfcnVsZVxcXCIsIFxcXCJzZWFyY2hGaW5kXFxcIiwgXFxcImRldGFpbF9maW5kX3J1bGVcXFwiLCBcXFwic2RldGFpbF9maW5kX3J1bGVcXFwiLCBcXFwicHJlUnVsZVxcXCJdO1xcbiAgICBjb2RlUnVsZS5mb3JFYWNoKHMgPT4ge1xcbiAgICAgICAganNvbkNvZGVbc10gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZU1hcmtzKGpzb25Db2RlW3NdKTtcXG4gICAgfSlcXG5cXG4gICAgLy/lr7nmr5Tlhbbku5bpobXpnaLkuK3nmoTku6PnoIHov53npoHor41cXG4gICAgdmFyIHBhZ2VMaXN0ID0ganNvbkNvZGUucGFnZXM7XFxuICAgIC8v5YW85a656YOo5YiG5oOF5Ya15pys5bCx5pivanNvbuagvOW8j+eahOinhOWImVxcbiAgICB0cnkge1xcbiAgICAgICAgcGFnZUxpc3QgPSBKU09OLnBhcnNlKHBhZ2VMaXN0KTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgcGFnZUxpc3QgPSBqc29uQ29kZS5wYWdlcztcXG4gICAgfVxcbiAgICBpZiAocGFnZUxpc3QpIHtcXG4gICAgICAgIHBhZ2VMaXN0LmZvckVhY2goKHBhZ2UpID0+IHtcXG4gICAgICAgICAgICAvL+WvueavlOWFtuS7lumhtemdouS4reeahOS7o+eggei/neemgeivjVxcbiAgICAgICAgICAgIHZhciBwYWdlUnVsZSA9IHBhZ2UucnVsZTtcXG4gICAgICAgICAgICBwYWdlLnJ1bGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9maWx0ZXJSZXBsYWNlP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikucmVwbGFjZU1hcmtzKHBhZ2VSdWxlKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAganNvbkNvZGUucGFnZXMgPSBwYWdlTGlzdDtcXG4gICAgfVxcbiAgICByZXR1cm4ganNvbkNvZGU7XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgamlleGksXFxuICAgIHVwZGF0ZVJ1bGUsXFxuICAgIHVwZGF0ZU1hcmtzXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6ZqP5py66aKc6ImyXCIsXCJwYXRoXCI6XCJSYW5kb21Db2xvclwiLFwicnVsZVwiOlwiLy/nlJ/miJDpq5jlr7nmr5TluqbpopzoibJcXG5mdW5jdGlvbiBnZW5lcmF0ZURpc3RpbmN0TGlnaHRIZXhDb2xvcigpIHtcXG4gICAgLy8g56Gu5L+d55Sf5oiQ55qE6aKc6Imy5YC85beu5byC6L6D5aSn5Lul5o+Q6auY5a+55q+U5bqmXFxuICAgIGxldCByID0gTWF0aC5mbG9vcigxMjggKyBNYXRoLnJhbmRvbSgpICogMTI3KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcXG4gICAgbGV0IGcgPSBNYXRoLmZsb29yKChyICUgMiA9PT0gMCkgPyAxMjggKyBNYXRoLnJhbmRvbSgpICogMTI3IDogTWF0aC5yYW5kb20oKSAqIDEyOCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyk7XFxuICAgIGxldCBiID0gTWF0aC5mbG9vcigociAlIDMgPT09IDAgJiYgZyAlIDMgPT09IDApID8gMTI4ICsgTWF0aC5yYW5kb20oKSAqIDEyNyA6IE1hdGgucmFuZG9tKCkgKiAxMjgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpO1xcbiAgICByZXR1cm4gJyMnICsgciArIGcgKyBiO1xcblxcbn1cXG5cXG5mdW5jdGlvbiBnZXRDb2xvcihzdHIsIHR5cGUpIHtcXG4gICAgdmFyIFJHQiA9IGdldEl0ZW0oXFxcInpDb2xvclxcXCIsIFxcXCJcXFwiKSA9PSBcXFwi6ZqP5py6XFxcIiA/IGdlbmVyYXRlRGlzdGluY3RMaWdodEhleENvbG9yKCkgOiBcXFwiI1xcXCIgKyBnZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwiXFxcIik7XFxuICAgIGlmICh0eXBlID09IDApIHsgLy8w5Li65qCH6aKYXFxuICAgICAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmTxzdHJvbmc+PHNwYW4gc3R5bGU9J2NvbG9yOlxcXCIgKyBSR0IgKyBcXFwiJz5cXFwiICsgc3RyICsgXFxcIjwvc3Bhbj48L3N0cm9uZz5cXFwiO1xcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gMSkgeyAvLzHkuLrmma7pgJrmjInpkq5cXG4gICAgICAgIHJldHVybiBcXFwi4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9J2NvbG9yOlxcXCIgKyBSR0IgKyBcXFwiJz5cXFwiICsgc3RyICsgXFxcIjwvc3Bhbj5cXFwiO1xcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgZ2V0Q29sb3JcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnuYHnroDovazmjaJcIixcInBhdGhcIjpcIlRyYW5zbGF0aW9uXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBjaGFyUFlTdHIoKSB7XFxuICAgIHZhciBzdHIgPSBcXFwi57qn5YG355i+5ouN5Y+j5peg54iG5Lym56CB5ZWq57qm5aaH5ZG757+Y6aOe5Y+M5Yq/5LyY5oOF5aa754ix5by65Lym5Lmx6bihXFxcIjtcXG4gICAgcmV0dXJuIHN0clxcbn1cXG5cXG5mdW5jdGlvbiBmdFBZU3RyKCkge1xcbiAgICB2YXIgc3RyID0gXFxcIue0muWBt+eZrui/q+mHpueEoeeIhuWAq+eivOaJkue0hOWppue0s+e/uemjm+mbmeWLouWEquiri+a3kuaEm+W8t+WAq+S6gumbnlxcXCI7XFxuICAgIHJldHVybiBzdHJcXG59XFxuXFxuZnVuY3Rpb24gVHJhZGl0aW9uYWxpemVkKGNjKSB7XFxuICAgIHZhciBzdHIgPSAnJztcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgaWYgKGNoYXJQWVN0cigpLmluZGV4T2YoY2MuY2hhckF0KGkpKSAhPSAtMSlcXG4gICAgICAgICAgICBzdHIgKz0gZnRQWVN0cigpLmNoYXJBdChjaGFyUFlTdHIoKS5pbmRleE9mKGNjLmNoYXJBdChpKSkpO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHN0ciArPSBjYy5jaGFyQXQoaSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIHN0cjtcXG59XFxuXFxuZnVuY3Rpb24gU2ltcGxpemVkKGNjKSB7XFxuICAgIHZhciBzdHIgPSAnJztcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgaWYgKGZ0UFlTdHIoKS5pbmRleE9mKGNjLmNoYXJBdChpKSkgIT0gLTEpXFxuICAgICAgICAgICAgc3RyICs9IGNoYXJQWVN0cigpLmNoYXJBdChmdFBZU3RyKCkuaW5kZXhPZihjYy5jaGFyQXQoaSkpKTtcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICBzdHIgKz0gY2MuY2hhckF0KGkpO1xcbiAgICB9XFxuICAgIHJldHVybiBzdHI7XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgU2ltcGxpemVkLFxcbiAgICBUcmFkaXRpb25hbGl6ZWRcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLoh6rlrprkuYnor43lupNcIixcInBhdGhcIjpcInNldHRpbmdEaWNcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuc2V0UGFnZVRpdGxlKFxcXCLoh6rlrprkuYnor43lupNcXFwiKTtcXG4kLnJlcXVpcmUoXFxcIkN1c3RvbUNvbnZlcnRcXFwiKS5pbml0KCk7XFxuLy/ojrflj5bov53npoHor43liJfooahcXG52YXIgZmlsdGVycyA9ICQucmVxdWlyZShcXFwiZmlsdGVyUmVwbGFjZVxcXCIpLmdldEZpbHRlcnMoKTtcXG4vL+WQr+WKqOWwseivu+WPlnBlaXpoaeaVsOaNrlxcbnZhciBwZWl6aGkgPSByZWFkRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS/lsI/nqIvluo/op6PmnpAvQ3VzdG9tRGljLmpzb25cXFwiKTtcXG4vL+i9rOS4umpzb25cXG5wZWl6aGkgPSBKU09OLnBhcnNlKHBlaXpoaSlcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuivu+WPluW9k+WJjemFjee9rlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKGZpbHRlcnMpID0+IHtcXG4gICAgICAgIC8v6I635Y+W5b2T5YmN6YWN572uXFxuICAgICAgICBpZiAoIWZpbGVFeGlzdChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS/lsI/nqIvluo/op6PmnpAvQ3VzdG9tRGljLmpzb25cXFwiKSkge1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCLkuI3lrZjlnKjlvZPliY3phY3nva5cXFwiKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBwZWl6aGkgPSByZWFkRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS/lsI/nqIvluo/op6PmnpAvQ3VzdG9tRGljLmpzb25cXFwiKTtcXG4gICAgICAgIHBlaXpoaSA9IEpTT04ucGFyc2UocGVpemhpKVxcbiAgICAgICAgLy/ovazkuLptYXDlrZjlgqhcXG4gICAgICAgIHZhciBwZWl6aGlNYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHBlaXpoaSkpXFxuICAgICAgICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBlaXpoaU1hcC5nZXQoZmlsdGVyKTtcXG4gICAgICAgICAgICB2YXIgaXRlbUV4dHJhID0gZmluZEl0ZW0oZmlsdGVyKS5leHRyYTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKGZpbHRlciwge1xcbiAgICAgICAgICAgICAgICBleHRyYTogT2JqZWN0LmFzc2lnbihpdGVtRXh0cmEsIHtcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgZmlsdGVycylcXG59LCB7XFxuICAgIHRpdGxlOiBcXFwi5L+d5a2YXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoZmlsdGVycykgPT4ge1xcbiAgICAgICAgLy/or7vlj5bljp/mnInphY3nva5cXG4gICAgICAgIHZhciBwZWl6aGkgPSByZWFkRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS/lsI/nqIvluo/op6PmnpAvQ3VzdG9tRGljLmpzb25cXFwiKTtcXG4gICAgICAgIC8v6L2s5o2i5Li6anNvbuagvOW8j1xcbiAgICAgICAgcGVpemhpID0gSlNPTi5wYXJzZShwZWl6aGkpXFxuICAgICAgICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldE15VmFyKGZpbHRlcik7XFxuICAgICAgICAgICAgLy/ovpPlhaXlhoXlrrnnmoTmiY3kv67mlLlcXG4gICAgICAgICAgICBpZiAodmFsdWUgIT0gXFxcIlxcXCIgJiYgdmFsdWUgIT0gbnVsbCkge1xcbiAgICAgICAgICAgICAgICBwZWl6aGlbZmlsdGVyXSA9IHZhbHVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBzYXZlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS/lsI/nqIvluo/op6PmnpAvQ3VzdG9tRGljLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShwZWl6aGkpKTtcXG4gICAgICAgIHRvYXN0KFxcXCLkv53lrZjmiJDlip/vvIFcXFwiKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgZmlsdGVycylcXG59KVxcblxcbmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XFxuICAgIHZhciB2YWx1ZSA9IHBlaXpoaVtmaWx0ZXJdO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGZpbHRlcixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogZmlsdGVyLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoZmlsdGVyLCBcXFwiXFxcIikhPVxcXCJcXFwiP2dldE15VmFyKGZpbHRlciwgXFxcIlxcXCIpOnZhbHVlLFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKChmaWx0ZXIpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoZmlsdGVyLCBpbnB1dClcXG4gICAgICAgICAgICB9LCBmaWx0ZXIpXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLoh6rlrprkuYnor43lupPovazmjaJcIixcInBhdGhcIjpcIkN1c3RvbUNvbnZlcnRcIixcInJ1bGVcIjpcImpzOlxcbi8v6Ieq5a6a5LmJ6K+N5bqT5pu/5o2iXFxuZnVuY3Rpb24gY29udmVydChjb250ZW50KSB7XFxuICAgIGluaXQoKTtcXG4gICAgdmFyIGN1c3RvbURpYyA9IHJlYWRGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL+Wwj+eoi+W6j+ino+aekC9DdXN0b21EaWMuanNvblxcXCIpO1xcbiAgICBjdXN0b21EaWMgPSBKU09OLnBhcnNlKGN1c3RvbURpYyk7XFxuICAgIHJldHVybiBjdXN0b21EaWNbY29udGVudF07XFxufVxcblxcbmZ1bmN0aW9uIGluaXQoKSB7XFxuICAgIC8v5Yid5aeL5YyW6Ieq5a6a576p6Kme5bqrXFxuICAgIGlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL+Wwj+eoi+W6j+ino+aekC9DdXN0b21EaWMuanNvblxcXCIpKSB7XFxuICAgICAgICB2YXIgc3RyID0gXFxcImV5TG1nS2ZubUw0aU9pTG1nS2ZubWE0aUxDSlQ1N3FuSWpvaVUrZTBtaUlzSXVXQnQrYUxqU0k2SXVXQnQrYUxqU0lzSXVhWG9PZWdnU0k2SXVlRW9lZWl2Q0lzSXVhY2llZWdnU0k2SXVhY2llZWl2Q0lzSXVXUG8rZUloaUk2SXVtSHB1ZUloaUlzSXVTOHB1ZVFoaUk2SXVXQXErZVFoaUlzSXVXVnF1V1ZxaUk2SXVhSmt1YUpraUlzSXVlNnB1ZUNyaUk2SXVlMGhPZUNyaUlzSXVXd2tlV21oeUk2SXVXd2tlV3BwaUlzSXVlL21PaUhnQ0k2SXVlL3VlaUhnQ0lzSXVXUnUrV1FueUk2SXVlMHMrV1FueUlzSXVXUGpPbWpuaUk2SXVtYm1lbWpteUlzSXVXbnYrV0t2eUk2SXVXbnYrV0xvaUlzSXVhRGhlaUpzaUk2SXVpcmkraUpzaUlzSXVXbHMrUzhtQ0k2SXVXbHMrV0VxaUlzSXVTNnV1V211eUk2SXVTNnV1YTNraUlzSXVhQXArZUlzU0k2SXVhQXArYUVteUlzSXVTNXNlUzhwaUk2SXVTNmd1V0FxeUlzSXVXOHV1V2x1Q0k2SXVXOHQrV25waUlzSXVtNG9lVzN0Q0k2SXVtYm51VzN0Q0o5XFxcIjtcXG4gICAgICAgIHN0ciA9IGJhc2U2NERlY29kZShzdHIpO1xcbiAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUv5bCP56iL5bqP6Kej5p6QL0N1c3RvbURpYy5qc29uXFxcIiwgc3RyKVxcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgaW5pdCxcXG4gICAgY29udmVydCxcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLluK7liqnmlofmoaPpobXpnaJcIixcInBhdGhcIjpcImhlbHBzXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnNldFBhZ2VUaXRsZShcXFwi5biu5Yqp5paH5qGjXFxcIik7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hlbHBEb2MnKSkucnVsZSxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWs5byAQVBJXCIsXCJwYXRoXCI6XCJPcGVuQVBJXCIsXCJydWxlXCI6XCJqczpcXG5mdW5jdGlvbiBqaWV4aShjb2RlLCBmaWx0ZXJUeXBlLCBmb3JtYXQpIHtcXG4gICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogMDtcXG4gICAgZmlsdGVyVHlwZSA9IGZpbHRlclR5cGUgPyBmaWx0ZXJUeXBlIDogMFxcbiAgICAvL+WinuWKoOWIpOaWrSDpnZ7lsI/nqIvluo/kuI3ov4fmu6RcXG4gICAgaWYgKC9cXFxc77+lcGFnZV9kZXRhaWxcXFxc77+lfFxcXFzvv6Vqc191cmxcXFxc77+lLy50ZXN0KGNvZGUpKSB7XFxuICAgICAgICByZXR1cm4gY29kZVxcbiAgICB9XFxuICAgIC8v5Yik5pat5piv5ZCm5Li65LqR57KY6LS05p2/ICAgIFxcbiAgICBpZiAoL+S6kVxcXFxkKy8udGVzdChjb2RlKSkge1xcbiAgICAgICAgLy/kvb/nlKjmm7TlrozlloTnmoTliKTmlq3mlrnlvI9cXG4gICAgICAgIHZhciBpc195dW5Db2RlID0gY29kZS5yZXBsYWNlQWxsKFxcXCIgXFxcIiwgXFxcIlxcXCIpLnN1YnN0cmluZygwLCAyKTtcXG4gICAgICAgIGlmICgv5LqRXFxcXGQrLy50ZXN0KGlzX3l1bkNvZGUpKSB7XFxuICAgICAgICAgICAgdmFyIHN0ckxlbmd0aCA9IDJcXG4gICAgICAgICAgICAvL+WIpOaWreS6kTEw5YiZ6I635Y+W6ZO+5o6l5YmN5LiJ5L2N5a2X56ymXFxuICAgICAgICAgICAgaWYgKGNvZGUubWF0Y2goL+S6kVxcXFxkKy8pID09IFxcXCLkupExMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgc3RyTGVuZ3RoID0gM1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlQWxsKFxcXCIgXFxcIiwgXFxcIlxcXCIpOyAvL+WOu+mZpOepuuagvOS/neivgeS4jeS8muaKpemUmVxcbiAgICAgICAgICAgIGNvZGVzID0gY29kZS5zcGxpdChcXFwi5bCP56iL5bqPXFxcIik7IC8v5LuF5L+d55WZ6ZO+5o6lXFxuICAgICAgICAgICAgY29kZSA9IGNvZGVzWzBdO1xcbiAgICAgICAgICAgIHl1blR5cGUgPSBjb2RlLnN1YnN0cmluZygwLCBzdHJMZW5ndGgpLnJlcGxhY2UoXFxcIuS6kVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICBjb2RlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvcGFzdGVtZT9ydWxlPeWwj+eoi+W6j+ino+aekFxcXCIpLmppZXhpKGNvZGUsIHl1blR5cGUpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHZhciByZXN1bHQgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9SdWxlamlleGk/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5qaWV4aShjb2RlKTtcXG4gICAgaWYgKHJlc3VsdC5jb2RlID09IDIwMCkge1xcbiAgICAgICAgZW5jb2RlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvUnVsZWppZXhpP3J1bGU95bCP56iL5bqP6Kej5p6QXFxcIikudXBkYXRlUnVsZShyZXN1bHQuYm9keSwgZmlsdGVyVHlwZSk7XFxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvZGUgPT0gMzAwKSB7XFxuICAgICAgICBlbmNvZGUgPSByZXN1bHQuYm9keTtcXG4gICAgfSBcXG4gICAgLy/moLzlvI/ljJbov5Tlm57nsbvlnotcXG4gICAgaWYgKGZvcm1hdCA9PSAwKSB7XFxuICAgICAgICByZXR1cm4gZW5jb2RlO1xcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAxKSB7XFxuICAgICAgICByZXR1cm4gXFxcIua1t+mYlOinhueVjO+/pWhvbWVfcnVsZe+/pVxcXCIgKyBKU09OLnN0cmluZ2lmeShlbmNvZGUpO1xcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAyKSB7XFxuICAgICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKFxcXCLmtbfpmJTop4bnlYzvv6Vob21lX3J1bGXvv6VcXFwiICsgSlNPTi5zdHJpbmdpZnkoZW5jb2RlKSk7XFxuICAgIH1cXG59XFxuXFxuJC5leHBvcnRzID0ge1xcbiAgICBqaWV4aVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW4ruWKqeaWh+aho1wiLFwicGF0aFwiOlwiaGVscERvY1wiLFwicnVsZVwiOlwiPGgxPuW4ruWKqeaWh+ahozxoMT5cXG48ZGl2PlxcbjxwPlxcbjxzdHJvbmc+5bCP56iL5bqP57G75Z6L77yaPC9zdHJvbmc+PGJyLz5cXG7pu5jorqTvvJrmlK/mjIHlsI/nqIvluo/mmI7mlofmiJZiYXNlNjTlr4bmlofvvIzmnIDlpb0o5Y+v5LiN5bimKeW4puacieWIhuS6q+WktO+8jOS4lOW3suaUr+aMgeiHquWKqOivhuWIq+S6keWJqui0tOadvzxici8+XFxu5ZCI6ZuG77ya5pSv5oyB5ZCI6ZuG5piO5paH77yM6ZyA6KaB5pivanNvbuagvOW8jzxici8+XFxu5pSv5oyB6L+c56iL6ZO+5o6l77yM6ZyA6KaBaHR0cDovL+aIlmh0dHBzOi8vPGJyLz5cXG7mlK/mjIHmnKzlnLDpk77mjqXvvIzpnIDopoFmaWxlOi8v5oiWL3N0b3JhZ2UvIC9zZGNhcmQv5byA5aS0XFxuPC9wPlxcbjxwPlxcbjxwPlxcbjxzdHJvbmc+6L+H5ruk5qih5byP77yaPC9zdHJvbmc+PGJyLz5cXG7mj5LlrZfnrKbvvJrov53npoHor43kuK3pl7Tmj5LlrZfnrKbvvIzlj6/lnKjoh6rlrprkuYnorr7nva7kuK3mm7TmlLk8YnIvPlxcbue5geS9k+Wtl++8muWwhui/neemgeivjeabv+aNouS4uue5geS9k+Wtl++8jOWPr+WcqOiHquWumuS5ieiuvue9ruS4reabtOaUuTxici8+XFxu6Ieq5a6a5LmJ77ya6Ieq5a6a5LmJ5a2X5bqT77yM6buY6K6k57mB5L2T77yM5Y+v5Zyo6Ieq5a6a5LmJ6K6+572u5Lit5pu05pS5PGJyLz5cXG4o5Lul5LiK6L+H5ruk5pa55byP5LuF6YCC55So5LqO5ZCE56eN5ZCN56ewIOS7o+eggeW3suW8uuWItnVuaee8lueggSDliIbnsbt1cmzlj4p1cmzlt7LlvLrliLZVUknnvJbnoIEpXFxuPC9wPlxcbjxoMj7nrKzkuInmlrnlsI/nqIvluo/mlrnms5XosIPnlKg8L2gyPlxcbjxwcmU+XFxuPGNvZGU+XFxuLypcXG7lj4LmlbDor7TmmI5cXG5jb2RlIOato+aWhyDlrZfnrKbkuLIg5b+F5aGrIOWPr+i+k+WFpea1t+mYlOagh+WHhuWIhuS6q+agvOW8jyjmmI7mloflj4piYXNlNjQp5Y+K5LqR57KY6LS05p2/XFxuZmlsdGVyVHlwZSDov4fmu6Tnsbvlnosg5Y+v6YCJIOm7mOiupOS4uuaPkuWtl+espiAwOuaPkuWtl+espiAxOue5geS9k+WtlyAyOuiHquWumuS5iVxcbmZvcm1hdCDmoLzlvI/ljJYg5Y+v6YCJIOS4jeWGmSBpbnTnsbvlnosg6buY6K6k5Li6anNvbuWtl+espuS4siAwOuWwj+eoi+W6j2pzb27lrZfnrKbkuLIgMTrmtbfpmJTliIbkuqvlsI/nqIvluo/moIflh4bmoLzlvI8gMjpiYXNlNjTliqDlr4blkI7nmoTmoIflh4bliIbkuqvmoLzlvI9cXG4qL1xcbi8qXFxu6L+U5Zue5pWw5o2u57G75Z6LIOWwj+eoi+W6j+WvvOWFpeinhOWImVxcbiovXFxuLy/mlrnlvI8xIOi/lOWbnuWwj+eoi+W6j2pzb24g5YGH6K6+Zm9ybWF05Li6MFxcbnZhciBydWxlSnNvbiA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL09wZW5BUEk/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5qaWV4aShjb2RlLGZpbHRlclR5cGUsIGZvcm1hdClcXG5yZXR1cm4gXFxcInJ1bGU6Ly9cXFwiICsgYmFzZTY0RW5jb2RlKFxcXCLmtbfpmJTop4bnlYzvv6Vob21lX3J1bGXvv6VcXFwiICsgcnVsZUpzb24pO1xcblxcbi8v5pa55byPMiDnm7TmjqXosIPnlKjmtbfpmJTlr7zlhaXlsI/nqIvluo8g5YGH6K6+Zm9ybWF05Li6MVxcbnJldHVybiBcXFwicnVsZTsvL1xcXCIgKyBiYXNlNjRFbmNvZGUoJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvT3BlbkFQST9ydWxlPeWwj+eoi+W6j+ino+aekFxcXCIpLmppZXhpKGNvZGUsZmlsdGVyVHlwZSwgZm9ybWF0KSk7XFxuLy/mlrnlvI8yIOesrOS6jOenjSDlgYforr5mb3JtYXTkuLoyXFxucmV0dXJuIFxcXCJydWxlOy8vXFxcIiArICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL09wZW5BUEk/cnVsZT3lsI/nqIvluo/op6PmnpBcXFwiKS5qaWV4aShjb2RlLGZpbHRlclR5cGUsIGZvcm1hdCk7XFxuXFxuLy/mlrnlvI8zIOajgOa1i+aYr+WQpuWtmOWcqOWwj+eoi+W6j+ino+aekOWQjuWGjeaJp+ihjCDlgYforr5mb3JtYXTkuLoyXFxudmFyIHJ1bGVUb1N0cmluZyA9IGZldGNoKFxcXCJoaWtlcjovL2hvbWVA5bCP56iL5bqP6Kej5p6QXFxcIik7XFxuaWYgKHJ1bGVUb1N0cmluZyAhPSBudWxsICYmIHJ1bGVUb1N0cmluZyAhPSBcXFwiXFxcIikge1xcbiAgICByZXR1cm4gXFxcInJ1bGU7Ly9cXFwiICsgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvT3BlbkFQST9ydWxlPeWwj+eoi+W6j+ino+aekFxcXCIpLmppZXhpKGNvZGUsZmlsdGVyVHlwZSwgZm9ybWF0KTtcXG59IGVsc2Uge1xcbiAgICByZXR1cm4g5Y6f5p2l55qE5pWw5o2uXFxufVxcbjwvY29kZT5cXG48L3ByZT5cXG48L2Rpdj5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkFFU+WKoOino+WvhuW3peWFt1wiLFwicGF0aFwiOlwiQUVTVXRpbHNcIixcInJ1bGVcIjpcImNvbnN0IENJUEhFUl9BTEdPUklUSE0gPSAnQUVTL0VDQi9QS0NTNVBhZGRpbmcnO1xcbmNvbnN0IERFRkFVTFRfVkFMVUUgPSAnMCc7XFxuY29uc3QgU0VDUkVUX0tFWV9MRU5HVEggPSAzMjtcXG5jb25zdCBDSEFSU0VUX1VURjggPSAndXRmLTgnO1xcbmV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuXFxuZnVuY3Rpb24gZW5jcnlwdChzZWNyZXRLZXksIGRhdGEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGNvbnN0IGtleSA9IGdldFNlY3JldEtleShzZWNyZXRLZXkpO1xcbiAgICAgICAgY29uc3QgY2lwaGVyID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoZGF0YSksIGtleSwge1xcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxcbiAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKGNpcGhlci5jaXBoZXJ0ZXh0KTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgaGFuZGxlRXhjZXB0aW9uKGUpO1xcbiAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG59O1xcblxcbmZ1bmN0aW9uIGRlY3J5cHQoc2VjcmV0S2V5LCBiYXNlNjREYXRhKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBjb25zdCBrZXkgPSBnZXRTZWNyZXRLZXkoc2VjcmV0S2V5KTtcXG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGJhc2U2NERhdGEpO1xcbiAgICAgICAgY29uc3QgY2lwaGVyUGFyYW1zID0gQ3J5cHRvSlMubGliLkNpcGhlclBhcmFtcy5jcmVhdGUoe1xcbiAgICAgICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5IZXgucGFyc2UoZGVjb2RlZERhdGEudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCkpXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNpcGhlclBhcmFtcywga2V5LCB7XFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBoYW5kbGVFeGNlcHRpb24oZSk7XFxuICAgICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbn07XFxuXFxuZnVuY3Rpb24gZ2V0U2VjcmV0S2V5KHNlY3JldEtleSkge1xcbiAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodG9NYWtlS2V5KHNlY3JldEtleSwgU0VDUkVUX0tFWV9MRU5HVEgsIERFRkFVTFRfVkFMVUUpKTtcXG59O1xcblxcbmZ1bmN0aW9uIHRvTWFrZUtleShzZWNyZXRLZXksIGxlbmd0aCwgdGV4dCkge1xcbiAgICBpZiAoc2VjcmV0S2V5Lmxlbmd0aCA+PSBsZW5ndGgpIHtcXG4gICAgICAgIHJldHVybiBzZWNyZXRLZXk7XFxuICAgIH1cXG4gICAgbGV0IHBhZGRlZEtleSA9IHNlY3JldEtleTtcXG4gICAgd2hpbGUgKHBhZGRlZEtleS5sZW5ndGggPCBsZW5ndGgpIHtcXG4gICAgICAgIHBhZGRlZEtleSArPSB0ZXh0O1xcbiAgICB9XFxuICAgIHJldHVybiBwYWRkZWRLZXk7XFxufTtcXG5cXG5mdW5jdGlvbiBiYXNlNjREZWNvZGUoZGF0YSkge1xcbiAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShkYXRhKTtcXG59O1xcblxcbmZ1bmN0aW9uIGJhc2U2NEVuY29kZShkYXRhKSB7XFxuICAgIHJldHVybiBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGRhdGEudG9TdHJpbmcoKSkpO1xcbn07XFxuXFxuZnVuY3Rpb24gaGFuZGxlRXhjZXB0aW9uKGUpIHtcXG4gICAgY29uc29sZS5lcnJvcihcXFwiRXJyb3I6IFxcXCIsIGUpO1xcbn07XFxuJC5leHBvcnRzID0ge1xcbiAgICBlbmNyeXB0LFxcbiAgICBkZWNyeXB0LFxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG4vL+WbvueJh+WIl+ihqFxcbnZhciBpbWdMaXN0ID0gW1xcbiAgICBcXFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJ6ZEdGdVpHRnNiMjVsUFNKdWJ5SS9QandoUkU5RFZGbFFSU0J6ZG1jZ1VGVkNURWxESUNJdEx5OVhNME12TDBSVVJDQlRWa2NnTVM0eEx5OUZUaUlnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSStQSE4yWnlCMFBTSXhOalF3TnpRNE9ETXhPREF6SWlCamJHRnpjejBpYVdOdmJpSWdkbWxsZDBKdmVEMGlNQ0F3SURFd01qUWdNVEF5TkNJZ2RtVnljMmx2YmowaU1TNHhJaUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSEF0YVdROUlqSTNOak00SWlCNGJXeHVjenA0YkdsdWF6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M5NGJHbHVheUlnZDJsa2RHZzlJalV3SWlCb1pXbG5hSFE5SWpVd0lqNDhaR1ZtY3o0OGMzUjViR1VnZEhsd1pUMGlkR1Y0ZEM5amMzTWlQand2YzNSNWJHVStQQzlrWldaelBqeHdZWFJvSUdROUlrMHlMakkwSURVeE1TNDROelpqTUNBeE5qa3VPVFV5TURBd01ERWdNVE0zTGpjM0lETXdOeTQzTWpjZ016QTNMamN5TkNBek1EY3VOekkzYkRRd05DNHlNelVnTUdNeE5qa3VPVFUxSURBZ016QTNMamN5TkMweE16Y3VOemMxSURNd055NDNNalF0TXpBM0xqY3lOM010TVRNM0xqYzNMVE13Tnk0M01qUXRNekEzTGpjeU5EQXdNREF4TFRNd055NDNNalJzTFRRd05DNHlNelE1T1RrNU9TQXdZeTB4TmprdU9UVTFJREF0TXpBM0xqY3lOQ0F4TXpjdU56Y3lMVE13Tnk0M01qUWdNekEzTGpjeU5IcE5NekF1TXpRMUlEVXhNUzR5TWpsak1DMHhOVFF1TWpNMklERXlOUzR3TXkweU56a3VNalkzSURJM09TNHlOamt0TWpjNUxqSTJPQ0F4TlRRdU1qTWdNQ0F5TnprdU1qWTBJREV5TlM0d015QXlOemt1TWpZMElESTNPUzR5TmpjZ01DQXhOVFF1TWpRdE1USTFMakF6TlNBeU56a3VNalk1TFRJM09TNHlOak1nTWpjNUxqSTJPUzB4TlRRdU1qTTRJREF0TWpjNUxqSTJPUzB4TWpVdU1ETXhMVEkzT1M0eU5qa3RNamM1TGpJMk9Yb2lJR1pwYkd3OUlpTTVPVGs1T1RraUlIQXRhV1E5SWpJM05qTTVJajQ4TDNCaGRHZytQQzl6ZG1jK1xcXCIsXFxuICAgIFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQnpkR0Z1WkdGc2IyNWxQU0p1YnlJL1Bqd2hSRTlEVkZsUVJTQnpkbWNnVUZWQ1RFbERJQ0l0THk5WE0wTXZMMFJVUkNCVFZrY2dNUzR4THk5RlRpSWdJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MMGR5WVhCb2FXTnpMMU5XUnk4eExqRXZSRlJFTDNOMlp6RXhMbVIwWkNJK1BITjJaeUIwUFNJeE5qUXdOelE0TkRNMU5EQXpJaUJqYkdGemN6MGlhV052YmlJZ2RtbGxkMEp2ZUQwaU1DQXdJREV3TWpRZ01UQXlOQ0lnZG1WeWMybHZiajBpTVM0eElpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIQXRhV1E5SWpJM05EazFJaUI0Yld4dWN6cDRiR2x1YXowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5SWdkMmxrZEdnOUlqVXdJaUJvWldsbmFIUTlJalV3SWo0OFpHVm1jejQ4YzNSNWJHVWdkSGx3WlQwaWRHVjRkQzlqYzNNaVBqd3ZjM1I1YkdVK1BDOWtaV1p6UGp4d1lYUm9JR1E5SWsweE1ESXhMamMySURVeE1pNHhNalJqTUMweE5qa3VPVFV5TFRFek55NDNOeTB6TURjdU56STNMVE13Tnk0M01qUXRNekEzTGpjeU4wZ3pNRGt1T0RBeFl5MHhOamt1T1RVMUlEQXRNekEzTGpjeU5DQXhNemN1TnpjMUxUTXdOeTQzTWpRZ016QTNMamN5TjNNeE16Y3VOemNnTXpBM0xqY3lOQ0F6TURjdU56STBJRE13Tnk0M01qUm9OREEwTGpJek5XTXhOamt1T1RVMUlEQWdNekEzTGpjeU5DMHhNemN1TnpjeUlETXdOeTQzTWpRdE16QTNMamN5TkhvZ2JTMHlPQzR4TURVZ01DNDJORGRqTUNBeE5UUXVNak0yTFRFeU5TNHdNeUF5TnprdU1qWTNMVEkzT1M0eU5qa2dNamM1TGpJMk9DMHhOVFF1TWpNZ01DMHlOemt1TWpZMExURXlOUzR3TXkweU56a3VNalkwTFRJM09TNHlOamNnTUMweE5UUXVNalFnTVRJMUxqQXpOUzB5TnprdU1qWTVJREkzT1M0eU5qTXRNamM1TGpJMk9TQXhOVFF1TWpNNElEQWdNamM1TGpJMk9TQXhNalV1TURNeElESTNPUzR5TmprZ01qYzVMakkyT1hvaUlHWnBiR3c5SWlNME5VUkNOVVVpSUhBdGFXUTlJakkzTkRrMklqNDhMM0JoZEdnK1BDOXpkbWMrXFxcIixcXG4gICAgXFxcImRhdGE6aW1hZ2Uvd2VicDtiYXNlNjQsVWtsR1Jsd0FBQUJYUlVKUVZsQTRURkFBQUFBdmQ4QWRFQmNnRUVoaHF5d1FTR0dyTEJCSVlhc3NKRWpZN20xTHdIOFZGRVdTNG1BQ0UrZ0JqeFJDdytYNGlPaS8wYlp0WWx3MjdRajRYS2k1S0k3RmhlTldQRHNFcFJjN3F5N1dKL3hiQUE9PVxcXCIsXFxuICAgIFxcXCJkYXRhOmltYWdlL3dlYnA7YmFzZTY0LFVrbEdSaUFCQUFCWFJVSlFWbEE0VEJRQkFBQXZkOEFkRUdkZ2tHMms3a3plMy9FNURLUnRrODdKL1hzOEJ0SzJTZWZrL2owZVZaRnRVQmNCWGoxRU1Ob283MDhBRThEZGJSVUlGTFFTSFBML3YycjR0Z0hjU0xKZEsrZHJhVWxMbnkvUitIaUU4Q1A0RUFrQllVRUNQSmVzcUh2dVhXclgveFhSZjBadUl5bktncGRQK0FhNzZqTTgvK0krRzd5K1IwUFV6K2FGNTUxWHFMbC9OV2k2LzRGMHAzRjBSOHpkL1pYVnhSTkliOUYySEJMSXN4a1hMQmNvR3lRYklKK3lmSW9xS0ttZ29JWmNEWmtpTWtWRVZVUTFSRVY5cEhxcTVxbUtHbnhOK1dnb015QXpvdko4U0toc1hRSWl6UUlpelNJaU0wVG1TQ3dnc1lUQUltemI2SFBNOVIxK2p1a2l5SXFZUnhFVmJ5VUpZQjQ0VHlJcTRvWGVEQTR6NWszWitNZHZvbDMxR1F3PVxcXCJcXG5dO1xcblxcbi8v6ZqP5py66aKc6ImyXFxuZnVuY3Rpb24gZ2V0Q29sb3Ioc3RyLCB0eXBlKSB7XFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3Ioc3RyLCB0eXBlKTtcXG59XFxuXFxuLy/ojrflj5bliarotLTmnb/lhoXlrrkg5Luj56CB5p2l6Ieq77ya5LqR55uY5ZCbLueugFxcbmZ1bmN0aW9uIGdldENsaXBib2FyZFRleHQoKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBjb25zdCBDb250ZXh0ID0gYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7XFxuICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q3VycmVudEFjdGl2aXR5KCk7XFxuICAgICAgICAvLyDojrflj5bns7vnu5/liarotLTmnb9cXG4gICAgICAgIGxldCBjbGlwYm9hcmQgPSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5DTElQQk9BUkRfU0VSVklDRSk7XFxuICAgICAgICAvLyDov5Tlm57mlbDmja5cXG4gICAgICAgIGxldCBjbGlwRGF0YSA9IGNsaXBib2FyZC5nZXRQcmltYXJ5Q2xpcCgpO1xcbiAgICAgICAgaWYgKGNsaXBEYXRhICE9IG51bGwgJiYgY2xpcERhdGEuZ2V0SXRlbUNvdW50KCkgPiAwKSB7XFxuICAgICAgICAgICAgLy8g5LuO5pWw5o2u6ZuG5Lit6I635Y+W77yI57KY6LS077yJ56ys5LiA5p2h5paH5pys5pWw5o2uXFxuICAgICAgICAgICAgbGV0IHRleHQgPSBjbGlwRGF0YS5nZXRJdGVtQXQoMCkuZ2V0VGV4dCgpO1xcbiAgICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh0ZXh0LnRvU3RyaW5nKCkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBudWxsO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbn1cXG5cXG5sZXQgdGV4dCA9IGdldENsaXBib2FyZFRleHQoKSB8fCBcXFwiXFxcIjtcXG5sZXQgdXJsID0gKHRleHQuaW5jbHVkZXMoXFxcIu+/pWJhc2U2NFxcXCIpIHx8IHRleHQuaW5jbHVkZXMoXFxcIu+/pWhvbWVfcnVsZVxcXCIpIHx8IHRleHQudHJpbSgpLnN0YXJ0c1dpdGgoXFxcIuS6kVxcXCIpKSA/IHRleHQgOiBcXFwiXFxcIjtcXG5pZiAodXJsKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0Q29sb3IoXFxcIuajgOa1i+WIsOWJqui0tOadv+WQq+acieWwj+eoi+W6j+aYr+WQpuWvvOWFpT9cXFxcblxcXCIgKyB1cmwsIDEpLnJlcGxhY2UoXFxcIuKAmOKAmOKAmeKAmVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgIGltZzogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fY2xvdWQ2XFxcIixcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJjb2RlXFxcIiwge1xcbiAgICAgICAgICAgICAgICBleHRyYTogT2JqZWN0LmFzc2lnbihmaW5kSXRlbShcXFwiY29kZVxcXCIpLmV4dHJhLCB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGlucHV0LnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9LCB1cmwpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiXFxuICAgIH0pO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogZ2V0Q29sb3IoXFxcIuexu+Wei++8mlxcXCIgKyBnZXRJdGVtKFxcXCJ0eXBlTmFtZVxcXCIsIFxcXCLpu5jorqRcXFwiKSwgMSksXFxuICAgIHVybDogXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICB0aXRsZTogXFxcIuWwj+eoi+W6j+exu+Wei+iuvue9rlxcXCIsXFxuICAgICAgICBvcHRpb25zOiBbXFxcIuexu+Wei++8mum7mOiupFxcXCIsIFxcXCLnsbvlnovvvJrlkIjpm4ZcXFwiXSxcXG4gICAgICAgIGNvbDogMixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXFxcIuexu+Wei++8mlxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJ0eXBlTmFtZVxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIum7mOiupFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwieXVuVHlwZVxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5ZCI6ZuGXFxcIikge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ5dW5UeXBlXFxcIiwgXFxcIi0xXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInl1blR5cGVcXFwiLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3IoXFxcIuexu+Wei++8mlxcXCIgKyBpbnB1dCwgMSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX21lbnU2XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwieXVuVHlwZVxcXCJcXG4gICAgfVxcbn0sIHtcXG4gICAgdGl0bGU6IGdldENvbG9yKFxcXCLmqKHlvI/vvJpcXFwiICsgZ2V0SXRlbShcXFwiZmlsdGVyTmFtZVxcXCIsIFxcXCLmj5LlrZfnrKZcXFwiKSwgMSksXFxuICAgIHVybDogXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICB0aXRsZTogXFxcIui/h+a7pOaooeW8j+iuvue9rlxcXCIsXFxuICAgICAgICBvcHRpb25zOiBbXFxcIuaooeW8j++8muaPkuWtl+esplxcXCIsIFxcXCLmqKHlvI/vvJrovaznuYHkvZNcXFwiLCBcXFwi5qih5byP77ya6Ieq5a6a5LmJXFxcIiwgXFxcIuiuvue9rlxcXCJdLFxcbiAgICAgICAgY29sOiAyLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCLmqKHlvI/vvJpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoXFxcIuaooeW8j++8mlxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZmlsdGVyTmFtZVxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiZmlsdGVyVHlwZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3IoXFxcIuaooeW8j++8mlxcXCIgKyBpbnB1dCwgMSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5o+S5a2X56ymXFxcIikge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJmaWx0ZXJUeXBlXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLovaznuYHkvZNcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImZpbHRlclR5cGVcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuiHquWumuS5iVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZmlsdGVyVHlwZVxcXCIsIFxcXCIyXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6K6+572uXFxcIikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiuvue9rlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXFxcIuiHquWumuS5ieaPkuWtl+espuWGheWuuVxcXCIsIFxcXCLoh6rlrprkuYnor43lupNcXFwiLCBcXFwi5Li76aKY6aOO5qC8XFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICBjb2w6IDEsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLoh6rlrprkuYnmj5LlrZfnrKblhoXlrrlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGdldEl0ZW0oXFxcImluZW1wdHlcXFwiLCBcXFwi4oCLXFxcIiksIFxcXCLor7fovpPlhaXpnIDopoHmj5LlhaXnmoTlrZfnrKZcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJpbmVtcHR5XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YaF5a655LiN6IO95Li656m6XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLoh6rlrprkuYnor43lupNcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6JC5yZXF1aXJlKCdzZXR0aW5nRGljJylcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuS4u+mimOmjjuagvFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLkuLvpopjpo47moLxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xcXCLpu5jorqRcXFwiLCBcXFwi6ZqP5py66ImyXFxcIiwgXFxcIuiNp+WFiee7v1xcXCIsIFxcXCLlk5Tlk6nnsolcXFwiLCBcXFwi5Lit5Zu957qiXFxcIiwgXFxcIuiHquWumuS5iVxcXCJdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiAyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6buY6K6kXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6ZqP5py66ImyXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwi6ZqP5py6XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6I2n5YWJ57u/XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwiMDBDNTY5XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5ZOU5ZOp57KJXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwiRkE3Mjk4XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5Lit5Zu957qiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+iJsuWPt+adpeiHque9kee7nOafpeivolxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwiRTYwMDEyXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6Ieq5a6a5LmJXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChnZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBcXFwizZtcXFwiKSwgXFxcIuivt+i+k+WFpemcgOimgeeahOS4u+mimOiJsijljYHlha3ov5vliLbpopzoibLvvIzlj6/kuI3luKYj5Y+3KVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXiM/W0EtWmEtejAtOV0rJC8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ6Q29sb3JcXFwiLCBpbnB1dC5yZXBsYWNlKFxcXCIjXFxcIiwgXFxcIlxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5LiN6KaB5Lmx5aGrXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouS4ulxcXCIgKyBpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX3NldHRpbmc2XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwiZmlsdGVyVHlwZVxcXCJcXG4gICAgfVxcbn0pO1xcblxcbi8v5pys5Zyw5paH5Lu26K+75Y+WXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLpgInmi6nmlofku7ZcXFwiLFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCJmaWxlU2VsZWN0Oi8vJC5yZXF1aXJlKFxcXFxcXFwiZmlsZVNlbGVjdFxcXFxcXFwiKS5maWxlU2VsZWN0KGlucHV0KVxcXCI7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIuivt+mAieaLqeaWh+S7tlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImZpbGVTZWxlY3RcXFwiLFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJmaWxlU2VsZWN0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJmaWxlU2VsZWN0XFxcIiwgXFxcIi9zdG9yYWdlL2VtdWxhdGVkLzAvXFxcIiksXFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFxcXCIjNjY2NjY2XFxcIlxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldENvbG9yKFxcXCLmm7TlpJrorr7nva5cXFwiLCAxKS5yZXBsYWNlKFxcXCLigJjigJjigJnigJlcXFwiLCBcXFwiXFxcIiksXFxuICAgIGltZzogaW1nTGlzdFsyXSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpbWdMaXN0KSA9PiB7XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcIk1vcmVTZXR0aW5nc1xcXCIsIFxcXCIwXFxcIikgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKFxcXCJNb3JlU2V0dGluZ3NcXFwiLCBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJC5yZXF1aXJlKFxcXCJSYW5kb21Db2xvclxcXCIpLmdldENvbG9yKFxcXCLlvLrliLbop6PmnpAo5LiN5qOA5p+l5piv5ZCm5a2Y5Zyo6L+d56aB6K+NKVxcXCIsIDEpLnJlcGxhY2UoXFxcIuKAmOKAmOKAmeKAmVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICAgICAgaW1nOiBnZXRJdGVtKFxcXCJxel9tb2Rlc1xcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIiA/IGltZ0xpc3RbMF0gOiBpbWdMaXN0WzFdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKG9iaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcInF6X21vZGVzXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwicXpfbW9kZXNcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInF6X21vZGVzXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IG9iai5pbWdMaXN0WzFdXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcXFwicXpfbW9kZXNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJxel9tb2Rlc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBvYmouaW1nTGlzdFswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGltZ0xpc3RcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwicXpfbW9kZXNcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3IoXFxcIuino+WvhmV2YWxQcml2YXRlSlNcXFwiLCAxKS5yZXBsYWNlKFxcXCLigJjigJjigJnigJlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgICAgIGltZzogZ2V0SXRlbShcXFwiZGVfZXZhbFByaXZhdGVKU1xcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIiA/IGltZ0xpc3RbMF0gOiBpbWdMaXN0WzFdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKG9iaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJkZV9ldmFsUHJpdmF0ZUpTXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJkZV9ldmFsUHJpdmF0ZUpTXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IG9iai5pbWdMaXN0WzFdXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcXFwiZGVfZXZhbFByaXZhdGVKU1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImRlX2V2YWxQcml2YXRlSlNcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogb2JqLmltZ0xpc3RbMF1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBpbWdMaXN0XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogXFxcImRlX2V2YWxQcml2YXRlSlNcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3IoXFxcIui/mOWOn+WKoOWvhijov5jljp/liLDmnIDliJ3nmoTliqDlr4bnirbmgIEpXFxcIiwgMSkucmVwbGFjZShcXFwi4oCY4oCY4oCZ4oCZXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgICAgICBpbWc6IGdldEl0ZW0oXFxcInJlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiMVxcXCIpID09IFxcXCIwXFxcIiA/IGltZ0xpc3RbMF0gOiBpbWdMaXN0WzFdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKG9iaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5q2k5Yqf6IO95byA5ZCv6Kej5a+GZXZhbFByaXZhdGVKU+aJjeeUn+aViFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcInJlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiMVxcXCIpID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInJlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInJlX2V2YWxQcml2YXRlSlNcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogb2JqLmltZ0xpc3RbMV1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwicmVfZXZhbFByaXZhdGVKU1xcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwicmVfZXZhbFByaXZhdGVKU1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBvYmouaW1nTGlzdFswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGltZ0xpc3RcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwicmVfZXZhbFByaXZhdGVKU1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICQucmVxdWlyZShcXFwiUmFuZG9tQ29sb3JcXFwiKS5nZXRDb2xvcihcXFwi5LyY5YyW55eF5q+S5Luj56CBXFxcIiwgMSkucmVwbGFjZShcXFwi4oCY4oCY4oCZ4oCZXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgICAgICBpbWc6IGdldEl0ZW0oXFxcImRlX01hcmtzQ29kZVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIiA/IGltZ0xpc3RbMF0gOiBpbWdMaXN0WzFdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKG9iaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRlX01hcmtzQ29kZVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImRlX01hcmtzQ29kZVxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiZGVfTWFya3NDb2RlXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IG9iai5pbWdMaXN0WzFdXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcXFwiZGVfTWFya3NDb2RlXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImRlX01hcmtzQ29kZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBvYmouaW1nTGlzdFswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGltZ0xpc3RcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiZGVfTWFya3NDb2RlXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfV0pO1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJNb3JlU2V0dGluZ3NcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcIk1vcmVTZXR0aW5nc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWdMaXN0WzNdXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW0oW1xcXCJxel9tb2Rlc1xcXCIsIFxcXCJkZV9ldmFsUHJpdmF0ZUpTXFxcIiwgXFxcInJlX2V2YWxQcml2YXRlSlNcXFwiLCBcXFwiZGVfTWFya3NDb2RlXFxcIl0pO1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIk1vcmVTZXR0aW5nc1xcXCIpO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcIk1vcmVTZXR0aW5nc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWdMaXN0WzJdXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICB9LCBpbWdMaXN0KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IFxcXCJNb3JlU2V0dGluZ3NcXFwiLFxcbiAgICAgICAgdGV4dFNpemU6IDEyLFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIkNvZGVcXFwiLFxcbiAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIuivt+i+k+WFpemcgOimgeino+aekOeahOinhOWImVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImNvZGVcXFwiLFxcbiAgICAgICAgdHlwZTogXFxcInRleHRhcmVhXFxcIixcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiY29kZVxcXCIsIGlucHV0KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwiY29kZVxcXCIpXFxuICAgIH1cXG59LCB7XFxuICAgIHRpdGxlOiBcXFwiZW5jb2RlXFxcIixcXG4gICAgdXJsOiBcXFwiXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLmraTlpITmmL7npLrop6PmnpDlkI7nmoTop4TliJlcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IFxcXCJlbmNvZGVcXFwiLFxcbiAgICAgICAgdHlwZTogXFxcInRleHRhcmVhXFxcIixcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcImVuY29kZVxcXCIsIGlucHV0KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwiZW5jb2RlXFxcIilcXG4gICAgfVxcbn0pO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBnZXRDb2xvcihcXFwi6Kej5p6QXFxcIiwgMSksXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGNvZGUgPSBnZXRNeVZhcihcXFwiY29kZVxcXCIpO1xcbiAgICAgICAgICAgIHZhciBlbmNvZGUgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBudWxsIHx8IGNvZGUgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpemcgOimgeino+aekOeahOinhOWIme+8gVxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8v5pSv5oyB6L+c56iLdXJs5Y+K5pys5ZywdXJsXFxuICAgICAgICAgICAgaWYgKGNvZGUuc3RhcnRzV2l0aChcXFwiaHR0cDovL1xcXCIpIHx8IGNvZGUuc3RhcnRzV2l0aChcXFwiaHR0cHM6Ly9cXFwiKSB8fCBjb2RlLnN0YXJ0c1dpdGgoXFxcImZpbGU6Ly9cXFwiKSB8fCBjb2RlLnN0YXJ0c1dpdGgoXFxcIi9zdG9yYWdlXFxcIikgfHwgY29kZS5zdGFydHNXaXRoKFxcXCIvc2RjYXJkXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUuc3RhcnRzV2l0aChcXFwiL3N0b3JhZ2VcXFwiKSB8fCBjb2RlLnN0YXJ0c1dpdGgoXFxcIi9zZGNhcmRcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IFxcXCJmaWxlOi8vXFxcIiArIGNvZGU7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29kZSA9IGZldGNoKGNvZGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvL+iOt+WPluWIhuexu+mAiemhuVxcbiAgICAgICAgICAgIHZhciB5dW5UeXBlID0gZ2V0SXRlbShcXFwieXVuVHlwZVxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgLy/ojrflj5bov4fmu6TnsbvlnotcXG4gICAgICAgICAgICB2YXIgZmlsdGVyVHlwZSA9IGdldEl0ZW0oXFxcImZpbHRlclR5cGVcXFwiLCBcXFwiMFxcXCIpO1xcblxcbiAgICAgICAgICAgIC8v5pm66IO95qOA5rWL5ZCI6ZuGXFxuICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcInl1blR5cGVcXFwiLCBcXFwiMFxcXCIpID09IFxcXCIwXFxcIiAmJiBjb2RlLnN0YXJ0c1dpdGgoXFxcIltcXFwiKSAmJiBjb2RlLmVuZHNXaXRoKFxcXCJdXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwieXVuVHlwZVxcXCIsIFxcXCItMVxcXCIpXFxuICAgICAgICAgICAgICAgIHl1blR5cGUgPSBnZXRJdGVtKFxcXCJ5dW5UeXBlXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwieXVuVHlwZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAkLnJlcXVpcmUoXFxcIlJhbmRvbUNvbG9yXFxcIikuZ2V0Q29sb3IoXFxcIuexu+Wei++8muWQiOmbhlxcXCIsIDEpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2V0SXRlbShcXFwieXVuVHlwZVxcXCIsIFxcXCIwXFxcIikgPT0gXFxcIi0xXFxcIiAmJiAhKGNvZGUuc3RhcnRzV2l0aChcXFwiW1xcXCIpICYmIGNvZGUuZW5kc1dpdGgoXFxcIl1cXFwiKSkpIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwieXVuVHlwZVxcXCIsIFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgeXVuVHlwZSA9IGdldEl0ZW0oXFxcInl1blR5cGVcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJ5dW5UeXBlXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICQucmVxdWlyZShcXFwiUmFuZG9tQ29sb3JcXFwiKS5nZXRDb2xvcihcXFwi57G75Z6L77ya6buY6K6kXFxcIiwgMSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIC8v6buY6K6k54q25oCB5bCd6K+V6Ieq5Yqo6I635Y+W5LqR57KY6LS05p2/57G75Z6LXFxuICAgICAgICAgICAgaWYgKHl1blR5cGUgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAvL+S9v+eUqOabtOWujOWWhOeahOWIpOaWreaWueW8j1xcbiAgICAgICAgICAgICAgICBpZiAoY29kZS50cmltKCkuc3RhcnRzV2l0aChcXFwi5LqRXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdHJMZW5ndGggPSAyXFxuICAgICAgICAgICAgICAgICAgICAvL+WIpOaWreS6kTEw5YiZ6I635Y+W6ZO+5o6l5YmN5LiJ5L2N5a2X56ymXFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZS5tYXRjaCgv5LqRXFxcXGQrLykgPT0gXFxcIuS6kTEwXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ckxlbmd0aCA9IDNcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2VBbGwoXFxcIiBcXFwiLCBcXFwiXFxcIik7IC8v5Y676Zmk56m65qC85L+d6K+B5LiN5Lya5oql6ZSZXFxuICAgICAgICAgICAgICAgICAgICBjb2RlcyA9IGNvZGUuc3BsaXQoXFxcIuWwj+eoi+W6j1xcXCIpOyAvL+S7heS/neeVmemTvuaOpVxcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGVzWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgeXVuVHlwZSA9IGNvZGUuc3Vic3RyaW5nKDAsIHN0ckxlbmd0aCkucmVwbGFjZShcXFwi5LqRXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9ICQucmVxdWlyZShcXFwicGFzdGVtZVxcXCIpLmppZXhpKGNvZGUsIHl1blR5cGUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAkLnJlcXVpcmUoXFxcIlJ1bGVqaWV4aVxcXCIpLmppZXhpKGNvZGUpO1xcbiAgICAgICAgICAgICAgICAvL+WIpOaWreaYr+WQpuafpeivouWIsOi/neemgeivjVxcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgPT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGUgPSAkLnJlcXVpcmUoXFxcIlJ1bGVqaWV4aVxcXCIpLnVwZGF0ZVJ1bGUocmVzdWx0LmJvZHksIGZpbHRlclR5cGUpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5jb2RlID09IDMwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlID0gcmVzdWx0LmJvZHk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy/kvJjljJbnl4Xmr5Lku6PnoIFcXG4gICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRlX01hcmtzQ29kZVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGVuY29kZSA9ICQucmVxdWlyZShcXFwiUnVsZWppZXhpXFxcIikudXBkYXRlTWFya3MoZW5jb2RlKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvL+S8mOWMluaYvuekuuaViOaenCDov5Tlm55zdHJpbmfor4HmmI7mnKrop6PmnpBcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihlbmNvZGUpID09IFxcXCJzdHJpbmdcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGUgPSBcXFwi5rW36ZiU6KeG55WM77+laG9tZV9ydWxl77+lXFxcIiArIGVuY29kZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvL+i/lOWbnm9iamVjdOexu+Wei+ivgeaYjuino+aekOi/h+S6huaYr2pzb24g6ZyA6KaB6L2s5Li65a2X56ym5LiyXFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoZW5jb2RlKSA9PSBcXFwib2JqZWN0XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlID0gXFxcIua1t+mYlOinhueVjO+/pWhvbWVfcnVsZe+/pVxcXCIgKyBKU09OLnN0cmluZ2lmeShlbmNvZGUpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8v5qOA5rWL6YCJ5oup57G75Z6LXFxuICAgICAgICAgICAgaWYgKHl1blR5cGUgPT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgLy/ojrflj5blkIjpm4bliJfooahcXG4gICAgICAgICAgICAgICAgdmFyIHJ1bGVMaXN0ID0gSlNPTi5wYXJzZShjb2RlKTtcXG4gICAgICAgICAgICAgICAgdmFyIG5ld1J1bGVMaXN0ID0gW107XFxuICAgICAgICAgICAgICAgIC8v5bCd6K+V5pSv5oyB5ZCI6ZuGXFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVMaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gJC5yZXF1aXJlKFxcXCJSdWxlamlleGlcXFwiKS5qaWV4aShydWxlTGlzdFtpXSk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZW5jb2RlMj1cXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY29kZSA9PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdSdWxlTGlzdC5wdXNoKCQucmVxdWlyZShcXFwiUnVsZWppZXhpXFxcIikudXBkYXRlUnVsZShyZXN1bHQuYm9keSwgZmlsdGVyVHlwZSkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuY29kZSA9PSAzMDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdSdWxlTGlzdC5wdXNoKHJlc3VsdC5ib2R5KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgIC8v5LyY5YyW55eF5q+S5Luj56CBXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFwiZGVfTWFya3NDb2RlXFxcIiwgXFxcIlxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZSA9ICQucmVxdWlyZShcXFwiUnVsZWppZXhpXFxcIikudXBkYXRlTWFya3MoZW5jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvKlxcbiAgICAgICAgICAgICAgICAvL+WwneivleWkmue6v+eoi+WkhOeQhuWQiOmbhlxcbiAgICAgICAgICAgICAgICB2YXIgcnVsZU1heCA9IFtdO1xcbiAgICAgICAgICAgICAgICAvL+WIm+W7uuWkmue6v+eoi+WQiOmbhlxcbiAgICAgICAgICAgICAgICBydWxlTGlzdC5mb3JFYWNoKHJ1bGUgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcnVsZU1heC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jOiBmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICQucmVxdWlyZShcXFwiUnVsZWppZXhpXFxcIikuamlleGkocnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5Yik5pat5piv5ZCm5p+l6K+i5Yiw6L+d56aB6K+NXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY29kZSA9PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUgPSAkLnJlcXVpcmUoXFxcIlJ1bGVqaWV4aVxcXCIpLnVwZGF0ZVJ1bGUocmVzdWx0LmJvZHksIGZpbHRlclR5cGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5jb2RlID09IDMwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSA9IHJlc3VsdC5ib2R5O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5LyY5YyW55eF5q+S5Luj56CBXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKFxcXCJkZV9NYXJrc0NvZGVfTWF4XFxcIiwgXFxcIlxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSA9ICQucmVxdWlyZShcXFwiUnVsZWppZXhpXFxcIikudXBkYXRlTWFya3MocnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAvL+aJp+ihjOWkmue6v+eoi1xcbiAgICAgICAgICAgICAgICBiYXRjaEV4ZWN1dGUocnVsZU1heCwge1xcbiAgICAgICAgICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1J1bGVMaXN0LnB1c2gocmVzdWx0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9ICQuZGF0ZUZvcm1hdChuZXcgRGF0ZSgpLCBcXFwieXl5eS1NTS1kZFxcXCIpO1xcbiAgICAgICAgICAgICAgICB2YXIgZmlsZVBhdGggPSBcXFwiaGlrZXI6Ly9maWxlcy9zaGFyZS9cXFwiICsgZGF0ZSArIFxcXCItXFxcIiArIG5ld1J1bGVMaXN0Lmxlbmd0aCArIFxcXCLkuKrlsI/nqIvluo8uanNvblxcXCJcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KG5ld1J1bGVMaXN0KSwgMCk7XFxuICAgICAgICAgICAgICAgIGVuY29kZSA9IGZpbGVQYXRoO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAvL+i/lOWbnuino+aekOWQjueahOaVsOaNrlxcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImVuY29kZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgZXh0cmE6IE9iamVjdC5hc3NpZ24oZmluZEl0ZW0oXFxcImVuY29kZVxcXCIpLmV4dHJhLCB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGVuY29kZVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ino+aekOaIkOWKn1xcXCJcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAvL+mUmeivr+aPkOekulxcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImVuY29kZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgZXh0cmE6IE9iamVjdC5hc3NpZ24oZmluZEl0ZW0oXFxcImVuY29kZVxcXCIpLmV4dHJhLCB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFxcXCLor7fmo4Dmn6Xop4TliJnmmK/lkKbmraPnoa5cXFxcbum7mOiupOaooeW8j+S4jeaUr+aMgeino+aekOWQiOmbhlxcXFxu6ZSZ6K+v5L+h5oGv77yaXFxcIiArIGVcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImVuYnV0dG9uXFxcIlxcbiAgICB9XFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldENvbG9yKFxcXCLlr7zlhaVcXFwiLCAxKSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHZhciBlbmNvZGUgPSBnZXRNeVZhcihcXFwiZW5jb2RlXFxcIik7XFxuICAgICAgICBpZiAoIWVuY29kZSkge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lhoXlrrnkuLrnqbpcXFwiXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoZW5jb2RlLnN0YXJ0c1dpdGgoXFxcImhpa2VyOi8vXFxcIikpIHtcXG4gICAgICAgICAgICBlbmNvZGUgPSBcXFwi5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ77+laG9tZV9ydWxlX3VybO+/pVxcXCIgKyBlbmNvZGU7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gXFxcInJ1bGU6Ly9cXFwiICsgYmFzZTY0RW5jb2RlKGVuY29kZSk7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogZ2V0Q29sb3IoXFxcIuS4iuS8oOWIsOS6keWJqui0tOadv1xcXCIsIDEpLFxcbiAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdGl0bGU6IFxcXCLkupHliarotLTmnb/liJfooahcXFwiLFxcbiAgICAgICAgb3B0aW9uczogZ2V0UGFzdGVzKCksXFxuICAgICAgICBjb2w6IDIsXFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIGVuY29kZSA9IGdldE15VmFyKFxcXCJlbmNvZGVcXFwiKTtcXG4gICAgICAgICAgICBpZiAoZW5jb2RlKSB7XFxuICAgICAgICAgICAgICAgIHZhciBlbmNvZGUgPSBlbmNvZGUucmVwbGFjZShcXFwi5rW36ZiU6KeG55WM77+laG9tZV9ydWxl77+lXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBKU09OLnBhcnNlKGVuY29kZSkudGl0bGU7XFxuICAgICAgICAgICAgICAgIC8v5LyY5YyW5pi+56S65YaF5a65XFxuICAgICAgICAgICAgICAgIGVuY29kZSA9IFxcXCLmtbfpmJTop4bnlYzop4TliJnliIbkuqvvvIzlvZPliY3liIbkuqvnmoTmmK/vvJrlsI/nqIvluo/vv6Vob21lX3J1bGVfdjLvv6ViYXNlNjQ6Ly9AXFxcIiArIHRpdGxlICsgXFxcIkBcXFwiICsgYmFzZTY0RW5jb2RlKGVuY29kZSk7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5LqR5Ymq6LS05p2/MlxcXCIgJiYgZW5jb2RlLmxlbmd0aCA+PSAyMDAwMDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kupHliarotLQy5LiN5pSv5oyB6LaF6L+HMjDkuIflrZfnrKZcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IHNoYXJlUGFzdGUoZW5jb2RlLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyB1cmwgKyBcXFwiXFxcXG5cXFxcbuWwj+eoi+W6j++8mlxcXCIgKyB0aXRsZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YaF5a655Li656m6XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImNvcHlcXFwiXFxuICAgIH1cXG59LCB7XFxuICAgIHRpdGxlOiBnZXRDb2xvcihcXFwi5riF56m6XFxcIiwgMSksXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICB1cGRhdGVJdGVtKFxcXCJjb2RlXFxcIiwge1xcbiAgICAgICAgICAgIGV4dHJhOiBPYmplY3QuYXNzaWduKGZpbmRJdGVtKFxcXCJjb2RlXFxcIikuZXh0cmEsIHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHVwZGF0ZUl0ZW0oXFxcImVuY29kZVxcXCIsIHtcXG4gICAgICAgICAgICBleHRyYTogT2JqZWN0LmFzc2lnbihmaW5kSXRlbShcXFwiZW5jb2RlXFxcIikuZXh0cmEsIHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHVwZGF0ZUl0ZW0oXFxcImZpbGVTZWxlY3RcXFwiLCB7XFxuICAgICAgICAgICAgZXh0cmE6IE9iamVjdC5hc3NpZ24oZmluZEl0ZW0oXFxcImZpbGVTZWxlY3RcXFwiKS5leHRyYSwge1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFxcXCIvc3RvcmFnZS9lbXVsYXRlZC8wL1xcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5riF56m6XFxcIlxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldENvbG9yKFxcXCLpgInmi6nmiJHnmoTlsI/nqIvluo9cXFwiLCAxKSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIC8v6I635Y+W5omA5pyJ5bCP56iL5bqP5YiX6KGoXFxuICAgICAgICBsZXQgcnVsZU5hbWUgPSBbXTtcXG4gICAgICAgIGxldCBydWxlcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vaG9tZVxcXCIpKTtcXG4gICAgICAgIHJ1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBydWxlLnRpdGxlO1xcbiAgICAgICAgICAgIC8v6L+H5ruk5o6J5oiR55qE5Li76aG1XFxuICAgICAgICAgICAgaWYgKHRpdGxlICE9IFxcXCLmiJHnmoTkuLvpobVcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJ1bGVOYW1lLnB1c2godGl0bGUpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBcXFwic2VsZWN0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaIkeeahOWwj+eoi+W6j1xcXCIsXFxuICAgICAgICAgICAgb3B0aW9uczogcnVsZU5hbWUsXFxuICAgICAgICAgICAgY29sOiAyLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1bGUgPSBcXFwi5rW36ZiU6KeG55WM77+laG9tZV9ydWxl77+lXFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2hvbWVAXFxcIiArIGlucHV0KVxcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJjb2RlXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IE9iamVjdC5hc3NpZ24oZmluZEl0ZW0oXFxcImNvZGVcXFwiKS5leHRyYSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogcnVsZVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3sumAieaLqVxcXCIgKyBpbnB1dFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSwge1xcbiAgICB0aXRsZTogZ2V0Q29sb3IoXFxcIuS/neWtmOWIsOacrOWcsFxcXCIsIDEpLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgdmFyIGVuY29kZSA9IGdldE15VmFyKFxcXCJlbmNvZGVcXFwiKTtcXG4gICAgICAgIGlmICghZW5jb2RlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WGheWuueS4uuepulxcXCJcXG4gICAgICAgIH1cXG4gICAgICAgIC8v6ZuG5ZCI55u05o6l6K6/6ZeuXFxuICAgICAgICBpZiAoZW5jb2RlLnN0YXJ0c1dpdGgoXFxcImhpa2VyOi8vXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInNoYXJlOi8vXFxcIiArIGVuY29kZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8v5qOA5rWL5rW36ZiU5qCH6K+G5aS0XFxuICAgICAgICBpZiAoZW5jb2RlLnN0YXJ0c1dpdGgoXFxcIua1t+mYlOinhueVjO+/pWhvbWVfcnVsZe+/pVxcXCIpKSB7XFxuICAgICAgICAgICAgdmFyIHRpdGxlID0gZW5jb2RlLnJlcGxhY2UoXFxcIua1t+mYlOinhueVjO+/pWhvbWVfcnVsZe+/pVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICB0aXRsZSA9IEpTT04ucGFyc2UodGl0bGUpLnRpdGxlXFxuICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvc2hhcmUvXFxcIiArIHRpdGxlICsgXFxcIi5oaWtlclxcXCIsIGVuY29kZSwgMCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJzaGFyZTovL2hpa2VyOi8vZmlsZXMvc2hhcmUvXFxcIiArIHRpdGxlICsgXFxcIi5oaWtlclxcXCJcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kuI3opoHku4DkuYjpg73kubHkv53lrZjllYrvvIFcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcInNhdmVGaWxlXFxcIlxcbiAgICB9XFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldENvbG9yKFxcXCLluK7liqnmlofmoaNcXFwiLCAxKSxcXG4gICAgZGVzYzogZ2V0Q29sb3IoJ+atpOinhOWImeS7hemZkOWtpuS5oOS6pOa1geS9v+eUqO+8jOivt+S6juWvvOWFpeWQjjI05bCP5pe25YaF5Yig6Zmk77yM5Lu75L2V57uE57uH5oiW5Liq5Lq65LiN5b6X5Lul5Lu75L2V5pa55byP5pa55rOV5Lyg5pKt5q2k6KeE5YiZ55qE5pW05L2T5oiW6YOo5YiG77yBJywgMSksXFxuICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9oZWxwcyNub1JlY29yZEhpc3RvcnkjXFxcIixcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIGxvbmdDbGljazogW11cXG4gICAgfVxcbn0pO1xcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhtemAmuefpVwiLFwicGF0aFwiOlwibWFpblwiLFwicnVsZVwiOlwiaWYgKGdldEl0ZW0oXFxcImZpcnN0XFxcIikgPT0gTVlfUlVMRS52ZXJzaW9uKSB7XFxuICAgICQucmVxdWlyZShcXFwiaG9tZVxcXCIpO1xcbn0gZWxzZSBpZiAoTVlfUEFHRSA9PT0gMSkge1xcbiAgICBsZXQgZCA9IFtdXFxuICAgIGxldCB0aW1lID0gZ2V0SXRlbShcXFwiZmlyc3RcXFwiLCBcXFwiXFxcIikgPyAwIDogMztcXG4gICAgbGV0IGlkID0gRGF0ZS5ub3coKTtcXG4gICAgbGV0IHVwZGF0ZUxvZyA9IFtcXG4gICAgICAgIFxcXCIxLuS8mOWMluW3suefpemXrumimFxcXCJcXG4gICAgXTtcXG4gICAgbGV0IHVwZGF0ZVN0ciA9IFxcXCJcXFwiO1xcbiAgICB1cGRhdGVMb2cuZm9yRWFjaCgodXBkYXRlKSA9PiB7XFxuICAgICAgICB1cGRhdGVTdHIgKz0gdXBkYXRlICsgXFxcIjxicj5cXFwiXFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnTxzdHJvbmc+5L2/55So5YmN6aG755+lPC9zdHJvbmc+XFxcIi5iaWcoKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIxLiDmnKzlsI/nqIvluo/miYDmnInku6PnoIHlhajpg6jlvIDmupDvvIzkuJTmnKzop4TliJnkuLrlrabkuaDnm67nmoTvvIzor7fkuo7lr7zlhaUyNOWwj+aXtuWGheWIoOmZpO+8ge+8ge+8gTxicj4yLiDmnKzlsI/nqIvluo88Yj7lrozlhajlhY3otLk8L2I+77yM5aaC5p6c5L2g5piv5LuY6LS56LSt5Lmw55qE5oGt5Zac5L2g6KKr6aqX5LqG44CCPGJyPjxicj48Yj7lvIDlp4vkvb/nlKjmnKzop4TliJnljbPku6PooajpgbXlrojop4TliJnmnaHkvos8L2I+PGJyPuW9k+WJjeeJiOacrO+8mlxcXCIgKyBNWV9SVUxFLnZlcnNpb24sXFxuICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCI8Yj7mnKzmrKHmm7TmlrDml6Xlv5fvvJo8L2I+PGJyPlxcXCIgKyB1cGRhdGVTdHIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIlxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogdGltZSArIFxcXCLnp5LlkI7nu6fnu61cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/or7forqTnnJ/pmIXor7vku6XkuIrlhoXlrrlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IGlkICsgXFxcInRpbWVyXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbiAgICB3aGlsZSAodGltZSAhPSAwKSB7XFxuICAgICAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApO1xcbiAgICAgICAgdGltZSAtPSAxO1xcbiAgICAgICAgdXBkYXRlSXRlbShpZCArIFxcXCJ0aW1lclxcXCIsIHtcXG4gICAgICAgICAgICB0aXRsZTogdGltZSArIFxcXCLnp5LlkI7nu6fnu61cXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB1cGRhdGVJdGVtKGlkICsgXFxcInRpbWVyXFxcIiwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzmiJHlkIzmhI/ku6XkuIropoHmsYLigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh2KSA9PiB7XFxuICAgICAgICAgICAgc2V0SXRlbShcXFwiZmlyc3RcXFwiLCBTdHJpbmcodikpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+aEn+iwouaCqOeahOeQhuino1xcXCI7XFxuICAgICAgICB9LCBNWV9SVUxFLnZlcnNpb24pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcXG59XCJ9XSIsImljb24iOiJoaWtlcjovL2ltYWdlcy9pY29uX2VkaXQ2IiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment