Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥说明@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwiYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxyXFxuICAgIGNsZWFyTXlWYXIoJ25hbWVBcnJheScpO1xcclxcbiAgICBjbGVhck15VmFyKCd1cmxBcnJheScpO1xcclxcbiAgICBjbGVhck15VmFyKCdzd2l0Y2gnKTtcXHJcXG59KVxcclxcbmFkZExpc3RlbmVyKCdvblJlZnJlc2gnLCAoKSA9PiB7XFxyXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcclxcbiAgICBjbGVhck15VmFyKCdkZWxOdW0nKTtcXHJcXG4gICAgY2xlYXJNeVZhcignZGVsQXJyYXknKTtcXHJcXG4gICAgY2xlYXJNeVZhcignc2hhcmVOdW0nKTtcXHJcXG4gICAgY2xlYXJNeVZhcignc2hhcmVBcnJheScpO1xcclxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxyXFxuICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXHJcXG4gICAgfVxcclxcbn0pXFxyXFxuaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpIHtcXHJcXG4gICAgY29uZmlnQXJyYXkgPSBbXTtcXHJcXG4gICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXHJcXG59XFxyXFxuaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykpIHtcXHJcXG4gICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JywgJ+W8gCcpO1xcclxcbn1cXHJcXG52YXIgZCA9IFtdO1xcclxcbmQucHVzaCh7XFxyXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxyXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ3N3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcclxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XFxyXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oJ2FkZCcpXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIHB1dE15VmFyKCdzd2l0Y2gnLCAn5YWzJyk7XFxyXFxuICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXHJcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekOWQjeensO+8jOS4gOihjOS4gOS4qicsXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcclxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxyXFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcclxcbiAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcclxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignbmFtZUFycmF5JyxpbnB1dClcXFwiLFxcclxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9LCB7XFxyXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDvvIzkuIDooYzkuIDkuKonLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxyXFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ3VybEFycmF5JyxpbnB1dClcXFwiLFxcclxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9LCB7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0TXlWYXIoJ25hbWVBcnJheScpLnNwbGl0KCdcXFxcbicpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgdXJsQXJyYXkgPSBnZXRNeVZhcigndXJsQXJyYXknKS5zcGxpdCgnXFxcXG4nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBuYW1lQXJyYXkubGVuZ3RoID4gdXJsQXJyYXkubGVuZ3RoID8gbmFtZUFycmF5Lmxlbmd0aCA6IHVybEFycmF5Lmxlbmd0aDtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgamlleGlOYW1lID0gaSA+IG5hbWVBcnJheS5sZW5ndGggLSAxID8gJ+acquWRveWQjScgOiAobmFtZUFycmF5W2ldID09ICcnID8gJ+acquWRveWQjScgOiBuYW1lQXJyYXlbaV0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpVXJsID0gaSA+IHVybEFycmF5Lmxlbmd0aCAtIDEgPyAn56m66Kej5p6QJyA6ICh1cmxBcnJheVtpXSA9PSAnJyA/ICfnqbrop6PmnpAnIDogdXJsQXJyYXlbaV0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqaWV4aU5hbWUsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogamlleGlVcmxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc3dpdGNoJywgJ+WFsycpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L+d5a2Y5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgICAgICAgICB9KSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfV1cXHJcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uJywgYWRkQXJyYXkpO1xcclxcbiAgICAgICAgICAgIHB1dE15VmFyKCdzd2l0Y2gnLCAn5byAJyk7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRNeVZhcignc3dpdGNoJywgJ+W8gCcpXFxyXFxuICAgIH0pLFxcclxcbiAgICBkZXNjOiAn566A5Y2V44CB5peg5b+n44CB54us56uL55qE6Kej5p6Q566h55CG5bel5YW377yM5YW76ICB5LiT55SoJyxcXHJcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXHJcXG4gICAgZXh0cmE6IHtcXHJcXG4gICAgICAgIGlkOiAnYWRkRnVuY3Rpb24nXFxyXFxuICAgIH1cXHJcXG59LCB7XFxyXFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiM2RUI4OTdcXFwiPuivtOaYjjwvZm9udD4nLFxcclxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eScpLnJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgIGxldCBkID0gW107XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmlZnnqIvmlofmoaMnLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxyXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJmbG9hdCYmMTAwJVxcXCIsXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgIH0pLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogXFxcIuWIh+aNouaPkuS7tlxcXCIsXFxyXFxuICAgIHVybDogJChbJ+mtlOaWrScsICfliqnmiYsnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxyXFxuICAgICAgICBpZiAoaW5wdXQgPT0gJ+mtlOaWrScpIHtcXHJcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvUGFyc2VfRG4uanM/cnVsZT1NeUZpZWxk4bSw4oG/XFxcIikpLnJ1bGUpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/prZTmlq3mqKHlvI9cXFwiO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHVhbj9ydWxlPemFjee9ruWKqeaJi1xcXCIpKS5ydWxlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5b2T5YmN5piv5Yqp5omL5qih5byPXFxcIjtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiAn5a+85YWl6L6F5YqpJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICBodG1sID0gcmVxdWVzdCgnaHR0cHM6Ly9uZXRjdXQuY24vcC9hNWQxYzhlMWVjZWUyOGQzJyk7XFxyXFxuICAgICAgICBkYXRhID0gaHRtbC5tYXRjaCgvey4qbm90ZV9jb250ZW50Lip1cGRhdGVkX2F0Lip9LylbMF07XFxyXFxuICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZShkYXRhKS5ub3RlX2NvbnRlbnQ7XFxyXFxuICAgICAgICB1cERhdGEgPSBKU09OLnBhcnNlKGRhdGEpLnVwZGF0ZWRfYXQ7XFxyXFxuICAgICAgICBwdXRNeVZhcignY29udGVudCcsIGNvbnRlbnQpO1xcclxcbiAgICAgICAgY29uZmlybSh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6ICfmmK/lkKblr7zlhaUnLFxcclxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfohJrmnKzmm7TmlrDml6XmnJ9cXFxcbicgKyB1cERhdGEsXFxyXFxuICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TXlWYXIoJ2NvbnRlbnQnKTtcXHJcXG4gICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5Y+W5raI5a+85YWlJztcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiAn6Kej5p6Q5qih5p2/JyxcXHJcXG4gICAgdXJsOiBgY29weTovL+S/ruaUueKYhemtlOaWremAmueUqOaooeadv+KYhVxcclxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXHJcXG4gICAgLy8g5q2j5bi46LCD55SoLeW8ueW5leW8gOWFs+WcqOmFjee9ruWKqeaJi+mHjOiHquihjOiuvue9ruaYr+WQpuWQr+eUqFxcclxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcclxcbiAgICAvKuWFjeWXhemmluWPkeaooeW8j1xcclxcbiAgICDlpoLmnpzmg7PopoHlrp7njrDnsbvkvLzprZTmlq3nmoTll4XmjqLkvJjlhYjvvJrlhY3ll4XliqB4NeOAgUpzb27lpJrnur/ot6/nmoTlvaLlvI/vvIzlj4LogIPms6jph4rnmoTnpLrkvovku6PnoIHmt7vliqDlhY3ll4Xku6PnoIHvvIjlj6rmmK/npLrkvovlubbkuI3lj6/nlKjvvInvvIzlubblnKjmnIDnu4jov5Tlm57nmoTml7blgJnpobrluo/lpJrkvKDlhaXkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/lhY3ll4XlvpfliLDnmoTmkq3mlL7lnLDlnYDvvIzkuIDkuKrmmK/ov5nkuKrop6PmnpDmiJbnur/ot6/nmoTlkI3lrZdcXHJcXG4gICAgdmFyIHBhcnNlID0gXFxcImh0dHBzOi8vcGxheWVyLmR4eXkuY2YvV25kZXh4WC5waHA/dXJsPVxcXCI7XFxyXFxuICAgIGJmdXJsID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU9QVBJ55uS5a2QXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxyXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCwgYmZ1cmwsICdsbHEnKSArIFxcXCI7e1VzZXItQWdlbnRAJiZSZWZlcmVyQH1cXFwiO1xcclxcbiAgICAqL1xcclxcbn1gLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+a6kOeggee8lui+kScsXFxyXFxuICAgIHVybDogXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxyXFxuICAgIHVybDogJ3NoYXJlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+S6keadv+WIhuS6qycsXFxyXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoc2V0RmlsZSkpO1xcclxcbiAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIgKyBzaGFyZVBhc3RlKHNlY3JldENvbnRlbnQpKTtcXHJcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxyXFxuICAgIH0pLFxcclxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxufSwge1xcclxcbiAgICB0aXRsZTogJ+S6keadv+WvvOWFpScsXFxyXFxuICAgIHVybDogJCgnJywgJ+WinumHj+WvvOWFpe+8jOivt+aUvuW/gycpLmlucHV0KCgpID0+IHtcXHJcXG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgv5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpS8pKSB7XFxyXFxuICAgICAgICAgICAgbGluayA9IGlucHV0LnNwbGl0KCfCpcKlJylbMV07XFxyXFxuICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IHBhcnNlUGFzdGUobGluayk7XFxyXFxuICAgICAgICAgICAgZXZhbCgncmVtb3RlU2V0RmlsZT0nICsgYmFzZTY0RGVjb2RlKGJhc2U2NERlY29kZShzZWNyZXRDb250ZW50KSkpO1xcclxcbiAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgbmV3QXJyYXkgPSBjb25maWdBcnJheS5jb25jYXQocmVtb3RlU2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5a+85YWl5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+j5Luk6ZSZ6K+vXFxcIlxcclxcbiAgICAgICAgfVxcclxcbiAgICB9KSxcXHJcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcclxcbn0sIHtcXHJcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcclxcbn0sIHtcXHJcXG4gICAgdGl0bGU6IGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7phY3nva48L2ZvbnQ+JyA6ICfphY3nva4nLFxcclxcbiAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgIHB1dE15VmFyKCdtb2RlJywgJ+mFjee9ricpO1xcclxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICB9KSxcXHJcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcclxcbn0sIHtcXHJcXG4gICAgdGl0bGU6IGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7mibnph4/lt6Xlhbc8L2ZvbnQ+JyA6ICfmibnph4/lt6XlhbcnLFxcclxcbiAgICB1cmw6ICQoWyfliKDpmaQnLCAn5YiG5LqrJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcclxcbiAgICAgICAgcHV0TXlWYXIoJ21vZGUnLCAn5om56YeP5bel5YW3Jyk7XFxyXFxuICAgICAgICBpZiAoaW5wdXQgPT0gJ+WIoOmZpCcpIHtcXHJcXG4gICAgICAgICAgICBwdXRNeVZhcigndHlwZScsICfmibnph4/liKDpmaQnKTtcXHJcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdkZWxOdW0nKTtcXHJcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdkZWxBcnJheScpO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICBwdXRNeVZhcigndHlwZScsICfmibnph4/liIbkuqsnKTtcXHJcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdzaGFyZU51bScpO1xcclxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ3NoYXJlQXJyYXknKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXHJcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiBnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICBwdXRNeVZhcignbW9kZScsICfop6PmnpDmtYvor5UnKTtcXHJcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgfSksXFxyXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG59LCB7XFxyXFxuICAgIHRpdGxlOiByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpID09ICd0cnVlJyA/ICflvLnluZU65byAJyA6ICflvLnluZU65YWzJyxcXHJcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcclxcbiAgICAgICAgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICdmYWxzZScpO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAndHJ1ZScpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICB9KSxcXHJcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcclxcbn0pO1xcclxcbnRyeSB7XFxyXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcclxcbiAgICBpZiAoZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXHJcXG4gICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcclxcbiAgICAgICAgfSwge1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn5Y676YeN6Zmk55m9JyxcXHJcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdsYXN0Q2xlYW4nLCBjb25maWdBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gW107XFxyXFxuICAgICAgICAgICAgICAgIG51bSA9IDA7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihjb25maWdBcnJheVtpXS51cmwsICcwJykgIT0gJzEnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSAn56m66Kej5p6QJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gdW5kZWZpbmVkKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMScpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBudW0rKztcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGdldE15VmFyKCdsYXN0Q2xlYW4nLCAnW10nKSkuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbS51cmwpO1xcclxcbiAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzmrKHljrvph43mlbDph4/kuLpcXFxcdFxcXFx0XFxcXHRcXFwiICsgbnVtO1xcclxcbiAgICAgICAgICAgIH0pLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG4gICAgICAgIH0sIHtcXHJcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKFsn5re75YqgJywgJ+WOu+mZpCddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5re75YqgJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/dXJsPS8pKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/dXJsPScsICc/cGxhY2Vob2xkZXI9JnVybD0nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFw/cGxhY2Vob2xkZXI9JnVybD0vKSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpXS51cmwgPSBjb25maWdBcnJheVtpXS51cmwucmVwbGFjZSgnP3BsYWNlaG9sZGVyPSZ1cmw9JywgJz91cmw9Jyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5aSE55CG5oiQ5YqfXFxcIjtcXHJcXG4gICAgICAgICAgICB9KSxcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWdBcnJheVtpXS5uYW1lICsgJywnICsgY29uZmlnQXJyYXlbaV0udXJsO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGNvbmZpZykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5zcGxpdCgvLHzvvIwvKVswXSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoLyx877yMLylbMV1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSwgaXRlbSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+abtOaWsOaIkOWKn1xcXCJcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+enu+S9jScpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnMCcsICfkvaDmg7PmjpLnrKzlh6DvvJ/luo/lj7fku44w5byA5aeLficpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPiBjb25maWdBcnJheS5sZW5ndGggLSAxKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGNvbmZpZ0FycmF5Lmxlbmd0aCAtIDE7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPCAwKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IDA7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGNvbmZpZ0FycmF5W2ldO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IGlucHV0KSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4ID4gaW5wdXQ7IGluZGV4LS0pIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbmRleF0gPSBjb25maWdBcnJheVtpbmRleCAtIDFdO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA8IGlucHV0OyBpbmRleCsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggKyAxXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbnB1dF0gPSB0ZW1wO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/np7vkvY3miJDlip9cXFwiXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxyXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfXFxcIlxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfVxcclxcbiAgICB9IGVsc2UgaWYgKGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfmibnph4/lt6XlhbcnKSB7XFxyXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJykgPT0gJ+aJuemHj+WIoOmZpCcpIHtcXHJcXG4gICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRNeVZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2RlbE51bScsICcwJykgPT0gJzAnKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIoOmZpOeahOino+aekO+8gSdcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdkZWxBcnJheScpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVsQXJyYXkuaW5jbHVkZXMoaSkpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtPWdldE15VmFyKCdkZWxOdW0nLCAnMCcpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbE51bScpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbEFycmF5Jyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WFseWIoOmZpFxcXCIrZGVsTnVtKyfmnaHop6PmnpAnO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9KSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZGVsQnRuJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcclxcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxyXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRNeVZhcignZGVsQXJyYXknLCAnW10nKSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRNeVZhcignZGVsTnVtJywgJzAnKSkgLSAxO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRNeVZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0TXlWYXIoJ2RlbE51bScsICcwJykpICsgMTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucHVzaChpbmRleCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkZWxBcnJheScsIGRlbEFycmF5KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaW5kZXggKyAnJywge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgaW5kZXggKyAnLScgKyBpdGVtLm5hbWUgKyAnPC9zcGFuPicsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRNeVZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcclxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcXHJcXG4gICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0TXlWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ3NoYXJlTnVtJywgJzAnKSA9PSAnMCcpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35YWI6YCJ5oup6KaB5YiG5Lqr55qE6Kej5p6Q77yBJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRNeVZhcignc2hhcmVBcnJheScpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUgPSBbXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUFycmF5LmluY2x1ZGVzKGkpKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUZpbGUucHVzaChjb25maWdBcnJheVtpXSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0Q29udGVudCA9IGJhc2U2NEVuY29kZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoc2hhcmVGaWxlKSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFwiICsgc2hhcmVQYXN0ZShzZWNyZXRDb250ZW50KSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignc2hhcmVOdW0nKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdzaGFyZUFycmF5Jyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIhuS6q+aIkOWKn1xcXCJcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgfSksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxyXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZDogJ3NoYXJlQnRuJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcclxcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxyXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCwgaXRlbSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRNeVZhcignc2hhcmVOdW0nLCAnMCcpKSAtIDE7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucG9wKGluZGV4KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzaGFyZUJ0bicsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldE15VmFyKCdzaGFyZU51bScsICcwJykgKyAnPC9zcGFuPlxcXFx0XFxcXHRcXFxcdOadoeino+aekCcsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRNeVZhcignc2hhcmVOdW0nLCAnMCcpKSArIDE7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucHVzaChpbmRleCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NoYXJlQXJyYXknLCBzaGFyZUFycmF5KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRNeVZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcclxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcXHJcXG4gICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSBlbHNlIGlmIChnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJykge1xcclxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcclxcbiAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgICAgICBqaWV4aSA9IGl0ZW0udXJsO1xcclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiM2RUI4OTdcXFwiPjxzbWFsbD7inq7liY3lvoDmtYvor5U8L3NtYWxsPjwvZm9udD4nLFxcclxcbiAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoamlleGkpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxyXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn57yW6L6R5rWL6K+V6ZO+5o6lJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxyXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5YWzJykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RtU3dpdGNoJywgJ+W8gCcpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RtU3dpdGNoJywge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZG1Td2l0Y2gnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfohb7orq/op4bpopEnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzMvMTA2XzNhMGQyMTJlMTdjYjk1ZTIzMmZmZTE1NTQ2MDM4NWNiX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucXEuY29tL3gvY292ZXIvbXpjMDAyMDBybXBhZjQwL24wMDM2bDR0bnRjLmh0bWwnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkvJjphbcnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzkvMTEwXzhmZjA2ZTBjMjM3NzYwY2Q1N2QyNTA4ZmQ5OGM4NDE0X2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YueW91a3UuY29tL3Zfc2hvdy9pZF9YTkRjME1ERTFOVGsxTWc9PS5odG1sJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn54ix5aWH6Im6Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8wOS84LzExMF85MDFmMmVmMzdhZjJmZWEyNWU1ZDk2NDhmNTUxY2UzMV9jb25fMTMweDEzMC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5pcWl5aS5jb20vdl8yZ2E4enRzODZ5cy5odG1sJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IqS5p6cVFYnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzYvMTEwXzE4MzRkMjk2YWE1YjU2NjZhN2Q5NGIxZTM0NzlhZTY0X2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3Lm1ndHYuY29tL2IvMzQ5MjUzLzEwNDI0MzAwLmh0bWwnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflk5Tlk6nlk5Tlk6knOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzQvMTEwXzhlMmUzZDg4YzQ1MDI1YjM4MGU2OTgxN2Q2ZmI1M2IxX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcDQyODk5MydcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aQnOeLkOinhumikSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOS8xMTBfNTMyYTUxZjg0MzFlZmMzNzc4MDhjMWZmZmYyZGEzNmZfY29uXzEzMHgxMzAucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS50di5zb2h1LmNvbS92NzMyOTQ0MS5zaHRtbCcsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfopb/nk5zop4bpopEnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzUvMTEwX2E4NjI2NTg4MmVkMThjNjE5MDU2NmU5ZWEyNWY5Njk4X2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy5peGlndWEuY29tLzY2OTkzNTY3OTI5MDU3OTQwNTUnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkuZDop4YnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzgvMl8zNWI1ZDQzNzNmNGJjYmEyOGYzOTQ4NmU0ZjExNjRkOV9jb25fMTMweDEzMC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmxlLmNvbS92cGxheV83Njk1NDMzMy5odG1sP2Zyb209YWpheCcsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxOTA1Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xOC80LzExMF81ZjI0YjEwNTJmZWQ0ZjdmYzczNTkzYThlZjI3Mjc2ZF9jb25fMTMweDEzMC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92aXAuMTkwNS5jb20vbS9wbGF5LzE0Mjk3MjUuc2h0bWwnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpo47ooYzop4bpopEnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzQvMTEwXzZmNmFmOWY5OWIyNjI5ZTUxZjBiMGEzM2NkZmYxZDllX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vbS5mdW4udHYvbXBsYXkvP21pZD05NTcxOSdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BQVFbop4bpopEnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI4LzUvMTEwX2E0NTViMjk1MTIyNzA0MGVlNjI5NTVlZGNmYjg5ZDcyX2Nvbl8xMzB4MTMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucHB0di5jb20vc2hvdy96Vm4zZEpYdDF4VjQ5bDQuaHRtbCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+m+meiFvic6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80LnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdMVC0xZWMzZjY3NTRmNjg1ODZlZDdmOTJjM2U5OTVjZmNhNidcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6uuS6uui/tyc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS82LnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdyZW5yZW5taS1hYjkyNGUxMWQyZDY5Mzk3J1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LqU5q+SJzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzMwLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd3dWR1eXVuLTE2NDk0MzEzMDcwMjEnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflpJrlpJonOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNDkucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbTN1OC5jYWNoZS5zdW95by5jYy9tM3U4LzIwMjIwMy84L2FhYWJkOTJkYTI2Nzc0YzY4ODUwYTAyMzE1M2M4MGYxYWU2ZmE5YmUubTN1OCdcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iejeWFtCc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS84MC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnUm9uZ1hpbmdWUi00MjE1NjQ1NTgxOTMyJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6Zuq5Lq6Jzoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMTMzLnBuZycsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4dWVyZW4tMTY0NjgyMzA3MidcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aXi+mjjuS6kSc6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS81NC5wbmcnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneGZ5LTUyOWU2NDU3OTUzZDU0NWYnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfnkZ7kuLDotYTmupAnOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNzIucG5nJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vMS5ydWlmZW5nbGIuY29tL3BsYXkvMTY0NDkxNDU5NS5tM3U4J1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicsIEpTT04uc3RyaW5naWZ5KGNlc2hpRGF0YSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNlc2hpRGF0YSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGNlc2hpRGF0YVtwcm9wXS5waWMgKyAnQFJlZmVyZXI9JyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGNlc2hpRGF0YSwgcHJvcCwgamlleGkpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGNlc2hpRGF0YVtwcm9wXS51cmw7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzID0gW1xcXCJ2aWRlbzovL1xcXCIgKyBqaWV4aSArIHZpcFVybF07XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFsn5rWL6K+VJ11cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9EbS5qcz9ydWxlPWRt55uS5a2QXFxcIikuZ2V0Rm9yKHZpcFVybCwgdXJscywgbmFtZXMpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjZXNoaURhdGEsIHByb3AsIGppZXhpKSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rWL6K+VJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5L2g6L+Y5Y+v5Lul5Lu75oSP6L6T5YWl5LiA5Liq6KeG6aKR5Zyw5Z2A5rWL6K+V5b2T5YmN6Kej5p6QficsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChqaWV4aSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXBVcmwgPSBnZXRNeVZhcignY2VzaGlMaW5rJyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS92aWRlb0RtLmpzP3J1bGU9ZG3nm5LlrZBcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgamlleGkpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ2Nlc2hpTGluaycsaW5wdXQpXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfliKDpmaTor6Xop6PmnpAnLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfor7forqTnnJ/ogIPomZF+JyxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChqaWV4aSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uICh2YWwpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldLnVybCA9PSB2YWwpIHJldHVybiBpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHZhbCkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5pbmRleE9mKHZhbCk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BsaWNlKGluZGV4LCAxKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnJlbW92ZShqaWV4aSk7IFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlhbPpl63pobXpnaLlubbliLfmlrDliY3kuIDkuKrpobXpnaJcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIoOmZpOaIkOWKn35cXFwiO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxyXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxyXFxuICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgfVxcclxcbn0gY2F0Y2ggKGUpIHtcXHJcXG4gICAgZC5wdXNoKHtcXHJcXG4gICAgICAgIHRpdGxlOiAn6YWN572u5paH5Lu25oiW5bey5o2f5Z2PficsXFxyXFxuICAgICAgICBkZXNjOiAn54K55Ye75YmN5Y675qOA5p+lLOiHquihjOe8lui+keaWh+S7tuS/ruWkjScsXFxyXFxuICAgICAgICB1cmw6IFxcXCJlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIixcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXHJcXG4gICAgfSwge1xcclxcbiAgICAgICAgdGl0bGU6ICfkuIDplK7ph43nlJ9+JyxcXHJcXG4gICAgICAgIGRlc2M6ICflm57lvZLljp/liJ3nirbmgIHvvIzlsIbmuIXnqbrop6PmnpDphY3nva4hISEnLFxcclxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXHJcXG4gICAgICAgICAgICBjb25maWdBcnJheSA9IFtdO1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXHJcXG4gICAgfSk7XFxyXFxufVxcclxcbnNldFJlc3VsdChkKTtcXHJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuiwg+eUqOi3r+eUsVwiLFwicGF0aFwiOlwibXVsUGFyc2VcIixcInJ1bGVcIjpcIi8qXFxyXFxuIHZpcFVybDrlrpjnvZHlnLDlnYA76L+U5Zue5YC8SlNPTuagvOW8j+eahOWkmue6v+i3r+inhumikeWcsOWdgFxcclxcbuiwg+eUqOaOpeWPo++8miQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXHJcXG4gKi9cXHJcXG4kLmV4cG9ydHMubXVsUGFyc2UgPSBmdW5jdGlvbiAodmlwVXJsLGJmTGluayxqaWV4aU5hbWUpIHtcXHJcXG4gICAgaWYgKHZpcFVybC5pbmRleE9mKCdkb3ViYW4nKSAhPSAtMSkge1xcclxcbiAgICAgICAgdmlwVXJsPXZpcFVybC5zcGxpdCgnP3B0YWc9JylbMF1cXHJcXG4gICAgfVxcclxcbiAgICBsb2coJ+inhumikeWOn+WcsOWdgO+8micrdmlwVXJsKTtcXHJcXG4gICAgaWYgKGJmTGluayYmamlleGlOYW1lKSB7XFxyXFxuICAgICAgICB2YXIgdXJscyA9IGJmTGluaztcXHJcXG4gICAgICAgIHZhciBuYW1lcyA9IGppZXhpTmFtZTtcXHJcXG4gICAgfWVsc2V7XFxyXFxuICAgICAgICB2YXIgdXJscyA9IFtdO1xcclxcbiAgICAgICAgdmFyIG5hbWVzID0gW107XFxyXFxuICAgIH1cXHJcXG4gICAgbG9nKFxcXCLlpJrnur/ot6/op6PmnpDlvIDlp4tcXFwiKVxcclxcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVhZEZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcIikpXFxyXFxuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXHJcXG4gICAgICAgIHVybHMucHVzaChcXFwidmlkZW86Ly9cXFwiICsgaXRlbS51cmwgKyB2aXBVcmwpO1xcclxcbiAgICAgICAgbmFtZXMucHVzaChpdGVtLm5hbWUpO1xcclxcbiAgICB9KTtcXHJcXG4gICAgbG9nKGDlvZPliY3lkK/nlKjop6PmnpDvvJoke3VybHMubGVuZ3RofeS4qmApXFxyXFxuICAgIHZhciBkbVN3aXRjaCA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0Jyk7XFxyXFxuICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXHJcXG4gICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS92aWRlb0RtLmpzP3J1bGU9ZG3nm5LlrZBcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcclxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxyXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVzXFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaWreaPkuaPkuS7tlwiLFwicGF0aFwiOlwiZHVhblwiLFwicnVsZVwiOlwiZnVuY3Rpb24gYXl0bVBhcnNlKHZpcFVybCkge1xcclxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcclxcbn1cXHJcXG5cIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLphY3nva7liqnmiYtcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5O2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6KFxcbigpID0+IHtcXG4gICAgbGV0IGQgPSBbXTtcXG4gICAgZC5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NjU1OVxcXFx1N2EwYlxcXFx1NjU4N1xcXFx1Njg2M1xcXCIsIHVybDogXFxcImh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9jaGVueWluZy1rNzNzYy9saGN2cWQvYnNoNWUyXFxcIiwgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIiwgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCJ9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG4pKClcIixcImdyb3VwXCI6XCLlt6XlhbdcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuLvpobVcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaG9tZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJhZGRMaXN0ZW5lcignb25DbG9zZScsICgpID0+IHtcXFxcclxcXFxuICAgIGNsZWFyTXlWYXIoJ25hbWVBcnJheScpO1xcXFxyXFxcXG4gICAgY2xlYXJNeVZhcigndXJsQXJyYXknKTtcXFxcclxcXFxuICAgIGNsZWFyTXlWYXIoJ3N3aXRjaCcpO1xcXFxyXFxcXG59KVxcXFxyXFxcXG5hZGRMaXN0ZW5lcignb25SZWZyZXNoJywgKCkgPT4ge1xcXFxyXFxcXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxyXFxcXG4gICAgY2xlYXJNeVZhcignZGVsTnVtJyk7XFxcXHJcXFxcbiAgICBjbGVhck15VmFyKCdkZWxBcnJheScpO1xcXFxyXFxcXG4gICAgY2xlYXJNeVZhcignc2hhcmVOdW0nKTtcXFxcclxcXFxuICAgIGNsZWFyTXlWYXIoJ3NoYXJlQXJyYXknKTtcXFxcclxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICBjbGVhck15VmFyKCdpc0Nob29zZScgKyBpKTtcXFxcclxcXFxuICAgIH1cXFxcclxcXFxufSlcXFxcclxcXFxuaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpIHtcXFxcclxcXFxuICAgIGNvbmZpZ0FycmF5ID0gW107XFxcXHJcXFxcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcXFxyXFxcXG59XFxcXHJcXFxcbmlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpKSB7XFxcXHJcXFxcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAn5byAJyk7XFxcXHJcXFxcbn1cXFxcclxcXFxudmFyIGQgPSBbXTtcXFxcclxcXFxuZC5wdXNoKHtcXFxcclxcXFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXFxcclxcXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgaWYgKGdldE15VmFyKCdzd2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oJ2FkZCcpXFxcXHJcXFxcbiAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ3N3aXRjaCcsICflhbMnKTtcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGQnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgIH0sIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfop6PmnpDvvIzkuIDooYzkuIDkuKonLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRNeVZhcigndXJsQXJyYXknLGlucHV0KVxcXFxcXFwiLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9LCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZUFycmF5ID0gZ2V0TXlWYXIoJ25hbWVBcnJheScpLnNwbGl0KCdcXFxcXFxcXG4nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB1cmxBcnJheSA9IGdldE15VmFyKCd1cmxBcnJheScpLnNwbGl0KCdcXFxcXFxcXG4nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbmFtZUFycmF5Lmxlbmd0aCA+IHVybEFycmF5Lmxlbmd0aCA/IG5hbWVBcnJheS5sZW5ndGggOiB1cmxBcnJheS5sZW5ndGg7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWV4aU5hbWUgPSBpID4gbmFtZUFycmF5Lmxlbmd0aCAtIDEgPyAn5pyq5ZG95ZCNJyA6IChuYW1lQXJyYXlbaV0gPT0gJycgPyAn5pyq5ZG95ZCNJyA6IG5hbWVBcnJheVtpXSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpVXJsID0gaSA+IHVybEFycmF5Lmxlbmd0aCAtIDEgPyAn56m66Kej5p6QJyA6ICh1cmxBcnJheVtpXSA9PSAnJyA/ICfnqbrop6PmnpAnIDogdXJsQXJyYXlbaV0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGppZXhpTmFtZSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogamlleGlVcmxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3N3aXRjaCcsICflhbMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9KSxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9XVxcXFxyXFxcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uJywgYWRkQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICBwdXRNeVZhcignc3dpdGNoJywgJ+W8gCcpO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2ic3dpdGNo5Li6OicgKyBnZXRNeVZhcignc3dpdGNoJywgJ+W8gCcpXFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGRlc2M6ICfnroDljZXjgIHml6Dlv6fjgIHni6znq4vnmoTop6PmnpDnrqHnkIblt6XlhbfvvIzlhbvogIHkuJPnlKgnLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXFxcclxcXFxuICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgaWQ6ICdhZGRGdW5jdGlvbidcXFxcclxcXFxuICAgIH1cXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwiIzZFQjg5N1xcXFxcXFwiPuivtOaYjjwvZm9udD4nLFxcXFxyXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgIGxldCBkID0gW107XFxcXHJcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aVmeeoi+aWh+ahoycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuWIh+aNouaPkuS7tlxcXFxcXFwiLFxcXFxyXFxcXG4gICAgdXJsOiAkKFsn6a2U5patJywgJ+WKqeaJiyddLCAyLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KCgpID0+IHtcXFxcclxcXFxuICAgICAgICBpZiAoaW5wdXQgPT0gJ+mtlOaWrScpIHtcXFxcclxcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qc1xcXFxcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL1BhcnNlX0RuLmpzP3J1bGU9TXlGaWVsZOG0sOKBv1xcXFxcXFwiKSkucnVsZSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5b2T5YmN5piv6a2U5pat5qih5byPXFxcXFxcXCI7XFxcXHJcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qc1xcXFxcXFwiLCBKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2R1YW4/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikpLnJ1bGUpO1xcXFxyXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W9k+WJjeaYr+WKqeaJi+aooeW8j1xcXFxcXFwiO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiAn5a+85YWl6L6F5YqpJyxcXFxcclxcXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KCdodHRwczovL25ldGN1dC5jbi9wL2E1ZDFjOGUxZWNlZTI4ZDMnKTtcXFxcclxcXFxuICAgICAgICBkYXRhID0gaHRtbC5tYXRjaCgvey4qbm90ZV9jb250ZW50Lip1cGRhdGVkX2F0Lip9LylbMF07XFxcXHJcXFxcbiAgICAgICAgY29udGVudCA9IEpTT04ucGFyc2UoZGF0YSkubm90ZV9jb250ZW50O1xcXFxyXFxcXG4gICAgICAgIHVwRGF0YSA9IEpTT04ucGFyc2UoZGF0YSkudXBkYXRlZF9hdDtcXFxcclxcXFxuICAgICAgICBwdXRNeVZhcignY29udGVudCcsIGNvbnRlbnQpO1xcXFxyXFxcXG4gICAgICAgIGNvbmZpcm0oe1xcXFxyXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+aYr+WQpuWvvOWFpScsXFxcXHJcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfohJrmnKzmm7TmlrDml6XmnJ9cXFxcXFxcXG4nICsgdXBEYXRhLFxcXFxyXFxcXG4gICAgICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TXlWYXIoJ2NvbnRlbnQnKTtcXFxcclxcXFxuICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5Y+W5raI5a+85YWlJztcXFxcclxcXFxuICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgIH0pXFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogJ+ino+aekOaooeadvycsXFxcXHJcXFxcbiAgICB1cmw6IGBjb3B5Oi8v5L+u5pS54piF6a2U5pat6YCa55So5qih5p2/4piFXFxcXHJcXFxcbmZ1bmN0aW9uICh2aXBVcmwpIHtcXFxcclxcXFxuICAgIC8vIOato+W4uOiwg+eUqC3lvLnluZXlvIDlhbPlnKjphY3nva7liqnmiYvph4zoh6rooYzorr7nva7mmK/lkKblkK/nlKhcXFxcclxcXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXFxcclxcXFxuICAgIC8q5YWN5ZeF6aaW5Y+R5qih5byPXFxcXHJcXFxcbiAgICDlpoLmnpzmg7PopoHlrp7njrDnsbvkvLzprZTmlq3nmoTll4XmjqLkvJjlhYjvvJrlhY3ll4XliqB4NeOAgUpzb27lpJrnur/ot6/nmoTlvaLlvI/vvIzlj4LogIPms6jph4rnmoTnpLrkvovku6PnoIHmt7vliqDlhY3ll4Xku6PnoIHvvIjlj6rmmK/npLrkvovlubbkuI3lj6/nlKjvvInvvIzlubblnKjmnIDnu4jov5Tlm57nmoTml7blgJnpobrluo/lpJrkvKDlhaXkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/lhY3ll4XlvpfliLDnmoTmkq3mlL7lnLDlnYDvvIzkuIDkuKrmmK/ov5nkuKrop6PmnpDmiJbnur/ot6/nmoTlkI3lrZdcXFxcclxcXFxuICAgIHZhciBwYXJzZSA9IFxcXFxcXFwiaHR0cHM6Ly9wbGF5ZXIuZHh5eS5jZi9XbmRleHhYLnBocD91cmw9XFxcXFxcXCI7XFxcXHJcXFxcbiAgICBiZnVybCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT1BUEnnm5LlrZBcXFxcXFxcIikucGFyc2VMTFEocGFyc2UsIHZpcFVybCk7XFxcXHJcXFxcbiAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcXFxcXCIpLm11bFBhcnNlKHZpcFVybCwgYmZ1cmwsICdsbHEnKSArIFxcXFxcXFwiO3tVc2VyLUFnZW50QCYmUmVmZXJlckB9XFxcXFxcXCI7XFxcXHJcXFxcbiAgICAqL1xcXFxyXFxcXG59YCxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6ICfmupDnoIHnvJbovpEnLFxcXFxyXFxcXG4gICAgdXJsOiBcXFxcXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFxcXFxcIixcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6ICflr7zlh7rphY3nva4nLFxcXFxyXFxcXG4gICAgdXJsOiAnc2hhcmU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiAn5LqR5p2/5YiG5LqrJyxcXFxcclxcXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcclxcXFxuICAgICAgICBzZWNyZXRDb250ZW50ID0gYmFzZTY0RW5jb2RlKGJhc2U2NEVuY29kZShzZXRGaWxlKSk7XFxcXHJcXFxcbiAgICAgICAgY29weShcXFxcXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFxcXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6ICfkupHmnb/lr7zlhaUnLFxcXFxyXFxcXG4gICAgdXJsOiAkKCcnLCAn5aKe6YeP5a+85YWl77yM6K+35pS+5b+DJykuaW5wdXQoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIGlmIChpbnB1dC5tYXRjaCgv5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpS8pKSB7XFxcXHJcXFxcbiAgICAgICAgICAgIGxpbmsgPSBpbnB1dC5zcGxpdCgnwqXCpScpWzFdO1xcXFxyXFxcXG4gICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gcGFyc2VQYXN0ZShsaW5rKTtcXFxcclxcXFxuICAgICAgICAgICAgZXZhbCgncmVtb3RlU2V0RmlsZT0nICsgYmFzZTY0RGVjb2RlKGJhc2U2NERlY29kZShzZWNyZXRDb250ZW50KSkpO1xcXFxyXFxcXG4gICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpO1xcXFxyXFxcXG4gICAgICAgICAgICBuZXdBcnJheSA9IGNvbmZpZ0FycmF5LmNvbmNhdChyZW1vdGVTZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXHJcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5a+85YWl5oiQ5YqfXFxcXFxcXCJcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WPo+S7pOmUmeivr1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6IGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfphY3nva4nID8gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPXJlZD7phY3nva48L2ZvbnQ+JyA6ICfphY3nva4nLFxcXFxyXFxcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgcHV0TXlWYXIoJ21vZGUnLCAn6YWN572uJyk7XFxcXHJcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXHJcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgIH0pLFxcXFxyXFxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxyXFxcXG59LCB7XFxcXHJcXFxcbiAgICB0aXRsZTogZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+W3peWFtzwvZm9udD4nIDogJ+aJuemHj+W3peWFtycsXFxcXHJcXFxcbiAgICB1cmw6ICQoWyfliKDpmaQnLCAn5YiG5LqrJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHB1dE15VmFyKCdtb2RlJywgJ+aJuemHj+W3peWFtycpO1xcXFxyXFxcXG4gICAgICAgIGlmIChpbnB1dCA9PSAn5Yig6ZmkJykge1xcXFxyXFxcXG4gICAgICAgICAgICBwdXRNeVZhcigndHlwZScsICfmibnph4/liKDpmaQnKTtcXFxcclxcXFxuICAgICAgICAgICAgY2xlYXJNeVZhcignZGVsTnVtJyk7XFxcXHJcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbEFycmF5Jyk7XFxcXHJcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ3R5cGUnLCAn5om56YeP5YiG5LqrJyk7XFxcXHJcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ3NoYXJlTnVtJyk7XFxcXHJcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ3NoYXJlQXJyYXknKTtcXFxcclxcXFxuICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXHJcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcXFxyXFxcXG4gICAgICAgIH1cXFxcclxcXFxuICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxyXFxcXG4gICAgfSksXFxcXHJcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbn0sIHtcXFxcclxcXFxuICAgIHRpdGxlOiBnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXFxcclxcXFxuICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgIHB1dE15VmFyKCdtb2RlJywgJ+ino+aekOa1i+ivlScpO1xcXFxyXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSwge1xcXFxyXFxcXG4gICAgdGl0bGU6IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykgPT0gJ3RydWUnID8gJ+W8ueW5lTrlvIAnIDogJ+W8ueW5lTrlhbMnLFxcXFxyXFxcXG4gICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXFxcclxcXFxuICAgICAgICBpZiAoZG1Td2l0Y2ggPT0gJ3RydWUnKSB7XFxcXHJcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICdmYWxzZScpO1xcXFxyXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICd0cnVlJyk7XFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICB9KSxcXFxcclxcXFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxufSk7XFxcXHJcXFxcbnRyeSB7XFxcXHJcXFxcbiAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXHJcXFxcbiAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXHJcXFxcbiAgICBpZiAoZ2V0TXlWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXFxcclxcXFxuICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXHJcXFxcbiAgICAgICAgfSwge1xcXFxyXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+WOu+mHjemZpOeZvScsXFxcXHJcXFxcbiAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2xhc3RDbGVhbicsIGNvbmZpZ0FycmF5KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gW107XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBudW0gPSAwO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihjb25maWdBcnJheVtpXS51cmwsICcwJykgIT0gJzEnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSAn56m66Kej5p6QJyAmJiBjb25maWdBcnJheVtpXS51cmwgIT0gdW5kZWZpbmVkKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihjb25maWdBcnJheVtpXS51cmwsICcxJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtKys7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2xhc3RDbGVhbicsICdbXScpKS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoaXRlbS51cmwpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5pys5qyh5Y676YeN5pWw6YeP5Li6XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXCIgKyBudW07XFxcXHJcXFxcbiAgICAgICAgICAgIH0pLFxcXFxyXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXHJcXFxcbiAgICAgICAgfSwge1xcXFxyXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+WNoOS9jeespuWkhOeQhicsXFxcXHJcXFxcbiAgICAgICAgICAgIHVybDogJChbJ+a3u+WKoCcsICfljrvpmaQnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmt7vliqAnKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS51cmwubWF0Y2goL1xcXFxcXFxcP3VybD0vKSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udXJsID0gY29uZmlnQXJyYXlbaV0udXJsLnJlcGxhY2UoJz91cmw9JywgJz9wbGFjZWhvbGRlcj0mdXJsPScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnVybC5tYXRjaCgvXFxcXFxcXFw/cGxhY2Vob2xkZXI9JnVybD0vKSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udXJsID0gY29uZmlnQXJyYXlbaV0udXJsLnJlcGxhY2UoJz9wbGFjZWhvbGRlcj0mdXJsPScsICc/dXJsPScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lpITnkIbmiJDlip9cXFxcXFxcIjtcXFxcclxcXFxuICAgICAgICAgICAgfSksXFxcXHJcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXFxcclxcXFxuICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxcXHJcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpICsgJzwvc3Bhbj4tJyArIGNvbmZpZ0FycmF5W2ldLm5hbWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpLCBjb25maWdBcnJheSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn57yW6L6RJykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWdBcnJheVtpXS5uYW1lICsgJywnICsgY29uZmlnQXJyYXlbaV0udXJsO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChjb25maWcpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dC5zcGxpdCgvLHzvvIwvKVswXSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KC8sfO+8jC8pWzFdXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5zcGxpY2UoaSwgMSwgaXRlbSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/mm7TmlrDmiJDlip9cXFxcXFxcIlxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnp7vkvY0nKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcwJywgJ+S9oOaDs+aOkuesrOWHoO+8n+W6j+WPt+S7jjDlvIDlp4t+JykuaW5wdXQoKGksIGNvbmZpZ0FycmF5KSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPiBjb25maWdBcnJheS5sZW5ndGggLSAxKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBjb25maWdBcnJheS5sZW5ndGggLSAxO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA8IDApIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IDA7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gY29uZmlnQXJyYXlbaV07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IGlucHV0KSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpOyBpbmRleCA+IGlucHV0OyBpbmRleC0tKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2luZGV4XSA9IGNvbmZpZ0FycmF5W2luZGV4IC0gMV07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGk7IGluZGV4IDwgaW5wdXQ7IGluZGV4KyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggKyAxXTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheVtpbnB1dF0gPSB0ZW1wO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v56e75L2N5oiQ5YqfXFxcXFxcXCJcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSwgY29uZmlnQXJyYXkpXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkuc3BsaWNlKGksIDEpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfXFxcXFxcXCJcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9LCBpLCBjb25maWdBcnJheSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcclxcXFxuICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgfVxcXFxyXFxcXG4gICAgfSBlbHNlIGlmIChnZXRNeVZhcignbW9kZScsICfphY3nva4nKSA9PSAn5om56YeP5bel5YW3Jykge1xcXFxyXFxcXG4gICAgICAgIGlmIChnZXRNeVZhcigndHlwZScsICfmibnph4/liKDpmaQnKSA9PSAn5om56YeP5Yig6ZmkJykge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRNeVZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p2h6Kej5p6QJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZGVsTnVtJywgJzAnKSA9PSAnMCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIoOmZpOeahOino+aekO+8gSdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2RlbEFycmF5JykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBbXTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxBcnJheS5pbmNsdWRlcyhpKSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0FycmF5LnB1c2goY29uZmlnQXJyYXlbaV0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KG5ld0FycmF5KSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bT1nZXRNeVZhcignZGVsTnVtJywgJzAnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcignZGVsTnVtJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2RlbEFycmF5Jyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WFseWIoOmZpFxcXFxcXFwiK2RlbE51bSsn5p2h6Kej5p6QJztcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICB9KSxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZGVsQnRuJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcXFxyXFxcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJykgPT0gJ3llcycpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldE15VmFyKCdkZWxOdW0nLCAnMCcpKSAtIDE7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wb3AoaW5kZXgpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ2RlbEJ0bicsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIoOmZpFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGdldE15VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkgPSBKU09OLnBhcnNlKGdldE15VmFyKCdkZWxBcnJheScsICdbXScpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbE51bSA9IE51bWJlcihnZXRNeVZhcignZGVsTnVtJywgJzAnKSkgKyAxO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsQXJyYXkucHVzaChpbmRleCk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbEFycmF5JywgZGVsQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RlbE51bScsIGRlbE51bSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6cmVkXFxcXFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdkZWxCdG4nLCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRNeVZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p2h6Kej5p6QJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRNeVZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdzaGFyZU51bScsICcwJykgPT0gJzAnKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flhYjpgInmi6nopoHliIbkuqvnmoTop6PmnpDvvIEnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ3NoYXJlQXJyYXknKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVGaWxlID0gW107XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUFycmF5LmluY2x1ZGVzKGkpKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVGaWxlLnB1c2goY29uZmlnQXJyYXlbaV0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBiYXNlNjRFbmNvZGUoYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KHNoYXJlRmlsZSkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weShcXFxcXFxcIuWKqeaJi+ino+aekOWvvOWFpeWPo+S7pMKlwqVcXFxcXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdzaGFyZU51bScpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdzaGFyZUFycmF5Jyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIhuS6q+aIkOWKn1xcXFxcXFwiXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBpZDogJ3NoYXJlQnRuJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcXFxyXFxcXG4gICAgICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJykgPT0gJ3llcycpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRNeVZhcignc2hhcmVBcnJheScsICdbXScpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTnVtID0gTnVtYmVyKGdldE15VmFyKCdzaGFyZU51bScsICcwJykpIC0gMTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucG9wKGluZGV4KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzaGFyZUFycmF5Jywgc2hhcmVBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc2hhcmVOdW0nLCBzaGFyZU51bSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NoYXJlQnRuJywge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjpyZWRcXFxcXFxcIj4nICsgZ2V0TXlWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p2h6Kej5p6QJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5ID0gSlNPTi5wYXJzZShnZXRNeVZhcignc2hhcmVBcnJheScsICdbXScpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlTnVtID0gTnVtYmVyKGdldE15VmFyKCdzaGFyZU51bScsICcwJykpICsgMTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQXJyYXkucHVzaChpbmRleCk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBpbmRleCArICctJyArIGl0ZW0ubmFtZSArICc8L3NwYW4+JyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliIbkuqtcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOnJlZFxcXFxcXFwiPicgKyBnZXRNeVZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTmnaHop6PmnpAnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcXFxyXFxcXG4gICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICB9XFxcXHJcXFxcbiAgICB9IGVsc2UgaWYgKGdldE15VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfop6PmnpDmtYvor5UnKSB7XFxcXHJcXFxcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcXFxyXFxcXG4gICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICBqaWV4aSA9IGl0ZW0udXJsO1xcXFxyXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFxcXFxcIiM2RUI4OTdcXFxcXFxcIj48c21hbGw+4p6u5YmN5b6A5rWL6K+VPC9zbWFsbD48L2ZvbnQ+JyxcXFxcclxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkucnVsZSgoamlleGkpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn57yW6L6R5rWL6K+V6ZO+5o6lJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJyksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5YWzJykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdkbVN3aXRjaCcsICflvIAnKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2RtU3dpdGNoJywgJ+WFsycpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZG1Td2l0Y2gnLCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZU6JyArIGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZG1Td2l0Y2gnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iFvuiur+inhumikSc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzMvMTA2XzNhMGQyMTJlMTdjYjk1ZTIzMmZmZTE1NTQ2MDM4NWNiX2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyL216YzAwMjAwcm1wYWY0MC9uMDAzNmw0dG50Yy5odG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkvJjphbcnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNi85LzExMF84ZmYwNmUwYzIzNzc2MGNkNTdkMjUwOGZkOThjODQxNF9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi55b3VrdS5jb20vdl9zaG93L2lkX1hORGMwTURFMU5UazFNZz09Lmh0bWwnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eIseWlh+iJuic6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzA5LzgvMTEwXzkwMWYyZWYzN2FmMmZlYTI1ZTVkOTY0OGY1NTFjZTMxX2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5pcWl5aS5jb20vdl8yZ2E4enRzODZ5cy5odG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfoipLmnpxUVic6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzYvMTEwXzE4MzRkMjk2YWE1YjU2NjZhN2Q5NGIxZTM0NzlhZTY0X2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5tZ3R2LmNvbS9iLzM0OTI1My8xMDQyNDMwMC5odG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflk5Tlk6nlk5Tlk6knOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yNy80LzExMF84ZTJlM2Q4OGM0NTAyNWIzODBlNjk4MTdkNmZiNTNiMV9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwNDI4OTkzJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfmkJzni5Dop4bpopEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS85LzExMF81MzJhNTFmODQzMWVmYzM3NzgwOGMxZmZmZjJkYTM2Zl9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS50di5zb2h1LmNvbS92NzMyOTQ0MS5zaHRtbCcsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+ilv+eTnOinhumikSc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzUvMTEwX2E4NjI2NTg4MmVkMThjNjE5MDU2NmU5ZWEyNWY5Njk4X2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cuaXhpZ3VhLmNvbS82Njk5MzU2NzkyOTA1Nzk0MDU1J1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkuZDop4YnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xNS84LzJfMzViNWQ0MzczZjRiY2JhMjhmMzk0ODZlNGYxMTY0ZDlfY29uXzEzMHgxMzAucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20ubGUuY29tL3ZwbGF5Xzc2OTU0MzMzLmh0bWw/ZnJvbT1hamF4JyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTkwNSc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE4LzQvMTEwXzVmMjRiMTA1MmZlZDRmN2ZjNzM1OTNhOGVmMjcyNzZkX2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92aXAuMTkwNS5jb20vbS9wbGF5LzE0Mjk3MjUuc2h0bWwnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+mjjuihjOinhumikSc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzQvMTEwXzZmNmFmOWY5OWIyNjI5ZTUxZjBiMGEzM2NkZmYxZDllX2Nvbl8xMzB4MTMwLnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL20uZnVuLnR2L21wbGF5Lz9taWQ9OTU3MTknXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BQVFbop4bpopEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8yOC81LzExMF9hNDU1YjI5NTEyMjcwNDBlZTYyOTU1ZWRjZmI4OWQ3Ml9jb25fMTMweDEzMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vdi5wcHR2LmNvbS9zaG93L3pWbjNkSlh0MXhWNDlsNC5odG1sJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpvpnohb4nOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzQucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdMVC0xZWMzZjY3NTRmNjg1ODZlZDdmOTJjM2U5OTVjZmNhNidcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5Lq65Lq66L+3Jzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS82LnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAncmVucmVubWktYWI5MjRlMTFkMmQ2OTM5NydcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LqU5q+SJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS8zMC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3d1ZHV5dW4tMTY0OTQzMTMwNzAyMSdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5aSa5aSaJzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80OS5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbTN1OC5jYWNoZS5zdW95by5jYy9tM3U4LzIwMjIwMy84L2FhYWJkOTJkYTI2Nzc0YzY4ODUwYTAyMzE1M2M4MGYxYWU2ZmE5YmUubTN1OCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6J6N5YW0Jzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS84MC5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ1JvbmdYaW5nVlItNDIxNTY0NTU4MTkzMidcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6Zuq5Lq6Jzoge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzEzMy5wbmcnLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3h1ZXJlbi0xNjQ2ODIzMDcyJ1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfml4vpo47kupEnOiB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzU0LnBuZycsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneGZ5LTUyOWU2NDU3OTUzZDU0NWYnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+eRnuS4sOi1hOa6kCc6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNzIucG5nJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovLzEucnVpZmVuZ2xiLmNvbS9wbGF5LzE2NDQ5MTQ1OTUubTN1OCdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLCBKU09OLnN0cmluZ2lmeShjZXNoaURhdGEpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBjZXNoaURhdGEpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBjZXNoaURhdGFbcHJvcF0ucGljICsgJ0BSZWZlcmVyPScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGNlc2hpRGF0YVtwcm9wXS51cmw7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IFtcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBqaWV4aSArIHZpcFVybF07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvRG0uanM/cnVsZT1kbeebkuWtkFxcXFxcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidmlkZW86Ly9cXFxcXFxcIiArIGppZXhpICsgdmlwVXJsO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlc2hpRGF0YSwgcHJvcCwgamlleGkpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+a1i+ivlScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfkvaDov5jlj6/ku6Xku7vmhI/ovpPlhaXkuIDkuKrop4bpopHlnLDlnYDmtYvor5XlvZPliY3op6PmnpB+JyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChqaWV4aSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlwVXJsID0gZ2V0TXlWYXIoJ2Nlc2hpTGluaycpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IFtcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBqaWV4aSArIHZpcFVybF07XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFsn5rWL6K+VJ11cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvRG0uanM/cnVsZT1kbeebkuWtkFxcXFxcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInZpZGVvOi8vXFxcXFxcXCIgKyBqaWV4aSArIHZpcFVybDtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgamlleGkpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ2Nlc2hpTGluaycsaW5wdXQpXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk6K+l6Kej5p6QJyxcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+iupOecn+iAg+iZkX4nLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChqaWV4aSkgPT4ge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldLnVybCA9PSB2YWwpIHJldHVybiBpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnJlbW92ZShqaWV4aSk7IFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWFs+mXremhtemdouW5tuWIt+aWsOWJjeS4gOS4qumhtemdolxcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfflxcXFxcXFwiO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBqaWV4aSksXFxcXHJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcclxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcXFxyXFxcXG4gICAgICAgICAgICAgICAgfSwgamlleGkpLFxcXFxyXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXHJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59IGNhdGNoIChlKSB7XFxcXHJcXFxcbiAgICBkLnB1c2goe1xcXFxyXFxcXG4gICAgICAgIHRpdGxlOiAn6YWN572u5paH5Lu25oiW5bey5o2f5Z2PficsXFxcXHJcXFxcbiAgICAgICAgZGVzYzogJ+eCueWHu+WJjeWOu+ajgOafpSzoh6rooYznvJbovpHmlofku7bkv67lpI0nLFxcXFxyXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJlZGl0RmlsZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uXFxcXFxcXCIsXFxcXHJcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxyXFxcXG4gICAgfSwge1xcXFxyXFxcXG4gICAgICAgIHRpdGxlOiAn5LiA6ZSu6YeN55SfficsXFxcXHJcXFxcbiAgICAgICAgZGVzYzogJ+WbnuW9kuWOn+WIneeKtuaAge+8jOWwhua4heepuuino+aekOmFjee9riEhIScsXFxcXHJcXFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXFxcclxcXFxuICAgICAgICAgICAgY29uZmlnQXJyYXkgPSBbXTtcXFxcclxcXFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXFxcclxcXFxuICAgICAgICB9KSxcXFxcclxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxufVxcXFxyXFxcXG5zZXRSZXN1bHQoZCk7XFxcXHJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuiwg+eUqOi3r+eUsVxcXCIsXFxcInBhdGhcXFwiOlxcXCJtdWxQYXJzZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIvKlxcXFxyXFxcXG4gdmlwVXJsOuWumOe9keWcsOWdgDvov5Tlm57lgLxKU09O5qC85byP55qE5aSa57q/6Lev6KeG6aKR5Zyw5Z2AXFxcXHJcXFxcbuiwg+eUqOaOpeWPo++8miQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXFxcXFwiKS5tdWxQYXJzZSh2aXBVcmwpO1xcXFxyXFxcXG4gKi9cXFxcclxcXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCxiZkxpbmssamlleGlOYW1lKSB7XFxcXHJcXFxcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxcXHJcXFxcbiAgICAgICAgdmlwVXJsPXZpcFVybC5zcGxpdCgnP3B0YWc9JylbMF1cXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGxvZygn6KeG6aKR5Y6f5Zyw5Z2A77yaJyt2aXBVcmwpO1xcXFxyXFxcXG4gICAgaWYgKGJmTGluayYmamlleGlOYW1lKSB7XFxcXHJcXFxcbiAgICAgICAgdmFyIHVybHMgPSBiZkxpbms7XFxcXHJcXFxcbiAgICAgICAgdmFyIG5hbWVzID0gamlleGlOYW1lO1xcXFxyXFxcXG4gICAgfWVsc2V7XFxcXHJcXFxcbiAgICAgICAgdmFyIHVybHMgPSBbXTtcXFxcclxcXFxuICAgICAgICB2YXIgbmFtZXMgPSBbXTtcXFxcclxcXFxuICAgIH1cXFxcclxcXFxuICAgIGxvZyhcXFxcXFxcIuWkmue6v+i3r+ino+aekOW8gOWni1xcXFxcXFwiKVxcXFxyXFxcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFxcXFxcIikpXFxcXHJcXFxcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXHJcXFxcbiAgICAgICAgdXJscy5wdXNoKFxcXFxcXFwidmlkZW86Ly9cXFxcXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXFxcclxcXFxuICAgICAgICBuYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XFxcXHJcXFxcbiAgICB9KTtcXFxcclxcXFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcXFxyXFxcXG4gICAgdmFyIGRtU3dpdGNoID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnKTtcXFxcclxcXFxuICAgIGlmIChkbVN3aXRjaCA9PSAndHJ1ZScpIHtcXFxcclxcXFxuICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvRG0uanM/cnVsZT1kbeebkuWtkFxcXFxcXFwiKS5nZXRGb3IodmlwVXJsLCB1cmxzLCBuYW1lcyk7XFxcXHJcXFxcbiAgICB9IGVsc2Uge1xcXFxyXFxcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXHJcXFxcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxcXHJcXFxcbiAgICAgICAgICAgIG5hbWVzOiBuYW1lc1xcXFxyXFxcXG4gICAgICAgIH0pO1xcXFxyXFxcXG4gICAgfVxcXFxyXFxcXG59XFxcXHJcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaWreaPkuaPkuS7tlxcXCIsXFxcInBhdGhcXFwiOlxcXCJkdWFuXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXFxcclxcXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvbXVsUGFyc2U/cnVsZT3phY3nva7liqnmiYtcXFxcXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXFxcclxcXFxufVxcXFxyXFxcXG5cXFwifV1cIn0iLCJ0aXRsZSI6IuivtOaYjiJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement