Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@阅读 Pro@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6ZiF6K+7IFBybyIsImF1dGhvciI6IkpvZSIsInVybCI6Imhpa2VyOi8vZW1wdHk/cGFnZT1meXBhZ2UiLCJ2ZXJzaW9uIjo3LCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InJlYWQiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczokLnJlcXVpcmUoXCLkuLvpobVcIikiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eT9rdz0qKiIsImdyb3VwIjoi6ZiF6K+7Iiwic2VhcmNoRmluZCI6ImpzOlxudmFyIGQgPSBbXTtcbnNldFJlc3VsdChbe1xuICAgIHRpdGxlOiBcIueCueWHu+W8gOWni+iBmuaQnFwiLFxuICAgIHVybDogJ2hpa2VyOi8vc2VhcmNoP3M9JyArIGdldFBhcmFtKFwia3dcIiksXG4gICAgZXh0cmE6IHtcbiAgICAgICAgcnVsZXM6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBzdG9yYWdlMC5nZXRJdGVtKFwicHJvZmlsZVwiLCBcIlwiKVxuICAgICAgICAgICAgdmFyIHNvdXJjZSA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChwcm9maWxlLnVybCArIFwiL3JlYWRlcjMvZ2V0Qm9va1NvdXJjZXNcIiwge1xuICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBwcm9maWxlLnRva2VuLFxuICAgICAgICAgICAgICAgIHNpbXBsZTogMVxuICAgICAgICAgICAgfSkpKS5kYXRhICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBkYXRhID0gW107XG4gICAgICAgICAgICBzb3VyY2UuZm9yRWFjaCgoTWFwLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBNYXAuYm9va1NvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIFwic2VhcmNoX3VybFwiOiBidWlsZFVybChcImhpa2VyOi8vZW1wdHlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAga3c6IFwiKipcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IFwiZnlwYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1OiBNYXAuYm9va1NvdXJjZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IHByb2ZpbGUudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHByb2ZpbGUudG9rZW5cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIFwic2VhcmNoRmluZFwiOiBcImpzOiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9zZWFyY2g/cnVsZT3pmIXor7sgUHJvJyk7XCIsXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlOiBwcm9maWxlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgfVxufV0pXG5zZXRSZXN1bHQoZCk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiLy9jbGVhckl0ZW0oXCJwcm9maWxlXCIpIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwi5Li76aG1XCIsXCJydWxlXCI6XCJqczpcXG50cnkge1xcbiAgICB2YXIgZCA9IFtdO1xcbiAgICBpZiAoc3RvcmFnZTAuZ2V0SXRlbShcXFwicHJvZmlsZVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuivt+eZu+W9lVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBkID0gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5jb25maWcoZClcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBwcm9maWxlID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwicHJvZmlsZVxcXCIsIFxcXCJcXFwiKVxcblxcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3M9JyArIGlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiAkLnRvU3RyaW5nKChwcm9maWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZSA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChwcm9maWxlLnVybCArIFxcXCIvcmVhZGVyMy9nZXRCb29rU291cmNlc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IHByb2ZpbGUudG9rZW4sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZTogMVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkuZGF0YVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmZvckVhY2goKE1hcCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogTWFwLmJvb2tTb3VyY2VOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaF91cmxcXFwiOiBidWlsZFVybChcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdzogXFxcIioqXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBcXFwiZnlwYWdlXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiBNYXAuYm9va1NvdXJjZVVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOiBwcm9maWxlLnVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogcHJvZmlsZS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCJqczogJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2Uvc2VhcmNoP3J1bGU96ZiF6K+7IFBybycpO1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGU6IHByb2ZpbGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBwcm9maWxlKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICB2YXIgbW9kZXMgPSBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaIkeeahOS5puaetlxcXCIsXFxuICAgICAgICAgICAgICAgIGltZzogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDEuMDAwOTc2NTYyNWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI1JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTU4NS44NDAyODYlMjA0OC44MjAwMjRoLTE0Ni40NjAwNzFhNDguODIwMDI0JTIwNDguODIwMDI0JTIwMCUyMDAlMjAwLTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNHY4MjkuOTQwNDA1YTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNCUyMDAlMjAwJTIwMCUyMDQ4LjgyMDAyNCUyMDQ4LjgyMDAyNGgxNDYuNDYwMDcxYTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNCUyMDAlMjAwJTIwMCUyMDQ4LjgyMDAyNC00OC44MjAwMjRWOTcuNjQwMDQ4YTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNCUyMDAlMjAwJTIwMC00OC44MjAwMjQtNDguODIwMDI0eiUyMG03LjA3ODkwNCUyMDgyOS45NDA0MDVoLTE2MC42MTc4Nzl2LTI0LjQxMDAxMmgxNjAuNjE3ODc5ek04ODkuMDEyNjM0JTIwMjE5LjY5MDEwN2gtMTQ4LjE2ODc3MmE0OC44MjAwMjQlMjA0OC44MjAwMjQlMjAwJTIwMCUyMDAtNDguODIwMDI0JTIwNDguODIwMDI0djY1OS4wNzAzMjJhNDguODIwMDI0JTIwNDguODIwMDI0JTIwMCUyMDAlMjAwJTIwNDguODIwMDI0JTIwNDguODIwMDI0aDE0OC4xNjg3NzJhNDguODIwMDI0JTIwNDguODIwMDI0JTIwMCUyMDAlMjAwJTIwNDguODIwMDI0LTQ4LjgyMDAyNFYyNjguNTEwMTMxYTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNCUyMDAlMjAwJTIwMC00OC44MjAwMjQtNDguODIwMDI0eiUyMG02LjM0NjYwMyUyMDY1OS4wNzAzMjJoLTE2MC44NjE5Nzh2LTI0LjQxMDAxMmgxNjAuODYxOTc4eiUyMG0tNjEwLjI1MDI5OC03MDcuODkwMzQ2aC0xNDguOTAxMDcyYTQ4LjgyMDAyNCUyMDQ4LjgyMDAyNCUyMDAlMjAwJTIwMC00OC44MjAwMjQlMjA0OC44MjAwMjR2NzA3Ljg5MDM0NmE0OC44MjAwMjQlMjA0OC44MjAwMjQlMjAwJTIwMCUyMDAlMjA0OC44MjAwMjQlMjA0OC44MjAwMjRoMTQ4LjE2ODc3MmE0OC44MjAwMjQlMjA0OC44MjAwMjQlMjAwJTIwMCUyMDAlMjA0OC44MjAwMjQtNDguODIwMDI0VjIxOS42OTAxMDdhNDguODIwMDI0JTIwNDguODIwMDI0JTIwMCUyMDAlMjAwLTQ4LjgyMDAyNC00OC44MjAwMjR6JTIwbTYuMzQ2NjAzJTIwNzA3Ljg5MDM0NkgxMjkuODYxMjYzdi0yNC40MTAwMTJoMTYwLjg2MTk3OXolMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS5pua6kFxcXCIsXFxuICAgICAgICAgICAgICAgIGltZzogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk04OTYlMjAyNTZ2MzJMNTEyJTIwNDE2JTIwMTI4JTIwMjg4di0zMmwzODQtMTI4JTIwMzg0JTIwMTI4ek01MTIlMjA0ODBMMjI0JTIwMzg0bC05NiUyMDMydjMybDM4NCUyMDEyOCUyMDM4NC0xMjh2LTMybC05Ni0zMi0yODglMjA5NnolMjBtMCUyMDE2MEwyMjQlMjA1NDRsLTk2JTIwMzJ2MzJsMzg0JTIwMTI4JTIwMzg0LTEyOHYtMzJsLTk2LTMyLTI4OCUyMDk2eiUyMG0wJTIwMTYwTDIyNCUyMDcwNGwtOTYlMjAzMnYzMmwzODQlMjAxMjglMjAzODQtMTI4di0zMmwtOTYtMzItMjg4JTIwOTZ6JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLorr7nva5cXFwiLFxcbiAgICAgICAgICAgICAgICBpbWc6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNOTQ0LjQ4JTIwNTUyLjQ1ODY2N2wtMTgyLjM1NzMzMyUyMDMzMC42NjY2NjZhNzMuNzkyJTIwNzMuNzkyJTIwMCUyMDAlMjAxLTY0LjU2NTMzNCUyMDM4LjMyNTMzNGgtMzYyLjEzMzMzM2E3My43OTIlMjA3My43OTIlMjAwJTIwMCUyMDEtNjQuNTY1MzMzLTM4LjMyNTMzNGwtMTgyLjM1NzMzNC0zMzAuNjY2NjY2YTc1LjMzODY2NyUyMDc1LjMzODY2NyUyMDAlMjAwJTIwMSUyMDAtNzIuNjgyNjY3bDE4Mi4zNTczMzQtMzMwLjY2NjY2N2E3My43OTIlMjA3My43OTIlMjAwJTIwMCUyMDElMjA2NC41NjUzMzMtMzguMzI1MzMzaDM2Mi4xMzMzMzNhNzMuNzkyJTIwNzMuNzkyJTIwMCUyMDAlMjAxJTIwNjQuNTY1MzM0JTIwMzguMzI1MzMzbDE4Mi4zNTczMzMlMjAzMzAuNjY2NjY3YTc1LjMzODY2NyUyMDc1LjMzODY2NyUyMDAlMjAwJTIwMSUyMDAlMjA3Mi42ODI2Njd6JTIwbS01NS45ODkzMzMtMzEuMTQ2NjY3YTEwLjc3MzMzMyUyMDEwLjc3MzMzMyUyMDAlMjAwJTIwMCUyMDAtMTAuMzc4NjY3bC0xODIuMDM3MzM0LTMzMC42NjY2NjZhMTAuNTE3MzMzJTIwMTAuNTE3MzMzJTIwMCUyMDAlMjAwLTkuMjA1MzMzLTUuNDgyNjY3SDMzNS43MzMzMzNhMTAuNTE3MzMzJTIwMTAuNTE3MzMzJTIwMCUyMDAlMjAwLTkuMjA1MzMzJTIwNS40ODI2NjdsLTE4Mi4wMzczMzMlMjAzMzAuNjY2NjY2YTEwLjc3MzMzMyUyMDEwLjc3MzMzMyUyMDAlMjAwJTIwMCUyMDAlMjAxMC4zNzg2NjdsMTgyLjAzNzMzMyUyMDMzMC42NjY2NjdhMTAuNTE3MzMzJTIwMTAuNTE3MzMzJTIwMCUyMDAlMjAwJTIwOS4yMDUzMzMlMjA1LjQ3MmgzNjEuNTE0NjY3YTEwLjUxNzMzMyUyMDEwLjUxNzMzMyUyMDAlMjAwJTIwMCUyMDkuMjA1MzMzLTUuNDcybDE4Mi4wMzczMzQtMzMwLjY2NjY2N3pNNTEzLjczODY2NyUyMDY4Mi42NjY2NjdjLTk0LjI2MTMzMyUyMDAtMTcwLjY2NjY2Ny03Ni40MDUzMzMtMTcwLjY2NjY2Ny0xNzAuNjY2NjY3czc2LjQwNTMzMy0xNzAuNjY2NjY3JTIwMTcwLjY2NjY2Ny0xNzAuNjY2NjY3Yzk0LjI1MDY2NyUyMDAlMjAxNzAuNjY2NjY3JTIwNzYuNDA1MzMzJTIwMTcwLjY2NjY2NiUyMDE3MC42NjY2NjdzLTc2LjQxNiUyMDE3MC42NjY2NjctMTcwLjY2NjY2NiUyMDE3MC42NjY2Njd6JTIwbTAtNjRjNTguOTEyJTIwMCUyMDEwNi42NjY2NjctNDcuNzU0NjY3JTIwMTA2LjY2NjY2Ni0xMDYuNjY2NjY3cy00Ny43NTQ2NjctMTA2LjY2NjY2Ny0xMDYuNjY2NjY2LTEwNi42NjY2NjctMTA2LjY2NjY2NyUyMDQ3Ljc1NDY2Ny0xMDYuNjY2NjY3JTIwMTA2LjY2NjY2NyUyMDQ3Ljc1NDY2NyUyMDEwNi42NjY2NjclMjAxMDYuNjY2NjY3JTIwMTA2LjY2NjY2N3olMjIlMjBmaWxsJTNEJTIyJTIzMDAwMDAwJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIlxcbiAgICAgICAgICAgIH1dXFxuXFxuICAgICAgICAgICAgbW9kZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJtb2RlXFxcIiwgaS50aXRsZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNolxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmltZyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF8zXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgIH0pXFxuXFxuICAgICAgICBzd2l0Y2ggKGdldEl0ZW0oXFxcIm1vZGVcXFwiLCBcXFwi5oiR55qE5Lmm5p62XFxcIikpIHtcXG4gICAgICAgICAgICBjYXNlIFxcXCLmiJHnmoTkuabmnrZcXFwiOlxcbiAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAvLyDkuabmnrZcXG4gICAgICAgICAgICAgICAgICAgIHZhciBib29rc2hlbGYgPSBKU09OLnBhcnNlKHJlcXVlc3QoYnVpbGRVcmwocHJvZmlsZS51cmwgKyBcXFwiL3JlYWRlcjMvZ2V0Qm9va3NoZWxmXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBwcm9maWxlLnRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2g6IE1ZX1BBR0UgLSAxXFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmRhdGFcXG4gICAgICAgICAgICAgICAgICAgIGJvb2tzaGVsZi5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5jb3ZlclVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogYCR7aXRlbS5hdXRob3J9IMK3IOWFsSR7aXRlbS50b3RhbENoYXB0ZXJOdW1956ugXFxcXG7or7vliLDvvJoke2l0ZW0uZHVyQ2hhcHRlclRpdGxlfHwn5pqC5pyq5byA5aeL6ZiF6K+7J31cXFxcbiR7JC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5mb3JtYXREYXRlKGl0ZW0ubGF0ZXN0Q2hhcHRlclRpbWUpfWAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiBpdGVtLmJvb2tVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogcHJvZmlsZS50b2tlbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IHByb2ZpbGUudXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvOiBpdGVtLmludHJvLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyOiBpdGVtLmNvdmVyVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6Zmk5Lmm57GNXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaXRlbSwgcHJvZmlsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KGJ1aWxkVXJsKHByb2ZpbGUudXJsICsgXFxcIi9yZWFkZXIzL2RlbGV0ZUJvb2tcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogcHJvZmlsZS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIHJlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0sIHByb2ZpbGUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvbWVudSNpbW1lcnNpdmVUaGVtZSNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgY2FzZSBcXFwi5Lmm5rqQXFxcIjpcXG4gICAgICAgICAgICAgICAgdmFyIHNvdXJjZSA9IEpTT04ucGFyc2UocmVxdWVzdChidWlsZFVybChwcm9maWxlLnVybCArIFxcXCIvcmVhZGVyMy9nZXRCb29rU291cmNlc1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBwcm9maWxlLnRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgc2ltcGxlOiAxXFxuICAgICAgICAgICAgICAgIH0pKSkuZGF0YVxcbiAgICAgICAgICAgICAgICB2YXIgY2F0ID0ge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIuWFqOmDqFxcXCI6IHNvdXJjZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhdFtpdGVtLmJvb2tTb3VyY2VHcm91cF0gPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0W2l0ZW0uYm9va1NvdXJjZUdyb3VwXSA9IFtdXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBjYXRbaXRlbS5ib29rU291cmNlR3JvdXBdLnB1c2goaXRlbSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY2F0KS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoXFxcImNhdFxcXCIsIFxcXCLlhajpg6hcXFwiKSA9PSBpdGVtID8gYOKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNGQTcyOThcXFwiPiR7aXRlbX08L2Zyb250Pjwvc3Ryb25nPmAgOiBpdGVtLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpbnB1dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiY2F0XFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouWIsFxcXCIgKyBpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGNhdFtnZXRNeVZhcihcXFwiY2F0XFxcIiwgXFxcIuWFqOmDqFxcXCIpXS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvbGQgPSBnZXRNeVZhcihpdGVtLmJvb2tTb3VyY2VOYW1lLCBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICB2YXIgc3VybCA9IGl0ZW0uYm9va1NvdXJjZVVybFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV1cmwgPSBpdGVtLmV4cGxvcmVVcmxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmV4cGxvcmVVcmwgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5ib29rU291cmNlTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGZvbGQgPT0gMCA/IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNTMzLjMzMzMzMyUyMDYzMS40NjY2NjdMODY2LjEzMzMzMyUyMDI5OC42NjY2NjdsMjkuODY2NjY3JTIwMjkuODY2NjY2LTM2Mi42NjY2NjclMjAzNjIuNjY2NjY3TDE3MC42NjY2NjclMjAzMjguNTMzMzMzbDI5Ljg2NjY2Ni0yOS44NjY2NjYlMjAzMzIuOCUyMDMzMi44eiUyMiUyMGZpbGwlM0QlMjIlMjM0NDQ0NDQlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiIDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk03NzIuODQ2ODklMjA2NzUuMzE4NjQ2Yy03Ljc4MjI0NCUyMDAuMDAxMDIzLTE1LjU1OTM3MS0zLjAwNzQ5Ny0yMS40MzcyNDItOS4wMDUwOTVMNTEyLjcyODU5NCUyMDQyMi43Nzg5NTYlMjAyNzQuMDQ3NTQlMjA2NjYuMzEzNTUxYy0xMS42MDEyMjIlMjAxMS44Mzc2MDYtMzAuNjA1MDQyJTIwMTIuMDI4OTY0LTQyLjQ0MjY0OCUyMDAuNDI2NzE5LTExLjgzOTY1My0xMS42MDMyNjktMTIuMDMxMDExLTMwLjYwNTA0Mi0wLjQyNzc0Mi00Mi40NDM2NzFMNDkxLjI5MzM5OSUyMDM1OC44OTA4OGM1LjY0NTU4LTUuNzU5MTY3JTIwMTMuMzcxNTQyLTkuMDA1MDk1JTIwMjEuNDM1MTk1LTkuMDA1MDk1JTIwOC4wNjM2NTMlMjAwJTIwMTUuNzkwNjM4JTIwMy4yNDU5MjclMjAyMS40MzUxOTUlMjA5LjAwNTA5NWwyNjAuMTE2MjQ5JTIwMjY1LjQwNTcxOWMxMS42MDMyNjklMjAxMS44Mzg2MjklMjAxMS40MTA4ODclMjAzMC44NDA0MDItMC40Mjc3NDIlMjA0Mi40NDM2NzFDNzg4LjAxMTI2NCUyMDY3Mi40NjQ2NDUlMjA3ODAuNDI2NTE5JTIwNjc1LjMxNzYyMyUyMDc3Mi44NDY4OSUyMDY3NS4zMTg2NDZ6JTIyJTIwZmlsbCUzRCUyMiUyMzI3MjYzNiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBmb2xkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihuYW1lLCBmb2xkID09IFxcXCIwXFxcIiA/IFxcXCIxXFxcIiA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFwiICsgKGZvbGQgPT0gXFxcIjBcXFwiID8gXFxcIuW3suWxleW8gFxcXCIgOiBcXFwi5bey5oqY5Y+gXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5ib29rU291cmNlTmFtZSwgZm9sZClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGQgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkMiA9IFtdXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBldmFsKFxcXCIoXFxcIiArIGV1cmwgKyBcXFwiKVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGV1cmwuc3BsaXQoXFxcIlxcXFxuXFxcIikubWFwKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5zcGxpdChcXFwiOjpcXFwiKVswXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0uc3BsaXQoXFxcIjo6XFxcIilbMV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXRlbS5zdHlsZSA/IChpdGVtLnN0eWxlLmxheW91dF9mbGV4QmFzaXNQZXJjZW50ID09IDEgPyBcXFwidGV4dF9jZW50ZXJfMVxcXCIgOiBcXFwiZmxleF9idXR0b25cXFwiKSA6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsID09IFxcXCJcXFwiID8gXFxcImhpa2VyOi8vZW1wdHlcXFwiIDogJChcXFwiaGlrZXI6Ly9lbXB0eT9wYWdlPWZ5cGFnZVxcXCIpLnJ1bGUoKHN1cmwsIGV1cmwsIHByb2ZpbGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShwb3N0KGJ1aWxkVXJsKHByb2ZpbGUudXJsICsgXFxcIi9yZWFkZXIzL2V4cGxvcmVCb29rXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogcHJvZmlsZS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJydWxlRmluZFVybFxcXCI6IGV1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiYm9va1NvdXJjZVVybFxcXCI6IHN1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicGFnZVxcXCI6IE1ZX1BBR0VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZGF0YVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uY292ZXJVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBg5L2c6ICF77yaJHtpdGVtLmF1dGhvcn1cXFxcbuacgOaWsO+8miR7aXRlbS5sYXRlc3RDaGFwdGVyVGl0bGV9XFxcXG7nirbmgIHvvJoke2l0ZW0ua2luZD9pdGVtLmtpbmQuc3BsaXQoXFxcIixcXFwiKS5qb2luKFxcXCIgXFxcIik6XFxcIuaaguaXoFxcXCJ9YCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogaXRlbS5ib29rVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiBwcm9maWxlLnRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IHByb2ZpbGUudXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmw6IHN1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRybzogaXRlbS5pbnRybyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I6IGl0ZW0uYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyOiBpdGVtLmNvdmVyVXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL21lbnUjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzdXJsLCBpdGVtLnVybCwgcHJvZmlsZSwgZm9sZClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgICAgICAgICAgICAgIHZhciBkID0gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5jb25maWcoZClcXG4gICAgICAgIH1cXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgbG9nKGUubWVzc2FnZSlcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiYXBpXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgbG9naW46IGZ1bmN0aW9uKHVybCwgdXNlciwgcGFzc3dkLCBpc0xvZ2luKSB7XFxuICAgICAgICBsZXQgZGF0YSA9IHtcXG4gICAgICAgICAgICB1c2VybmFtZTogdXNlcixcXG4gICAgICAgICAgICBwYXNzd29yZDogcGFzc3dkLFxcbiAgICAgICAgICAgIGNvZGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGlzTG9naW46ICEhaXNMb2dpblxcbiAgICAgICAgfTtcXG4gICAgICAgIHZhciB0b2tlbiA9IEpTT04ucGFyc2UocG9zdCh1cmwgKyBcXFwiL3JlYWRlcjMvbG9naW5cXFwiLCB7XFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGlmICh0b2tlbi5kYXRhKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRva2VuLmRhdGEuYWNjZXNzVG9rZW5cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKHRva2VuLmVycm9yTXNnID09ICflr4bnoIHplJnor68nKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgdG9rZW4uZXJyb3JNc2dcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsb2codG9rZW4uZXJyb3JNc2cpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJydcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIHRva2VuOiBmdW5jdGlvbih1cmwsIHVzZXIsIHBhc3N3ZCkge1xcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gdGhpcy5sb2dpbih1cmwsIHVzZXIsIHBhc3N3ZCwgdHJ1ZSk7XFxuICAgICAgICBpZiAoIWFjY2Vzc1Rva2VuKSB7XFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4gPSB0aGlzLmxvZ2luKHVybCwgdXNlciwgcGFzc3dkLCBmYWxzZSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gYWNjZXNzVG9rZW5cXG4gICAgfSxcXG4gICAgY29uZmlnOiBmdW5jdGlvbihkKSB7XFxuICAgICAgICB2YXIgY29uZmlnID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwicHJvZmlsZVxcXCIsIHt9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBkZXNjOiBcXFwi6ZO+5o6lXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZy51cmwgPyBjb25maWcudXJsIDogXFxcIlxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgZGVzYzogXFxcIui0puWPt1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVzZXJuYW1lXFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZy51c2VybmFtZSA/IGNvbmZpZy51c2VybmFtZSA6IFxcXCJcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGRlc2M6IFxcXCLlr4bnoIFcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJwYXNzd29yZFxcXCIsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcucGFzc3dvcmQgPyBjb25maWcucGFzc3dvcmQgOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuehruWumlxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoY29uZmlnKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVybCA9IGdldE15VmFyKFxcXCJ1cmxcXFwiLCBjb25maWcudXJsKVxcbiAgICAgICAgICAgICAgICBpZiAodXJsW3VybC5sZW5ndGggLSAxXSA9PSBcXFwiL1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgdXJsLmxlbmd0aCAtIDEpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IHVybFxcbiAgICAgICAgICAgICAgICBjb25maWcudXNlcm5hbWUgPSBnZXRNeVZhcihcXFwidXNlcm5hbWVcXFwiLCBjb25maWcudXNlcm5hbWUpXFxuICAgICAgICAgICAgICAgIGNvbmZpZy5wYXNzd29yZCA9IGdldE15VmFyKFxcXCJwYXNzd29yZFxcXCIsIGNvbmZpZy5wYXNzd29yZClcXG4gICAgICAgICAgICAgICAgY29uZmlnLnRva2VuID0gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS50b2tlbihjb25maWcudXJsLCBjb25maWcudXNlcm5hbWUsIGNvbmZpZy5wYXNzd29yZClcXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50b2tlbi5zdGFydHNXaXRoKCd0b2FzdDovLycpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnRva2VuXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnRva2VuKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJwcm9maWxlXFxcIiwgY29uZmlnKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3sumqjOivgeW5tuS/neWtmFxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/otKblj7flr4bnoIHpqozor4HlpLHotKUs5YW35L2T55yL5pel5b+XJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgY29uZmlnKVxcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBkXFxuICAgIH0sXFxuICAgIGZvcm1hdERhdGU6IGZ1bmN0aW9uKHRpbWUpIHsgLy/ml7bpl7TmiLPovazml6XmnJ9cXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodGltZSk7XFxuICAgICAgICBsZXQgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcXG4gICAgICAgIGxldCBNTSA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XFxuICAgICAgICBNTSA9IE1NIDwgMTAgPyAoJzAnICsgTU0pIDogTU07XFxuICAgICAgICBsZXQgZCA9IGRhdGUuZ2V0RGF0ZSgpO1xcbiAgICAgICAgZCA9IGQgPCAxMCA/ICgnMCcgKyBkKSA6IGQ7XFxuICAgICAgICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKTtcXG4gICAgICAgIGggPSBoIDwgMTAgPyAoJzAnICsgaCkgOiBoO1xcbiAgICAgICAgbGV0IG0gPSBkYXRlLmdldE1pbnV0ZXMoKTtcXG4gICAgICAgIG0gPSBtIDwgMTAgPyAoJzAnICsgbSkgOiBtO1xcbiAgICAgICAgbGV0IHMgPSBkYXRlLmdldFNlY29uZHMoKTtcXG4gICAgICAgIHMgPSBzIDwgMTAgPyAoJzAnICsgcykgOiBzO1xcbiAgICAgICAgcmV0dXJuIHkgKyAnLScgKyBNTSArICctJyArIGQgKyAnICcgKyBoICsgJzonICsgbSArICc6JyArIHM7XFxuICAgICAgICAvLyByZXR1cm4geSArICctJyArIE1NICsgJy0nICsgZDtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcInRleHRfNFwiLFwibmFtZVwiOlwi55uu5b2VXCIsXCJwYXRoXCI6XCJtZW51XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcblxcbmZ1bmN0aW9uIGxvYWQoTVlfUEFSQU1TKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KE1ZX1BBUkFNUy5iYXNlICsgXFxcIi9yZWFkZXIzL2dldENoYXB0ZXJMaXN0P2FjY2Vzc1Rva2VuPVxcXCIgKyBNWV9QQVJBTVMudG9rZW4sIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIGJvb2tTb3VyY2VVcmw6IE1ZX1BBUkFNUy5zdXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6IE1ZX1BBUkFNUy51LFxcbiAgICAgICAgICAgICAgICByZWZyZXNoOiBNWV9QQUdFIC0gMVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDBcXG4gICAgICAgIH0pKVxcbiAgICAgICAgcmV0dXJuIHJlc1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICByZXR1cm4gZmFsc2VcXG4gICAgfVxcbn1cXG5cXG50cnkge1xcbiAgICBzaG93TG9hZGluZyhcXFwi5Yqg6L2955uu5b2V5LitLi4uXFxcIilcXG4gICAgdmFyIGogPSBmYWxzZVxcbiAgICB3aGlsZSAoIWopIHtcXG4gICAgICAgIHZhciBqID0gbG9hZChNWV9QQVJBTVMpXFxuICAgICAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApXFxuICAgIH1cXG59IGNhdGNoIChlKSB7XFxuICAgIGxvZyhlLm1lc3NhZ2UpXFxufVxcblxcbmhpZGVMb2FkaW5nKClcXG5pZiAoIWouaXNTdWNjZXNzKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuWHuumUme+8mlxcXCIgKyBqLmVycm9yTXNnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgIH0pO1xcbn1cXG52YXIgbGlzdCA9IGouZGF0YSB8fCBbXTtcXG5cXG5zZXRMYXN0Q2hhcHRlclJ1bGUoXFxcImpzOlxcXCIgKyAkLnRvU3RyaW5nKChiYXNlLCB0b2tlbiwgc3VybCwgdSkgPT4ge1xcbiAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UocG9zdChiYXNlICsgXFxcIi9yZWFkZXIzL2dldENoYXB0ZXJMaXN0P2FjY2Vzc1Rva2VuPVxcXCIgKyB0b2tlbiwge1xcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIGJvb2tTb3VyY2VVcmw6IHN1cmwsXFxuICAgICAgICAgICAgdXJsOiB1LFxcbiAgICAgICAgICAgIHJlZnJlc2g6IDBcXG4gICAgICAgIH0pXFxuICAgIH0pKS5kYXRhO1xcbiAgICBzZXRSZXN1bHQoXFxcIuabtOaWsO+8mlxcXCIgKyBsaXN0W2xpc3QubGVuZ3RoIC0gMV0udGl0bGUpO1xcbn0sIE1ZX1BBUkFNUy5iYXNlLCBNWV9QQVJBTVMudG9rZW4sIE1ZX1BBUkFNUy5zdXJsLCBNWV9QQVJBTVMudSkpO1xcblxcbmxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2NvbnRlbnQjcmVhZFRoZW1lIyNhdXRvUGFnZSNcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBiYXNlOiBNWV9QQVJBTVMuYmFzZSxcXG4gICAgICAgICAgICB0b2tlbjogTVlfUEFSQU1TLnRva2VuLFxcbiAgICAgICAgICAgIGxpbms6IGl0ZW0uYm9va1VybCxcXG4gICAgICAgICAgICBpbmRleDogaXRlbS5pbmRleCxcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxudmFyIGNwID0gbGlzdC5tYXAoaXRlbSA9PiB7XFxuICAgIHJldHVybiB7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIHVybDogaXRlbS5ib29rVXJsXFxuICAgIH1cXG59KVxcbmQudW5zaGlmdCh7XFxuICAgIHRpdGxlOiBNWV9QQVJBTVMudGl0bGUsXFxuICAgIGltZzogTVlfUEFSQU1TLmNvdmVyLFxcbiAgICBkZXNjOiBNWV9QQVJBTVMuYXV0aG9yICsgXFxcIlxcXFxuXFxcIiArIE1ZX1BBUkFNUy5pbnRybyxcXG4gICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIixcXG4gICAgdXJsOiAkKCkucnVsZSgoaW50cm8pID0+IHtcXG4gICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgIHRpdGxlOiBpbnRyby5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcIlxcXFxuXFxcIiwgXFxcImdcXFwiKSwgXFxcIjxicj5cXFwiKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgIH1dKVxcbiAgICB9LCBNWV9QQVJBTVMuaW50cm8pXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuS4i+i9vVxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChjcCkgPT4ge1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL0pvZS9jaGFwdGVyLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShjcCkpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9kb3dubG9hZC52aWV3I25vUmVjb3JkSGlzdG9yeSMjbm9SZWZyZXNoIyNub0hpc3RvcnkjP3J1bGU95pys5Zyw6LWE5rqQ566h55CGXFxcIlxcbiAgICB9LCBjcCksXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNoYXB0ZXJMaXN0OiBnZXRQYXRoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL0pvZS9jaGFwdGVyLmpzb25cXFwiKSxcXG4gICAgICAgIGRlZmF1bHRWaWV3OiBcXFwiMVxcXCIsXFxuICAgICAgICBpbmZvOiB7XFxuICAgICAgICAgICAgYm9va05hbWU6IE1ZX1BBUkFNUy50aXRsZSxcXG4gICAgICAgICAgICBib29rVG9wUGljOiBNWV9QQVJBTVMuY292ZXIsXFxuICAgICAgICAgICAgcnVsZU5hbWU6IFxcXCLpmIXor7sgUHJvXFxcIixcXG4gICAgICAgICAgICBwYXJzZUNvZGU6ICQudG9TdHJpbmcoKGJhc2UsIHRva2VuKSA9PiB7XFxuICAgICAgICAgICAgICAgIHZhciBjaGFwdGVyID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9Kb2UvY2hhcHRlci5qc29uXFxcIikpXFxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGNoYXB0ZXIubWFwKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udGl0bGVcXG4gICAgICAgICAgICAgICAgfSkuaW5kZXhPZih0aXRsZSlcXG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHBvc3QoYmFzZSArIFxcXCIvcmVhZGVyMy9nZXRCb29rQ29udGVudD9hY2Nlc3NUb2tlbj1cXFwiICsgdG9rZW4sIHtcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NhY2hlOiAxXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KSkuZGF0YVxcbiAgICAgICAgICAgICAgICB2YXIgbCA9IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIGRhdGEuc3BsaXQoXFxcIlxcXFxuXFxcIikuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGwgKz0gaXRlbS5yZXBsYWNlKC9eXFxcXHMqLywgXFxcIiZuYnNwOyAmbmJzcDsgJm5ic3A7XFxcIikgKyBcXFwiXFxcXG5cXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHJldHVybiBsXFxuICAgICAgICAgICAgfSwgTVlfUEFSQU1TLmJhc2UsIE1ZX1BBUkFNUy50b2tlbiksXFxuICAgICAgICAgICAgdHlwZTogXFxcIm5vdmVsXFxcIlxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBpbWc6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNODI4Ljk3NTc0NiUyMDg5NC4xMjUwNDclMjAxOTAuMTg5MTMyJTIwODk0LjEyNTA0N2MtNzAuNTUwODIzJTIwMC0xMjcuNzUzNjM5LTU3LjE4NTQyLTEyNy43NTM2MzktMTI3Ljc1MjYxNkw2Mi40MzU0OTMlMjA2MDYuNjc0MjQzYzAtMTcuNjM0NjM2JTIwMTQuMzA4ODkxLTMxLjkzMzI5MyUyMDMxLjkzMjI3LTMxLjkzMzI5M2w2My44ODkwOTklMjAwYzE3LjYzNDYzNiUyMDAlMjAzMS45MzIyNyUyMDE0LjI5ODY1OCUyMDMxLjkzMjI3JTIwMzEuOTMzMjkzbDAlMjA5NS44MjEzNjljMCUyMDM1LjI4MjU3NCUyMDI4LjU5NjI5MiUyMDYzLjg3Nzg0MyUyMDYzLjg3NjgyJTIwNjMuODc3ODQzTDc2NS4wOTg5MjclMjA3NjYuMzczNDU1YzM1LjI4MTU1MSUyMDAlMjA2My44NzY4Mi0yOC41OTUyNjglMjA2My44NzY4Mi02My44Nzc4NDNsMC05NS44MjEzNjljMC0xNy42MzQ2MzYlMjAxNC4yOTg2NTgtMzEuOTMzMjkzJTIwMzEuOTQzNTI2LTMxLjkzMzI5M2w2My44Nzc4NDMlMjAwYzE3LjYzNDYzNiUyMDAlMjAzMS45MzMyOTMlMjAxNC4yOTg2NTglMjAzMS45MzMyOTMlMjAzMS45MzMyOTNsMCUyMDE1OS42OTkyMTJDOTU2LjcyOTM4NSUyMDgzNi45Mzk2MjclMjA4OTkuNTM4ODQ5JTIwODk0LjEyNTA0NyUyMDgyOC45NzU3NDYlMjA4OTQuMTI1MDQ3TDgyOC45NzU3NDYlMjA4OTQuMTI1MDQ3ek0yNDkuOTM4OTU3JTIwMjY3LjUwOTYzNmMxMi45MjEyODctMTIuOTE5MjQxJTIwMzMuODg0NzM4LTEyLjkxOTI0MSUyMDQ2LjgwNzA0OSUyMDBsMTQ4Ljk3MDg3JTIwMTQ4Ljk3MTg5M0w0NDUuNzE2ODc2JTIwOTQuODkzMjNjMC0xNy42MzQ2MzYlMjAxNC4zMDA3MDQtMzEuOTQ3NjIlMjAzMS45MzMyOTMtMzEuOTQ3NjJsNjMuODc1Nzk2JTIwMGMxNy42Mzc3MDYlMjAwJTIwMzEuOTQ1NTczJTIwMTQuMzEyOTg0JTIwMzEuOTQ1NTczJTIwMzEuOTQ3NjJsMCUyMDMyMS41ODgyOTklMjAxNDguOTcwODctMTQ4Ljk3MTg5M2MxMi45MjEyODctMTIuOTE5MjQxJTIwMzMuODc1NTI4LTEyLjkxOTI0MSUyMDQ2Ljc5NjgxNiUyMDBsNDYuODE0MjEyJTIwNDYuODE4MzA1YzEyLjkyMTI4NyUyMDEyLjkyMjMxMSUyMDEyLjkyMTI4NyUyMDMzLjg3NDUwNSUyMDAlMjA0Ni44MDcwNDlMNTUyLjI2MTQ3MSUyMDYyNC45MzAwMjVjLTEuMTQwOTg2JTIwMS4xMzc5MTYtMjEuNjY0NDE2JTIwMTMuNjgzNjUtNDIuMzE1NzU4JTIwMTMuNjkyODYtMjAuODc2NDclMjAwLjAxMDIzMy00MS44Nzg4MDYtMTIuNTQxNjQxLTQzLjAyMDgxNi0xMy42OTI4NkwyMDMuMTIxNjc2JTIwMzYxLjEzNDk5Yy0xMi45MjIzMTEtMTIuOTMzNTY3LTEyLjkyMjMxMS0zMy44ODQ3MzglMjAwLTQ2LjgwNzA0OUwyNDkuOTM4OTU3JTIwMjY3LjUwOTYzNiUyMDI0OS45Mzg5NTclMjAyNjcuNTA5NjM2eiUyMiUyMGZpbGwlM0QlMjIlMjMyNzI2MzYlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIua3u+WKoOWIsOS5puaetlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTQyNi42NjY2NjclMjA2ODIuNjY2NjY3djQyLjY2NjY2NmgxNzAuNjY2NjY2di00Mi42NjY2NjZoLTE3MC42NjY2NjZ6JTIwbS00Mi42NjY2NjctODUuMzMzMzM0aDI5OC42NjY2Njd2MTI4aDQyLjY2NjY2NlY0MTguMTMzMzMzTDYwNS44NjY2NjclMjAyOTguNjY2NjY3SDI5OC42NjY2Njd2NDI2LjY2NjY2Nmg0Mi42NjY2NjZ2LTEyOGg0Mi42NjY2Njd6JTIwbTI2MC4yNjY2NjctMzg0TDgxMC42NjY2NjclMjAzNzkuNzMzMzMzVjgxMC42NjY2NjdIMjEzLjMzMzMzM1YyMTMuMzMzMzMzaDQzMC45MzMzMzR6TTM0MS4zMzMzMzMlMjAzNDEuMzMzMzMzaDg1LjMzMzMzNHYxNzAuNjY2NjY3SDM0MS4zMzMzMzNWMzQxLjMzMzMzM3olMjIlMjBmaWxsJTNEJTIyJTIzNDQ0NDQ0JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKE1ZX1BBUkFNUykgPT4ge1xcbiAgICAgICAgTVlfUEFSQU1TLm9yaWdpbiA9IE1ZX1BBUkFNUy5zdXJsXFxuICAgICAgICBNWV9QQVJBTVMuYm9va1VybCA9IE1ZX1BBUkFNUy51XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KGJ1aWxkVXJsKE1ZX1BBUkFNUy5iYXNlICsgXFxcIi9yZWFkZXIzL3NhdmVCb29rXFxcIiwge1xcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBNWV9QQVJBTVMudG9rZW5cXG4gICAgICAgIH0pLCB7XFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoTVlfUEFSQU1TKVxcbiAgICAgICAgfSkpLmRhdGFcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFwiXFxuICAgIH0sIE1ZX1BBUkFNUylcXG59LCB7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJcIixcInBhdGhcIjpcInNlYXJjaFwiLFwicnVsZVwiOlwianM6XFxudHJ5IHtcXG4gICAgdmFyIGJhc2UgPSBnZXRQYXJhbShcXFwiYmFzZVxcXCIpXFxuICAgIHZhciB0b2tlbiA9IGdldFBhcmFtKFxcXCJ0b2tlblxcXCIpXFxuICAgIHZhciBkID0gW107XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShwb3N0KGJ1aWxkVXJsKGJhc2UgKyBcXFwiL3JlYWRlcjMvc2VhcmNoQm9va1xcXCIsIHtcXG4gICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbixcXG4gICAgfSksIHtcXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBrZXk6IGdldFBhcmFtKFxcXCJrd1xcXCIpLFxcbiAgICAgICAgICAgIGNvbmN1cnJlbnRDb3VudDogMjQsXFxuICAgICAgICAgICAgcGFnZTogTVlfUEFHRSxcXG4gICAgICAgICAgICBib29rU291cmNlVXJsOiBnZXRQYXJhbShcXFwidVxcXCIpLFxcbiAgICAgICAgICAgIGxhc3RJbmRleDogLTEsXFxuICAgICAgICAgICAgYm9va1NvdXJjZUdyb3VwOiBcXFwiXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSkpLmRhdGFcXG5cXG4gICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5jb3ZlclVybCxcXG4gICAgICAgICAgICAgICAgZGVzYzogYCR7aXRlbS5raW5kP2l0ZW0ua2luZC5zcGxpdChcXFwiLFxcXCIpLmpvaW4oXFxcIiBcXFwiKTpcXFwi5pqC5pegXFxcIn1gLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBg5L2c6ICF77yaJHtpdGVtLmF1dGhvcn1cXFxcbueugOS7i++8miR7aXRlbS5pbnRyb31gLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgdTogaXRlbS5ib29rVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgYmFzZTogYmFzZSxcXG4gICAgICAgICAgICAgICAgICAgIHN1cmw6IGl0ZW0ub3JpZ2luLFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGludHJvOiBpdGVtLmludHJvLFxcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgICAgIGNvdmVyOiBpdGVtLmNvdmVyVXJsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9tZW51P3J1bGU96ZiF6K+7IFBybyYjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgbG9nKGUubWVzc2FnZSlcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YaF5a65XCIsXCJwYXRoXCI6XCJjb250ZW50XCIsXCJydWxlXCI6XCJqczpcXG52YXIgbCA9IFtdXFxudmFyIHtcXG4gICAgYmFzZSxcXG4gICAgbGluayxcXG4gICAgaW5kZXgsXFxuICAgIHRpdGxlLFxcbiAgICB0b2tlblxcbn0gPSBNWV9QQVJBTVNcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UocG9zdChiYXNlICsgXFxcIi9yZWFkZXIzL2dldEJvb2tDb250ZW50P2FjY2Vzc1Rva2VuPVxcXCIgKyB0b2tlbiwge1xcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICB1cmw6IGxpbmssXFxuICAgICAgICBpbmRleDogaW5kZXhcXG4gICAgfSlcXG59KSkuZGF0YVxcbnZhciBsID0gW3tcXG4gICAgdGl0bGU6IFxcXCI8YmlnPjxzdHJvbmc+XFxcIiArIHRpdGxlICsgXFxcIjwvc3Ryb25nPjwvYmlnPlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbn1dXFxuZGF0YS5zcGxpdChcXFwiXFxcXG5cXFwiKS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICBsLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0ucmVwbGFjZSgvXlxcXFxzKi8sIFxcXCImbmJzcDsgJm5ic3A7ICZuYnNwO1xcXCIpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgIH0pXFxufSlcXG5zZXRSZXN1bHQobClcXG52YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KGJ1aWxkVXJsKGJhc2UgKyBcXFwiL3JlYWRlcjMvc2F2ZUJvb2tQcm9ncmVzc1xcXCIsIHtcXG4gICAgYWNjZXNzVG9rZW46IHRva2VuXFxufSksIHtcXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdXJsOiBsaW5rLFxcbiAgICAgICAgaW5kZXg6IGluZGV4XFxuICAgIH0pXFxufSkpXCJ9XSIsImljb24iOiJodHRwczovL3MzLmJtcC5vdmgvaW1ncy8yMDIyLzEwLzAyLzkyNDhhZjI2MjRkNjQ5MDQucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment