Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥聚直播 ⚙ 聚直播设置 ⚙@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWKoOi9veaVsOaNrlwiLFwicGF0aFwiOlwiY29uZmlnXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBnZXRDb25maWcoKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgY29uZmlnID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvbGl2ZS9jb25maWcuanNvblxcXCIpO1xcbiAgICAgICAgaWYgKCFjb25maWcgfHwgY29uZmlnID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgZGF0YTogW10sXFxuICAgICAgICAgICAgICAgIHZlcnNpb246IDBcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbmZpZylcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB0b2FzdChcXFwi6YWN572u5paH5Lu25qC85byP5pyJ6K+vXFxcIilcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIGRhdGE6IFtdLFxcbiAgICAgICAgICAgIHZlcnNpb246IDBcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaJuemHj+WvvOWFpVwiLFwicGF0aFwiOlwiYmF0Y2hJbVwiLFwicnVsZVwiOlwiZnVuY3Rpb24gYmF0Y2hJbXBvcnQoaW5wdXQsIHJ1bGUpIHtcXG4gICAgaW5wdXQgPSBpbnB1dC50cmltKCk7XFxuICAgIGlmIChpbnB1dC5sZW5ndGggPCAzIHx8IGlucHV0WzBdICE9IFxcXCJ7XFxcIikge1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOagvOW8j1xcXCJcXG4gICAgfVxcbiAgICBsZXQgaW0gPSBKU09OLnBhcnNlKGlucHV0KTtcXG4gICAgaWYgKGltLmRhdGEgPT0gbnVsbCB8fCBpbS5kYXRhLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTmoLzlvI9cXFwiXFxuICAgIH1cXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9jb25maWc/cnVsZT1cXFwiICsgcnVsZSkpLnJ1bGUpO1xcbiAgICBsZXQgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxuICAgIGxldCBjb3VudCA9IDA7XFxuICAgIGxldCBhbGwgPSBjb25maWcuZGF0YS5tYXAoaXQgPT4gaXQudXJsICsgXFxcIiYmJlxcXCIpLmpvaW4oKTtcXG4gICAgZm9yIChsZXQgaSBvZiBpbS5kYXRhKSB7XFxuICAgICAgICBpZiAoYWxsLmluZGV4T2YoaS51cmwgKyBcXFwiJiYmXFxcIikgPj0gMCkge1xcbiAgICAgICAgICAgIC8v6YeN5aSN55qE5LiN6KaBXFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICB9XFxuICAgICAgICBjb3VudCsrO1xcbiAgICAgICAgY29uZmlnLmRhdGEucHVzaChpKVxcbiAgICB9XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Llr7zlhaVcXFwiICsgY291bnQgKyBcXFwi5p2h6K6i6ZiF5rqQXFxcIjtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnm7Tmkq3mlbDmja5cIixcInBhdGhcIjpcInJlbmRlckRhdGFcIixcInJ1bGVcIjpcImZ1bmN0aW9uIHJlbmRlckxpdmVEYXRhKHVybCkge1xcbiAgICBsZXQgbTN1ID0gXFxcIlxcXCI7XFxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XFxuICAgICAgICBtM3UgPSBmZXRjaCh1cmwpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgbGV0IGludGVydmFsID0gTnVtYmVyKGdldEl0ZW0oJ2ludGVydmFsJywgJzI0JykpLFxcbiAgICAgICAgICAgIG9sZERhdGEgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUodXJsKSArICcuanMnKSxcXG4gICAgICAgICAgICByZW1vdGVEYXRhID0gJyc7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHJlbW90ZURhdGEgPSBmZXRjaENhY2hlKHVybCwgaW50ZXJ2YWwsIHtcXG4gICAgICAgICAgICAgICAgdGltZW91dDogNTAwMDBcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICBpZiAoIXJlbW90ZURhdGEuaW5jbHVkZXMoJ2h0dHAnKSB8fCByZW1vdGVEYXRhLmluY2x1ZGVzKCc8Ym9keT4nKSkge1xcbiAgICAgICAgICAgIGxvZygn5pu05paw5aSx6LSlJyk7XFxuICAgICAgICAgICAgaWYgKG9sZERhdGEpIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUodXJsKSArICcuanMnLCBvbGREYXRhKTtcXG4gICAgICAgICAgICBtM3UgPSBvbGREYXRhO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBtM3UgPSByZW1vdGVEYXRhO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGxldCBtb2RlID0gbTN1LmluZGV4T2YoJyNFWFRNM1UnKSA9PSAwLFxcbiAgICAgICAgcmU7XFxuICAgIGlmIChtb2RlKSB7XFxuICAgICAgICByZSA9IC8oLiopLCguKilcXFxccyo/KCg/Omh0dHB8cnRtcClbXiNcXFxcc10qKS9nO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmUgPSAvKCkoPzpcXFxcQlxcXFwkY19zdGFydHxcXFxcQiN7MSwyfSk/KC4qPyksPygjI3zlpLQjfFxcXFwkY19lbmR8LD8jZ2VucmUjfCg/Omh0dHB8cnRtcClbXlxcXFxzXSopL2c7XFxuICAgIH1cXG5cXG4gICAgbGV0IGl0ZW1zID0ge30sXFxuICAgICAgICBncm91cCA9ICfmnKrliIbnu4QnO1xcbiAgICBmb3IgKGxldCBpID0gcmUuZXhlYyhtM3UpOyBpICE9IG51bGw7IGkgPSByZS5leGVjKG0zdSkpIHtcXG4gICAgICAgIGlmIChtb2RlKSB7XFxuICAgICAgICAgICAgZ3JvdXAgPSAoaVsxXS5tYXRjaCgvZ3JvdXAtdGl0bGU9XFxcIiguKj8pXFxcIi8pIHx8IFtudWxsLCBncm91cF0pWzFdO1xcbiAgICAgICAgfSBlbHNlIGlmIChbJyNnZW5yZSMnLCAnIyMnLCAn5aS0IycsICckY19lbmQnXS5pbmNsdWRlcyhpWzNdKSkge1xcbiAgICAgICAgICAgIGdyb3VwID0gaVsyXTtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCB0aXRsZSA9IGlbMl0sXFxuICAgICAgICAgICAgdXJsID0gaVszXS5pbmNsdWRlcygnIycpID8gaVszXS5zcGxpdCgnIycpIDogW2lbM11dLFxcbiAgICAgICAgICAgIGhlYWRlcnMgPSBbXTtcXG4gICAgICAgIGlmICghdXJsW3VybC5sZW5ndGggLSAxXSkgdXJsLnBvcCgpO1xcbiAgICAgICAgdXJsLmZvckVhY2goKHYsIGluZGV4LCBhcnJheSkgPT4ge1xcbiAgICAgICAgICAgIGlmICgvO1xcXFx7KC4qKVxcXFx9Ly50ZXN0KHYpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBvYmogPSB7fSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbiA9IHYubWF0Y2goLztcXFxceyguKilcXFxcfS8pWzFdLFxcbiAgICAgICAgICAgICAgICAgICAgYXJyID0gY29uLnNwbGl0KCcmJicpO1xcbiAgICAgICAgICAgICAgICBhcnIuZm9yRWFjaCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IGkuc3BsaXQoJ0AnKTtcXG4gICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWUucmVwbGFjZSgvOy9nLCAn77yb77ybJyk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IHYubWF0Y2goL14oW147XSopO1xcXFx7LylbMV1cXG4gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKG9iaik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBLnJlcGxhY2UoLzsvZywgJ++8m++8mycpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoYXJyYXlbaW5kZXhdLmluY2x1ZGVzKFxcXCIucGhwP2lkPVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IFxcXCJ2aWRlbzovL1xcXCIgKyBhcnJheVtpbmRleF1cXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBhcnJheVtpbmRleF0gPSBhcnJheVtpbmRleF0ucmVwbGFjZSgvOy9nLCAn77yb77ybJykgKyAnI2lzVmlkZW89dHJ1ZSMnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKGl0ZW1zW2dyb3VwXSkge1xcbiAgICAgICAgICAgIGlmIChpdGVtc1tncm91cF1bdGl0bGVdKSB7XFxuICAgICAgICAgICAgICAgIGl0ZW1zW2dyb3VwXVt0aXRsZV0udXJsID0gaXRlbXNbZ3JvdXBdW3RpdGxlXS51cmwuY29uY2F0KHVybCk7XFxuICAgICAgICAgICAgICAgIGl0ZW1zW2dyb3VwXVt0aXRsZV0uaGVhZGVycyA9IGl0ZW1zW2dyb3VwXVt0aXRsZV0uaGVhZGVycy5jb25jYXQoaGVhZGVycyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaXRlbXNbZ3JvdXBdW3RpdGxlXSA9IHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVyc1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaXRlbXNbZ3JvdXBdID0ge307XFxuICAgICAgICAgICAgaXRlbXNbZ3JvdXBdW3RpdGxlXSA9IHtcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnNcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfTtcXG4gICAgfVxcbiAgICByZXR1cm4gaXRlbXM7XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgcmVuZGVyTGl2ZURhdGE6IHJlbmRlckxpdmVEYXRhXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6K6+572u6aG1XCIsXCJwYXRoXCI6XCJyZW5kZXJTZXR0aW5nXCIsXCJydWxlXCI6XCJmdW5jdGlvbiByZW5kZXJTZXR0aW5nKCkge1xcbiAgICBmdW5jdGlvbiBnZXRDb2xvcmVkVGV4dCh0ZXh0KSB7XFxuICAgICAgICByZXR1cm4gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzE5Qjg5RFxcXCI+JyArIHRleHQgKyAnPC9zcGFuPic7XFxuICAgIH1cXG4gICAgY29uc3QgZCA9IFtdO1xcbiAgICBsZXQgaW50ZXJ2YWwgPSBnZXRJdGVtKCdpbnRlcnZhbCcsICcyNCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGludGVydmFsID09IC0xID8gJ+W3suemgeatouiHquWKqOabtOaWsCcuZm9udGNvbG9yKFxcXCIjMTlCODlEXFxcIikuYm9sZCgpIDogKCfmm7TmlrDpl7TpmpQ6JyArIGludGVydmFsICsgJ+Wwj+aXticpLmZvbnRjb2xvcihcXFwiIzE5Qjg5RFxcXCIpLmJvbGQoKSxcXG4gICAgICAgIHVybDogJChpbnRlcnZhbCwgJ+i+k+WFpW7kuLrmraPmlbTmlbDml7bvvIzmr4/pmpRu5bCP5pe26Ieq5Yqo5pu05pawXFxcXG7kuLow5pe277yM5q+P5qyh5omT5byA6YO95Lya5pu05pawXFxcXG7kuLotMeaXtu+8jOemgeatouiHquWKqOabtOaWsCcpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID49IC0xKSB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2ludGVydmFsJywgaW5wdXQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2ltZzIuYmFpZHUuY29tL2ltYWdlX3NlYXJjaC9zcmM9aHR0cCUzQSUyRiUyRmlzNC5tenN0YXRpYy5jb20lMkZpbWFnZSUyRnRodW1iJTJGUHVycGxlMyUyRnY0JTJGZGYlMkZmNiUyRmRhJTJGZGZmNmRhODMtNDdkNy05Y2I2LTIzOTgtMTkxOWMxMzgzN2I0JTJGbXpsLmtnbW53b2RvLnBuZyUyRjB4MHNzLTg1LmpwZyZyZWZlcj1odHRwJTNBJTJGJTJGaXM0Lm16c3RhdGljLmNvbSZhcHA9MjAwMiZzaXplPWY5OTk5LDEwMDAwJnE9YTgwJm49MCZnPTBuJmZtdD1qcGVnP3NlYz0xNjM4NjI5MzQ5JnQ9MmY2ZDk2NzE4NWZlMmI5YzU0ZThiMjMwZWI4M2U2NmMnLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldENvbG9yZWRUZXh0KFxcXCLmlrDlu7rorqLpmIVcXFwiKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi6K+36L6T5YWl55u05pKt5rqQ6K6i6ZiF5Zyw5Z2AXFxcIixcXG4gICAgICAgIHVybDogJCgnJywgJ+ivt+i+k+WFpeiuoumYheWcsOWdgCcpLmlucHV0KChydWxlKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kuI3og73kuLrnqbpcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmRleE9mKFxcXCJodHRwXFxcIikgIT0gMCAmJiBpbnB1dC5pbmRleE9mKFxcXCJmaWxlXFxcIikgIT0gMCAmJiBpbnB1dC5pbmRleE9mKFxcXCJoaWtlclxcXCIpICE9IDApIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+mTvuaOpeagvOW8j+acieivr1xcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgXFxcIuivt+i+k+WFpeiuoumYheagh+mimFxcXCIpLmlucHV0KCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnP3J1bGU9XFxcIiArIHJ1bGUpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBnZXRDb25maWcoKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suS/neWtmFxcXCI7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIGdldE15VmFyKCd0aXRsZScpKVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRDb2xvcmVkVGV4dChcXFwi5a+85YWl6K6i6ZiFXFxcIiksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgdXJsOiAkKCcnLCAn5pSv5oyB5Y6f5aeL5pWw5o2u5ZKM5LqR5Ymq6LS05p2/5YiG5Lqr6ZO+5o6lJykuaW5wdXQoKHJ1bGUpID0+IHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2JhdGNoSW0/cnVsZT1cXFwiICsgcnVsZSkpLnJ1bGUpO1xcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKCfogZrnm7Tmkq3liIbkuqsjIycpKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gcGFyc2VQYXN0ZShpbnB1dC5zcGxpdCgnIyNcXFxcbicpWzFdKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGJhdGNoSW1wb3J0KGlucHV0LCBydWxlKTtcXG4gICAgICAgIH0sIGdldE15VmFyKCd0aXRsZScpKVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRDb2xvcmVkVGV4dChcXFwi5a+85YWl5pys5Zyw5rqQXFxcIiksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpeebtOaSrea6kOWQjeensFxcXCIsXFxuICAgICAgICB1cmw6ICQoJycsICfor7fovpPlhaXnm7Tmkq3mupDlkI3np7AnKS5pbnB1dCgocnVsZSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5LiN6IO95Li656m6XFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZmlsZVNlbGVjdDovL1xcXCIgKyAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGlucHV0LnNwbGl0KFxcXCIvXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9saXZlL1xcXCIgKyBuYW1lICsgXFxcIi5tM3VcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1xcXCIgKyBzW3MubGVuZ3RoIC0gMV0pXFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWMuaW5jbHVkZXMoJ2h0dHAnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/pnZ7ms5Xmlofku7YnXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUodXJsLCBjKVxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9jb25maWc/cnVsZT3ogZrnm7Tmkq1cXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxuICAgICAgICAgICAgICAgICAgICBjb25maWcuZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suS/neWtmCdcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0Q29sb3JlZFRleHQoXFxcIuWIhuS6q+iuoumYhVxcXCIpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgIHVybDogJChbXFxcIuWOn+Wni+aVsOaNrlxcXCIsIFxcXCLkupHliarotLTmnb9cXFwiLCBcXFwi5LqR5Y+j5LukXFxcIl0sIDMpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJ+ehruWumuWvvOWHuu+8n1xcXFxuKOemgeeUqOiuoumYheS4jeS8muWvvOWHuiknKS5jb25maXJtKCh0eXBlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnXFxcIikpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICBjb25maWcgPSBnZXRDb25maWcoKTtcXG4gICAgICAgICAgICAgICAgY29uZmlnLmRhdGEgPSBjb25maWcuZGF0YS5maWx0ZXIodiA9PiAhdi5pblZpc2libGUpO1xcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcXFwi5LqR5Ymq6LS05p2/XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAn6IGa55u05pKt5YiG5LqrIyNcXFxcbicgKyBzaGFyZVBhc3RlKEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXFxcIuS6keWPo+S7pFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gJ+iBmuebtOaSreWIhuS6qyzlpI3liLblkI7miZPlvIDova/ku7bljbPlj6/lr7zlhaVcXFxcbicgKyBzaGFyZVBhc3RlKEpTT04uc3RyaW5naWZ5KGNvbmZpZykpICsgJ0BpbXBvcnQ9anM6ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvY2xvdWQ/cnVsZT3ogZrnm7Tmkq1cXFwiKSkucnVsZSknO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnN0cmluZ2lmeShjb25maWcpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBkYXRhO1xcbiAgICAgICAgICAgIH0sIGlucHV0KVxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0Q29sb3JlZFRleHQoXFxcIue8lui+keWFqOmDqFxcXCIpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgIHVybDogXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIlxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcblxcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXCIpKS5ydWxlKTtcXG4gICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxuICAgIGxldCBlZGl0TW9kZSA9IGdldE15VmFyKCdlZGl0TW9kZScsICflkK/nlKjnpoHnlKgnKTtcXG4gICAgWyflkK/nlKjnpoHnlKgnLCAn5Yig6Zmk6K6i6ZiFJywgJ+mHjeaWsOaOkuW6jycsICfnvJbovpHorqLpmIUnLCAn5riF6Zmk57yT5a2YJ10uZm9yRWFjaCgodikgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdiA9PSBlZGl0TW9kZSA/ICfigJzigJzigJ3igJ0nICsgdi5ib2xkKCkuZm9udGNvbG9yKCcjMTlCODlEJykgOiB2LFxcbiAgICAgICAgICAgIHVybDogdiA9PSBlZGl0TW9kZSA/ICdoaWtlcjovL2VtcHR5JyA6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHYpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2VkaXRNb2RlJywgdilcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB2KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgY29uZmlnLmRhdGEuZm9yRWFjaCgodiwgaSkgPT4ge1xcbiAgICAgICAgbGV0IGVsID0ge1xcbiAgICAgICAgICAgIHRpdGxlOiB2Lm5hbWUsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzNcXFwiXFxuICAgICAgICB9XFxuICAgICAgICBzd2l0Y2ggKGVkaXRNb2RlKSB7XFxuICAgICAgICAgICAgY2FzZSAn5ZCv55So56aB55SoJzpcXG4gICAgICAgICAgICAgICAgZWwudGl0bGUgPSAodi5pblZpc2libGUgPyAn8J+UtCAnIDogJ/Cfn6IgJykgKyBlbC50aXRsZVxcbiAgICAgICAgICAgICAgICBlbC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IGdldENvbmZpZygpO1xcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGFbaV0uaW5WaXNpYmxlID0gIWNvbmZpZy5kYXRhW2ldLmluVmlzaWJsZTtcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGkpXFxuICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgY2FzZSAn5Yig6Zmk6K6i6ZiFJzpcXG4gICAgICAgICAgICAgICAgZWwudXJsID0gXFxcImNvbmZpcm06Ly/noa7orqTliKDpmaTigJxcXFwiICsgdi5uYW1lICsgXFxcIuKAneiuoumYhe+8ny5qczpcXFwiICsgJC50b1N0cmluZygoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBnZXRDb25maWcoKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhLnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5Yig6ZmkXFxcIjtcXG4gICAgICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICBjYXNlICfph43mlrDmjpLluo8nOlxcbiAgICAgICAgICAgICAgICBsZXQgc29ydEZsYWcgPSBwYXJzZUludChnZXRNeVZhcignc29ydEZsYWcnLCAnLTEnKSlcXG4gICAgICAgICAgICAgICAgZWwudGl0bGUgPSAoc29ydEZsYWcgPT0gaSA/ICfwn5SDICAnIDogJycpICsgZWwudGl0bGVcXG4gICAgICAgICAgICAgICAgaWYgKHNvcnRGbGFnID09IC0xKVxcbiAgICAgICAgICAgICAgICAgICAgZWwudXJsID0gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0RmxhZycsIGkudG9TdHJpbmcoKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6YCJ5oup6KaB56e75Yqo5Yiw55qE5L2N572uJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgZWwudXJsID0gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgob2xkSW5kZXgsIG5ld0luZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGEuc3BsaWNlKG5ld0luZGV4LCAwLCBjb25maWcuZGF0YS5zcGxpY2Uob2xkSW5kZXgsIDEpWzBdKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRGbGFnJywgJy0xJylcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCBzb3J0RmxhZywgaSlcXG4gICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICBjYXNlICfnvJbovpHorqLpmIUnOlxcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gWyfnvJbovpHlkI3np7AnLCAn57yW6L6R5Zyw5Z2AJywgJ+e8lui+keWGheWuuSddO1xcbiAgICAgICAgICAgICAgICBlbC51cmwgPSAkKGFyciwgMykuc2VsZWN0KCh2LCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+keWQjeensCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh2Lm5hbWUsICfovpPlhaXmlrDlkI3np7AnKS5pbnB1dCgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGFbaV0ubmFtZSA9IGlucHV0XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvbGl2ZS9jb25maWcuanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S4jeiDveS4uuepuidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn57yW6L6R5Zyw5Z2AJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHYudXJsLCAn6L6T5YWl5paw5Zyw5Z2AJykuaW5wdXQoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IGdldENvbmZpZygpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kuI3og73kuLrnqbpcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5kZXhPZihcXFwiaHR0cFxcXCIpICE9IDAgJiYgaW5wdXQuaW5kZXhPZihcXFwiZmlsZVxcXCIpICE9IDAgJiYgaW5wdXQuaW5kZXhPZihcXFwiaGlrZXJcXFwiKSAhPSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6ZO+5o6l5qC85byP5pyJ6K+vXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGFbaV0udXJsID0gaW5wdXRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnmiJDlip8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+e8lui+keWGheWuuScpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodi51cmwuc3RhcnRzV2l0aCgnZmlsZTovLycpIHx8IHYudXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vZmlsZXMnKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2VkaXRGaWxlOi8vJyArIHYudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2VkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUodi51cmwpICsgJy5qcydcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgdiwgaSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgJ+a4hemZpOe8k+WtmCc6XFxuICAgICAgICAgICAgICAgIGVsLnVybCA9ICQoJ+ehruWumua4hemZpOKAnCcgKyB2Lm5hbWUgKyAn4oCd6K6i6ZiF57yT5a2Y77yfXFxcXG4o5Y+v56uL5Y2z5pu05pawKScpLmNvbmZpcm0oKHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2FjaGUodXJsKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/muIXpmaTmiJDlip8nXFxuICAgICAgICAgICAgICAgIH0sIHYudXJsKVxcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaChlbClcXG4gICAgfSk7XFxuICAgIHJldHVybiBkO1xcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIHJlbmRlclNldHRpbmc6IHJlbmRlclNldHRpbmdcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkupHlj6Pku6RcIixcInBhdGhcIjpcImNsb3VkXCIsXCJydWxlXCI6XCJldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2JhdGNoSW0/cnVsZT3ogZrnm7Tmkq1cXFwiKSkucnVsZSk7XFxubGV0IGNvbnRlbnQgPSBwYXJzZVBhc3RlKGlucHV0KTtcXG5iYXRjaEltcG9ydChjb250ZW50LCBcXFwi6IGa55u05pKtXFxcIik7XCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi6IGa55u05pKtXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjO2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcImljb25fMl9yb3VuZFwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKCkgPT4ge1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsIFxcXCJyZWZyZXNoUGFnZSgpXFxcIik7XFxuICAgIHNldFJlc3VsdCgkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9yZW5kZXJTZXR0aW5nXFxcIikucmVuZGVyU2V0dGluZygpKTtcXG59XFxuKSgpXCIsXCJncm91cFwiOlwi55u05pKtXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJwdXRNeVZhcigndGl0bGUnLE1ZX1JVTEUudGl0bGUpO1wiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLliqDovb3mlbDmja5cXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29uZmlnXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIGdldENvbmZpZygpIHtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBsZXQgY29uZmlnID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2xpdmUvY29uZmlnLmpzb25cXFxcXFxcIik7XFxcXG4gICAgICAgIGlmICghY29uZmlnIHx8IGNvbmZpZyA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4ge1xcXFxuICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxcXFxuICAgICAgICAgICAgICAgIHZlcnNpb246IDBcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbmZpZylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi6YWN572u5paH5Lu25qC85byP5pyJ6K+vXFxcXFxcXCIpXFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICBkYXRhOiBbXSxcXFxcbiAgICAgICAgICAgIHZlcnNpb246IDBcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmibnph4/lr7zlhaVcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYmF0Y2hJbVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiBiYXRjaEltcG9ydChpbnB1dCwgcnVsZSkge1xcXFxuICAgIGlucHV0ID0gaW5wdXQudHJpbSgpO1xcXFxuICAgIGlmIChpbnB1dC5sZW5ndGggPCAzIHx8IGlucHV0WzBdICE9IFxcXFxcXFwie1xcXFxcXFwiKSB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE5qC85byPXFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgbGV0IGltID0gSlNPTi5wYXJzZShpbnB1dCk7XFxcXG4gICAgaWYgKGltLmRhdGEgPT0gbnVsbCB8fCBpbS5kYXRhLmxlbmd0aCA8IDEpIHtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTmoLzlvI9cXFxcXFxcIlxcXFxuICAgIH1cXFxcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vcGFnZS9jb25maWc/cnVsZT1cXFxcXFxcIiArIHJ1bGUpKS5ydWxlKTtcXFxcbiAgICBsZXQgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxcXG4gICAgbGV0IGNvdW50ID0gMDtcXFxcbiAgICBsZXQgYWxsID0gY29uZmlnLmRhdGEubWFwKGl0ID0+IGl0LnVybCArIFxcXFxcXFwiJiYmXFxcXFxcXCIpLmpvaW4oKTtcXFxcbiAgICBmb3IgKGxldCBpIG9mIGltLmRhdGEpIHtcXFxcbiAgICAgICAgaWYgKGFsbC5pbmRleE9mKGkudXJsICsgXFxcXFxcXCImJiZcXFxcXFxcIikgPj0gMCkge1xcXFxuICAgICAgICAgICAgLy/ph43lpI3nmoTkuI3opoFcXFxcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNvdW50Kys7XFxcXG4gICAgICAgIGNvbmZpZy5kYXRhLnB1c2goaSlcXFxcbiAgICB9XFxcXG4gICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcXFxcXCIsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xcXFxuICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lt7Llr7zlhaVcXFxcXFxcIiArIGNvdW50ICsgXFxcXFxcXCLmnaHorqLpmIXmupBcXFxcXFxcIjtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnm7Tmkq3mlbDmja5cXFwiLFxcXCJwYXRoXFxcIjpcXFwicmVuZGVyRGF0YVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiByZW5kZXJMaXZlRGF0YSh1cmwpIHtcXFxcbiAgICBsZXQgbTN1ID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2hpa2VyOi8vJykgfHwgdXJsLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xcXFxuICAgICAgICBtM3UgPSBmZXRjaCh1cmwpO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGxldCBpbnRlcnZhbCA9IE51bWJlcihnZXRJdGVtKCdpbnRlcnZhbCcsICcyNCcpKSxcXFxcbiAgICAgICAgICAgIG9sZERhdGEgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUodXJsKSArICcuanMnKSxcXFxcbiAgICAgICAgICAgIHJlbW90ZURhdGEgPSAnJztcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIHJlbW90ZURhdGEgPSBmZXRjaENhY2hlKHVybCwgaW50ZXJ2YWwsIHtcXFxcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiA1MDAwMFxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxcXG4gICAgICAgIGlmICghcmVtb3RlRGF0YS5pbmNsdWRlcygnaHR0cCcpIHx8IHJlbW90ZURhdGEuaW5jbHVkZXMoJzxib2R5PicpKSB7XFxcXG4gICAgICAgICAgICBsb2coJ+abtOaWsOWksei0pScpO1xcXFxuICAgICAgICAgICAgaWYgKG9sZERhdGEpIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9saWJzLycgKyBtZDUodXJsKSArICcuanMnLCBvbGREYXRhKTtcXFxcbiAgICAgICAgICAgIG0zdSA9IG9sZERhdGE7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBtM3UgPSByZW1vdGVEYXRhO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgbGV0IG1vZGUgPSBtM3UuaW5kZXhPZignI0VYVE0zVScpID09IDAsXFxcXG4gICAgICAgIHJlO1xcXFxuICAgIGlmIChtb2RlKSB7XFxcXG4gICAgICAgIHJlID0gLyguKiksKC4qKVxcXFxcXFxccyo/KCg/Omh0dHB8cnRtcClbXiNcXFxcXFxcXHNdKikvZztcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICByZSA9IC8oKSg/OlxcXFxcXFxcQlxcXFxcXFxcJGNfc3RhcnR8XFxcXFxcXFxCI3sxLDJ9KT8oLio/KSw/KCMjfOWktCN8XFxcXFxcXFwkY19lbmR8LD8jZ2VucmUjfCg/Omh0dHB8cnRtcClbXlxcXFxcXFxcc10qKS9nO1xcXFxuICAgIH1cXFxcblxcXFxuICAgIGxldCBpdGVtcyA9IHt9LFxcXFxuICAgICAgICBncm91cCA9ICfmnKrliIbnu4QnO1xcXFxuICAgIGZvciAobGV0IGkgPSByZS5leGVjKG0zdSk7IGkgIT0gbnVsbDsgaSA9IHJlLmV4ZWMobTN1KSkge1xcXFxuICAgICAgICBpZiAobW9kZSkge1xcXFxuICAgICAgICAgICAgZ3JvdXAgPSAoaVsxXS5tYXRjaCgvZ3JvdXAtdGl0bGU9XFxcXFxcXCIoLio/KVxcXFxcXFwiLykgfHwgW251bGwsIGdyb3VwXSlbMV07XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoWycjZ2VucmUjJywgJyMjJywgJ+WktCMnLCAnJGNfZW5kJ10uaW5jbHVkZXMoaVszXSkpIHtcXFxcbiAgICAgICAgICAgIGdyb3VwID0gaVsyXTtcXFxcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCB0aXRsZSA9IGlbMl0sXFxcXG4gICAgICAgICAgICB1cmwgPSBpWzNdLmluY2x1ZGVzKCcjJykgPyBpWzNdLnNwbGl0KCcjJykgOiBbaVszXV0sXFxcXG4gICAgICAgICAgICBoZWFkZXJzID0gW107XFxcXG4gICAgICAgIGlmICghdXJsW3VybC5sZW5ndGggLSAxXSkgdXJsLnBvcCgpO1xcXFxuICAgICAgICB1cmwuZm9yRWFjaCgodiwgaW5kZXgsIGFycmF5KSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAoLztcXFxcXFxcXHsoLiopXFxcXFxcXFx9Ly50ZXN0KHYpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IHt9LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb24gPSB2Lm1hdGNoKC87XFxcXFxcXFx7KC4qKVxcXFxcXFxcfS8pWzFdLFxcXFxuICAgICAgICAgICAgICAgICAgICBhcnIgPSBjb24uc3BsaXQoJyYmJyk7XFxcXG4gICAgICAgICAgICAgICAgYXJyLmZvckVhY2goKGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IGkuc3BsaXQoJ0AnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZS5yZXBsYWNlKC87L2csICfvvJvvvJsnKTtcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IHYubWF0Y2goL14oW147XSopO1xcXFxcXFxcey8pWzFdXFxcXG4gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKG9iaik7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBLnJlcGxhY2UoLzsvZywgJ++8m++8mycpXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAoYXJyYXlbaW5kZXhdLmluY2x1ZGVzKFxcXFxcXFwiLnBocD9pZD1cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBhcnJheVtpbmRleF0gPSBcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBhcnJheVtpbmRleF1cXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJyYXlbaW5kZXhdLnJlcGxhY2UoLzsvZywgJ++8m++8mycpICsgJyNpc1ZpZGVvPXRydWUjJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGlmIChpdGVtc1tncm91cF0pIHtcXFxcbiAgICAgICAgICAgIGlmIChpdGVtc1tncm91cF1bdGl0bGVdKSB7XFxcXG4gICAgICAgICAgICAgICAgaXRlbXNbZ3JvdXBdW3RpdGxlXS51cmwgPSBpdGVtc1tncm91cF1bdGl0bGVdLnVybC5jb25jYXQodXJsKTtcXFxcbiAgICAgICAgICAgICAgICBpdGVtc1tncm91cF1bdGl0bGVdLmhlYWRlcnMgPSBpdGVtc1tncm91cF1bdGl0bGVdLmhlYWRlcnMuY29uY2F0KGhlYWRlcnMpO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBpdGVtc1tncm91cF1bdGl0bGVdID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVyc1xcXFxuICAgICAgICAgICAgICAgIH07XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpdGVtc1tncm91cF0gPSB7fTtcXFxcbiAgICAgICAgICAgIGl0ZW1zW2dyb3VwXVt0aXRsZV0gPSB7XFxcXG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVyc1xcXFxuICAgICAgICAgICAgfTtcXFxcbiAgICAgICAgfTtcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGl0ZW1zO1xcXFxufVxcXFxuXFxcXG4kLmV4cG9ydHMgPSB7XFxcXG4gICAgcmVuZGVyTGl2ZURhdGE6IHJlbmRlckxpdmVEYXRhXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6K6+572u6aG1XFxcIixcXFwicGF0aFxcXCI6XFxcInJlbmRlclNldHRpbmdcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gcmVuZGVyU2V0dGluZygpIHtcXFxcbiAgICBmdW5jdGlvbiBnZXRDb2xvcmVkVGV4dCh0ZXh0KSB7XFxcXG4gICAgICAgIHJldHVybiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzE5Qjg5RFxcXFxcXFwiPicgKyB0ZXh0ICsgJzwvc3Bhbj4nO1xcXFxuICAgIH1cXFxcbiAgICBjb25zdCBkID0gW107XFxcXG4gICAgbGV0IGludGVydmFsID0gZ2V0SXRlbSgnaW50ZXJ2YWwnLCAnMjQnKTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogaW50ZXJ2YWwgPT0gLTEgPyAn5bey56aB5q2i6Ieq5Yqo5pu05pawJy5mb250Y29sb3IoXFxcXFxcXCIjMTlCODlEXFxcXFxcXCIpLmJvbGQoKSA6ICgn5pu05paw6Ze06ZqUOicgKyBpbnRlcnZhbCArICflsI/ml7YnKS5mb250Y29sb3IoXFxcXFxcXCIjMTlCODlEXFxcXFxcXCIpLmJvbGQoKSxcXFxcbiAgICAgICAgdXJsOiAkKGludGVydmFsLCAn6L6T5YWlbuS4uuato+aVtOaVsOaXtu+8jOavj+malG7lsI/ml7boh6rliqjmm7TmlrBcXFxcXFxcXG7kuLow5pe277yM5q+P5qyh5omT5byA6YO95Lya5pu05pawXFxcXFxcXFxu5Li6LTHml7bvvIznpoHmraLoh6rliqjmm7TmlrAnKS5pbnB1dCgoKSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID49IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnaW50ZXJ2YWwnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2ltZzIuYmFpZHUuY29tL2ltYWdlX3NlYXJjaC9zcmM9aHR0cCUzQSUyRiUyRmlzNC5tenN0YXRpYy5jb20lMkZpbWFnZSUyRnRodW1iJTJGUHVycGxlMyUyRnY0JTJGZGYlMkZmNiUyRmRhJTJGZGZmNmRhODMtNDdkNy05Y2I2LTIzOTgtMTkxOWMxMzgzN2I0JTJGbXpsLmtnbW53b2RvLnBuZyUyRjB4MHNzLTg1LmpwZyZyZWZlcj1odHRwJTNBJTJGJTJGaXM0Lm16c3RhdGljLmNvbSZhcHA9MjAwMiZzaXplPWY5OTk5LDEwMDAwJnE9YTgwJm49MCZnPTBuJmZtdD1qcGVnP3NlYz0xNjM4NjI5MzQ5JnQ9MmY2ZDk2NzE4NWZlMmI5YzU0ZThiMjMwZWI4M2U2NmMnLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIlxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRDb2xvcmVkVGV4dChcXFxcXFxcIuaWsOW7uuiuoumYhVxcXFxcXFwiKSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLFxcXFxuICAgICAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpeebtOaSrea6kOiuoumYheWcsOWdgFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoJycsICfor7fovpPlhaXorqLpmIXlnLDlnYAnKS5pbnB1dCgocnVsZSkgPT4ge1xcXFxuICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S4jeiDveS4uuepulxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmluZGV4T2YoXFxcXFxcXCJodHRwXFxcXFxcXCIpICE9IDAgJiYgaW5wdXQuaW5kZXhPZihcXFxcXFxcImZpbGVcXFxcXFxcIikgIT0gMCAmJiBpbnB1dC5pbmRleE9mKFxcXFxcXFwiaGlrZXJcXFxcXFxcIikgIT0gMCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6ZO+5o6l5qC85byP5pyJ6K+vXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJycsIFxcXFxcXFwi6K+36L6T5YWl6K6i6ZiF5qCH6aKYXFxcXFxcXCIpLmlucHV0KCh1cmwsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnP3J1bGU9XFxcXFxcXCIgKyBydWxlKSkucnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBnZXRDb25maWcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGEucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2xpdmUvY29uZmlnLmpzb25cXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5bey5L+d5a2YXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0sIGdldE15VmFyKCd0aXRsZScpKVxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGdldENvbG9yZWRUZXh0KFxcXFxcXFwi5a+85YWl6K6i6ZiFXFxcXFxcXCIpLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJCgnJywgJ+aUr+aMgeWOn+Wni+aVsOaNruWSjOS6keWJqui0tOadv+WIhuS6q+mTvuaOpScpLmlucHV0KChydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vcGFnZS9iYXRjaEltP3J1bGU9XFxcXFxcXCIgKyBydWxlKSkucnVsZSk7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgn6IGa55u05pKt5YiG5LqrIyMnKSkge1xcXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gcGFyc2VQYXN0ZShpbnB1dC5zcGxpdCgnIyNcXFxcXFxcXG4nKVsxXSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZXR1cm4gYmF0Y2hJbXBvcnQoaW5wdXQsIHJ1bGUpO1xcXFxuICAgICAgICB9LCBnZXRNeVZhcigndGl0bGUnKSlcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0Q29sb3JlZFRleHQoXFxcXFxcXCLlr7zlhaXmnKzlnLDmupBcXFxcXFxcIiksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIixcXFxcbiAgICAgICAgZGVzYzogXFxcXFxcXCLor7fovpPlhaXnm7Tmkq3mupDlkI3np7BcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKCcnLCAn6K+36L6T5YWl55u05pKt5rqQ5ZCN56ewJykuaW5wdXQoKHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kuI3og73kuLrnqbpcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJmaWxlU2VsZWN0Oi8vXFxcXFxcXCIgKyAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzID0gaW5wdXQuc3BsaXQoXFxcXFxcXCIvXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvbGl2ZS9cXFxcXFxcIiArIG5hbWUgKyBcXFxcXFxcIi5tM3VcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9cXFxcXFxcIiArIHNbcy5sZW5ndGggLSAxXSlcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjLmluY2x1ZGVzKCdodHRwJykpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/pnZ7ms5Xmlofku7YnXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKHVybCwgYylcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnP3J1bGU96IGa55u05pKtXFxcXFxcXCIpKS5ydWxlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IGdldENvbmZpZygpO1xcXFxuICAgICAgICAgICAgICAgICAgICBjb25maWcuZGF0YS5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybFxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcXFxcXCIsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5L+d5a2YJ1xcXFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRDb2xvcmVkVGV4dChcXFxcXFxcIuWIhuS6q+iuoumYhVxcXFxcXFwiKSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoW1xcXFxcXFwi5Y6f5aeL5pWw5o2uXFxcXFxcXCIsIFxcXFxcXFwi5LqR5Ymq6LS05p2/XFxcXFxcXCIsIFxcXFxcXFwi5LqR5Y+j5LukXFxcXFxcXCJdLCAzKS5zZWxlY3QoKCkgPT4ge1xcXFxuICAgICAgICAgICAgcmV0dXJuICQoJ+ehruWumuWvvOWHuu+8n1xcXFxcXFxcbijnpoHnlKjorqLpmIXkuI3kvJrlr7zlh7opJykuY29uZmlybSgodHlwZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXFxcXFwiKSkucnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxcXG4gICAgICAgICAgICAgICAgY29uZmlnLmRhdGEgPSBjb25maWcuZGF0YS5maWx0ZXIodiA9PiAhdi5pblZpc2libGUpO1xcXFxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFxcXFxcXFwi5LqR5Ymq6LS05p2/XFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAn6IGa55u05pKt5YiG5LqrIyNcXFxcXFxcXG4nICsgc2hhcmVQYXN0ZShKU09OLnN0cmluZ2lmeShjb25maWcpKTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXFxcXFxcXCLkupHlj6Pku6RcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9ICfogZrnm7Tmkq3liIbkuqss5aSN5Yi25ZCO5omT5byA6L2v5Lu25Y2z5Y+v5a+85YWlXFxcXFxcXFxuJyArIHNoYXJlUGFzdGUoSlNPTi5zdHJpbmdpZnkoY29uZmlnKSkgKyAnQGltcG9ydD1qczpldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvY2xvdWQ/cnVsZT3ogZrnm7Tmkq1cXFxcXFxcIikpLnJ1bGUpJztcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImNvcHk6Ly9cXFxcXFxcIiArIGRhdGE7XFxcXG4gICAgICAgICAgICB9LCBpbnB1dClcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0Q29sb3JlZFRleHQoXFxcXFxcXCLnvJbovpHlhajpg6hcXFxcXFxcIiksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImJsYW5rX2Jsb2NrXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXFxcXFwiKSkucnVsZSk7XFxcXG4gICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxcXG4gICAgbGV0IGVkaXRNb2RlID0gZ2V0TXlWYXIoJ2VkaXRNb2RlJywgJ+WQr+eUqOemgeeUqCcpO1xcXFxuICAgIFsn5ZCv55So56aB55SoJywgJ+WIoOmZpOiuoumYhScsICfph43mlrDmjpLluo8nLCAn57yW6L6R6K6i6ZiFJywgJ+a4hemZpOe8k+WtmCddLmZvckVhY2goKHYpID0+IHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiB2ID09IGVkaXRNb2RlID8gJ+KAnOKAnOKAneKAnScgKyB2LmJvbGQoKS5mb250Y29sb3IoJyMxOUI4OUQnKSA6IHYsXFxcXG4gICAgICAgICAgICB1cmw6IHYgPT0gZWRpdE1vZGUgPyAnaGlrZXI6Ly9lbXB0eScgOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh2KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2VkaXRNb2RlJywgdilcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB2KSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbiAgICBjb25maWcuZGF0YS5mb3JFYWNoKCh2LCBpKSA9PiB7XFxcXG4gICAgICAgIGxldCBlbCA9IHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiB2Lm5hbWUsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzNcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHN3aXRjaCAoZWRpdE1vZGUpIHtcXFxcbiAgICAgICAgICAgIGNhc2UgJ+WQr+eUqOemgeeUqCc6XFxcXG4gICAgICAgICAgICAgICAgZWwudGl0bGUgPSAodi5pblZpc2libGUgPyAn8J+UtCAnIDogJ/Cfn6IgJykgKyBlbC50aXRsZVxcXFxuICAgICAgICAgICAgICAgIGVsLnVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnXFxcXFxcXCIpKS5ydWxlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gZ2V0Q29uZmlnKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhW2ldLmluVmlzaWJsZSA9ICFjb25maWcuZGF0YVtpXS5pblZpc2libGU7XFxcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvbGl2ZS9jb25maWcuanNvblxcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShjb25maWcpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICAgICAgfSwgaSlcXFxcbiAgICAgICAgICAgICAgICBicmVha1xcXFxuICAgICAgICAgICAgY2FzZSAn5Yig6Zmk6K6i6ZiFJzpcXFxcbiAgICAgICAgICAgICAgICBlbC51cmwgPSBcXFxcXFxcImNvbmZpcm06Ly/noa7orqTliKDpmaTigJxcXFxcXFxcIiArIHYubmFtZSArIFxcXFxcXFwi4oCd6K6i6ZiF77yfLmpzOlxcXFxcXFwiICsgJC50b1N0cmluZygoaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFxcXFxcIikpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBnZXRDb25maWcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGEuc3BsaWNlKGksIDEpO1xcXFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2xpdmUvY29uZmlnLmpzb25cXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lt7LliKDpmaRcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICB9LCBpKVxcXFxuICAgICAgICAgICAgICAgIGJyZWFrXFxcXG4gICAgICAgICAgICBjYXNlICfph43mlrDmjpLluo8nOlxcXFxuICAgICAgICAgICAgICAgIGxldCBzb3J0RmxhZyA9IHBhcnNlSW50KGdldE15VmFyKCdzb3J0RmxhZycsICctMScpKVxcXFxuICAgICAgICAgICAgICAgIGVsLnRpdGxlID0gKHNvcnRGbGFnID09IGkgPyAn8J+UgyAgJyA6ICcnKSArIGVsLnRpdGxlXFxcXG4gICAgICAgICAgICAgICAgaWYgKHNvcnRGbGFnID09IC0xKVxcXFxuICAgICAgICAgICAgICAgICAgICBlbC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydEZsYWcnLCBpLnRvU3RyaW5nKCkpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/pgInmi6nopoHnp7vliqjliLDnmoTkvY3nva4nXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGkpXFxcXG4gICAgICAgICAgICAgICAgZWxzZVxcXFxuICAgICAgICAgICAgICAgICAgICBlbC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChvbGRJbmRleCwgbmV3SW5kZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvbmZpZ1xcXFxcXFwiKSkucnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBnZXRDb25maWcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhLnNwbGljZShuZXdJbmRleCwgMCwgY29uZmlnLmRhdGEuc3BsaWNlKG9sZEluZGV4LCAxKVswXSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvbGl2ZS9jb25maWcuanNvblxcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShjb25maWcpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0RmxhZycsICctMScpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgc29ydEZsYWcsIGkpXFxcXG4gICAgICAgICAgICAgICAgYnJlYWtcXFxcbiAgICAgICAgICAgIGNhc2UgJ+e8lui+keiuoumYhSc6XFxcXG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IFsn57yW6L6R5ZCN56ewJywgJ+e8lui+keWcsOWdgCcsICfnvJbovpHlhoXlrrknXTtcXFxcbiAgICAgICAgICAgICAgICBlbC51cmwgPSAkKGFyciwgMykuc2VsZWN0KCh2LCBpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn57yW6L6R5ZCN56ewJykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodi5uYW1lLCAn6L6T5YWl5paw5ZCN56ewJykuaW5wdXQoKGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFxcXFxcIikpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyA9IGdldENvbmZpZygpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGF0YVtpXS5uYW1lID0gaW5wdXRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9saXZlL2NvbmZpZy5qc29uXFxcXFxcXCIsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/ruaUueaIkOWKnydcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5LiN6IO95Li656m6J1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnvJbovpHlnLDlnYAnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh2LnVybCwgJ+i+k+WFpeaWsOWcsOWdgCcpLmlucHV0KChpKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29uZmlnXFxcXFxcXCIpKS5ydWxlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBnZXRDb25maWcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S4jeiDveS4uuepulxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmRleE9mKFxcXFxcXFwiaHR0cFxcXFxcXFwiKSAhPSAwICYmIGlucHV0LmluZGV4T2YoXFxcXFxcXCJmaWxlXFxcXFxcXCIpICE9IDAgJiYgaW5wdXQuaW5kZXhPZihcXFxcXFxcImhpa2VyXFxcXFxcXCIpICE9IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/pk77mjqXmoLzlvI/mnInor69cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhW2ldLnVybCA9IGlucHV0XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvbGl2ZS9jb25maWcuanNvblxcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShjb25maWcpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnmiJDlip8nXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+e8lui+keWGheWuuScpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LnVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykgfHwgdi51cmwuc3RhcnRzV2l0aCgnaGlrZXI6Ly9maWxlcycpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdlZGl0RmlsZTovLycgKyB2LnVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL2xpYnMvJyArIG1kNSh2LnVybCkgKyAnLmpzJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgdiwgaSk7XFxcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxcXG4gICAgICAgICAgICBjYXNlICfmuIXpmaTnvJPlrZgnOlxcXFxuICAgICAgICAgICAgICAgIGVsLnVybCA9ICQoJ+ehruWumua4hemZpOKAnCcgKyB2Lm5hbWUgKyAn4oCd6K6i6ZiF57yT5a2Y77yfXFxcXFxcXFxuKOWPr+eri+WNs+abtOaWsCknKS5jb25maXJtKCh1cmwpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2FjaGUodXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+a4hemZpOaIkOWKnydcXFxcbiAgICAgICAgICAgICAgICB9LCB2LnVybClcXFxcbiAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBkLnB1c2goZWwpXFxcXG4gICAgfSk7XFxcXG4gICAgcmV0dXJuIGQ7XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICByZW5kZXJTZXR0aW5nOiByZW5kZXJTZXR0aW5nXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5LqR5Y+j5LukXFxcIixcXFwicGF0aFxcXCI6XFxcImNsb3VkXFxcIixcXFwicnVsZVxcXCI6XFxcImV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2JhdGNoSW0/cnVsZT3ogZrnm7Tmkq1cXFxcXFxcIikpLnJ1bGUpO1xcXFxubGV0IGNvbnRlbnQgPSBwYXJzZVBhc3RlKGlucHV0KTtcXFxcbmJhdGNoSW1wb3J0KGNvbnRlbnQsIFxcXFxcXFwi6IGa55u05pKtXFxcXFxcXCIpO1xcXCJ9XVwifSIsInBpY1VybCI6Imh0dHBzOi8vZ2ltZzIuYmFpZHUuY29tL2ltYWdlX3NlYXJjaC9zcmM9aHR0cCUzQSUyRiUyRmlzNC5tenN0YXRpYy5jb20lMkZpbWFnZSUyRnRodW1iJTJGUHVycGxlMyUyRnY0JTJGZGYlMkZmNiUyRmRhJTJGZGZmNmRhODMtNDdkNy05Y2I2LTIzOTgtMTkxOWMxMzgzN2I0JTJGbXpsLmtnbW53b2RvLnBuZyUyRjB4MHNzLTg1LmpwZyZyZWZlcj1odHRwJTNBJTJGJTJGaXM0Lm16c3RhdGljLmNvbSZhcHA9MjAwMiZzaXplPWY5OTk5LDEwMDAwJnE9YTgwJm49MCZnPTBuJmZtdD1qcGVnP3NlYz0xNjM4NjI5MzQ5JnQ9MmY2ZDk2NzE4NWZlMmI5YzU0ZThiMjMwZWI4M2U2NmMiLCJ0aXRsZSI6IuiBmuebtOaSrSDimpkg6IGa55u05pKt6K6+572uIOKamSJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement