Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@新片场@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5paw54mH5Zy6IiwiYXV0aG9yIjoi6aG6IiwidXJsIjoiaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS9jaGFubmVsL2luZGV4L2lkLWZ5QWxsL3BhZ2UtZnlwYWdlIiwidmVyc2lvbiI6MjAyMjA0MTgsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCdwYWdlLScpWzFdO1xudmFyIGQgPSBbXTtcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobVKU09OXCIpKS5ydWxlKVxuaWYgKFBBR0UgPT0gMSkge1xuXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uv6aaW6aG15Zu65a6aSlNPTlwiKSkucnVsZSlcblx0ZC5wdXNoKHtcblx0XHRjb2xfdHlwZTogJ2ljb25fMV9zZWFyY2gnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL+i/m+WFpeaQnOe0oumhtVwiKSkucnVsZSksXG5cdFx0dGl0bGU6ICfor7fovpPlhaXkvZzlk4HlkI3jgIHliJvkvZzkuronLFxuXHRcdGV4dHJhOiB7XG5cdFx0XHRuZXdXaW5kb3c6IHRydWUsXG5cdFx0XHR3aW5kb3dJZDogXCLmlrDniYflnLrmkJzntKJcIlxuXHRcdH1cblx0fSlcblx0ZC5wdXNoKHtcblx0XHQvL3RpdGxlOmJhbm5lcnMudGl0bGUsXG5cdFx0aW1nOiBiYW5uZXJzLmNvdmVyLFxuXHRcdGNvbF90eXBlOiAnY2FyZF9waWNfMScsXG5cdFx0ZGVzYzogJzAnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2FwcOaSreaUvumTvuaOpVwiKSkucnVsZSksXG5cdH0pXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXlm5vlpKfmjInpkq5cIikpLnJ1bGUpXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXliJfooahcIikpLnJ1bGUpXG59XG5zZXRSZXN1bHQoZCk7Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoiMSIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi8J+UoummlumhteWIl+ihqFwiLFwicGF0aFwiOlwi6aaW6aG15YiX6KGoXCIsXCJydWxlXCI6XCJpZiAodGlwc190aXRsZSA9PSAn5YiG57G7JyB8fCB0aXBzX3RpdGxlID09ICfkvZzlk4EnKSB7XFxuICAgIGZvciAobGV0IGkgaW4gWFBDKSB7XFxuICAgICAgICB2YXIgdm0gPSBYUENbaV07XFxuLy/ljZXkuKrop4bpopF3ZWLpk77mjqVcXG5cXHQgIHZhciB3ZWJfbGlua3MgPSB2bS53ZWJfdXJsO1xcbiAgICAgICAgdmFyIGFwcF9saW5rcyA9IHZtLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuICAgICAgICB2YXIgSUQgPSBhcHBfbGlua3Muc3BsaXQoJ2lkPScpWzFdXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS5jYXRlZ29yeV9uYW1lLFxcbiAgICAgICAgICAgIHBpY191cmw6IHZtLmNvdmVyLCAgICAgICB1cmw6ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvd2ViX+WPkeeOsOS6jOe6p+WIhuexu1xcXCIpKS5ydWxlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzInLFxcbiAgICAgICAgICAgIGRlc2M6ICcwJyxcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuaWYgKHRpcHNfdGl0bGUgIT0gJ+S9nOWTgScgJiYgdGlwc190aXRsZSAhPSAn5YiG57G7Jykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJyxcXG4gICAgfSlcXG4gZm9yIChsZXQgaSBpbiB2bWpzb24pIHtcXG4gICAgICAgIHZhciB2bSA9IHZtanNvbltpXS5kYXRhLnJlc291cmNlO1xcbiAgICAgICAgdmFyIFBMQVlfTElOS1MgPSB2bS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcbnZhciBVU0VSX0hPTUU9ICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3VzZXIvJyt2bS51c2VyX2lkO1xcbmlmICh0aXBzX3RpdGxlICE9ICflnLrlupPmjqjojZAnICl7XFxudmFyIHVybCA9ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq66aaW6aG1XFxcIikpLnJ1bGUpXFxufWVsc2V7dmFyIHVybCA9XFxcImhpa2VyOi8vZW1wdHlcXFwifVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0uYXV0aG9yLnVzZXJpbmZvLnVzZXJuYW1lLFxcbiAgICAgICAgICAgIHBpY191cmw6IHZtLmF1dGhvci51c2VyaW5mby5hdmF0YXIsXFxuICAgICAgICAgICAgdXJsOnVybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0udGl0bGUsXFxuICAgICAgICAgICAgdXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLnRpdGxlLFxcbiAgICAgICAgICAgIHBpY191cmw6IHZtLmNvdmVyLFxcbiAgICAgICAgICAgIHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBw5pKt5pS+6ZO+5o6lXFxcIikpLnJ1bGUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0uY291bnQuY291bnRfY29sbGVjdCxcXG4gICAgICAgICAgICBwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz5pS26JePLnN2ZycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzMnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLmNvdW50LmNvdW50X2NvbW1lbnQsXFxuICAgICAgICAgICAgcGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+WbnuWkjS5zdmcnLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChQTEFZX0xJTktTKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+ivpue7huexu+WIqycsICfor4TorronKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpO1xcblxcdFxcdFxcdFxcdFxcdH0sUExBWV9MSU5LUyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzMnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLmNvdW50LmNvdW50X2xpa2UsXFxuICAgICAgICAgICAgcGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+eCuei1ni5zdmcnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF8zJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaycsXFxuICAgICAgICB9KVxcbiAgICBcXHR9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiYXBw5YiG57G75LiO5pCc57Si5YiX6KGoXCIsXCJwYXRoXCI6XCJhcHDliIbnsbvkuI7mkJzntKLliJfooahcIixcInJ1bGVcIjpcInZhciBBUFBfVVJMID0gXFxcImh0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vdjIvc2VhcmNoP3R5cGU9XFxcIiArIHRpcHNfc2VsZWN0ICsgXFxcIiZrdz1cXFwiICsgdGlwc190aXRsZSArJyZwYWdlPScgKyBQQUdFO1xcbnZhciBhcHBfbGlzdHMgPSBKU09OLnBhcnNlKHJlcXVlc3QoQVBQX1VSTCkpLmRhdGEubGlzdDtcXG5pZiAoYXBwX2xpc3RzLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdGZvciAobGV0IGkgaW4gYXBwX2xpc3RzKSB7XFxuXFx0XFx0dmFyIFBMQVlfTElOS1MgPSBhcHBfbGlzdHNbaV0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHRcXHR2YXIgbGlrZSA9IGFwcF9saXN0c1tpXS5jb3VudC5jb3VudF9saWtlO1xcblxcdFxcdHZhciB2aWV3ID0gYXBwX2xpc3RzW2ldLmNvdW50LmNvdW50X3ZpZXc7XFxuXFx0XFx0aWYgKGxpa2UgPiAxMDAwKSBsaWtlID0gKGxpa2UgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdFxcdGlmICh2aWV3ID4gMTAwMDApIHZpZXcgPSAodmlldyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0cGljX3VybDogYXBwX2xpc3RzW2ldLmNvdmVyLFxcblxcdFxcdFxcdHRpdGxlOiBhcHBfbGlzdHNbaV0udGl0bGUsXFxuXFx0XFx0XFx0ZGVzYzogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn5pKt5pS+6YePICcgKyB2aWV3ICsgJyDCtyAnICsgJ+WWnOasoiAnICsgbGlrZSArICdcXFxcbicgKyBhcHBfbGlzdHNbaV1cXG5cXHRcXHRcXHRcXHQuYXV0aG9yLnVzZXJpbmZvLnVzZXJuYW1lICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0fSlcXG5cXHR9XFxufSBlbHNlIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKLpobXkuIrpg6hcIixcInBhdGhcIjpcIuaQnOe0oumhteS4iumDqFwiLFwicnVsZVwiOlwiaWYgKFBBR0UgPT0gMSkge1xcblxcdGQucHVzaCh7XFxuXFx0XFx0dXJsOiBcXFwicHV0TXlWYXIoJ+aQnOWFs+mUruWtlycsaW5wdXQpO3ZhciB0aXBzX3RpdGxlID0gZ2V0TXlWYXIoJ+aQnOWFs+mUruWtlycpO3ZhciBsb2NhbERhdGEgPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL2NhY2hlL+aWsOeJh+WcuuWOhuWPsuaQnOe0oi5qc29uJyk7aWYgKCFsb2NhbERhdGEpIGxvY2FsRGF0YSA9J1tdJzt2YXIgbGlzaGk9SlNPTi5wYXJzZShsb2NhbERhdGEpO2xldCBjY2MgPSBsaXNoaS5pbmRleE9mKGlucHV0KTtpZihjY2MgPi0xKXtsaXNoaS5zcGxpY2UoY2NjLDEpfTtsaXNoaS5wdXNoKHRpcHNfdGl0bGUpO2xpc2hpPWxpc2hpLnNsaWNlKC0yOCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL+aWsOeJh+WcuuWOhuWPsuaQnOe0oi5qc29uJywgSlNPTi5zdHJpbmdpZnkobGlzaGkpKTtyZWZyZXNoUGFnZShmYWxzZSlcXFwiLFxcblxcdFxcdGRlc2M6ICfor7fovpPlhaXkvZzlk4HlkI3jgIHliJvkvZzkuronLFxcblxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0ZGVmYXVsdFZhbHVlOiB0aXBzX3RpdGxlLFxcblxcdFxcdH0sXFxuXFx0XFx0Y29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuXFx0fSk7XFxuXFx0ZC5wdXNoKHtcXG5cXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdH0pXFxuXFxuXFx0aWYgKCF0aXBzX3RpdGxlKSB7XFxuXFx0XFx0aWYgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvY2FjaGUv5paw54mH5Zy65Y6G5Y+y5pCc57SiLmpzb24nKSkge1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgJ/Cfl5HvuI8g5Y6G5Y+y5pCc57SiJyArICc8L2ZvbnQ+PC9iPicsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS/mlrDniYflnLrljoblj7LmkJzntKIuanNvbicsICcnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZShmYWxzZSk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0dmFyIGxvY2FsRGF0YSA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvY2FjaGUv5paw54mH5Zy65Y6G5Y+y5pCc57SiLmpzb24nKTtcXG5cXHRcXHRcXHRpZiAoIWxvY2FsRGF0YSkgbG9jYWxEYXRhID0gXFxcIltdXFxcIjtcXG5cXHRcXHRcXHR2YXIgbGlzaGkgPSBKU09OLnBhcnNlKGxvY2FsRGF0YSkuc2xpY2UoLTI4KTtcXG5cXHRcXHRcXHR2YXIgSGlzdG9yeSA9IFxcXCJcXFwiO1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSBsaXNoaS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xcblxcdFxcdFxcdFxcdHZhciBjY2xpc2hpID0gbGlzaGlbaV07XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHR0aXRsZTogY2NsaXNoaSxcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG5cXHRcXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgoY2NsaXNoaSkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfmkJzlhbPplK7lrZcnLCBjY2xpc2hpKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0XFx0fSwgY2NsaXNoaSksXFxuXFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHR9XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArICfwn5SlIOeDremXqOaQnOe0oicgKyAnPC9mb250PjwvYj4nLFxcblxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG5cXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9KTtcXG5cXHRcXHR2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vc2VhcmNoX3JlY29tbWVuZF9rd3MnO1xcblxcdFxcdHZhciBIb3Rqc29uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKS5kYXRhLmxpc3Q7XFxuXFx0XFx0Zm9yIChsZXQgaSBpbiBIb3Rqc29uKSB7XFxuXFx0XFx0XFx0dmFyIHRpcHMgPSBIb3Rqc29uW2ldLm5hbWU7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogdGlwcyxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG5cXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgodGlwcykgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfmkJzlhbPplK7lrZcnLCB0aXBzKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSwgdGlwcyksXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0fVxcblxcdH1cXG5cXG5cXHRjb25zdCBzZWFyY2hfc2h1bGlhbmcgPSAnaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS9zZWFyY2g/a3c9JyArIHRpcHNfdGl0bGU7XFxuXFx0dmFyIHNlYXJjaF9OVU1CRVIgPSBwZGZhKHJlcXVlc3Qoc2VhcmNoX3NodWxpYW5nLHtoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjApJ319KSwgXFxcIi5ib3JkZXItYiYmLml0ZW1zLWNlbnRlciYmYVxcXCIpXFxudmFyIHNlYXJjaF90aXBzXzAgPSBwZGZoKHNlYXJjaF9OVU1CRVJbMF0sICcudHJhbnNpdGlvbiYmVGV4dCcpO1xcbnZhciBzZWFyY2hfdGlwc18xID0gcGRmaChzZWFyY2hfTlVNQkVSWzFdLCAnLnRyYW5zaXRpb24mJlRleHQnKTtcXG5cXHR2YXIgc2VhcmNoX3RpcHNfMiA9IHBkZmgoc2VhcmNoX05VTUJFUls1XSwgJy50cmFuc2l0aW9uJiZUZXh0Jyk7XFxuLypcXG5cXHR2YXIgc2VhcmNoX3RpcHNfMCA9IHBkZmgoc2VhcmNoX05VTUJFUlswXSwgJy50cmFuc2l0aW9uJiZUZXh0JykubWF0Y2goLyhcXFxcdyspfChcXFxcKykvZykuam9pbihcXFwiXFxcIilcXG5cXHR2YXIgc2VhcmNoX3RpcHNfMSA9IHBkZmgoc2VhcmNoX05VTUJFUlsxXSwgJy50cmFuc2l0aW9uJiZUZXh0JykubWF0Y2goLyhcXFxcdyspfChcXFxcKykvZykuam9pbihcXFwiXFxcIilcXG5cXHR2YXIgc2VhcmNoX3RpcHNfMiA9IHBkZmgoc2VhcmNoX05VTUJFUlsyXSwgJy50cmFuc2l0aW9uJiZUZXh0JykubWF0Y2goLyhcXFxcdyspfChcXFxcKykvZykuam9pbihcXFwiXFxcIilcXG4qL1xcblxcdHB1dE15VmFyKCfmlbDph4/igJTkvZzlk4EnLCBzZWFyY2hfdGlwc18wKVxcblxcdHB1dE15VmFyKCfmlbDph4/igJTliJvkvZzkuronLCBzZWFyY2hfdGlwc18xKVxcblxcdHB1dE15VmFyKCfmlbDph4/igJTmlofnq6AnLCBzZWFyY2hfdGlwc18yKVxcblxcblxcdHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG5cXHRmdW5jdGlvbiBnZXRIZWFkKHRpdGxlcykge1xcblxcdFxcdHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlcyArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxuXFx0fVxcblxcdGlmICh0aXBzX3RpdGxlKSB7XFxuXFx0XFx0dmFyIHRpcHNfMCA9IGdldE15VmFyKFxcXCLmlbDph4/igJTkvZzlk4FcXFwiKVxcblxcdFxcdHZhciB0aXBzXzEgPSBnZXRNeVZhcihcXFwi5pWw6YeP4oCU5Yib5L2c5Lq6XFxcIilcXG5cXHRcXHR2YXIgdGlwc18yID0gZ2V0TXlWYXIoXFxcIuaVsOmHj+KAlOaWh+eroFxcXCIpXFxuXFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHR9XFxuXFx0XFx0dmFyIOS9nOWTgT0gdGlwc18wO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Ly8gdGl0bGU6ICcnKyfigJjigJgnKyB0aXBzXzArICfigJnigJknLFxcblxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAnYXJ0aWNsZScgPyBnZXRIZWFkKHRpdGxlcyA95L2c5ZOBKSA6IOS9nOWTgSxcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMycsXFxuXFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRwdXRNeVZhcign5L2cL+WImy/mlocnLCAnYXJ0aWNsZScpO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHR9KSxcXG5cXHRcXHR9KVxcblxcdFxcdHZhciDliJvkvZzkuro9IHRpcHNfMTtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdC8vIHRpdGxlOiBcXFwi5Yib5L2c5Lq6IFxcXCIrJ+KAmOKAmCcrIHRpcHNfMSsgJ+KAmeKAmScsXFxuXFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICdjcmVhdG9yJyA/IGdldEhlYWQodGl0bGVzID3liJvkvZzkuropIDog5Yib5L2c5Lq6LFxcblxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8zJyxcXG5cXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdHB1dE15VmFyKCfkvZwv5YibL+aWhycsICdjcmVhdG9yJyk7XFxuXFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdH0pLFxcblxcdFxcdH0pXFxuXFx0XFx0dmFyIOaWh+eroD0gIHRpcHNfMiA7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHQvLyB0aXRsZTogXFxcIuaWh+eroCBcXFwiKyfigJjigJgnKyB0aXBzXzIrICfigJnigJknLFxcblxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAn5paH56ugJyA/IGdldEhlYWQodGl0bGVzID3mlofnq6ApIDog5paH56ugLFxcblxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8zJyxcXG5cXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdHB1dE15VmFyKCfkvZwv5YibL+aWhycsICfmlofnq6AnKTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0fSksXFxuXFx0XFx0fSlcXG5cXHR9XFxuXFx0Y2xlYXJNeVZhcign5pWw6YeP4oCU5L2c5ZOBJyk7XFxuXFx0Y2xlYXJNeVZhcign5pWw6YeP4oCU5Yib5L2c5Lq6Jyk7XFxuXFx0Y2xlYXJNeVZhcign5pWw6YeP4oCU5paH56ugJyk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG15Zub5aSn5oyJ6ZKuXCIsXCJwYXRoXCI6XCLpppbpobXlm5vlpKfmjInpkq5cIixcInJ1bGVcIjpcImQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuWPkeeOsFxcXCIsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9vc3MteHBjMC54cGNjZG4uY29tL1VwbG9hZC9lZHUvMjAxOS8wMS8xNDVjM2MzODJmMWE4MmQucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3BhZ2UvZGlzY292ZXJ5XFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvpk77mjqUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+agh+mimCcsICfliIbnsbsnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9KSxcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi57K+6YCJXFxcIixcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL29zcy14cGMwLnhwY2Nkbi5jb20vVXBsb2FkL2VkdS8yMDE5LzAxLzE0NWMzYzM4NzFiZDcwOC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vaG9tZS9zZWxlY3Rpb25cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+mTvuaOpScsIGlucHV0KTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li75qCH6aKYJywgJ+S7iuaXpeeyvumAiScpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICflnLrlupMnLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vb3NzLXhwYzAueHBjY2RuLmNvbS9VcGxvYWQvZWR1LzIwMTkvMDIvMDE1YzUzYzAzY2I2NjA1LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9ob21lL3Ztb3ZpZXJcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+mTvuaOpScsIGlucHV0KTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li75qCH6aKYJywgJ+WcuuW6k+aOqOiNkCcpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfng63pl6gnLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vb3NzLXhwYzAueHBjY2RuLmNvbS9VcGxvYWQvZWR1LzIwMTkvMDgvMDU1ZDQ3ZTI1MTFkMWQ4LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9ob21lL2hvdD9wYWdlPVxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li76ZO+5o6lJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvmoIfpopgnLCAn54Ot6ZeoJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSksXFxuICAgIH0pXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArIHRpcHNfdGl0bGUgKyAnPC9mb250PjwvYj4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIvCflI7ov5vlhaXmkJzntKLpobVcIixcInBhdGhcIjpcIui/m+WFpeaQnOe0oumhtVwiLFwicnVsZVwiOlwiJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjZnVsbFRoZW1lI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4ge1xcblxcdHNldFBhZ2VUaXRsZSgn5paw54mH5Zy6wrfmkJzntKInKVxcblxcdHZhciBkID0gW107XFxuXFx0dmFyIFBBR0UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5cXHRmb3IgKGxldCBpID0gMDsgaSA8IDMwOyBpKyspIHtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0fSlcXG5cXHR9XFxuXFx0YWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXHRcXHRjbGVhck15VmFyKCfmkJzlhbPplK7lrZcnKTtcXG5cXHRcXHRjbGVhck15VmFyKCfkvZwv5YibL+aWhycpO1xcblxcdH0pKVxcblxcdHZhciB0aXBzX3RpdGxlID0gZ2V0TXlWYXIoXFxcIuaQnOWFs+mUruWtl1xcXCIpXFxuXFx0dmFyIHRpcHNfc2VsZWN0ID0gZ2V0TXlWYXIoXFxcIuS9nC/liJsv5paHXFxcIiwgJ2FydGljbGUnKTtcXG5cXHQvL2xvZyh0aXBzX3NlbGVjdClcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/mkJzntKLpobXkuIrpg6hcXFwiKSkucnVsZSlcXG5cXHRpZiAodGlwc190aXRsZSkge1xcblxcdFxcdGlmICh0aXBzX3NlbGVjdCA9PSAnYXJ0aWNsZScpIHtcXG5cXHRcXHQgIC8v5pCc5L2c5ZOBXFxuXFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBw5YiG57G75LiO5pCc57Si5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fSBlbHNlIGlmICh0aXBzX3NlbGVjdCA9PSAnY3JlYXRvcicpIHtcXG5cXHRcXHRcXHQvL+aQnOS6ulxcblxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwcOWIm+S9nOS6uuaQnOe0ouWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH0gZWxzZSBpZiAodGlwc19zZWxlY3QgPT0gJ+aWh+eroCcpIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS93ZWJf5paH56ug5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fVxcblxcdH1cXG5cXHRzZXRSZXN1bHQoZClcXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi4pmo77iP6aaW6aG1SlNPTlwiLFwicGF0aFwiOlwi6aaW6aG1SlNPTlwiLFwicnVsZVwiOlwidmFyIHRpcHNfdGl0bGUgPSBnZXRNeVZhcihcXFwi5Li75qCH6aKYXFxcIiwgJ+S9nOWTgScpXFxudmFyIHRpcHNfdXJsID0gZ2V0TXlWYXIoXFxcIuS4u+mTvuaOpVxcXCIpO1xcbmlmICh0aXBzX3RpdGxlICE9ICfkvZzlk4EnICYmIHRpcHNfdGl0bGUgIT0gJ+WIhuexuycpIHtcXG5cXHR2YXIgYXBwdXJsID0gdGlwc191cmw7XFxuXFx0aWYgKHRpcHNfdGl0bGUgPT0gJ+WcuuW6k+aOqOiNkCcpIHtcXG5cXHRcXHR2YXIgdCA9IDBcXG5cXHR9IGVsc2UgaWYodGlwc190aXRsZSA9PSAn54Ot6ZeoJykge1xcblxcdFxcdHZhciB0ID0gMlxcblxcdH0gZWxzZSB7XFxuXFx0XFx0dmFyIHQgPSAxXFxuXFx0fVxcblxcdHZhciB2bWpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBwdXJsLCB7aGVhZGVyczogeydVc2VyLUFnZW50JzpcXFwiVXNlci1BZ2VudE5ld1N0dWRpb3MvMS45LjEgKGNvbS54aW5waWFuY2hhbmcubmV3c3R1ZGlvczsgYnVpbGQ6Nzg2OyBBbmRyb2lkIDExXFxcIn0sbWV0aG9kOiAnR0VUJ30pKS5kYXRhLmxpc3Quc2xpY2UodCk7XFxuLy9sb2codm1qc29uKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ3ZWJf5Y+R546w5LqM57qn5YiG57G7XCIsXCJwYXRoXCI6XCJ3ZWJf5Y+R546w5LqM57qn5YiG57G7XCIsXCJydWxlXCI6XCIkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNub0hpc3RvcnkjJykucnVsZSgod2ViX2xpbmtzKSA9PiB7XFxuXFx0dmFyIGQgPSBbXTtcXG5cXHR2YXIgUEFHRSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcblxcdC8vIOW9k+WJjSB1cmxcXG5cXHRjb25zdCBVUkxfUFJFRklYID0gd2ViX2xpbmtzO1xcblxcdGNvbnN0IENVUlJFTlRfVVJMID0gZ2V0VmFyKCdjdXJyZW50X3VybCcsIFVSTF9QUkVGSVgpXFxuXFx0Ly8g6L+b5YWl5LqM57qn5riF56m66YeN572u5LiA5qyhXFxuXFx0YWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXHRcXHRjbGVhclZhcignY2F0ZV8yJyk7XFxuXFx0XFx0Y2xlYXJWYXIoJ2N1cnJlbnRfdXJsJylcXG5cXHR9KSlcXG5cXHRjb25zdCBDQVRFX0xFVkVMXzIgPSBnZXRWYXIoXFxcImNhdGVfMlxcXCIsIFxcXCIwXFxcIilcXG5cXHQvLyDojrflj5bpobXpnaLlhoXlrrlcXG5cXHRsZXQgaHRtbCA9IHJlcXVlc3QoVVJMX1BSRUZJWCwge2hlYWRlcnM6IHsgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMCknfX0pXFxuXFx0Ly8g56ys5LiA6aG154us5Y2gXFxuXFx0aWYgKFBBR0UgPT0gMSkge1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHR9KVxcblxcdFxcdC8vIOWPluS6jOe6p+agh+etvlxcblxcdFxcdGxldCBjYXRlZ29yaWVfbGV2ZWxfMiA9IHBkZmEoaHRtbCwgJy5zZWNvbmQtdHlwZSYmbGknKVxcblxcdFxcdC8vIOW+queOr+S6jOe6p+agh+etvlxcblxcdFxcdGNhdGVnb3JpZV9sZXZlbF8yLmZvckVhY2goKGNhdGVfMiwgaW5kZXhfMikgPT4ge1xcblxcdFxcdFxcdGxldCB0aXRsZSA9IHBkZmgoY2F0ZV8yLCAnYSYmVGV4dCcpXFxuXFx0XFx0XFx0bGV0IGxpbmsgPSBwZGZoKGNhdGVfMiwgJ2EmJmhyZWYnKVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IHBhcnNlSW50KENBVEVfTEVWRUxfMikgPT09IGluZGV4XzIgPyBcXFwi4oCc4oCcXFxcIiArIHRpdGxlICsgXFxcIuKAneKAnVxcXCIgOiB0aXRsZSxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKHBhcmFtcyA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0Ly8g5a2Y5Zyo6ZO+5o6l55qE5oOF5Ya15LiL5pu05paw57yT5a2YXFxuXFx0XFx0XFx0XFx0XFx0aWYgKHBhcmFtcy5saW5rKSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cHV0VmFyKCdjYXRlXzInLCBwYXJhbXMuaW5kZXgudG9TdHJpbmcoKSlcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXRWYXIoJ2N1cnJlbnRfdXJsJywgJ2h0dHBzOi8vd3d3LnhpbnBpYW5jaGFuZy5jb20nICsgcGFyYW1zXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0LmxpbmspXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKVxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFx0XFx0XFx0XFx0fSwge1xcblxcdFxcdFxcdFxcdFxcdGluZGV4OiBpbmRleF8yLFxcblxcdFxcdFxcdFxcdFxcdGxpbms6IGxpbmtcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH0pXFxuXFx0XFx0fSlcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0fSlcXG5cXHRcXHQvKiBkLnB1c2goe1xcblxcdFxcdCAgICAgdGl0bGU6ICflvZPliY1VUkzvvJonICsgQ1VSUkVOVF9VUkwsXFxuXFx0XFx0ICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsXFxuXFx0XFx0IH0pKi9cXG5cXHR9XFxuXFx0bGV0IGZlbmxlaV91cmwgPSAnJztcXG5cXHRpZiAoQ1VSUkVOVF9VUkwuaW5kZXhPZignYXJ0aWNsZUxpc3RQYWdlJykgPiAtMSkge1xcblxcdFxcdGZlbmxlaV91cmwgPSBDVVJSRU5UX1VSTC5yZXBsYWNlKC9cXFxcP2Zyb209YXJ0aWNsZUxpc3RQYWdlLywgJy9wYWdlLScgKyBQQUdFKVxcblxcdH0gZWxzZSB7XFxuXFx0XFx0ZmVubGVpX3VybCA9IENVUlJFTlRfVVJMICsgJy9wYWdlLScgKyBQQUdFXFxuXFx0fVxcblxcdHZhciBsaXN0cyA9IHJlcXVlc3QoZmVubGVpX3VybCwge1xcblxcdFxcdGhlYWRlcnM6IHtcXG5cXHRcXHRcXHRcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBXFxuXFx0XFx0fVxcblxcdH0pXFxuXFx0Ly8gbG9nKGZlbmxlaV91cmwpXFxuXFx0dmFyIHdlYl9saXN0cyA9IHBkZmEobGlzdHMsIFxcXCJib2R5JiYuZW50ZXItZmlsbXBsYXlcXFwiKVxcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3dlYl/liIbnsbvliJfooahcXFwiKSkucnVsZSk7XFxuXFx0c2V0UmVzdWx0KGQpXFxufSwgd2ViX2xpbmtzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwid2ViX+WIhuexu+WIl+ihqFwiLFwicGF0aFwiOlwid2ViX+WIhuexu+WIl+ihqFwiLFwicnVsZVwiOlwiaWYgKHdlYl9saXN0cy5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRmb3IgKHZhciBpIGluIHdlYl9saXN0cykge1xcblxcdFxcdHZhciBQTEFZX0xJTktTID0gJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vYXJ0aWNsZS8nICsgcGRmaCh3ZWJfbGlzdHNbaV0sICdsaSYmZGF0YS1hcnRpY2xlaWQnKTtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0XFx0dGl0bGU6IHBkZmgod2ViX2xpc3RzW2ldLCAnLmZzXzE0JiZUZXh0JyksXFxuXFx0XFx0XFx0ZGVzYzogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn5pKt5pS+ICcgKyBwZGZoKHdlYl9saXN0c1tpXSwgJy5pY29uLXBsYXktdm9sdW1lJiZUZXh0JykgK1xcblxcdFxcdFxcdFxcdCcgwrcgJyArICfllpzmrKIgJyArIHBkZmgod2ViX2xpc3RzW2ldLCAnLmljb24tbGlrZSYmVGV4dCcpICsgJ1xcXFxuJyArIHBkZmgod2ViX2xpc3RzW2ldLFxcblxcdFxcdFxcdFxcdFxcdCdwJiYuZnNfMTImJlRleHQnKSArICdcXFxcdFxcXFx0JyArIHBkZmgod2ViX2xpc3RzW2ldLCAnLm5hbWUmJlRleHQnKSArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRwaWNfdXJsOiBwZCh3ZWJfbGlzdHNbaV0sICdpbWcmJl9zcmMnKSArICdAUmVmZXJlcj0nICsgcGQod2ViX2xpc3RzW2ldLCAnaW1nJiZfc3JjJyksXFxuXFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0fSk7XFxuXFx0fVxcbn0gZWxzZSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiYXBw5pKt5pS+6ZO+5o6lXCIsXCJwYXRoXCI6XCJhcHDmkq3mlL7pk77mjqVcIixcInJ1bGVcIjpcIiQoUExBWV9MSU5LUykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdHRyeXtcXG52YXIgcGxheV91cmxfanNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLmRhdGE7XFxuXFx0dmFyIHBsYXlfdXJscyA9IHBsYXlfdXJsX2pzb24udmlkZW8uY29udGVudC5wcm9ncmVzc2l2ZTtcXG5cXHQvLyDlvIDlp4vojrflj5blvLnluZVcXG5cXHR2YXIgZGFubWFrdSA9IHBsYXlfdXJsX2pzb24udmlkO1xcblxcdHZhciBkYW5tdSA9ICdodHRwczovL29zcy1kYW5tYWt1MTIueHBjY2RuLmNvbS8nICsgZGFubWFrdSArICcudHh0JztcXG5cXHR2YXIgY29kZSA9IHJlcXVlc3QoZGFubXUpXFxuXFx0dmFyIGFyciA9IGNvZGUuc3BsaXQoXFxcIlxcXFxuXFxcIilcXG5cXHR2YXIgciA9IFtdXFxuXFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG5cXHRcXHR0cnkge1xcblxcdFxcdFxcdHZhciBsaW5lID0gSlNPTi5wYXJzZShhcnJbaV0pXFxuXFx0XFx0XFx0aWYgKGxpbmUuY29udGVudCkge1xcblxcdFxcdFxcdFxcdHIucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0dGV4dDogbGluZS5jb250ZW50LFxcblxcdFxcdFxcdFxcdFxcdHRpbWU6IGxpbmUub2Zmc2V0XFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSBjYXRjaCAoZSkge31cXG5cXHR9XFxuXFx0d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2Rhbm11Lmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShyKSlcXG5cXHQvLyDnu5PmnZ/lvLnluZXojrflj5ZcXG5cXHRsZXQgdXJscyA9IFtdO1xcblxcdGxldCBuYW1lcyA9IFtdO1xcblxcdGZvciAobGV0IGogaW4gcGxheV91cmxzKSB7XFxuXFx0XFx0dXJscy5wdXNoKHBsYXlfdXJsc1tqXS51cmwpXFxuXFx0XFx0bmFtZXMucHVzaChwbGF5X3VybHNbal0ucHJvZmlsZSlcXG5cXHR9XFxuXFx0dmFyIGFsbF91cmwgPSBKU09OLnN0cmluZ2lmeSh7XFxuXFx0XFx0dXJsczogdXJscyxcXG5cXHRcXHRuYW1lczogbmFtZXMsXFxuXFx0XFx0ZGFubXU6IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2Rhbm11Lmpzb25cXFwiXFxuXFx0fSlcXG4vL1xcdGxvZyhhbGxfdXJsKVxcblxcdHJldHVybiBhbGxfdXJsXFxufWNhdGNoKGUpe1xcbnZhciB1cmw9aW5wdXQuc3BsaXQoJ3VybD0nKVsxXVxcbnVybD11bmVzY2FwZSh1cmwpXFxucmV0dXJuICd3ZWI6Ly8nK3VybFxcbn1cXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiYXBw5Yib5L2c5Lq65pCc57Si5YiX6KGoXCIsXCJwYXRoXCI6XCJhcHDliJvkvZzkurrmkJzntKLliJfooahcIixcInJ1bGVcIjpcInZhciBBUFBfVVJMID0gXFxcImh0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vdjIvc2VhcmNoP3R5cGU9XFxcIiArIHRpcHNfc2VsZWN0ICsgXFxcIiZrdz1cXFwiICsgdGlwc190aXRsZSArJyZwYWdlPScgKyBQQUdFO1xcbnZhciBhcHBfbGlzdHMgPSBKU09OLnBhcnNlKHJlcXVlc3QoQVBQX1VSTCkpLmRhdGEubGlzdDtcXG5pZihhcHBfbGlzdHMubGVuZ3RoICE9XFxcIlxcXCIpIHtcXG5mb3IgKGxldCBpIGluIGFwcF9saXN0cykge1xcbiAgIHNldFBhZ2VUaXRsZShhcHBfbGlzdHNbaV0udXNlcm5hbWUpXFxuIHZhciBVU0VSX0hPTUU9YXBwX2xpc3RzW2ldLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywnaHR0cHMnKVxcbmZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbnZhciB1cmw9ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq66aaW6aG1XFxcIikpLnJ1bGUpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBpbWc6IGFwcF9saXN0c1tpXS5hdmF0YXIgKyAnQFJlZmVyZXI9JyArIGFwcF9saXN0c1tpXS5hdmF0YXIsXFxuICAgICAgICB0aXRsZTogYXBwX2xpc3RzW2ldLnVzZXJuYW1lLFxcbiAgICAgICAgZGVzYzogJycsXFxuICAgICAgICB1cmw6dXJsLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICB9KVxcblxcbiAgICB2YXIgb2NjdXBhdGlvbiA9IGFwcF9saXN0c1tpXS5vY2N1cGF0aW9uO1xcbiAgICB2YXIgZm9sbG93ZXIgPSAn57KJ5LidICcgKyBhcHBfbGlzdHNbaV0uY291bnQuY291bnRfZm9sbG93ZXI7XFxuICAgIGlmICghb2NjdXBhdGlvbikge1xcbiAgICAgICAgb2NjdXBhdGlvbiA9ICcnXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBvY2N1cGF0aW9uID0gb2NjdXBhdGlvbiArICcgwrcgJ1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAnXFx0XFx0XFx0XFx0XFx0JyArIG9jY3VwYXRpb24gKyBmb2xsb3dlciArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG4gICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICB9KVxcbn1cXHR9ZWxzZXtcXG4gIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIm+S9nOS6uummlumhtVwiLFwicGF0aFwiOlwi5Yib5L2c5Lq66aaW6aG1XCIsXCJydWxlXCI6XCIkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IycpLnJ1bGUoKFVTRVJfSE9NRSkgPT4ge1xcblxcdHRyeSB7XFxuXFx0XFx0dmFyIFBBR0UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5cXHRcXHR2YXIgZCA9IFtdO1xcblxcdFxcdC8vIOWktOmDqFxcblxcdFxcdHZhciB1cmwgPSBVU0VSX0hPTUU7XFxuXFx0XFx0dmFyIFVTRVJfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKS5kYXRhO1xcblxcdFxcdHZhciBJRCA9IFVTRVJfSlNPTi5pZDtcXG5cXHRcXHR2YXIgYXBwX2JhY2tncm91bmQgPSBVU0VSX0pTT04uYXBwX2JhY2tncm91bmQ7XFxuXFx0XFx0aWYgKCFhcHBfYmFja2dyb3VuZCkgYXBwX2JhY2tncm91bmQgPSAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ltZy94aW5waWFuY2hhbmcuanBnJztcXG5cXHRcXHR2YXIgdXNlcl9hdmF0YXIgPSBVU0VSX0pTT04uYXZhdGFyO1xcblxcdFxcdHZhciB1c2VyX25hbWUgPSBVU0VSX0pTT04udXNlcm5hbWU7XFxuXFx0XFx0c2V0UGFnZVRpdGxlKHVzZXJfbmFtZSlcXG5cXHRcXHR2YXIgdXNlcl9kZXNjID0gVVNFUl9KU09OLnZlcmlmeV9kZXNjcmlwdGlvbjtcXG5cXHRcXHR2YXIgdXNlcl9hYm91dCA9IFVTRVJfSlNPTi5hYm91dDtcXG5cXHRcXHQvL+S6uuawlFxcblxcdFxcdHZhciBjb3VudF9wb3B1bGFyaXR5ID0gVVNFUl9KU09OLmNvdW50LmNvdW50X3BvcHVsYXJpdHk7XFxuXFx0XFx0aWYgKGNvdW50X3BvcHVsYXJpdHkgPiAxMDAwMCkgY291bnRfcG9wdWxhcml0eSA9IChjb3VudF9wb3B1bGFyaXR5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0XFx0Ly/nsonkuJ1cXG5cXHRcXHR2YXIgY291bnRfZm9sbG93ZXIgPSBVU0VSX0pTT04uY291bnQuY291bnRfZm9sbG93ZXI7XFxuXFx0XFx0aWYgKGNvdW50X2ZvbGxvd2VyID4gMTAwMCkgY291bnRfZm9sbG93ZXIgPSAoY291bnRfZm9sbG93ZXIgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdFxcdGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuXFx0XFx0XFx0Y2xlYXJNeVZhcign5Li76aG157G75YirJyk7XFxuXFx0XFx0fSkpXFxuXFx0XFx0dmFyIHRpcHNfc2VsZWN0ID0gZ2V0TXlWYXIoXFxcIuS4u+mhteexu+WIq1xcXCIsICduZXcnKTtcXG5cXHRcXHRpZiAoUEFHRSA9PSAxKSB7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiAnMCcsXFxuXFx0XFx0XFx0XFx0aW1nOiBhcHBfYmFja2dyb3VuZCxcXG5cXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnYXZhdGFyJyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogdXNlcl9uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JyArIFxcXCI8Zm9udCBjb2xvcj1ncmV5PlxcXCIgKyAn5Lq65rCUICcgKyBjb3VudF9wb3B1bGFyaXR5ICsgJyDCtyAnICsn57KJ5LidICcgK2NvdW50X2ZvbGxvd2VyICsgXFxcIjwvZm9udD5cXFwiLFxcblxcdFxcdFxcdFxcdGltZzogdXNlcl9hdmF0YXIsXFxuXFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdFxcdH0pO1xcblxcblxcdFxcdFxcdHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG5cXHRcXHRcXHRmdW5jdGlvbiBnZXRIZWFkKHRpdGxlcykge1xcblxcdFxcdFxcdFxcdHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlcyArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAnbmV3JyA/IGdldEhlYWQodGl0bGVzID0gXFxcIuacgOaWsFxcXCIpIDogJ+acgOaWsCcsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5Li76aG157G75YirJywgJ25ldycpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF80JyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ3ZpZXcnID8gZ2V0SGVhZCh0aXRsZXMgPSBcXFwi54Ot6ZeoXFxcIikgOiAn54Ot6ZeoJyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfkuLvpobXnsbvliKsnLCAndmlldycpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF80JyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ2NvbGxlY3Rpb25zJyA/IGdldEhlYWQodGl0bGVzID0gXFxcIuS4k+i+kVxcXCIpIDogJ+S4k+i+kScsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5Li76aG157G75YirJywgJ2NvbGxlY3Rpb25zJyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAn5oC75paH56ugJyA/IGdldEhlYWQodGl0bGVzID0gXFxcIuaWh+eroFxcXCIpIDogJ+aWh+eroCcsXFxuXFx0XFx0XFx0XFx0dXJsOiQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfkuLvpobXnsbvliKsnLCAn5oC75paH56ugJyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdH1cXG5cXHRcXHQvLyDliJfooajpg6jliIZcXG5cXHRcXHRpZiAodGlwc19zZWxlY3QgPT0gJ25ldycgfHwgdGlwc19zZWxlY3QgPT0gJ3ZpZXcnKSB7XFxuXFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq65L2c5ZOB5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fVxcblxcdFxcdGlmICh0aXBzX3NlbGVjdCA9PSAnY29sbGVjdGlvbnMnKSB7XFxuXFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq65LiT6L6R5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fVxcblxcdFxcdGlmICh0aXBzX3NlbGVjdCA9PSAn5oC75paH56ugJykge1xcblxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3dlYl/mlofnq6DliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9XFxuXFx0XFx0c2V0UmVzdWx0KGQpO1xcblxcdH0gY2F0Y2ggKGUpIHtcXG5cXHRcXHRiYWNrKGZhbHNlKVxcblxcdH1cXG59LCBVU0VSX0hPTUUpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobXlm7rlrppKU09OXCIsXCJwYXRoXCI6XCLpppbpobXlm7rlrppKU09OXCIsXCJydWxlXCI6XCJ2YXIgaW5kZXhfdXJsID0gJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vcGFnZS9kaXNjb3ZlcnknO1xcbnZhciBpbmRleF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KGluZGV4X3VybCwge2hlYWRlcnM6IHsnVXNlci1BZ2VudCc6XFxcIlVzZXItQWdlbnROZXdTdHVkaW9zLzEuOS4xIChjb20ueGlucGlhbmNoYW5nLm5ld3N0dWRpb3M7IGJ1aWxkOjc4NjsgQW5kcm9pZCAxMVxcXCJ9LG1ldGhvZDogJ0dFVCd9KSkuZGF0YTtcXG5sZXQgWFBDID0gaW5kZXhfSlNPTi5jYXRlZ29yaWVzO1xcbmxldCBiYW5uZXJzID0gaW5kZXhfSlNPTi5iYW5uZXJzO1xcbnZhciB0ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmFubmVycy5sZW5ndGgpO1xcbmJhbm5lcnMgPSBpbmRleF9KU09OLmJhbm5lcnNbdF07XFxudmFyIFBMQVlfTElOS1MgPSBiYW5uZXJzLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliJvkvZzkurrkvZzlk4HliJfooahcIixcInBhdGhcIjpcIuWIm+S9nOS6uuS9nOWTgeWIl+ihqFwiLFwicnVsZVwiOlwiLy8g5pe26Ze05oiz6L2s5o2iXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5pe26Ze05oiz6L2s5o2iXFxcIikpLnJ1bGUpO1xcbnZhciBsaXN0X3VybCA9IHVybCArICcvYXJ0aWNsZXM/aXNfaGlkZV9pbl9zcGFjZT0wJm9yZGVyPScgKyB0aXBzX3NlbGVjdCArJyZyZXR1cm5fc3RydWN0X3R5cGU9dXNlcl9ob21lJnR5cGU9cHVibGljJnBhZ2U9JyArIFBBR0U7XFxudmFyIEFQUF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RfdXJsKSkuZGF0YTtcXG4vKnZhciB0b3RhbCA9IEFQUF9KU09OLnRvdGFsO1xcbnB1dE15VmFyKCfkvZzlk4HmlbDph48nLHRvdGFsKTsqL1xcbkFQUF9KU09OPUFQUF9KU09OLmxpc3Q7XFxuaWYgKEFQUF9KU09OLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdGZvciAobGV0IGkgaW4gQVBQX0pTT04pIHtcXG5cXHRcXHR2YXIgYXBwX2NhY2hlID0gQVBQX0pTT05baV0ucmVzb3VyY2U7XFxuXFx0XFx0dmFyIFBMQVlfTElOS1MgPSBhcHBfY2FjaGUudXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHRcXHR2YXIgbGlrZSA9IGFwcF9jYWNoZS5jb3VudC5jb3VudF9saWtlO1xcblxcdFxcdHZhciB2aWV3ID0gYXBwX2NhY2hlLmNvdW50LmNvdW50X3ZpZXc7XFxuXFx0XFx0aWYgKGxpa2UgPiAxMDAwKSBsaWtlID0gKGxpa2UgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdFxcdGlmICh2aWV3ID4gMTAwMDApIHZpZXcgPSAodmlldyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdFxcdHZhciBpbWcgPSBhcHBfY2FjaGUuY292ZXI7XFxuXFx0XFx0dmFyIHRpdGxlID0gYXBwX2NhY2hlLnRpdGxlO1xcblxcdFxcdHZhciBwdWJsaXNoX3RpbWUgPSBhcHBfY2FjaGUucHVibGlzaF90aW1lO1xcblxcdFxcdC8vIOaXtumXtOaIs+i9rOW5tOaciOaXpVxcblxcdFxcdHB1Ymxpc2hfdGltZSA9IHRpbWVzdGFtcFRvVGltZSh0bSA9IHB1Ymxpc2hfdGltZSwgdHM9MClcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0XFx0dGl0bGU6IHRpdGxlLFxcblxcdFxcdFxcdGRlc2M6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgcHVibGlzaF90aW1lICsgJ1xcXFxuJyArIGxpa2UgKyAnIOWWnOasoicgKycgwrcgJyArIHZpZXcgKycg6KeC55yLJyArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRpbWc6IGltZyxcXG5cXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHR9KTtcXG5cXHR9XFxufSBlbHNlIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliJvkvZzkurrkuJPovpHliJfooahcIixcInBhdGhcIjpcIuWIm+S9nOS6uuS4k+i+keWIl+ihqFwiLFwicnVsZVwiOlwidmFyIGxpc3RfdXJsID0gdXJsICsgJy9jb2xsZWN0aW9ucz9wYWdlPScgKyBQQUdFO1xcbnZhciBBUFBfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdChsaXN0X3VybCkpLmRhdGEubGlzdDtcXG5pZiAoQVBQX0pTT04ubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0Zm9yIChsZXQgaSBpbiBBUFBfSlNPTikge1xcblxcdFxcdHZhciBhcHBfY2FjaGUgPSBBUFBfSlNPTltpXTtcXG5cXHRcXHR2YXIgQWxidW1fdXJsID0gYXBwX2NhY2hlLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJykgKyAnL2FydGljbGVzP2lzX2RldGFpbD10cnVlJnBhZ2U9JztcXG5cXHRcXHR2YXIgYmdfaW1nID0gYXBwX2NhY2hlLmNvdmVyX3VybDtcXG5cXHRcXHR2YXIgZGVzYyA9IGFwcF9jYWNoZS5kZXNjcmlwdGlvbjtcXG5cXHRcXHR2YXIgYXJ0aWNsZSA9IGFwcF9jYWNoZS5jb3VudC5jb3VudF9hcnRpY2xlO1xcblxcdFxcdHZhciBsaWtlID0gYXBwX2NhY2hlLmNvdW50LmNvdW50X2xpa2VkO1xcblxcdFxcdHZhciB2aWV3ID0gYXBwX2NhY2hlLmNvdW50LmNvdW50X3ZpZXdlZDtcXG5cXHRcXHRpZiAobGlrZSA+IDEwMDApIGxpa2UgPSAobGlrZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0XFx0aWYgKHZpZXcgPiAxMDAwMCkgdmlldyA9ICh2aWV3IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0XFx0dmFyIGltZyA9IGFwcF9jYWNoZS5jb3Zlcl91cmw7XFxuXFx0XFx0dmFyIHRpdGxlID0gYXBwX2NhY2hlLnRpdGxlO1xcblxcdFxcdHZhciBwdXRfdGl0bGUgPSBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfkvZzlk4EgJyArIGFydGljbGUgKyAnIMK3ICcgKyAn5rWP6KeIICcgKyB2aWV3ICsgJyDCtyAnICsgJ+i1niAnICtsaWtlICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdwaWNfMV9jYXJkJyxcXG5cXHRcXHRcXHR0aXRsZTogdGl0bGUsXFxuXFx0XFx0XFx0aW1nOiBiZ19pbWcgKyAnQFJlZmVyZXI9JyArYmdfaW1nLFxcblxcdFxcdFxcdGRlc2M6ICfkvZzlk4EgJyArIGFydGljbGUgKyAnICDCtyAgJyArICfmtY/op4ggJyArIHZpZXcgKyAnICDCtyAgJyArICfotZ4gJyArIGxpa2UsXFxuXFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0dXJsOiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSNub0hpc3RvcnkjJykucnVsZSgoYmdfaW1nLCBwdXRfdGl0bGUsIGRlc2MsQWxidW1fdXJsKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIFBBR0UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgZCA9IFtdO1xcblxcdFxcdFxcdFxcdFxcdHZhciB1cmwgPSBBbGJ1bV91cmwgKyBQQUdFO1xcblxcdFxcdFxcdFxcdFxcdHZhciBBUFBfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKS5kYXRhLmxpc3Q7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKFBBR0UgPT0gMSkge1xcblxcdFxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbWc6IGJnX2ltZyxcXG5cXHRcXHRcXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aXRsZTogcHV0X3RpdGxlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdyaWNoX3RleHQnLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRpdGxlOiBcXFwiPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgZGVzYyArXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRpZiAoQVBQX0pTT04ubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yIChsZXQgaSBpbiBBUFBfSlNPTikge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBQTEFZX0xJTktTID0gQVBQX0pTT05baV0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgdGl0bGUgPSBBUFBfSlNPTltpXS50aXRsZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgaW1nID0gQVBQX0pTT05baV0uY292ZXI7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhdCA9IEFQUF9KU09OW2ldLmNhdGVnb3JpZXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhdF9hbGwgPSBbXVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAodmFyIGkgaW4gY2F0KSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhdF8xID0gY2F0W2ldLmNhdGVnb3J5X25hbWU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhdF8yID0gY2F0W2ldLnN1Yi5jYXRlZ29yeV9uYW1lO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNhdF9hbGwucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXRfMSArICctJyArIGNhdF8yICsgJyBcXHQnXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0KVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXRfYWxsID0gY2F0X2FsbC5qb2luKFxcXCJcXFwiKVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYXRfdGl0bGUgPSAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPWdyZXk+JyArIGNhdF9hbGwgKyAnPC9mb250Pjwvc21hbGw+JztcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dGl0bGU6IHRpdGxlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlc2M6IGNhdF90aXRsZSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbWc6IGltZyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0c2V0UmVzdWx0KGQpO1xcblxcdFxcdFxcdFxcdH0sIGJnX2ltZywgcHV0X3RpdGxlLCBkZXNjLCBBbGJ1bV91cmwpLFxcblxcdFxcdH0pO1xcblxcdH1cXG59IGVsc2Uge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi6KeG6aKR6K+m5oOF6aG1XCIsXCJwYXRoXCI6XCLop4bpopHor6bmg4XpobVcIixcInJ1bGVcIjpcIiQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJykucnVsZSgoUExBWV9MSU5LUykgPT4ge1xcblxcdHZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuXFx0dmFyIGQgPSBbXTtcXG5cXHQvLyDlpLTpg6hcXG5cXHQvLyB2YXIgdXJsID0gVVNFUl9IT01FO1xcblxcdC8vIFBMQVlfTElOS1NcXG5cXHRhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcblxcdFxcdGNsZWFyTXlWYXIoJ+S9nOiAhScpO1xcblxcdFxcdGNsZWFyTXlWYXIoJ+ivpue7huexu+WIqycpO1xcblxcdFxcdGNsZWFyTXlWYXIoXFxcIuebuOS8vOinhumikVxcXCIpO1xcblxcdH0pKVxcblxcdC8vIOaXtumXtOaIs+i9rOaNolxcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+aXtumXtOaIs+i9rOaNolxcXCIpKS5ydWxlKTtcXG5cXHR2YXIgdGlwc19zZWxlY3QgPSBnZXRNeVZhcihcXFwi6K+m57uG57G75YirXFxcIiwgJ+eugOS7iycpO1xcblxcdGlmICh0aXBzX3NlbGVjdCA9PSAn6K+E6K66JykgY2xlYXJNeVZhcihcXFwi55u45Ly86KeG6aKRXFxcIik7XFxuXFx0dmFyIHRpcHNfYWxpa2UgPSBnZXRNeVZhcihcXFwi55u45Ly86KeG6aKRXFxcIik7XFxuXFx0dmFyIHVybCA9IFBMQVlfTElOS1M7XFxuXFxuXFx0dmFyIERBVEFfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKS5kYXRhO1xcblxcdHZhciBJRCA9IERBVEFfSlNPTi5pZDtcXG5cXHRsZXQgY29tbWVudF91cmwgPSBcXFwiaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9jb21tZW50cz9yZXNvdXJjZV9pZD1cXFwiICsgSUQgKyBcXFwiJnR5cGU9YXJ0aWNsZSZwYWdlPVxcXCIgKyBQQUdFO1xcblxcdHZhciBDT01NRU5UX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QoY29tbWVudF91cmwpKS5kYXRhO1xcblxcdC8vIOivhOiuuuaAu+aVsFxcblxcdHZhciB0b3RhbCA9IENPTU1FTlRfSlNPTi50b3RhbDtcXG5cXHR2YXIgUExBWV9MSU5LUyA9IERBVEFfSlNPTi51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdHZhciBiZ19pbWcgPSBEQVRBX0pTT04uY292ZXI7XFxuXFx0dmFyIHRpdGxlID0gREFUQV9KU09OLnRpdGxlO1xcblxcdHNldFBhZ2VUaXRsZShEQVRBX0pTT04udGl0bGUpXFxuXFx0Ly8g5YiG57G7W2ldLmNhdGVnb3J5X25hbWUuc3ViLmNhdGVnb3J5X25hbWVcXG5cXHR2YXIgY2F0ID0gREFUQV9KU09OLmNhdGVnb3JpZXM7XFxuXFx0Ly8g5Y+R5biD5pe26Ze0XFxuXFx0dmFyIHB1Ymxpc2hfdGltZSA9IERBVEFfSlNPTi5wdWJsaXNoX3RpbWU7XFxuXFx0cHVibGlzaF90aW1lID0gdGltZXN0YW1wVG9UaW1lKHRtID0gcHVibGlzaF90aW1lLCB0cyA9IDApXFxuXFx0Ly8g5pKt5pS+6YePXFxuXFx0dmFyIHZpZXcgPSBEQVRBX0pTT04uY291bnQuY291bnRfdmlldztcXG5cXHRpZiAodmlldyA+IDEwMDAwKSB2aWV3ID0gKHZpZXcgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHQvLyDnroDku4tcXG5cXHR2YXIgY29udGVudCA9IERBVEFfSlNPTi5jb250ZW50O1xcblxcdC8vIOWWnOasoueCuei1nlxcblxcdHZhciBsaWtlID0gREFUQV9KU09OLmNvdW50LmNvdW50X2xpa2U7XFxuXFx0aWYgKGxpa2UgPiAxMDAwKSBsaWtlID0gKGxpa2UgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdC8vIOaUtuiXj1xcblxcdHZhciBjb2xsZWN0ID0gREFUQV9KU09OLmNvdW50LmNvdW50X2NvbGxlY3Q7XFxuXFx0aWYgKGNvbGxlY3QgPiAxMDAwKSBjb2xsZWN0ID0gKGNvbGxlY3QgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdC8vIOWIhuS6q1xcblxcdHZhciBzaGFyZSA9IERBVEFfSlNPTi5jb3VudC5jb3VudF9zaGFyZTtcXG5cXHRpZiAoc2hhcmUgPiAxMDAwKSBzaGFyZSA9IChzaGFyZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0Ly8g5qCH562+W2ldLm5hbWVcXG5cXHR2YXIgdGFncyA9IERBVEFfSlNPTi50YWdzO1xcblxcdC8vIOWIm+S9nOS6ui51cmwo5Li76aG1KS51c2VybmFtZSjlkI3lrZcpLmF2YXRhcijlkI3lrZcpXFxuXFx0dmFyIHVzZXIgPSBEQVRBX0pTT04uYXV0aG9yLnVzZXJpbmZvO1xcblxcdHB1dE15VmFyKCfkvZzogIUnLCB1c2VyLnVzZXJuYW1lKTtcXG5cXG5cXHRpZiAoUEFHRSA9PSAxKSB7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcblxcdFxcdFxcdHRpdGxlOiAnMCcsXFxuXFx0XFx0XFx0aW1nOiBiZ19pbWcsXFxuXFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKERBVEFfSlNPTikgPT4ge1xcblxcdFxcdFxcdFxcdHZhciBwbGF5X3VybHMgPSBEQVRBX0pTT04udmlkZW8uY29udGVudC5wcm9ncmVzc2l2ZTtcXG5cXHRcXHRcXHRcXHQvLyDlvIDlp4vojrflj5blvLnluZVcXG5cXHRcXHRcXHRcXHR2YXIgZGFubWFrdSA9IERBVEFfSlNPTi52aWQ7XFxuXFx0XFx0XFx0XFx0dmFyIGRhbm11ID0gJ2h0dHBzOi8vb3NzLWRhbm1ha3UxMi54cGNjZG4uY29tLycgKyBkYW5tYWt1ICsgJy50eHQnO1xcblxcdFxcdFxcdFxcdHZhciBjb2RlID0gcmVxdWVzdChkYW5tdSlcXG5cXHRcXHRcXHRcXHR2YXIgYXJyID0gY29kZS5zcGxpdChcXFwiXFxcXG5cXFwiKVxcblxcdFxcdFxcdFxcdHZhciByID0gW11cXG5cXHRcXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcblxcdFxcdFxcdFxcdFxcdHRyeSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGxpbmUgPSBKU09OLnBhcnNlKGFycltpXSlcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAobGluZS5jb250ZW50KSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ci5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0ZXh0OiBsaW5lLmNvbnRlbnQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dGltZTogbGluZS5vZmZzZXRcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHR9IGNhdGNoIChlKSB7fVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHR3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvZGFubXUuanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KHIpKVxcblxcdFxcdFxcdFxcdC8vIOiOt+WPluW8ueW5lVxcblxcdFxcdFxcdFxcdGxldCB1cmxzID0gW107XFxuXFx0XFx0XFx0XFx0bGV0IG5hbWVzID0gW107XFxuXFx0XFx0XFx0XFx0Zm9yIChsZXQgaiBpbiBwbGF5X3VybHMpIHtcXG5cXHRcXHRcXHRcXHRcXHR1cmxzLnB1c2gocGxheV91cmxzW2pdLnVybClcXG5cXHRcXHRcXHRcXHRcXHRuYW1lcy5wdXNoKHBsYXlfdXJsc1tqXS5wcm9maWxlKVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHR2YXIgYWxsX3VybCA9IEpTT04uc3RyaW5naWZ5KHtcXG5cXHRcXHRcXHRcXHRcXHR1cmxzOiB1cmxzLFxcblxcdFxcdFxcdFxcdFxcdG5hbWVzOiBuYW1lcyxcXG5cXHRcXHRcXHRcXHRcXHRkYW5tdTogXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvZGFubXUuanNvblxcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdFxcdC8vXFx0bG9nKGFsbF91cmwpXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGFsbF91cmxcXG5cXHRcXHRcXHR9LCBEQVRBX0pTT04pLFxcblxcdFxcdH0pO1xcblxcdFxcdHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRIZWFkKHRpdGxlcykge1xcblxcdFxcdFxcdHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlcyArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxuXFx0XFx0fVxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzInLFxcblxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAn566A5LuLJyA/IGdldEhlYWQodGl0bGVzID0gXFxcIueugOS7i1xcXCIpIDogJ+eugOS7iycsXFxuXFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRwdXRNeVZhcign6K+m57uG57G75YirJywgJ+eugOS7iycpO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHR9KSxcXG5cXHRcXHR9KTtcXG5cXHRcXHR2YXIg6K+E6K66ID0gJ+ivhOiuuiAnICsgJ+KAmOKAmCcgKyB0b3RhbCArICfigJnigJknO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzInLFxcblxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAn6K+E6K66JyA/IGdldEhlYWQodGl0bGVzID0g6K+E6K66KSA6IOivhOiuuixcXG5cXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdHB1dE15VmFyKCfor6bnu4bnsbvliKsnLCAn6K+E6K66Jyk7XFxuXFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdH0pLFxcblxcdFxcdH0pO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHR9KTtcXG5cXHRcXHQvLyDku4XnroDku4vpobVcXG5cXHRcXHRpZiAodGlwc19zZWxlY3QgPT0gJ+eugOS7iycpIHtcXG5cXHRcXHRcXHR2YXIgVVNFUl9IT01FID0gdXNlci51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdFxcdFxcdHZhciBkb3dubG9hZF91cmwgPSBEQVRBX0pTT04udmlkZW8uY29udGVudC5wcm9ncmVzc2l2ZVswXS51cmw7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMScsXFxuXFx0XFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyB0aXRsZSArICc8L2ZvbnQ+PC9iPicsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0dmFyIGNhdF9hbGwgPSBbXVxcblxcdFxcdFxcdGZvciAodmFyIGkgaW4gY2F0KSB7XFxuXFx0XFx0XFx0XFx0dmFyIGNhdF8xID0gY2F0W2ldLmNhdGVnb3J5X25hbWU7XFxuXFx0XFx0XFx0XFx0dmFyIGNhdF8yID0gY2F0W2ldLnN1Yi5jYXRlZ29yeV9uYW1lO1xcblxcdFxcdFxcdFxcdGNhdF9hbGwucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRjYXRfMSArICctJyArIGNhdF8yICsgJyBcXHQnXFxuXFx0XFx0XFx0XFx0KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRjYXRfYWxsID0gY2F0X2FsbC5qb2luKFxcXCJcXFwiKVxcblxcdFxcdFxcdHZhciBjYXRfdGl0bGUgPSAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPWdyZXk+JyArIGNhdF9hbGwgKyAnIFxcdCcgKyBwdWJsaXNoX3RpbWUgKyAnIFxcdFxcdCcgKyB2aWV3ICtcXG5cXHRcXHRcXHRcXHQn5qyh5pKt5pS+JyArICc8L2ZvbnQ+PC9zbWFsbD4nO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IGNhdF90aXRsZSxcXG5cXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMScsXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IFxcXCI8c21hbGw+PGZvbnQgY29sb3I9MDAwPlxcXCIgKyBjb250ZW50ICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IGxpa2UsXFxuXFx0XFx0XFx0XFx0cGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+eCuei1ni5zdmcnLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG5cXHRcXHRcXHR9KVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IGNvbGxlY3QsXFxuXFx0XFx0XFx0XFx0cGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+aUtuiXjy5zdmcnLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG5cXHRcXHRcXHR9KVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IHNoYXJlLFxcblxcdFxcdFxcdFxcdHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPliIbkuqsuc3ZnJyxcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiAn5LiL6L29JyxcXG5cXHRcXHRcXHRcXHRwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz5LiL6L29LnN2ZycsXFxuXFx0XFx0XFx0XFx0dXJsOiAnZG93bmxvYWQ6Ly8nICsgZG93bmxvYWRfdXJsLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG5cXHRcXHRcXHR9KVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRmb3IgKGxldCBpIGluIHRhZ3MpIHtcXG5cXHRcXHRcXHRcXHR2YXIgdGFnID0gdGFnc1tpXS5uYW1lO1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9Z3JleT4nICsgdGFnICsgJzwvZm9udD48L3NtYWxsPicsXFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXHRcXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgodGFnKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+aQnOWFs+mUruWtlycsIHRhZyk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+i/m+WFpeaQnOe0oumhtVxcXCIpKS5ydWxlKTtcXG5cXHRcXHRcXHRcXHRcXHR9LCB0YWcpLFxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMScsXFxuXFx0XFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyAn5Yib5L2c5Lq6JyArICc8L2ZvbnQ+PC9iPicsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogdXNlci51c2VybmFtZSxcXG5cXHRcXHRcXHRcXHRpbWc6IHVzZXIuYXZhdGFyICsgJ0BSZWZlcmVyPScgKyB1c2VyLmF2YXRhcixcXG5cXHRcXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uummlumhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArICfnm7jkvLzop4bpopEnICsgJzwvZm9udD48L2I+JyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+ebuOS8vOinhumikScsICfnm7jkvLzop4bpopEnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHQvLyDnm7jkvLzop4bpopFcXG5cXHRcXHRcXHRpZiAodGlwc19hbGlrZSA9PSAn55u45Ly86KeG6aKRJykge1xcblxcdFxcdFxcdFxcdHZhciBuZXh0X3VybCA9IHVybCArICcvbmV4dCc7XFxuXFx0XFx0XFx0XFx0dmFyIE5FWFRfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdChuZXh0X3VybCkpLmRhdGEubGlzdDtcXG5cXHRcXHRcXHRcXHRmb3IgKGxldCBpIGluIE5FWFRfSlNPTikge1xcblxcdFxcdFxcdFxcdFxcdHZhciBQTEFZX0xJTktTID0gTkVYVF9KU09OW2ldLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfdGl0bGUgPSBORVhUX0pTT05baV0udGl0bGU7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfY292ZXIgPSBORVhUX0pTT05baV0uY292ZXI7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfdGl0bGUgPSBORVhUX0pTT05baV0udGl0bGU7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfdmlldyA9IE5FWFRfSlNPTltpXS5jb3VudC5jb3VudF92aWV3O1xcblxcdFxcdFxcdFxcdFxcdGlmIChuZXh0X3ZpZXcgPiAxMDAwMCkgbmV4dF92aWV3ID0gKG5leHRfdmlldyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X2xpa2UgPSBORVhUX0pTT05baV0uY291bnQuY291bnRfbGlrZTtcXG5cXHRcXHRcXHRcXHRcXHRpZiAobmV4dF9saWtlID4gMTAwMCkgbmV4dF9saWtlID0gKG5leHRfbGlrZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfdXNlciA9IE5FWFRfSlNPTltpXS5hdXRob3IudXNlcmluZm8udXNlcm5hbWU7XFxuXFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdFxcdFxcdFxcdFxcdHRpdGxlOiBuZXh0X3RpdGxlLFxcblxcdFxcdFxcdFxcdFxcdFxcdGRlc2M6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+aSreaUvumHjyAnICsgbmV4dF92aWV3ICsgJyDCtyDllpzmrKIgJyArXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bmV4dF9saWtlICsgJ1xcXFxuJyArIG5leHRfdXNlciArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRcXHRcXHRcXHRpbWc6IG5leHRfY292ZXIsXFxuXFx0XFx0XFx0XFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFx0XFx0Ly8g57uT5p2f566A5LuL6aG1XFxuXFx0fVxcblxcdC8vIOe7k+adn+S7heesrOS4gOmhtVxcblxcdGlmICh0aXBzX3NlbGVjdCA9PSAn6K+E6K66Jykge1xcblxcdFxcdHZhciBjYWNoZV9qc29uID0gQ09NTUVOVF9KU09OLmxpc3Q7XFxuXFx0XFx0Ly/ml6Dor4TorrpcXG5cXHRcXHRpZiAodG90YWwgPT0gMCAmJiBQQUdFID09IDEpIHtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDMwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn4oCU4oCUICAg5pqC5peg6K+E6K66ICAg4oCU4oCUJyArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pXFxuXFx0XFx0fVxcblxcdFxcdGlmIChjYWNoZV9qc29uLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdFxcdFxcdGZvciAobGV0IGkgaW4gY2FjaGVfanNvbikge1xcblxcdFxcdFxcdFxcdHZhciBVU0VSX0hPTUUgPSAnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS91c2VyLycgKyBjYWNoZV9qc29uW2ldLnVzZXJpZDtcXG5cXHRcXHRcXHRcXHR2YXIgdXNlcl9hdmF0YXIgPSBjYWNoZV9qc29uW2ldLnVzZXJJbmZvLmF2YXRhcjtcXG5cXHRcXHRcXHRcXHR2YXIgdXNlcl91c2VybmFtZSA9IGNhY2hlX2pzb25baV0udXNlckluZm8udXNlcm5hbWU7XFxuXFx0XFx0XFx0XFx0aWYgKGdldE15VmFyKCfkvZzogIUnKSA9PSB1c2VyX3VzZXJuYW1lKSB1c2VyX3VzZXJuYW1lID0gJzxmb250IGNvbG9yPSNlZDlhNDE+JyArIHVzZXJfdXNlcm5hbWUgK1xcblxcdFxcdFxcdFxcdFxcdCc8L2ZvbnQ+JztcXG5cXHRcXHRcXHRcXHQvLyDor4TorrrlhoXlrrlcXG5cXHRcXHRcXHRcXHR2YXIgY29udGVudCA9IGNhY2hlX2pzb25baV0uY29udGVudDtcXG5cXHRcXHRcXHRcXHQvLyDor4Torrrml7bpl7RcXG5cXHRcXHRcXHRcXHR2YXIgYWRkdGltZSA9IGNhY2hlX2pzb25baV0uYWRkdGltZTtcXG5cXHRcXHRcXHRcXHRhZGR0aW1lID0gdGltZXN0YW1wVG9UaW1lKHRtID0gYWRkdGltZSwgdHMgPSAxKVxcblxcdFxcdFxcdFxcdC8vIOWbnuWkjVxcblxcdFxcdFxcdFxcdGlmIChjYWNoZV9qc29uW2ldLnJlZmVyZXIpIHtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcmVfbmFtZSA9IGNhY2hlX2pzb25baV0ucmVmZXJlci51c2VySW5mby51c2VybmFtZTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcmVfY29udGVudCA9IGNhY2hlX2pzb25baV0ucmVmZXJlci5jb250ZW50O1xcblxcdFxcdFxcdFxcdFxcdHZhciByZWZlcmVyID0gXFxcIjxibG9ja3F1b3RlPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJzxjb2RlPicgKyByZV9uYW1lICsgJzwvY29kZT4nICsgJzxicj4nICtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZV9jb250ZW50ICsgXFxcIjwvZm9udD48L2Jsb2NrcXVvdGU+XFxcIjtcXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcdFxcdFxcdFxcdFxcdHZhciByZWZlcmVyID0gXFxcIlxcXCJcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0dGl0bGU6IHVzZXJfdXNlcm5hbWUgKyBcXFwiPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ1xcXFx0XFxcXHQnICsgYWRkdGltZSArXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFxcIjwvZm9udD48L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0XFx0XFx0aW1nOiB1c2VyX2F2YXRhciArICdAUmVmZXJlcj0nICsgdXNlcl9hdmF0YXIsXFxuXFx0XFx0XFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrpppbpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdhdmF0YXInLFxcblxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0dGl0bGU6IHJlZmVyZXIgKyBcXFwiPGZvbnQgY29sb3I9JzAwMCc+XFxcIiArICdcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0JyArIGNvbnRlbnQgKyBcXFwiPC9mb250PlxcXCIsXFxuXFx0XFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdyaWNoX3RleHQnLFxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9IGVsc2UgaWYgKHRvdGFsICE9IDApe1xcblxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcblxcdFxcdH1cXG5cXHR9XFxuXFx0c2V0UmVzdWx0KGQpO1xcbn0sIFBMQVlfTElOS1MpXFxuXCJ9LHtcIm5hbWVcIjpcIkVORFwiLFwicGF0aFwiOlwiRU5EXCIsXCJydWxlXCI6XCJkLnB1c2goe1xcblxcdHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfigJTigJQgICBFTkQgICDigJTigJQnICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFx0ZXh0cmE6IHtcXG5cXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHR9XFxufSlcIn0se1wibmFtZVwiOlwid2ViX+aWh+eroOWIl+ihqFwiLFwicGF0aFwiOlwid2ViX+aWh+eroOWIl+ihqFwiLFwicnVsZVwiOlwiTVlfVVJMID0gJ2h0dHBzOi8vd3d3LnhpbnBpYW5jaGFuZy5jb20nO1xcbmlmICh0aXBzX3NlbGVjdCA9PSAn5paH56ugJykge1xcblxcdHZhciBXRUJfVVJMID0gXFxcImh0dHBzOi8vd3d3LnhpbnBpYW5jaGFuZy5jb20vaW5kZXgucGhwP2FwcD1zZWFyY2gmdHM9ZXhwJmt3PVxcXCIgKyB0aXBzX3RpdGxlICsnJnBhZ2U9JyArIFBBR0U7XFxuXFx0dmFyIGV4cD0nLm5hbWUnO1xcbn1cXG5pZiAodGlwc19zZWxlY3QgPT0gJ+aAu+aWh+eroCcpIHtcXG5cXHR2YXIgZXhwPScuZXhwLWRlc2MnO1xcblxcdHZhciBXRUJfVVJMID0gXFxcImh0dHBzOi8vd3d3LnhpbnBpYW5jaGFuZy5jb20vdXNlci9leHAvaWQtXFxcIitJRCtcXFwiL2NhdGVpZC0wL3BhZ2UtXFxcIisgUEFHRTtcXG59XFxudmFyIHdlYl9saXN0cyA9IHJlcXVlc3QoV0VCX1VSTCx7aGVhZGVyczogeyAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSd9fSk7XFxud2ViX2xpc3RzID0gcGRmYSh3ZWJfbGlzdHMsIFxcXCIuZXhwLWNvbiYmbGlcXFwiKVxcbmlmICh3ZWJfbGlzdHMubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0Zm9yICh2YXIgaSBpbiB3ZWJfbGlzdHMpIHtcXG5cXHRcXHRzZXRQYWdlVGl0bGUocGRmaCh3ZWJfbGlzdHNbaV0sICcuZXhwLXRpdGxlJiZUZXh0JykpXFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdFxcdHRpdGxlOiBwZGZoKHdlYl9saXN0c1tpXSwgJy5leHAtdGl0bGUmJlRleHQnKSxcXG5cXHRcXHRcXHRkZXNjOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArIHBkZmgod2ViX2xpc3RzW2ldLCBleHArJyYmVGV4dCcpICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdHBpY191cmw6IHBkKHdlYl9saXN0c1tpXSwgJ2ltZyYmX3NyYycpICsgJ0BSZWZlcmVyPScgKyBwZCh3ZWJfbGlzdHNbaV0sICdpbWcmJl9zcmMnKSxcXG5cXHRcXHRcXHR1cmw6IHBkKHdlYl9saXN0c1tpXSwgJ2xpJiZhJiZocmVmJykgK1xcblxcdFxcdFxcdFxcdGBAcnVsZT1qczogbGV0IGQgPSBbXTtkLnB1c2goe3RpdGxlOnBkZmgoZ2V0UmVzQ29kZSgpLCcuY29udGVudCYmSHRtbCcpLGNvbF90eXBlOlxcXCJyaWNoX3RleHRcXFwifSk7c2V0UmVzdWx0KGQpO2AsXFxuXFx0XFx0fSk7XFxuXFx0fVxcbn0gZWxzZSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pe26Ze05oiz6L2s5o2iXCIsXCJwYXRoXCI6XCLml7bpl7TmiLPovazmjaJcIixcInJ1bGVcIjpcImZ1bmN0aW9uIHRpbWVzdGFtcFRvVGltZSh0bSwgdHMpIHtcXG5cXHRcXHR1bmRlZmluZWRcXG5cXHRcXHR2YXIgZGF0ZSA9IG5ldyBEYXRlKHRtICogMTAwMCk7IC8v5pe26Ze05oiz5Li6MTDkvY3pnIAqMTAwMO+8jOaXtumXtOaIs+S4ujEz5L2N55qE6K+d5LiN6ZyA5LmYMTAwMFxcblxcdFxcdHZhciBZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nO1xcblxcdFxcdHZhciBNID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcblxcdFxcdHZhciBEID0gZGF0ZS5nZXREYXRlKCk7XFxuXFx0XFx0dmFyIGggPSAnIHwgJyArIGRhdGUuZ2V0SG91cnMoKSArICc6JztcXG5cXHRcXHR2YXIgbSA9IGRhdGUuZ2V0TWludXRlcygpO1xcblxcdFxcdGlmKG08MTApIG0gPSAnMCcrbTtcXG5cXHRcXHRtID0gbSArICc6J1xcblxcdFxcdHZhciBzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XFxuXFx0XFx0aWYoczwxMCkgcyA9ICcwJytzO1xcblxcdFxcdGlmICh0cyA9PSAwKSByZXR1cm4gWSArIE0gKyBEO1xcblxcdFxcdGlmICh0cyA9PSAxKSByZXR1cm4gWSArIE0gKyBEICsgaCArIG0gKyBzO1xcblxcdH1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vYXBwaW1nLmRiYW5rY2RuLmNvbS9hcHBsaWNhdGlvbi9pY29uMTQ0Lzg1ZWJiYWM4MGI1MzQ4NzY5NWI4MzU4N2I5YTVlMTAzLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment