Advertisement
xiaomianao666

邀您一起看:霹雳大医 李可

Apr 22nd, 2024
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥霹雳大医  李可@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57SiXCIsXCJwYXRoXCI6XCLmkJzntKJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGhpc3RvcnkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJoaXN0b3J5XFxcIiwgW10pXFxuaWYgKCFoaXN0b3J5LmluY2x1ZGVzKGdldFBhcmFtKFxcXCJrd1xcXCIpKSkge1xcbiAgICBoaXN0b3J5LnVuc2hpZnQoZ2V0UGFyYW0oXFxcImt3XFxcIikpXFxuICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImhpc3RvcnlcXFwiLCBoaXN0b3J5KVxcbn1cXG4kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT3lm77kuabppoZQcm9cXFwiKVtnZXRQYXJhbShcXFwiZW5naW5lXFxcIildKGdldFBhcmFtKFxcXCJrd1xcXCIpLCBNWV9QQUdFKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwiYXBpXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgZW5naW5lczogW1xcXCLosYbnk6NcXFwiLCBcXFwiWWxpYnJhcnlcXFwiLCBcXFwiWmxpYnJhcnlcXFwiLCBcXFwiTGliZ2VuXFxcIiwgXFxcIum4oOaRqVxcXCIsIFxcXCLml6DlkI3lm77kuaZcXFwiXSxcXG4gICAg6LGG55OjOiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIGQgPSBbXTtcXG4gICAgICAgIHZhciBjb21wdXRlUmF0aW5nID0gJC5yZXF1aXJlKFxcXCJhcGk/cnVsZT3lm77kuabppoZQcm9cXFwiKS5jb21wdXRlUmF0aW5nXFxuICAgICAgICB2YXIgdXJsID0gYnVpbGRVcmwoXFxcImh0dHBzOi8vZnJvZG8uZG91YmFuLmNvbS9hcGkvdjIvc2VhcmNoL3N1YmplY3RzXFxcIiwge1xcbiAgICAgICAgICAgIHR5cGU6IFxcXCJib29rXFxcIixcXG4gICAgICAgICAgICBxOiBrdyxcXG4gICAgICAgICAgICBzdGFydDogcGFnZSA9PSAxID8gMCA6ICgocGFnZSAtIDEpICogMjApLFxcbiAgICAgICAgICAgIGNvdW50OiAyMCxcXG4gICAgICAgICAgICBhcGlrZXk6IFxcXCIwZGFkNTUxZWMwZjg0ZWQwMjkwN2ZmNWM0MmU4ZWM3MFxcXCJcXG4gICAgICAgIH0pXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KHVybCwge1xcbiAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgaG9zdDogXFxcImZyb2RvLmRvdWJhbi5jb21cXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIlJleHhhci1Db3JlLzAuMS4zIGFwaS1jbGllbnQvMSBjb20uZG91YmFuLmZyb2RvLzcuOS4wLmJldGEyKDIxNSkgQW5kcm9pZC8yNSBwcm9kdWN0L1RBUy1BTDAwIHZlbmRvci9IVUFXRUkgbW9kZWwvVEFTLUFMMDAgIHJvbS9hbmRyb2lkICBuZXR3b3JrL3dpZmkgIHBsYXRmb3JtL21vYmlsZSBjb20uZG91YmFuLmZyb2RvLzcuOS4wLmJldGEyKDIxNSkgUmV4eGFyLzEuMi4xNTEgIHBsYXRmb3JtL21vYmlsZSAxLjIuMTUxXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKS5pdGVtc1xcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgaXRlbSA9IGl0ZW0udGFyZ2V0XFxuICAgICAgICAgICAgc3RhciA9IChpdGVtLnJhdGluZyA/IFxcXCJcXFxcblxcXCIgKyBjb21wdXRlUmF0aW5nKGl0ZW0ucmF0aW5nLm1heCwgaXRlbS5yYXRpbmcudmFsdWUpICsgXFxcIiDor4TliIbvvJpcXFwiICsgaXRlbS5yYXRpbmcudmFsdWUgOiBcXFwiXFxcIilcXG4gICAgICAgICAgICBkZXNjID0gaXRlbS5jYXJkX3N1YnRpdGxlICsgc3RhclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBkZXNjLFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uY292ZXJfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lI1xcXCIpLnJ1bGUoKGlkLCBzdGFyKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGJ1aWxkVXJsKFxcXCJodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyL2Jvb2svXFxcIiArIGlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpa2V5OiBcXFwiMGRhZDU1MWVjMGY4NGVkMDI5MDdmZjVjNDJlOGVjNzBcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdCh1LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0OiBcXFwiZnJvZG8uZG91YmFuLmNvbVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiUmV4eGFyLUNvcmUvMC4xLjMgYXBpLWNsaWVudC8xIGNvbS5kb3ViYW4uZnJvZG8vNy45LjAuYmV0YTIoMjE1KSBBbmRyb2lkLzI1IHByb2R1Y3QvVEFTLUFMMDAgdmVuZG9yL0hVQVdFSSBtb2RlbC9UQVMtQUwwMCAgcm9tL2FuZHJvaWQgIG5ldHdvcmsvd2lmaSAgcGxhdGZvcm0vbW9iaWxlIGNvbS5kb3ViYW4uZnJvZG8vNy45LjAuYmV0YTIoMjE1KSBSZXh4YXIvMS4yLjE1MSAgcGxhdGZvcm0vbW9iaWxlIDEuMi4xNTFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICBkLnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiByZXMudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiByZXMucGljLm5vcm1hbCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJ4NTovL1xcXCIgKyByZXMuaW5mb191cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogcmVzLmNhcmRfc3VidGl0bGUgKyBcXFwiXFxcXG5cXFwiICsgc3RhcixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRybyA9IGDkvZzogIXvvJoke3Jlcy5hdXRob3Iuam9pbihcXFwiLFxcXCIpfVxcXFxuXFxcXG7nv7vor5HvvJoke3Jlcy50cmFuc2xhdG9yLmpvaW4oXFxcIixcXFwiKX1cXFxcblxcXFxu566A5LuL77yaJHtyZXMuaW50cm99XFxcXG5cXFxcbuS9nOiAheeugOS7i++8miR7cmVzLmF1dGhvcl9pbnRyb31cXFxcblxcXFxu5pGY5b2V77yaJHtyZXMuY2F0YWxvZ31gXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbnRybyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxvbmdfdGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZClcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZCwgc3RhcilcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgfSxcXG4gICAgWWxpYnJhcnk6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgZCA9IFtdXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS55bGlicmFyeS5vcmcvYXBpL3NlYXJjaC9cXFwiLCB7XFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwia2V5d29yZFxcXCI6IGt3LFxcbiAgICAgICAgICAgICAgICBcXFwicGFnZVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIFxcXCJzZW5zaXRpdmVcXFwiOiBmYWxzZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSkuZGF0YVxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGDkvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcIuaaguaXoFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXCLmmoLml6BcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXCLmmoLml6BcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXCJhcGk/cnVsZT3lm77kuabppoZQcm9cXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX1gLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkueWxpYnJhcnkub3JnL2FwaS9kZXRhaWwvXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzb3VyY2VcXFwiOiBcXFwiemxpYnJhcnlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcnZlcnMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT3lm77kuabppoZQcm9cXFwiKS5zZXJ2ZXJzXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXCLnmb7luqbkupHnm5jovazlrZhcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwiTGliZ2VuKOaOqOiNkClcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChzZXJ2ZXJzLCAxLCBcXFwi6YCJ5oup57q/6LevXFxcIikuc2VsZWN0KChyZXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJMaWJnZW4o5o6o6I2QKVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwZGZoKHJlcXVlc3QoXFxcImh0dHA6Ly9saWJyYXJ5LmxvbC9tYWluL1xcXCIgKyByZXMubWQ1KSwgXFxcIiNkb3dubG9hZCYmYSYmaHJlZlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcIueZvuW6puS6keebmOi9rOWtmFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImFwaT9ydWxlPeWbvuS5pummhlByb1xcXCIpLmJhaWR1KHJlcylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwiaXBmc+S4i+i9vVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgaHR0cHM6Ly9pcGZzLWNoZWNrZXIuMWtidG9vbC5jb20vJHtyZXMuaXBmc19jaWR9YFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0ICsgcmVzLmlwZnNfY2lkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6Kej5p6Q5aSx6LSlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICB9LFxcbiAgICBabGlicmFyeTogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXG4gICAgICAgIHZhciBkID0gW107XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3dvcmtlci56bGliLmFwcC9hcGkvc2VhcmNoL1xcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjoga3csXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcInNlbnNpdGl2ZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS5kYXRhXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgY29udGVudDogYDxzbWFsbD7kvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcIuaaguaXoFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXCLmmoLml6BcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXCLmmoLml6BcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXCJhcGk/cnVsZT3lm77kuabppoZQcm9cXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX1gLFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uY292ZXIsXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImh0dHBzOi8vd29ya2VyLnpsaWIuYXBwL2Rvd25sb2FkL1xcXCIgKyBpdGVtLmlkXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBzZXRSZXN1bHQoZClcXG4gICAgfSxcXG4gICAg6big5pGpOiBmdW5jdGlvbihrdykge1xcbiAgICAgICAgdmFyIGQgPSBbXVxcbiAgICAgICAgdmFyIGlkID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3d3dzUuaml1bW9kaWFyeS5jb20vaW5pdF9odWJzLnBocFxcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIHE6IGt3LFxcbiAgICAgICAgICAgICAgICByZW1vdGVfaXA6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICB0aW1lX2ludDogRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKSArIFxcXCJcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLmlkXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3d3dzUuaml1bW9kaWFyeS5jb20vYWpheF9mZXRjaF9odWJzLnBocFxcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXG4gICAgICAgICAgICAgICAgc2V0OiAwXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLnNvdXJjZXNcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGl0ZW0uZGV0YWlscy5kYXRhLmZvckVhY2goaXRlbTIgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0yLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXRlbTIuZGVzICsgXFxcIlxcXFxuXFxcIiArIGl0ZW0yLnZfZGVzLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBcXFwiaHR0cDpcXFwiICsgaXRlbTIuaW1nX2xpbmssXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXRlbTIuaW1nX2xpbmsgPyBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiIDogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0yLmxpbmtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgfSxcXG4gICAgY2hlY2tMaWJnZW46IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgdmFyIGRvbWFpbnMgPSBbXFxcImh0dHA6Ly9saWJnZW4ucnNcXFwiLCBcXFwiaHR0cDovL2xpYmdlbi5pc1xcXCIsIFxcXCJodHRwOi8vbGliZ2VuLnN0XFxcIl1cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgZm9yIChpdGVtIG9mIGRvbWFpbnMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaXRlbSwge1xcbiAgICAgICAgICAgICAgICAgICAgd2l0aFN0YXR1c0NvZGU6IHRydWVcXG4gICAgICAgICAgICAgICAgfSkpLnN0YXR1c0NvZGVcXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJsaWJnZW5cXFwiLCBpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuajgOa1i+WIsOWPr+eUqOmVnOWDj++8jOivt+WIt+aWsOWQjumHjeaWsOaQnOe0olxcXCIpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRvYXN0KFxcXCLmiYDmnInplZzlg4/pg73ml6Dms5Xkvb/nlKjvvIzor7fmiZPlvIBUWuS9v+eUqFxcXCIpXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgTGliZ2VuOiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIGQgPSBbXVxcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcImxpYmdlblxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCLml6Dlj6/nlKjplZzlg4/vvIzmraPlnKjmo4DmtYvkuK0uLi5cXFwiKVxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFwiYXBpP3J1bGU95Zu+5Lmm6aaGUHJvXFxcIikuY2hlY2tMaWJnZW4oKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgdXJsID0gZ2V0SXRlbShcXFwibGliZ2VuXFxcIikgKyBcXFwiL3NlYXJjaC5waHA/cmVxPVxcXCIgKyBrdyArIFxcXCImcGFnZT1cXFwiICsgcGFnZVxcbiAgICAgICAgICAgIHZhciByID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZVxcbiAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgIGlmIChyLnN0YXR1c0NvZGUgPT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgIHZhciByZXMgPSByLmJvZHlcXG4gICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBwZGZhKHJlcywgXFxcImJvZHkmJnRyXFxcIikuZmlsdGVyKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5jbHVkZXMoXFxcIm5vd3JhcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpID0gaXRlbS5tYXRjaChuZXcgUmVnRXhwKFxcXCI8dGQoLio/KTwvdGQ+XFxcIiwgXFxcImdcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gcGRmaChsaVsxXSwgXFxcImEmJlRleHRcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDM7IGkgPCBsaS5sZW5ndGggLSAzOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjICs9IFxcXCLvvJtcXFwiICsgcGRmaChsaVtpXSwgXFxcIlRleHRcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaVsyXSwgXFxcIlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChsaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmaChyZXF1ZXN0KHBkZmgobGlbOV0sIFxcXCJhJiZocmVmXFxcIikpLCBcXFwiI2Rvd25sb2FkJiZhJiZocmVmXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBsaSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIumVnOWDj+WkseaViO+8jOmHjeaWsOajgOa1i+S4rS4uLlxcXCIpXFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiYXBpP3J1bGU95Zu+5Lmm6aaGUHJvXFxcIikuY2hlY2tMaWJnZW4oKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgfSxcXG4gICAg572R55uYOiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIGQgPSBbXVxcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYm9va3Bhbi5uZXQvYXBpL3NlYXJjaC9cXFwiLCB7XFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwia2V5d29yZFxcXCI6IGt3LFxcbiAgICAgICAgICAgICAgICBcXFwicGFnZVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIFxcXCJzZW5zaXRpdmVcXFwiOiBmYWxzZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSkuZGF0YVxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uaW5mbyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS5zb3VyY2UsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCwgc291cmNlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9kZXRhaWwvXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzb3VyY2VcXFwiOiBzb3VyY2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRvd25sb2FkX2xpbmspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpY3QgPSB7fVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZG93bmxvYWRfbGluay51bnNoaWZ0KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLljp/nvZHpobVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByZXMudXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHJlcy5kb3dubG9hZF9saW5rLm1hcChmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxLCBcXFwi6K+36YCJ5oup5LiL6L2957q/6LevXFxcIikuc2VsZWN0KChsaW5rcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmtzW2xpbmtzLm1hcChmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuaW5kZXhPZihpbnB1dCldLnVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMuZG93bmxvYWRfbGluaylcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uaWQsIGl0ZW0uc291cmNlKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICB9LFxcbiAgICDml6DlkI3lm77kuaY6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgZCA9IFtdXFxuICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vd3d3LmJvb2sxMjMuaW5mby9saXN0P2tleT1cXFwiICsga3cgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2VcXG4gICAgICAgIHZhciByZXMgPSByZXF1ZXN0KHVybClcXG4gICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXCIubGlzdF9wYWdlQ29udGVudF9fel95enYmJmxpXFxcIilcXG4gICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdGVtLCBcXFwiLmxpc3RfdGl0bGVfXzA2bnQyJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBkZmgoaXRlbSwgXFxcIi5saXN0X2F1dGhvcl9fbFB3cGwmJlRleHRcXFwiKSArIFxcXCJcXFxcblxcXCIgKyBwZGZoKGl0ZW0sIFxcXCIubGlzdF9yYXRlX19KN094MSYmVGV4dFxcXCIpICsgXFxcIlxcXFxuXFxcIiArIHBkZmgoaXRlbSwgXFxcIi5saXN0X2Rlc2NfX2tKajFZJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwZGZoKHJlcXVlc3QodXJsKSwgXFxcIi5kZXRhaWxfZG93bmxvYWRfYnRuX192N2I3ayYmaHJlZlxcXCIpXFxuICAgICAgICAgICAgICAgIH0sIFxcXCJodHRwczovL3d3dy5ib29rMTIzLmluZm9cXFwiICsgcGRmaChpdGVtLCBcXFwiYSYmaHJlZlxcXCIpKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICB9LFxcbiAgICBiYWlkdTogZnVuY3Rpb24ocmVzKSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi6L+Y5pyq55m76ZmGXFxcIilcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvYmFpZHVMb2dpbj9ydWxlPeWbvuS5pummhlByb1xcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgYmRzdG9rZW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9hcGkvZ2V0dGVtcGxhdGV2YXJpYWJsZT9maWVsZHM9WyUyMmJkc3Rva2VuJTIyXVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBDb29raWU6IHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2JhaWR1LnR4dFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pKS5yZXN1bHQuYmRzdG9rZW5cXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIi/nlLXlrZDkuaYvXFxcIiArIHJlcy50aXRsZSArIFxcXCIuXFxcIiArIHJlcy5leHRlbnNpb24sIFxcXCLor7fovpPlhaXkv53lrZjot6/lvoRcXFwiKS5pbnB1dCgoYmRzdG9rZW4sIHJlcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vZmlsZT9tZXRob2Q9Y3JlYXRlJmJkc3Rva2VuPVxcXCIgKyBiZHN0b2tlbiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llOiByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiByZXMuZmlsZXNpemUgKyBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5wdXQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2xpc3Q6IFtyZXMubWQ1XSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR5cGU6IDBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZXJybm8gPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovazlrZjmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAtOCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKXvvIzlt7Lnu4/kv53lrZjov4fov5nkuKrmlofku7bkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pe+8jOmUmeivr+eahOi3r+W+hFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHJlcy5lcnJubylcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBiZHN0b2tlbiwgcmVzKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKVcXFwiXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIGNvbXB1dGVSYXRpbmc6IGZ1bmN0aW9uKGUsIHQpIHtcXG4gICAgICAgIGxldCBpID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IDU7IHIrKykgciA8IE1hdGgucm91bmQodCAvIChlIC8gNSkpID8gaSArPSBcXFwi4piFXFxcIiA6IGkgKz0gXFxcIuKYhlxcXCI7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgfSxcXG4gICAgc2VydmVyczogW1xcXCJpcGZz5LiL6L29XFxcIiwgXFxcImh0dHBzOi8vZHdlYi5saW5rL2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vaXBmcy5qcHUuanAvaXBmcy9cXFwiLCBcXFwiaHR0cHM6Ly9jZi1pcGZzLmNvbS9pcGZzL1xcXCIsIFxcXCJodHRwczovL2dhdGV3YXkucGluYXRhLmNsb3VkL2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vaXBmcy1nYXRld2F5LmNsb3VkL2lwZnMvXFxcIl0sXFxuICAgIGdldEZpbGVTaXplOiBmdW5jdGlvbihzaXplKSB7XFxuICAgICAgICBpZiAoc2l6ZSA8PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IHVuaXRGb3JtID0gW1xcXCJCeXRlXFxcIiwgXFxcIktCXFxcIiwgXFxcIk1CXFxcIiwgXFxcIkdCXFxcIiwgXFxcIlRCXFxcIl07XFxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdW5pdEZvcm0ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcXG4gICAgICAgICAgICBpZiAoc2l6ZSA+IDEwMjQpIHtcXG4gICAgICAgICAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS50b0ZpeGVkKDIpLnJlcGxhY2UoLyhcXFxcLjAwKSQvLCBcXFwiXFxcIikgKyB1bml0Rm9ybVtpXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gXFxcIkVSUk9SOuaVsOWAvOi/h+Wkp1xcXCI7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnmb7luqbkupHnm5jnmbvpmYZcIixcInBhdGhcIjpcImJhaWR1TG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnNldFJlc3VsdChbe1xcbiAgICB1cmw6IFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLmhyZWZcXG4gICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vd2FwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgZmJhLndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIiwgZmJhLmdldENvb2tpZShcXFwiXFxcIikpXFxuICAgICAgICAgICAgICAgIGFsZXJ0KFxcXCLlt7Lojrflj5bliLBjb29raWXvvIzov5Tlm57ljbPlj69cXFwiKVxcbiAgICAgICAgICAgICAgICBmYmEuYmFjaygpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksXFxuICAgICAgICB1YTogTU9CSUxFX1VBLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZVxcbiAgICB9XFxufV0pXCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5Zu+5Lmm6aaGUHJvXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL2JhaWR1TG9naW4/cnVsZT3lm77kuabppoZQcm9cIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcbnNldFJlc3VsdChbe1xcbiAgICB1cmw6IFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLmhyZWZcXG4gICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vd2FwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgZmJhLndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIiwgZmJhLmdldENvb2tpZShcXFwiXFxcIikpXFxuICAgICAgICAgICAgICAgIGFsZXJ0KFxcXCLlt7Lojrflj5bliLBjb29raWXvvIzov5Tlm57ljbPlj69cXFwiKVxcbiAgICAgICAgICAgICAgICBmYmEuYmFjaygpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksXFxuICAgICAgICB1YTogTU9CSUxFX1VBLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZVxcbiAgICB9XFxufV0pXCIsXCJncm91cFwiOlwi6ZiF6K+7XCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKJcXFwiLFxcXCJwYXRoXFxcIjpcXFwi5pCc57SiXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnZhciBoaXN0b3J5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFxcXFxcImhpc3RvcnlcXFxcXFxcIiwgW10pXFxcXG5pZiAoIWhpc3RvcnkuaW5jbHVkZXMoZ2V0UGFyYW0oXFxcXFxcXCJrd1xcXFxcXFwiKSkpIHtcXFxcbiAgICBoaXN0b3J5LnVuc2hpZnQoZ2V0UGFyYW0oXFxcXFxcXCJrd1xcXFxcXFwiKSlcXFxcbiAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiaGlzdG9yeVxcXFxcXFwiLCBoaXN0b3J5KVxcXFxufVxcXFxuJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPeWbvuS5pummhlByb1xcXFxcXFwiKVtnZXRQYXJhbShcXFxcXFxcImVuZ2luZVxcXFxcXFwiKV0oZ2V0UGFyYW0oXFxcXFxcXCJrd1xcXFxcXFwiKSwgTVlfUEFHRSlcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwidGV4dF8xXFxcIixcXFwibmFtZVxcXCI6XFxcImFwaVxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcGlcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0ge1xcXFxuICAgIGVuZ2luZXM6IFtcXFxcXFxcIuixhueTo1xcXFxcXFwiLCBcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIsIFxcXFxcXFwiWmxpYnJhcnlcXFxcXFxcIiwgXFxcXFxcXCJMaWJnZW5cXFxcXFxcIiwgXFxcXFxcXCLpuKDmkalcXFxcXFxcIiwgXFxcXFxcXCLml6DlkI3lm77kuaZcXFxcXFxcIl0sXFxcXG4gICAg6LGG55OjOiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgZCA9IFtdO1xcXFxuICAgICAgICB2YXIgY29tcHV0ZVJhdGluZyA9ICQucmVxdWlyZShcXFxcXFxcImFwaT9ydWxlPeWbvuS5pummhlByb1xcXFxcXFwiKS5jb21wdXRlUmF0aW5nXFxcXG4gICAgICAgIHZhciB1cmwgPSBidWlsZFVybChcXFxcXFxcImh0dHBzOi8vZnJvZG8uZG91YmFuLmNvbS9hcGkvdjIvc2VhcmNoL3N1YmplY3RzXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIHR5cGU6IFxcXFxcXFwiYm9va1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgcToga3csXFxcXG4gICAgICAgICAgICBzdGFydDogcGFnZSA9PSAxID8gMCA6ICgocGFnZSAtIDEpICogMjApLFxcXFxuICAgICAgICAgICAgY291bnQ6IDIwLFxcXFxuICAgICAgICAgICAgYXBpa2V5OiBcXFxcXFxcIjBkYWQ1NTFlYzBmODRlZDAyOTA3ZmY1YzQyZThlYzcwXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdCh1cmwsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgICAgICBob3N0OiBcXFxcXFxcImZyb2RvLmRvdWJhbi5jb21cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogXFxcXFxcXCJSZXh4YXItQ29yZS8wLjEuMyBhcGktY2xpZW50LzEgY29tLmRvdWJhbi5mcm9kby83LjkuMC5iZXRhMigyMTUpIEFuZHJvaWQvMjUgcHJvZHVjdC9UQVMtQUwwMCB2ZW5kb3IvSFVBV0VJIG1vZGVsL1RBUy1BTDAwICByb20vYW5kcm9pZCAgbmV0d29yay93aWZpICBwbGF0Zm9ybS9tb2JpbGUgY29tLmRvdWJhbi5mcm9kby83LjkuMC5iZXRhMigyMTUpIFJleHhhci8xLjIuMTUxICBwbGF0Zm9ybS9tb2JpbGUgMS4yLjE1MVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pKS5pdGVtc1xcXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRhcmdldFxcXFxuICAgICAgICAgICAgc3RhciA9IChpdGVtLnJhdGluZyA/IFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBjb21wdXRlUmF0aW5nKGl0ZW0ucmF0aW5nLm1heCwgaXRlbS5yYXRpbmcudmFsdWUpICsgXFxcXFxcXCIg6K+E5YiG77yaXFxcXFxcXCIgKyBpdGVtLnJhdGluZy52YWx1ZSA6IFxcXFxcXFwiXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICBkZXNjID0gaXRlbS5jYXJkX3N1YnRpdGxlICsgc3RhclxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBkZXNjLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5jb3Zlcl91cmwsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lI1xcXFxcXFwiKS5ydWxlKChpZCwgc3RhcikgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1ID0gYnVpbGRVcmwoXFxcXFxcXCJodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyL2Jvb2svXFxcXFxcXCIgKyBpZCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpa2V5OiBcXFxcXFxcIjBkYWQ1NTFlYzBmODRlZDAyOTA3ZmY1YzQyZThlYzcwXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdCh1LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdDogXFxcXFxcXCJmcm9kby5kb3ViYW4uY29tXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiUmV4eGFyLUNvcmUvMC4xLjMgYXBpLWNsaWVudC8xIGNvbS5kb3ViYW4uZnJvZG8vNy45LjAuYmV0YTIoMjE1KSBBbmRyb2lkLzI1IHByb2R1Y3QvVEFTLUFMMDAgdmVuZG9yL0hVQVdFSSBtb2RlbC9UQVMtQUwwMCAgcm9tL2FuZHJvaWQgIG5ldHdvcmsvd2lmaSAgcGxhdGZvcm0vbW9iaWxlIGNvbS5kb3ViYW4uZnJvZG8vNy45LjAuYmV0YTIoMjE1KSBSZXh4YXIvMS4yLjE1MSAgcGxhdGZvcm0vbW9iaWxlIDEuMi4xNTFcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgICAgICAgICAgZC51bnNoaWZ0KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiByZXMudGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHJlcy5waWMubm9ybWFsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcIng1Oi8vXFxcXFxcXCIgKyByZXMuaW5mb191cmwsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiByZXMuY2FyZF9zdWJ0aXRsZSArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBzdGFyLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImxpbmVfYmxhbmtcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgaW50cm8gPSBg5L2c6ICF77yaJHtyZXMuYXV0aG9yLmpvaW4oXFxcXFxcXCIsXFxcXFxcXCIpfVxcXFxcXFxcblxcXFxcXFxcbue/u+ivke+8miR7cmVzLnRyYW5zbGF0b3Iuam9pbihcXFxcXFxcIixcXFxcXFxcIil9XFxcXFxcXFxuXFxcXFxcXFxu566A5LuL77yaJHtyZXMuaW50cm99XFxcXFxcXFxuXFxcXFxcXFxu5L2c6ICF566A5LuL77yaJHtyZXMuYXV0aG9yX2ludHJvfVxcXFxcXFxcblxcXFxcXFxcbuaRmOW9le+8miR7cmVzLmNhdGFsb2d9YFxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGludHJvLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwibG9uZ190ZXh0XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZCwgc3RhcilcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXFxcbiAgICB9LFxcXFxuICAgIFlsaWJyYXJ5OiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgZCA9IFtdXFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS55bGlicmFyeS5vcmcvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGDkvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0gSVNCTjoke2l0ZW0uaXNibj9pdGVtLmlzYm46XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5Ye654mI5pe26Ze0OiR7aXRlbS55ZWFyP2l0ZW0ueWVhcjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXFxcXFwiYXBpP3J1bGU95Zu+5Lmm6aaGUHJvXFxcXFxcXCIpLmdldEZpbGVTaXplKGl0ZW0uZmlsZXNpemUpfWAsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkueWxpYnJhcnkub3JnL2FwaS9kZXRhaWwvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic291cmNlXFxcXFxcXCI6IFxcXFxcXFwiemxpYnJhcnlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPeWbvuS5pummhlByb1xcXFxcXFwiKS5zZXJ2ZXJzXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCLnmb7luqbkupHnm5jovazlrZhcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXFxcXFwi6YCJ5oup57q/6LevXFxcXFxcXCIpLnNlbGVjdCgocmVzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmaChyZXF1ZXN0KFxcXFxcXFwiaHR0cDovL2xpYnJhcnkubG9sL21haW4vXFxcXFxcXCIgKyByZXMubWQ1KSwgXFxcXFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImFwaT9ydWxlPeWbvuS5pummhlByb1xcXFxcXFwiKS5iYWlkdShyZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFxcXFxcImlwZnPkuIvovb1cXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYGh0dHBzOi8vaXBmcy1jaGVja2VyLjFrYnRvb2wuY29tLyR7cmVzLmlwZnNfY2lkfWBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQgKyByZXMuaXBmc19jaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxuICAgIH0sXFxcXG4gICAgWmxpYnJhcnk6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciBkID0gW107XFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL3dvcmtlci56bGliLmFwcC9hcGkvc2VhcmNoL1xcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI6IGt3LFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwicGFnZVxcXFxcXFwiOiBwYWdlLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwic2Vuc2l0aXZlXFxcXFxcXCI6IGZhbHNlXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KSkuZGF0YVxcXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogYDxzbWFsbD7kvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0gSVNCTjoke2l0ZW0uaXNibj9pdGVtLmlzYm46XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5Ye654mI5pe26Ze0OiR7aXRlbS55ZWFyP2l0ZW0ueWVhcjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXFxcXFwiYXBpP3J1bGU95Zu+5Lmm6aaGUHJvXFxcXFxcXCIpLmdldEZpbGVTaXplKGl0ZW0uZmlsZXNpemUpfWAsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpdGVtLmNvdmVyLFxcXFxuICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL3dvcmtlci56bGliLmFwcC9kb3dubG9hZC9cXFxcXFxcIiArIGl0ZW0uaWRcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIHNldFJlc3VsdChkKVxcXFxuICAgIH0sXFxcXG4gICAg6big5pGpOiBmdW5jdGlvbihrdykge1xcXFxuICAgICAgICB2YXIgZCA9IFtdXFxcXG4gICAgICAgIHZhciBpZCA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vd3d3NS5qaXVtb2RpYXJ5LmNvbS9pbml0X2h1YnMucGhwXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgICAgICBxOiBrdyxcXFxcbiAgICAgICAgICAgICAgICByZW1vdGVfaXA6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgdGltZV9pbnQ6IERhdGUucGFyc2UobmV3IERhdGUoKSkgKyBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pKS5pZFxcXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly93d3c1LmppdW1vZGlhcnkuY29tL2FqYXhfZmV0Y2hfaHVicy5waHBcXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgICAgICBzZXQ6IDBcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSkpLnNvdXJjZXNcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBpdGVtLmRldGFpbHMuZGF0YS5mb3JFYWNoKGl0ZW0yID0+IHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbTIudGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0yLmRlcyArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBpdGVtMi52X2RlcyxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBcXFxcXFxcImh0dHA6XFxcXFxcXCIgKyBpdGVtMi5pbWdfbGluayxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0ZW0yLmltZ19saW5rID8gXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXFxcXFwiIDogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtMi5saW5rXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXFxcbiAgICB9LFxcXFxuICAgIGNoZWNrTGliZ2VuOiBmdW5jdGlvbigpIHtcXFxcbiAgICAgICAgdmFyIGRvbWFpbnMgPSBbXFxcXFxcXCJodHRwOi8vbGliZ2VuLnJzXFxcXFxcXCIsIFxcXFxcXFwiaHR0cDovL2xpYmdlbi5pc1xcXFxcXFwiLCBcXFxcXFxcImh0dHA6Ly9saWJnZW4uc3RcXFxcXFxcIl1cXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGZvciAoaXRlbSBvZiBkb21haW5zKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaXRlbSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB3aXRoU3RhdHVzQ29kZTogdHJ1ZVxcXFxuICAgICAgICAgICAgICAgIH0pKS5zdGF0dXNDb2RlXFxcXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gMjAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXCJsaWJnZW5cXFxcXFxcIiwgaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcXFxcXCLmo4DmtYvliLDlj6/nlKjplZzlg4/vvIzor7fliLfmlrDlkI7ph43mlrDmkJzntKJcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi5omA5pyJ6ZWc5YOP6YO95peg5rOV5L2/55So77yM6K+35omT5byAVFrkvb/nlKhcXFxcXFxcIilcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAgTGliZ2VuOiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgZCA9IFtdXFxcXG4gICAgICAgIGlmIChnZXRJdGVtKFxcXFxcXFwibGliZ2VuXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi5peg5Y+v55So6ZWc5YOP77yM5q2j5Zyo5qOA5rWL5LitLi4uXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcXFxcXCJhcGk/cnVsZT3lm77kuabppoZQcm9cXFxcXFxcIikuY2hlY2tMaWJnZW4oKVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdmFyIHVybCA9IGdldEl0ZW0oXFxcXFxcXCJsaWJnZW5cXFxcXFxcIikgKyBcXFxcXFxcIi9zZWFyY2gucGhwP3JlcT1cXFxcXFxcIiArIGt3ICsgXFxcXFxcXCImcGFnZT1cXFxcXFxcIiArIHBhZ2VcXFxcbiAgICAgICAgICAgIHZhciByID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge1xcXFxuICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlXFxcXG4gICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgIGlmIChyLnN0YXR1c0NvZGUgPT0gMjAwKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHJlcyA9IHIuYm9keVxcXFxuICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXFxcXFwiYm9keSYmdHJcXFxcXFxcIikuZmlsdGVyKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pbmNsdWRlcyhcXFxcXFxcIm5vd3JhcFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgbGkgPSBpdGVtLm1hdGNoKG5ldyBSZWdFeHAoXFxcXFxcXCI8dGQoLio/KTwvdGQ+XFxcXFxcXCIsIFxcXFxcXFwiZ1xcXFxcXFwiKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBwZGZoKGxpWzFdLCBcXFxcXFxcImEmJlRleHRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDM7IGkgPCBsaS5sZW5ndGggLSAzOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gXFxcXFxcXCLvvJtcXFxcXFxcIiArIHBkZmgobGlbaV0sIFxcXFxcXFwiVGV4dFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaVsyXSwgXFxcXFxcXCJUZXh0XFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZGVzYyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChsaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwZGZoKHJlcXVlc3QocGRmaChsaVs5XSwgXFxcXFxcXCJhJiZocmVmXFxcXFxcXCIpKSwgXFxcXFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxpKVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi6ZWc5YOP5aSx5pWI77yM6YeN5paw5qOA5rWL5LitLi4uXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiYXBpP3J1bGU95Zu+5Lmm6aaGUHJvXFxcXFxcXCIpLmNoZWNrTGliZ2VuKClcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgfSxcXFxcbiAgICDnvZHnm5g6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciBkID0gW11cXFxcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9zZWFyY2gvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImtleXdvcmRcXFxcXFxcIjoga3csXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzZW5zaXRpdmVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pKS5kYXRhXFxcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5pbmZvLFxcXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uc291cmNlLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCwgc291cmNlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkuYm9va3Bhbi5uZXQvYXBpL2RldGFpbC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJzb3VyY2VcXFxcXFxcIjogc291cmNlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kb3dubG9hZF9saW5rKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpY3QgPSB7fVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kb3dubG9hZF9saW5rLnVuc2hpZnQoe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcXFxcXFxcIuWOn+e9kemhtVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlcy51cmxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHJlcy5kb3dubG9hZF9saW5rLm1hcChmdW5jdGlvbihpdGVtKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSwgXFxcXFxcXCLor7fpgInmi6nkuIvovb3nur/ot69cXFxcXFxcIikuc2VsZWN0KChsaW5rcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGlua3NbbGlua3MubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuaW5kZXhPZihpbnB1dCldLnVybFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlcy5kb3dubG9hZF9saW5rKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnVybFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZCwgaXRlbS5zb3VyY2UpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgfSxcXFxcbiAgICDml6DlkI3lm77kuaY6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciBkID0gW11cXFxcbiAgICAgICAgdmFyIHVybCA9IFxcXFxcXFwiaHR0cHM6Ly93d3cuYm9vazEyMy5pbmZvL2xpc3Q/a2V5PVxcXFxcXFwiICsga3cgKyBcXFxcXFxcIiZwYWdlPVxcXFxcXFwiICsgcGFnZVxcXFxuICAgICAgICB2YXIgcmVzID0gcmVxdWVzdCh1cmwpXFxcXG4gICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXFxcXFwiLmxpc3RfcGFnZUNvbnRlbnRfX3pfeXp2JiZsaVxcXFxcXFwiKVxcXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sIFxcXFxcXFwiLmxpc3RfdGl0bGVfXzA2bnQyJiZUZXh0XFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBkZmgoaXRlbSwgXFxcXFxcXCIubGlzdF9hdXRob3JfX2xQd3BsJiZUZXh0XFxcXFxcXCIpICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCIubGlzdF9yYXRlX19KN094MSYmVGV4dFxcXFxcXFwiKSArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBwZGZoKGl0ZW0sIFxcXFxcXFwiLmxpc3RfZGVzY19fa0pqMVkmJlRleHRcXFxcXFxcIiksXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHVybCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmaChyZXF1ZXN0KHVybCksIFxcXFxcXFwiLmRldGFpbF9kb3dubG9hZF9idG5fX3Y3YjdrJiZocmVmXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgfSwgXFxcXFxcXCJodHRwczovL3d3dy5ib29rMTIzLmluZm9cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCJhJiZocmVmXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxuICAgIH0sXFxcXG4gICAgYmFpZHU6IGZ1bmN0aW9uKHJlcykge1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcIui/mOacqueZu+mZhlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9iYWlkdUxvZ2luP3J1bGU95Zu+5Lmm6aaGUHJvXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGJkc3Rva2VuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL2FwaS9nZXR0ZW1wbGF0ZXZhcmlhYmxlP2ZpZWxkcz1bJTIyYmRzdG9rZW4lMjJdXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llOiByZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KSkucmVzdWx0LmJkc3Rva2VuXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcXFxcXCIv55S15a2Q5LmmL1xcXFxcXFwiICsgcmVzLnRpdGxlICsgXFxcXFxcXCIuXFxcXFxcXCIgKyByZXMuZXh0ZW5zaW9uLCBcXFxcXFxcIuivt+i+k+WFpeS/neWtmOi3r+W+hFxcXFxcXFwiKS5pbnB1dCgoYmRzdG9rZW4sIHJlcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vZmlsZT9tZXRob2Q9Y3JlYXRlJmJkc3Rva2VuPVxcXFxcXFwiICsgYmRzdG9rZW4sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWU6IHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcmVzLmZpbGVzaXplICsgXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbnB1dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19saXN0OiBbcmVzLm1kNV0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR5cGU6IDBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZXJybm8gPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAtOCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKXvvIzlt7Lnu4/kv53lrZjov4fov5nkuKrmlofku7bkuoZcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAyKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pe+8jOmUmeivr+eahOi3r+W+hFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cocmVzLmVycm5vKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgYmRzdG9rZW4sIHJlcylcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAgY29tcHV0ZVJhdGluZzogZnVuY3Rpb24oZSwgdCkge1xcXFxuICAgICAgICBsZXQgaSA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgNTsgcisrKSByIDwgTWF0aC5yb3VuZCh0IC8gKGUgLyA1KSkgPyBpICs9IFxcXFxcXFwi4piFXFxcXFxcXCIgOiBpICs9IFxcXFxcXFwi4piGXFxcXFxcXCI7XFxcXG4gICAgICAgIHJldHVybiBpO1xcXFxuICAgIH0sXFxcXG4gICAgc2VydmVyczogW1xcXFxcXFwiaXBmc+S4i+i9vVxcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vZHdlYi5saW5rL2lwZnMvXFxcXFxcXCIsIFxcXFxcXFwiaHR0cHM6Ly9pcGZzLmpwdS5qcC9pcGZzL1xcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vY2YtaXBmcy5jb20vaXBmcy9cXFxcXFxcIiwgXFxcXFxcXCJodHRwczovL2dhdGV3YXkucGluYXRhLmNsb3VkL2lwZnMvXFxcXFxcXCIsIFxcXFxcXFwiaHR0cHM6Ly9pcGZzLWdhdGV3YXkuY2xvdWQvaXBmcy9cXFxcXFxcIl0sXFxcXG4gICAgZ2V0RmlsZVNpemU6IGZ1bmN0aW9uKHNpemUpIHtcXFxcbiAgICAgICAgaWYgKHNpemUgPD0gMCkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IHVuaXRGb3JtID0gW1xcXFxcXFwiQnl0ZVxcXFxcXFwiLCBcXFxcXFxcIktCXFxcXFxcXCIsIFxcXFxcXFwiTUJcXFxcXFxcIiwgXFxcXFxcXCJHQlxcXFxcXFwiLCBcXFxcXFxcIlRCXFxcXFxcXCJdO1xcXFxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdW5pdEZvcm0ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGlmIChzaXplID4gMTAyNCkge1xcXFxuICAgICAgICAgICAgICAgIHNpemUgLz0gMTAyNDtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemUudG9GaXhlZCgyKS5yZXBsYWNlKC8oXFxcXFxcXFwuMDApJC8sIFxcXFxcXFwiXFxcXFxcXCIpICsgdW5pdEZvcm1baV07XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiRVJST1I65pWw5YC86L+H5aSnXFxcXFxcXCI7XFxcXG4gICAgfVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIueZvuW6puS6keebmOeZu+mZhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJiYWlkdUxvZ2luXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuc2V0UmVzdWx0KFt7XFxcXG4gICAgdXJsOiBcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9cXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwiMTAwJSYmZmxvYXRcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgdXJsID0gbG9jYXRpb24uaHJlZlxcXFxuICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS93YXBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBmYmEud3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIsIGZiYS5nZXRDb29raWUoXFxcXFxcXCJcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgYWxlcnQoXFxcXFxcXCLlt7Lojrflj5bliLBjb29raWXvvIzov5Tlm57ljbPlj69cXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICBmYmEuYmFjaygpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICB1YTogTU9CSUxFX1VBLFxcXFxuICAgICAgICBjYW5CYWNrOiB0cnVlXFxcXG4gICAgfVxcXFxufV0pXFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwidGl0bGUiOiLpnLnpm7PlpKfljLsgIOadjuWPryJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement