xiaomianao666

小程序:𝐒𝐮𝐩𝐣𝐚𝐯

Apr 12th, 2025
489
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@𝐒𝐮𝐩𝐣𝐚𝐯@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi8J2QkvCdkK7wnZCp8J2Qo/CdkJrwnZCvIiwiYXV0aG9yIjoiUiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vc3VwamF2LmNvbS96aC8jI2Z5cGFnZSIsInZlcnNpb24iOjIwMjUwMzMxMSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuICAgIGFkZExpc3RlbmVyKFwib25DbG9zZVwiLCAoKSA9PiB7XG4gICAgICAgIGNsZWFyTXlWYXIoXCJuZXh0UGFnZVwiKTtcbiAgICB9KTtcbi8qXG5hZGRMaXN0ZW5lcihcIm9uUmVmcmVzaFwiLCAoKSA9PiB7XG4gICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xufSk7XG4qL1xudmFyIGQgPSBbXVxuLy92YXIgcmVzID0gW11cbk1ZX1VSTCA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdXG52YXIgdHJ1ZV91cmwgPSBnZXRNeVZhcihcInVybFwiLCBNWV9VUkwpO1xubGV0IG5leHRQYWdlID0gZ2V0TXlWYXIoXCJuZXh0UGFnZVwiLCBcIlwiKTtcbmlmIChuZXh0UGFnZSAmJiBNWV9QQUdFID4gMSkge1xuICAgIHRydWVfdXJsID0gbmV4dFBhZ2U7XG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XG4gICAgdHJ1ZV91cmwgPSBcIuayoeacieS4i+S4gOmhteWTpvCfmJFcIlxufVxuLy92YXIgaHRtbCA9IGZldGNoKHRydWVfdXJsLCBKU09OLnBhcnNlKGdldE15VmFyKCdoZWFkZXJzJykpKVxuLy92YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyh0cnVlX3VybClcblxubG9nKHRydWVfdXJsKVxuXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9mZXRjaCcsIHt9KSlcbiAgICAucnVsZSk7XG52YXIgaHRtbCA9IFN1cGZldGNoKHRydWVfdXJsKVxuXG4gICAgLy9sb2coaHRtbClcbnRyeSB7XG4gICAgbGV0IG5leHRVcmwgPSBwZChodG1sLCBcIi5wYWdpbmF0aW9uJiYuYWN0aXZlK2xpJiZhJiZocmVmXCIpO1xuICAgIHB1dE15VmFyKFwibmV4dFBhZ2VcIiwgbmV4dFVybCk7XG59IGNhdGNoIChlKSB7XG4gICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xuICAgIC8vIHRvYXN0KFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlLCBjb2xvcikge1xuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cIicgKyBjb2xvciArICdcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xufVxuXG4kLnJlcXVpcmUoXCJjYXRlZ29yeVwiKSgpXG5cbmlmIChodG1sLmluY2x1ZGVzKFwi6K+356iN5YCZ4oCmXCIpIHx8IGh0bWwuaW5jbHVkZXMoXCJKdXN0IGEgbW9tZW50XCIpIHx8IGh0bWwuaW5jbHVkZXMoXCI8dGl0bGU+RXJyb3I8L3RpdGxlPlwiKSB8fCAoIWh0bWwgJiYgTVlfUEFHRSA9PSAxKSkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArICflhYjngrnmraTojrflj5ZDb29raWXlkI7vvIzlho3lm57liLDmraTpobXpnaInLmZvbnRjb2xvcignI0ZGMDBGRicpLmJpZygpLFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCh0cnVlX3VybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiZmV0Y2hcIiwgXCIxXCIpOyAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlX3VybCAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSx0cnVlX3VybCksXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArICfngrnmraTliLfmlrAnLmZvbnRjb2xvcignI0ZGMDAwMCcpLmJpZygpLFxuICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICB9KSxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfVxuICAgIH0sIC8qe1xuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyAnPHU+KOeos+Wumivlv6sp5py65Zy6PC91PicuZm9udGNvbG9yKCcjRkY2Njk5JykuYmlnKCkuYmlnKCkgKyAnXFxueHjlhYMvVC/mnIjvvIzmnIDkvY545YWDL1QnLmZvbnRjb2xvcignZ3JlZW4nKS5iaWcoKSxcbiAgICAgICAgZGVzYzogJ+mmmea4r+iKgueCueWPr+S7pei/h3N1cGphdi5jb23pqozor4EnLFxuICAgICAgICB1cmw6IFwiXCIsXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9Ki8pO1xufVxuXG52YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7XG59XG5cbmlmICh0cnVlX3VybCA9PSBcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cIikge1xuICAgIGlmIChNWV9QQUdFID09IDEpIHtcbiAgICAgICAgJC5yZXF1aXJlKFwiaG9tZVwiKVxuICAgIH1cbn0gZWxzZSBpZiAoL3RhZ3xtYWtlcnxjYXN0Ly50ZXN0KHRydWVfdXJsKSkge1xuICAgICQucmVxdWlyZShcInRhYnNcIilcbn0gZWxzZSB7XG4gICAgJC5yZXF1aXJlKFwibGlzdFwiKSgpXG59XG4vL3NldFByZVJlc3VsdChyZXMpXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9zdXBqYXYuY29tL3poL3BhZ2UvZnlwYWdlP3M9KioiLCJncm91cCI6IuiHqueUsSIsInNlYXJjaEZpbmQiOiJqczpcbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKC9mYzItP3Bwdi0/fGZjMi0/L2ksXCJcIilcbiQucmVxdWlyZShcInlpXCIpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiLypcbmlmICghZ2V0TXlWYXIoJ2hlYWRlcnMnKSl7XG5wdXRNeVZhcignaGVhZGVycycse2hlYWRlcnM6e1wiQ29va2llXCI6XCJjZl9jbGVhcmFuY2U9M1N3bi5JemNhUTdnZXBjTUhvS2ttTTNic19KMjZ4LkJXVzZIQlRsVXR6MC0xNzA1MjY2MDMwLTAtMi1hNjU5YjM4Yy42MzljODVkYy5mMTU4ZWM2Yy0xNjAuMi4xNzA1MjY2MDMwXCIsXCJVc2VyLUFnZW50XCI6XCJNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE2XzRfMSBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vMTYuNCBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMVwiLFwiUmVmZXJlclwiOlwiaHR0cHM6Ly9zdXBqYXYuY29tL1wifX0pXG59XG4qL1xudmFyIOabtOaWsOmXtOmalCA9IDFcbmxldCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKVxuXG5mdW5jdGlvbiBjb3VudENyb3NzZWREYXlzKGRhdGUxLCBkYXRlMikge1xuICAgIHZhciBkMSA9IG5ldyBEYXRlKE51bWJlcihkYXRlMSkpO1xuICAgIHZhciBkMiA9IG5ldyBEYXRlKE51bWJlcihkYXRlMikpO1xuICAgIC8vIOiOt+WPluWujOaVtOaXpeacn+mDqOWIhlxuICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGQxLmdldEZ1bGxZZWFyKCksIGQxLmdldE1vbnRoKCksIGQxLmdldERhdGUoKSk7XG4gICAgdmFyIGVuZCA9IG5ldyBEYXRlKGQyLmdldEZ1bGxZZWFyKCksIGQyLmdldE1vbnRoKCksIGQyLmdldERhdGUoKSk7XG4gICAgLy8g5Yik5pat5byA5aeL5ZKM57uT5p2f5pel5pyfXG4gICAgdmFyIHRpbWVEaWZmZXJlbmNlID0gTWF0aC5hYnMoZW5kIC0gc3RhcnQpO1xuICAgIC8vIOiuoeeul+i3qOi2iueahOWkqeaVsFxuICAgIHZhciBjcm9zc2VkRGF5cyA9IE1hdGguY2VpbCh0aW1lRGlmZmVyZW5jZSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgcmV0dXJuIGNyb3NzZWREYXlzOyAvLyDov5Tlm57ot6jotornmoTlpKnmlbBcbn1cbnZhciDot6jotorlpKnmlbAgPSBjb3VudENyb3NzZWREYXlzKHRpbWUsIGdldEl0ZW0oJ3RpbWUnLCBuZXcgRGF0ZSgpLmdldFRpbWUoKSkpXG4vL2xvZyjot6jotorlpKnmlbApXG5pZiAo6Leo6LaK5aSp5pWwID49IOabtOaWsOmXtOmalCkge1xuICAgIHNldEl0ZW0oJ3RpbWUnLCB0aW1lKTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsdmVyc2lvbigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBNWV9SVUxFLnZlcnNpb25cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gJ3VuZGVyZmluZCdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW90ZXZlcnNpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBldmFsKGZldGNoKGJhc2U2NERlY29kZSgnYUhSMGNITTZMeTl5WVhjdVoybDBhSFZpZFhObGNtTnZiblJsYm5RdVkyOXRMMEZ3YjJ4c2IxSnBiMjh2VWk5dFlYTjBaWEl2U0dsclpYSXYnKSArIE1ZX1JVTEUudGl0bGUpKVxuICAgICAgICAgICAgcmV0dXJuIEFwb2xsby52ZXJzaW9uXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuICd1bmRlcmZpbmQnXG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKChyZW1vdGV2ZXJzaW9uKCkgIT0gJ3VuZGVyZmluZCcgJiYgcmVtb3RldmVyc2lvbigpICE9IGxvY2FsdmVyc2lvbigpKSB8fCBsb2NhbHZlcnNpb24oKSA9PSAndW5kZXJmaW5kJykge1xuICAgICAgICBzaG93TG9hZGluZygn5qOA5rWL5Yiw5paw54mI5pys77yM5pu05paw5LitLi4uJylcbiAgICAgICAgLy9qYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDMwMDApO1xuICAgICAgICBoaWRlTG9hZGluZygpXG4gICAgICAgIGV2YWwoZmV0Y2goYmFzZTY0RGVjb2RlKCdhSFIwY0hNNkx5OXlZWGN1WjJsMGFIVmlkWE5sY21OdmJuUmxiblF1WTI5dEwwRndiMnhzYjFKcGIyOHZVaTl0WVhOMFpYSXZTR2xyWlhJdicpICsgTVlfUlVMRS50aXRsZSkpO1xuICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAn5pu05paw5o+Q56S6JyxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfmo4DmtYvliLDlsI/nqIvluo/niYjmnKzkvY7kuo7mnI3liqHlmajniYjmnKzvvIzmmK/lkKbnq4vljbPmm7TmlrAnLFxuICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygodXApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQYXN0ZSh1cCk7XG4gICAgICAgICAgICB9LCBBcG9sbG8udXBkYXRlKSxcbiAgICAgICAgICAgIGNhbmNlbDogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9XG59IiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuexu1wiLFwicGF0aFwiOlwiY2F0ZWdvcnlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9ICgpID0+IHtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNvcnRcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInBhZ2lcXFwiKTtcXG4gICAgICAgIC8vIGNsZWFyTXlWYXIoXFxcInVybFxcXCIpOyAgIFxcbiAgICB9KSk7XFxuICAgIC8qYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNvcnRcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInBhZ2lcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVybFxcXCIpO1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwidGFiXFxcIik7XFxuICAgIH0pOyovXFxuXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3lpeWFuJywge30pKS5ydWxlKTtcXG5cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgICAgIHVybDogJC50b1N0cmluZygocikgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQudHJpbSgpICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigna2V5d29yZCcsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWFyY2hVcmwgPSBcXFwiaHR0cHM6Ly9zdXBqYXYuY29tL3poLz9zPVxcXCIgKyBpbnB1dC5yZXBsYWNlKC9mYzItP3Bwdi0/fGZjMi0/L2ksIFxcXCJcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIHNlYXJjaFVybCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBjb25maXJtOi8vJHtyfS5qczonaGlrZXI6Ly9lbXB0eSdgXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBkYXlfc2F5KSxcXG4gICAgICAgICAgICBkZXNjOiBkYXlfc2F5LCAvLyAn5pu+57uP5rKn5rW36Zq+5Li65rC0LOmZpOWNtOW3q+WxseS4jeaYr+S6kScsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcigna2V5d29yZCcsICcnKSB8fCBcXFwiXFxcIixcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciB0YWJzID0gcGRmYShodG1sLCBcXFwiLm5hdiYmbGk6bm90KGxpOmhhcyguc3ViLW1lbnUpKTpub3QoOmhhcyhhW3RhcmdldF0pKTpub3QoOmhhcyhhW3RpdGxlXSkpXFxcIik7XFxuICAgICAgICBmb3IgKHZhciBpIGluIHRhYnMpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHRhYnNbaV0sICdUZXh0JylcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3RhYicsICcwJykgPT0gaSA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwZCh0YWJzW2ldLCAnYSYmaHJlZicpICsgJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3RhYicsIGkpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGlmIChpID09IDUpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBcXG4gICAgdmFyIHBhZ2luYXRpb24gPSBwZGZhKGh0bWwsIFxcXCIucGFnaW5hdGlvbiYmbGk6bm90KC5wcmV2LXBhZ2UpOm5vdCgubmV4dC1wYWdlKVxcXCIpO1xcbiAgICB2YXIgY3VycmVudHUgPSBwZGZoKGh0bWwsIFxcXCJsaW5rW2hyZWZsYW5nPXpoXSYmaHJlZlxcXCIpXFxuXFxuICAgIHZhciBmaXJzdHUgPSBjdXJyZW50dSA/IGN1cnJlbnR1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIlxcXCIpIDogXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cXFwiXFxuICAgIHZhciBhY3RpdmUgPSBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuICAgIHZhciBsYXN0dSA9IHBkZmgocGFnaW5hdGlvbi5wb3AoKSwgXFxcImEmJmhyZWZcXFwiKSB8fCBjdXJyZW50dVxcbiAgICB2YXIgbGFzdHAgPSBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuXFxuICAgIGlmICghY3VycmVudHUuaW5jbHVkZXMoXFxcInBvcHVsYXJcXFwiKSkge1xcbiAgICAgICAgbGFzdHUgPSBsYXN0dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgKGxhc3RwIC0gMCkpXFxuICAgICAgICBsYXN0cCA9IGxhc3RwIC0gMFxcbiAgICB9XFxuXFxuICAgIHZhciBsb25nQ2xpY2sgPSBbe1xcbiAgICAgICAgdGl0bGU6IFxcXCLpppbpobVcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGZpcnN0dSkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBmaXJzdHUpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSwgZmlyc3R1KSxcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLkuIrpobVcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGFjdGl2ZSwgY3VycmVudHUpID0+IHtcXG4gICAgICAgICAgICBpZiAoYWN0aXZlID4gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIganVtcHUgPSBjdXJyZW50dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgKHBhcnNlSW50KGFjdGl2ZSkgLSAxKSlcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIGFjdGl2ZSwgY3VycmVudHUpLFxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuesrFxcXCIgKyBhY3RpdmUgKyBcXFwi6aG1XFxcIixcXG4gICAgICAgIGpzOiBcXFwiXFxcIixcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLot7PovaxcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGxhc3R1LCBsYXN0cCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6Zmk6aaW6aG15ZKM5bC+6aG15LmL5aSW55qE6aG156CBJykuaW5wdXQoKGxhc3R1LCBsYXN0cCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID4gMCAmJiBwYXJzZUludChpbnB1dCkgPD0gcGFyc2VJbnQobGFzdHApICYmIHBhcnNlSW50KGlucHV0KSAlIDEgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6aG156CBXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgfSxsYXN0dSwgbGFzdHApLFxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuWwvumhtVxcXCIgKyBsYXN0cCxcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChsYXN0cCwgbGFzdHUpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgbGFzdHUpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSwgbGFzdHAsIGxhc3R1KSxcXG4gICAgfV07XFxuXFxuICAgIHB1dE15VmFyKFxcXCJsb25nQ2xpY2tcXFwiLGxvbmdDbGljaylcXG5cXG4gICAgdmFyIHBhZ2k7XFxuICAgIGlmIChhY3RpdmUgPT0gMSkge1xcbiAgICAgICAgcGFnaSA9IDBcXG4gICAgfSBlbHNlIGlmIChhY3RpdmUgPT0gbGFzdHApIHtcXG4gICAgICAgIHBhZ2kgPSAyXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdpID0gMVxcbiAgICB9XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIiwgXFxcIui3s+mhtTpcXFwiICsgYWN0aXZlLCBcXFwi5bC+OlxcXCIgKyBsYXN0cF1cXG4gICAgdmFyIHVybHMgPSBbZmlyc3R1LCBNWV9VUkwsIGxhc3R1XVxcbiAgICBpZiAoY3VycmVudHUgIT09IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIiAmJiB0cnVlX3VybCAhPSBcXFwi5rKh5pyJ5LiL5LiA6aG15ZOm8J+YkVxcXCIpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGogaW4gdGl0bGUpIHtcXG4gICAgICAgICAgICB2YXIgdXJsID0gdXJsc1tqXSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuXFxuICAgICAgICAgICAgaWYgKGogPT0gMSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSAkKCcnLCAn6Zmk6aaW6aG15ZKM5bC+6aG15LmL5aSW55qE6aG156CBJykuaW5wdXQoKGxhc3R1LCBsYXN0cCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGlucHV0KSA+IDAgJiYgcGFyc2VJbnQoaW5wdXQpIDw9IHBhcnNlSW50KGxhc3RwKSAmJiBwYXJzZUludChpbnB1dCkgJSAxID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganVtcHUgPSBsYXN0dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFnaSA9PSBqID8gZ2V0SGVhZCh0aXRsZVtqXSwgJyNGRjY2OTknKSA6IHRpdGxlW2pdLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICB2YXIgc290dCA9IGN1cnJlbnR1LnJlcGxhY2UoLy4qPyg9KC4qKXwkKS8sIFxcXCIkMlxcXCIpXFxuICAgICAgICB2YXIgc29ydCA9IHBkZmEoaHRtbCwgXFxcIi5zb3J0JiZhXFxcIik7XFxuICAgICAgICBzb3R0ID0gc290dCA9PT0gXFxcIlxcXCIgPyBwZGZoKHNvcnRbMF0sICdUZXh0JykudG9Mb3dlckNhc2UoKSA6IHNvdHQ7XFxuICAgICAgICBmb3IgKHZhciBqIGluIHNvcnQpIHtcXG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sICdUZXh0JylcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc290dCA9PSB0aXRsZS50b0xvd2VyQ2FzZSgpID8gZ2V0SGVhZCh0aXRsZSwgJyNGRjY2OTknKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBkKHNvcnRbal0sICdhJiZocmVmJykgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgailcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiX6KGoXCIsXCJwYXRoXCI6XCJsaXN0XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSAoKSA9PiB7XFxuICAgIHZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICB2YXIgaW1nID0gcGQoaXRlbSwgXFxcImltZyYmZGF0YS1vcmlnaW5hbFxcXCIpO1xcbiAgICAgICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCBcXFwiYSYmdGl0bGVcXFwiKS5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsIFxcXCLwn4eo8J+Hs1xcXCIpLnJlcGxhY2UoXFxcIltcXFxcdTY1ZTBcXFxcdTc4MDHnoLTop6NdXFxcIiwgXFxcIvCflKVcXFwiKS5yZXBsYWNlKFxcXCJbNEtdXFxcIiwgXFxcIvCflqVcXFwiKS5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsIFxcXCLwn4e68J+HuFxcXCIpLnJlcGxhY2UoXFxcIuOAkFN1cEpBVi3ni6zlrrbjgJFcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sIFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLywgXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFxcXCJhJiZocmVmXFxcIikgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogSlNPTi5wYXJzZShnZXRNeVZhcihcXFwibG9uZ0NsaWNrXFxcIixcXFwiXFxcIikpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbiAgICB9KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuagh+etvlwiLFwicGF0aFwiOlwidGFic1wiLFwicnVsZVwiOlwidmFyIGxpc3RzID0gcGRmYShodG1sLCBcXFwiLmNhdGVnb3J5cyYmLmNoaWxkXFxcIik7XFxubGlzdHMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdJyArIHBkZmgoaXRlbSwgXFxcImEmJlRleHRcXFwiKS5mb250Y29sb3IoZ2V0UmFuZ2VDb2xvcnMoKSksXFxuICAgICAgICB1cmw6IHBkZmgoaXRlbSwgXFxcImEmJmhyZWZcXFwiKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogSlNPTi5wYXJzZShnZXRNeVZhcihcXFwibG9uZ0NsaWNrXFxcIiwgXFxcIlxcXCIpKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJ2YXIgdGFiMSA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5yZWNvbW1lbmQnKTtcXG52YXIgdGFiMiA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5jb250ZW50cyYmLmNvbnRlbnQnKTtcXG52YXIgdGFicyA9IHRhYjEuY29uY2F0KHRhYjIpXFxudmFyIGNvbnRzID0gdGFic1xcblxcbmZvciAodmFyIGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXG4gICAgdmFyIGxpc3QgPSBwZGZhKGNvbnRzW2ldLCAnLnBvc3RzJiYucG9zdCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8bWlkZGxlPjxmb250IGNvbG9yPSNGRkE1MDA+JyArIHBkZmgodGFic1tpXSwgJy5hcmNoaXZlLXRpdGxlJiZUZXh0JykucmVwbGFjZShcXFwiKyBNb3JlXFxcIiwgXFxcIlxcXCIpICsgJzwvZm9udD48L21pZGRsZT4nLFxcbiAgICAgICAgZGVzYzogKGkgPT0gMCA/IFxcXCLplb/mjInlip/og71cXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFwiIDogXFxcIlxcXCIpICsgJzxtaWRkbGU+PGZvbnQgY29sb3I9cmVkPitcXFxcdFxcXFx0XFxcXHRcXFxcdCAg8J2QjPCdkKjwnZCr8J2QnjwvZm9udD48L21pZGRsZT4nLFxcbiAgICAgICAgaW1nOiBcXFwiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lJZW5YLnBuZ1xcXCIsXFxuICAgICAgICB1cmw6IHBkZmgodGFic1tpXSwgJ2EmJmhyZWYnKS5yZXBsYWNlKFxcXCJjb20vcG9wdWxhclxcXCIsXFxcImNvbS96aC9wb3B1bGFyXFxcIikgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndGFiJywgaSArIDEpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgaSksIC8vJyMjZnlwYWdlQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJ5aVxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgIGxvbmdDbGljazogaSA9PSAwID8gW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfor7vlj5bmupDnoIHpu5jorqTmlrnlvI8nLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZmV0Y2hcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfV0gOiBcXFwiXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICB2YXIgaW1nID0gaSA9PSAwID8gcGQobGlzdFtqXSwgJ2ltZyYmc3JjJykgOiBwZChsaXN0W2pdLCAnaW1nJiZkYXRhLW9yaWdpbmFsJyk7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGxpc3Rbal0sICdhJiZ0aXRsZScpLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIiwgXFxcIvCfh6jwn4ezXFxcIikucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLCBcXFwi8J+UpVxcXCIpLnJlcGxhY2UoXFxcIls0S11cXFwiLCBcXFwi8J+WpVxcXCIpLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIiwgXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcubWV0YS0tLmRhdGUmJlRleHQnKSxcXG4gICAgICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLywgXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyBcXFwi5oiR5piv5pyJ5bqV57q/55qEXFxcIi5mb250Y29sb3IoXFxcImdyZXlcXFwiKVxcbiAgICAgICAgICAgICAgICAuc21hbGwoKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqdcIixcInBhdGhcIjpcInlpXCIsXCJydWxlXCI6XCJqczpcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInlzb3J0XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ5dXJsXFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnXFxcIik7XFxuICAgIH0pKTtcXG52YXIgZCA9IFtdXFxuTVlfVVJMID0gZ2V0TXlWYXIoXFxcInl1cmxcXFwiLCBNWV9VUkwucmVwbGFjZSgvIyNcXFxcZCsvLCBcXFwiXFxcIikpO1xcbmxldCBuZXh0UGFnID0gZ2V0TXlWYXIoXFxcIm5leHRQYWdcXFwiLCBcXFwiXFxcIik7XFxuaWYgKG5leHRQYWcgJiYgTVlfUEFHRSA+IDEpIHtcXG4gICAgTVlfVVJMID0gbmV4dFBhZztcXG59IGVsc2UgaWYgKE1ZX1BBR0UgPiAxKSB7XFxuICAgIE1ZX1VSTCA9IFxcXCLmsqHmnInkuIvkuIDpobXlk6bwn5iRXFxcIlxcbn1cXG4vL3ZhciBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KE1ZX1VSTClcXG4vL3ZhciBodG1sID0gZmV0Y2goTVlfVVJMKVxcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2ZldGNoJywge30pKVxcbiAgICAucnVsZSk7XFxudmFyIGh0bWwgPSBTdXBmZXRjaChNWV9VUkwpXFxuXFxudHJ5IHtcXG4gICAgdmFyIG5leHRVcmxsID0gcGQoaHRtbCwgXFxcIi5wYWdpbmF0aW9uJiYuYWN0aXZlK2xpJiZhJiZocmVmXFxcIik7XFxuICAgIHB1dE15VmFyKFxcXCJuZXh0UGFnXFxcIiwgbmV4dFVybGwpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgY2xlYXJNeVZhcihcXFwibmV4dFBhZ1xcXCIpO1xcbiAgICAvLyB0b2FzdChcXFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXFxcIik7XFxufVxcbmxvZyhNWV9VUkwpXFxuXFxuLy9sb2coXFxcIuS4i+S4gOmhtSAg77yaXFxcIituZXh0UGFnKVxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUsIGNvbG9yKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIGNvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuaWYgKE1ZX1RZUEUgIT0gXFxcInNlYXJjaFxcXCIpIHtcXG4gICAgdmFyIHBhZ2luYXRpb24gPSBwZGZhKGh0bWwsIFxcXCIucGFnaW5hdGlvbiYmbGk6bm90KC5wcmV2LXBhZ2UpOm5vdCgubmV4dC1wYWdlKVxcXCIpO1xcbiAgICB2YXIgY3VycmVudHUgPSBwZGZoKGh0bWwsIFxcXCJsaW5rW2hyZWZsYW5nPXpoXSYmaHJlZlxcXCIpXFxuXFxuICAgIHZhciBmaXJzdHUgPSBNWV9VUkwucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiXFxcIilcXG4gICAgdmFyIGFjdGl2ZSA9IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG4gICAgdmFyIGxhc3R1ID0gcGRmaChwYWdpbmF0aW9uLnBvcCgpLCBcXFwiYSYmaHJlZlxcXCIpIHx8IE1ZX1VSTFxcbiAgICB2YXIgbGFzdHAgPSBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuXFxuICAgIHZhciBsb25nQ2xpY2sgPSBbe1xcbiAgICAgICAgdGl0bGU6IFxcXCLpppbpobVcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGZpcnN0dSkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgZmlyc3R1KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIGZpcnN0dSksXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LiK6aG1XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChhY3RpdmUsIGN1cnJlbnR1KSA9PiB7XFxuICAgICAgICAgICAgaWYgKGFjdGl2ZSA+IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gY3VycmVudHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChwYXJzZUludChhY3RpdmUpIC0gMSkpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwganVtcHUpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgYWN0aXZlLCBjdXJyZW50dSksXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi56ysXFxcIiArIGFjdGl2ZSArIFxcXCLpobVcXFwiLFxcbiAgICAgICAganM6IFxcXCJcXFwiLFxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIui3s+i9rFxcXCIsXFxuICAgICAgICBqczogJC50b1N0cmluZygobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJycsICfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAwICYmIHBhcnNlSW50KGlucHV0KSA8PSBwYXJzZUludChsYXN0cCkgJiYgcGFyc2VJbnQoaW5wdXQpICUgMSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIganVtcHUgPSBsYXN0dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sIFxcXCIvcGFnZS9cXFwiICsgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE6aG156CBXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgfSwgbGFzdHUsIGxhc3RwKSxcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLlsL7pobVcXFwiICsgbGFzdHAsXFxuICAgICAgICBqczogJC50b1N0cmluZygobGFzdHAsIGxhc3R1KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBsYXN0dSk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCBsYXN0cCwgbGFzdHUpLFxcbiAgICB9XTtcXG5cXG4gICAgdmFyIHBhZ2k7XFxuICAgIGlmIChhY3RpdmUgPT0gMSkge1xcbiAgICAgICAgcGFnaSA9IDBcXG4gICAgfSBlbHNlIGlmIChhY3RpdmUgPT0gbGFzdHApIHtcXG4gICAgICAgIHBhZ2kgPSAyXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdpID0gMVxcbiAgICB9XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIiwgXFxcIui3s+mhtTpcXFwiICsgYWN0aXZlLCBcXFwi5bC+6aG1OlxcXCIgKyBsYXN0cF1cXG4gICAgdmFyIHVybHMgPSBbZmlyc3R1LCBNWV9VUkwsIGxhc3R1XVxcbiAgICBpZiAoY3VycmVudHUgIT09IFxcXCJodHRwczovL3N1cGphdi5jb20vemgvXFxcIiAmJiBNWV9VUkwgIT0gXFxcIuayoeacieS4i+S4gOmhteWTpvCfmJFcXFwiKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBqIGluIHRpdGxlKSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHVybHNbal0gKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgailcXG5cXG4gICAgICAgICAgICBpZiAoaiA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9ICQoJycsICfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsIGxhc3RwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID4gMCAmJiBwYXJzZUludChpbnB1dCkgPD0gcGFyc2VJbnQobGFzdHApICYmIHBhcnNlSW50KGlucHV0KSAlIDEgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIgKyBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgbGFzdHUsIGxhc3RwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFnaSA9PSBqID8gZ2V0SGVhZCh0aXRsZVtqXSwgJyNGRjY2OTknKSA6IHRpdGxlW2pdLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHZhciBzb3J0ID0gcGRmYShodG1sLCBcXFwiLnNvcnQmJmFcXFwiKTtcXG4gICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sICdUZXh0JylcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd5c29ydCcsICcwJykgPT0gaiA/IGdldEhlYWQodGl0bGUsICcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogcGQoc29ydFtqXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3lzb3J0JywgailcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInl1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG52YXIgbGlzdCA9IHBkZmEoaHRtbCwgXFxcIi5wb3N0cyYmLnBvc3RcXFwiKTtcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIHZhciBpbWcgPSBwZChpdGVtLCBcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgXFxcImEmJnRpdGxlXFxcIikucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJbXFxcXHU2NWUwXFxcXHU3ODAx56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIikucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sIFxcXCIkMVxcXCIpLFxcbiAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFxcXCJhJiZocmVmXFxcIikgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBsb25nQ2xpY2tcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJlclwiLFwicnVsZVwiOlwianM6IHZhciBkID0gW11cXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpO1xcbmxvZyhNWV9VUkwpXFxuLy92YXIgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldyhNWV9VUkwpO1xcbi8vdmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpXFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvZmV0Y2gnLCB7fSkpXFxuICAgIC5ydWxlKTtcXG52YXIgaHRtbCA9IFN1cGZldGNoKE1ZX1VSTClcXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5Jywge30pKVxcbiAgICAucnVsZSk7XFxuXFxudmFyIHRpdGxlID0gcGRmaChodG1sLCAnLmFyY2hpdmUtdGl0bGUmJlRleHQnKVxcbiAgICAucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKVxcbiAgICAucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLCBcXFwi8J+UpVxcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJbNEtdXFxcIiwgXFxcIvCflqVcXFwiKVxcbiAgICAucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG52YXIg6K+G5Yir56CBID0gdGl0bGUubWF0Y2goL1xcXFx3Kyg/Oi18XylcXFxcdysoPzpcXFxccytcXFxcZCspP3xcXFxcdysoPyFcXFxcbilcXFxccytcXFxcdysvKVswXVxcbmlmICh0aXRsZSAhPT0gbnVsbCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9I2U1N2ExYT4nICsgdGl0bGUgKyAnPC9mb250Pjwvc21hbGw+JyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiICsgJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGl0bGUpID0+IHtcXG50aXRsZSA9IHRpdGxlLnJlcGxhY2UoL0ZDMlBQVlxcXFxzXFxcXGQrLyxcXFwiXFxcIikucmVwbGFjZSgvXFxcXHcrLVxcXFxkK1xcXFxzLyxcXFwiXFxcIilcXG4vL+WKqOaAgeWIt+aWsFxcbnZhciBkZXNjID0gZmluZEl0ZW0oJ3RyYW5zZGVzYycpLmRlc2NcXG4gICAgICAgICAgaWYoIWRlc2Mpe1xcbiAgICB2YXIgdHJhbnNsYXRlcyA9ICQucmVxdWlyZShcXFwidHJhbnNcXFwiKS50cmFuc2xhdGUodGl0bGUpXFxuICAgICAgdXBkYXRlSXRlbShcXFwidHJhbnNkZXNjXFxcIix7XFxuICAgICAgICAgIGRlc2M6ICfigJzigJzigJ3igJ0nK3RyYW5zbGF0ZXMuZm9udGNvbG9yKFxcXCJyZWRcXFwiKSxcXG59KVxcbn1lbHNle1xcbnVwZGF0ZUl0ZW0oXFxcInRyYW5zZGVzY1xcXCIse1xcbiAgICAgICAgICBkZXNjOiAnJyxcXG59KVxcbn0gICAgICAgXFxuICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIgICAgICBcXG4vKiAgICAgICBcXG4gICAgICAgICAgdmFyIHRyYW5zbGF0ZXMgPSAkLnJlcXVpcmUoXFxcInRyYW5zXFxcIikudHJhbnNsYXRlKHRpdGxlKSAgIFxcbiAgICAgICAgICByZXR1cm4gXFxcImNvbmZpcm06Ly9cXFwiICsgdHJhbnNsYXRlcyArIFxcXCIuanM6J2hpa2VyOi8vZW1wdHknIFxcXCIgICAqL1xcbiAgICAgICAgICAgICAgICB9LHRpdGxlKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgaWQ6ICd0cmFuc2Rlc2MnLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7dGl0bGU6ICfnvZHpobUnLCBqczogJC50b1N0cmluZygoKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwid2ViOi8vXFxcIiArIE1ZX1VSTFxcbiAgICAgICAgICAgICAgICAgICAgICAgfSl9LHt0aXRsZTogJ+WkjeWIticsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcImNvcHk6Ly9cXFwiICsgdGl0bGU7XFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX0se3RpdGxlOiAn55m+5bqm57+76K+RJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyBcXG4gICAgICAgIHJldHVybiBcXFwieDU6Ly9odHRwczovL2ZhbnlpLmJhaWR1LmNvbS8janAvemgvXFxcIiArIHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX0se3RpdGxlOiAnRGVlcGznv7vor5EnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJ4NTovL2h0dHBzOi8vd3d3LmRlZXBsLmNvbS96aC90cmFuc2xhdG9yLW1vYmlsZSNqYS96aC9cXFwiICsgdGl0bGVcXG4gICAgICAgICAgICAgICAgICAgICAgIH0sdGl0bGUpfSx7dGl0bGU6ICfosLfmrYznv7vor5EnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IFxcbiAgICAgICAgcmV0dXJuIFxcXCJ4NTovL2h0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20vP2hsPXpoLUNOJnNsPWphJnRsPXpoLUNOJnRleHQ9XFxcIiArIHRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICB9LHRpdGxlKX1dXFxufVxcbiAgICB9KVxcbn1cXG5cXG52YXIgaW1nID0gcGQoaHRtbCwgXFxcIi5wb3N0LW1ldGEmJmltZyYmc3JjXFxcIik7XFxuaWYgKGltZyAhPT0gbnVsbCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICB1cmw6IE1ZX1VSTCwvL1xcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflpI3liLblm77niYcnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaW1nKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImNvcHk6Ly9cXFwiICsgaW1nXFxuICAgICAgICAgICAgICAgIH0sIGltZylcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5omT5byA5Zu+54mHJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGltZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veWbvueJhycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpbWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW1nXFxuICAgICAgICAgICAgICAgIH0sIGltZylcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6IFxcXCI+PHNtYWxsPvCdkJLwnZCE8J2QkfCdkJXwnZCE8J2QkSDvvJrlt7LlsY/olL1KUEHnrYnml6DnlKjnur/ot688L3NtYWxsPjwvc3Bhbj4nLFxcbiAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIOivhuWIq+eggSxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLCAgICAgICAgXFxuICAgIH1cXG59KTtcXG5cXG4vL+W3sue7j+ino+aekOeahOe6v+i3r1xcbnZhciBQbGF5bGluZWQgPSBbXFxcIlRWXFxcIiwgXFxcIkZTVFxcXCIsIFxcXCJTVFxcXCIsIFxcXCJWT0VcXFwiLCBcXFwiRFNcXFwiLCBcXFwiU3RyZWFtdGFwZVxcXCIsIFxcXCJWVFVcXFwiXVxcblxcbmxldCBidG5zID0gcGRmYShodG1sLCAnLmJ0bnMmJi5idG5zdCcpXFxuaWYgKGJ0bnMubGVuZ3RoID09IDEpIHtcXG4gICAgYnRuc3QgPSBwZGZhKGJ0bnNbMF0sICdib2R5JiZkaXYnKVxcbn0gZWxzZSB7XFxuICAgIGJ0bnN0ID0gcGRmYShidG5zWzFdLCAnYm9keSYmLmNkLXNlcnZlcicpXFxufVxcbmJ0bnN0LmZvckVhY2goKGNkcywgaW5kZXgpID0+IHtcXG4gICAgbGV0IHNlcnZlciA9IHBkZmEoY2RzLCAnYm9keSYmYTpub3QoOm1hdGNoZXMoSlBBfEpTfFNTQnxOU3xNaXhkcm9wfE5pbmphU3RyZWFtfE1EfEdvVW5saW1pdGVkKSknKTsgLy/lsY/olL3nur/ot6/wn4iy8J+IsvCfiLLwn4iy8J+IsvCfiLJcXG4gICAgaWYgKGJ0bnN0Lmxlbmd0aCA+IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgXFxcIkNEXFxcIi5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpICsgKGluZGV4ICsgMSlcXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIikgKyBcXFwiOlxcXCIuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNlcnZlci5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICAgICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogUGxheWxpbmVkLmluZGV4T2YodGl0bGUpID49IDAgPyAnXFxcXHRcXFxcdFxcXFx04oCc4oCc4oCd4oCdJyArIHRpdGxlLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjMjc3Njg2XFxcIikgKyAnXFxcXHRcXFxcdFxcXFx0JzogJ+KAnOKAnOKAneKAnScgKyB0aXRsZS5ib2xkKCksXFxuICAgICAgICAgICAgdXJsOiBwZGZoKGxpc3QsICdhJiZkYXRhLWxpbmsnKSArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCY4oCYXFxcIivor4bliKvnoIErXFxcIuKAmeKAmVxcXCIsXFxuICAgIHVybDog6K+G5Yir56CBICsgJCgnI25vTG9hZGluZyMjaWdub3JlVmlkZW89dHJ1ZSMnKVxcbiAgICAgICAgLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL3lqP3J1bGU98J2QifCdkJrwnZCv8J2Qg/CdkIEmdXJsPVxcXCIgKyBnZXRQdWJsaWNJdGVtKCdqYXZkYjAnLCAnaHR0cHM6Ly9qYXZkYi5jb20nKSArIFxcXCIvc2VhcmNo77yf77yfZj1hbGzvvIbvvIZwYWdlPWZ5cGFnZe+8hu+8hnE9XFxcIiArIGlucHV0XFxuICAgIH0pLC8vXFxcImh0dHBzOi8vdC5tZS9TdXBqYXZjb20jaWdub3JlVmlkZW89dHJ1ZSNcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgIHBhZ2VUaXRsZTog6K+G5Yir56CBXFxuICAgIH1cXG59KVxcblxcbmxldCBpbmZvID0gcGRmYShodG1sLCAnLnBvc3QtbWV0YSYmLmNhdHMmJmEnKTtcXG5pbmZvLmZvckVhY2goKGxpc3QsIGluZGV4KSA9PiB7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgobGlzdCwgJ1RleHQnKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmRleCA9PSAxID8gJ+KAmOKAmE1ha2VyOuKAmeKAmScgKyB0aXRsZSA6IChpbmRleCA+IDEgPyAn4oCY4oCYQ2FzdDrigJnigJknICsgdGl0bGUgOiB0aXRsZSksXFxuICAgICAgICB1cmw6IHBkKGxpc3QsICdhJiZocmVmJykgKyAnIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZSxcXG5sb25nQ2xpY2s6IGluZGV4ID4gMSA/IFt7dGl0bGU6ICflpI3liLbmvJTlkZgnLCBqczogJC50b1N0cmluZygodGl0bGUpPT57IHJldHVybiBcXFwiY29weTovL1xcXCIgKyB0aXRsZTt9LHRpdGxlKX0se3RpdGxlOiAn6LC35q2M5pCc57SiJywganM6ICQudG9TdHJpbmcoKHRpdGxlKT0+eyByZXR1cm4gXFxcImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9XFxcIiArIHRpdGxlICtcXFwiIOi6q+mrmFxcXCI7fSx0aXRsZSl9LHt0aXRsZTogJ+eZvuW6puaQnOe0oicsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgcmV0dXJuIFxcXCJodHRwczovL3d3dy5iYWlkdS5jb20vcz93ZD1cXFwiICsgdGl0bGU7fSx0aXRsZSl9LHt0aXRsZTogJ+ejgeWKm+aQnOa8lOWRmCcsIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSk9PnsgXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9zb3U/cnVsZT3no4HlipvlkJsu566AJnA9ZnlwYWdlJnNlYXJjaFRlcm1zPVxcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgfSx0aXRsZSl9XSA6IFxcXCJcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBpZiAoaW5kZXggPT0gMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbn0pXFxubGV0IHRhZ3MgPSBwZGZhKGh0bWwsICcucG9zdC1tZXRhJiYudGFncyYmYScpO1xcbnRhZ3MuZm9yRWFjaCgobGlzdCwgaW5kZXgpID0+IHtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJwnICsgdGl0bGUgKyAn4oCd4oCdJyxcXG4gICAgICAgIHVybDogcGQobGlzdCwgJ2EmJmhyZWYnKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59KVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkZGRkZGO1xcXCI+8J2QmPCdkKjwnZCuIPCdkIzwnZCa8J2QsiDwnZCA8J2QpfCdkKzwnZCoIPCdkIvwnZCi8J2QpPCdkJ48L3NwYW4+JyxcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgIH1cXG59KTtcXG5cXG52YXIgbGlzdCA9IHBkZmEoaHRtbCwgXFxcIi5wb3N0cyYmLnBvc3RcXFwiKTtcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIHZhciBpbWcgPSBwZChpdGVtLCBcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgXFxcImEmJnRpdGxlXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsIFxcXCLwn4eo8J+Hs1xcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiW1xcXFx1NjVlMFxcXFx1NzgwMeegtOino11cXFwiLCBcXFwi8J+UpVxcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiWzRLXVxcXCIsIFxcXCLwn5alXFxcIilcXG4gICAgICAgIC5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsIFxcXCLwn4e68J+HuFxcXCIpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgZGVzYzogcGRmaChpdGVtLCBcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLywgXFxcIiQxXFxcIiksXFxuICAgICAgICB1cmw6IHBkZmgoaXRlbSwgXFxcImEmJmhyZWZcXFwiKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyBcXFwi5oiR5piv5pyJ5bqV57q/55qEXFxcIi5mb250Y29sb3IoXFxcImdyZXlcXFwiKVxcbiAgICAgICAgICAgICAgICAuc21hbGwoKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgLy9KUEHnrYnnur/ot6/mjILkuoblt7LlsY/olL3vvIzpnIDopoHlj6/ljrvkuoznuqfmgaLlpI1cXG4gICAgLy9UVue6v+i3ry8vRlNU57q/6LevLy9WT0Xnur/ot68vL1NU57q/6LevLy9EU+e6v+i3ry8vVlRV57q/6LevXFxuICAgIC8vIOWumuS5ieS4gOS4quino+aekOWIhui+qOeOh+eahOWHveaVsFxcbiAgICBmdW5jdGlvbiBnZXRSZXNvbHV0aW9uKG5hbWUpIHtcXG4gICAgICAgIHZhciBtYXRjaCA9IG5hbWUubWF0Y2goLyhcXFxcZCspLyk7IC8vIOaPkOWPlumZjee6p+WIhui+qOeOh1xcbiAgICAgICAgcmV0dXJuIG1hdGNoID8gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSA6IDA7IC8vIOWmguaenOayoeacieWMuemFjeWImei/lOWbnjBcXG4gICAgfVxcbiAgICB2YXIgaWQgPSBpbnB1dC5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpO1xcbiAgICB2YXIgdXJsID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/Yz0ke2lkfWA7XFxuICAgIHZhciByZWZlcmVyID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/bD0ke2lucHV0fWA7XFxuICAgIHZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2godXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiByZWZlcmVyLFxcbiAgICAgICAgfSxcXG4gICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgIH0pKS51cmwucmVwbGFjZSgvIy4qLywgXFxcIlxcXCIpXFxuICAgIGxvZyhsb2NhdGlvbilcXG5cXG4gICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJlbXR1cmJvdmlkXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGgVFbnur/ot69cXG4gICAgICAgIHZhciBkb21haW4gPSBnZXRIb21lKGxvY2F0aW9uKVxcbiAgICAgICAgdmFyIHBhdGggPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgcGxheVVybCA9IHBhdGgubWF0Y2goL2h0dHBzPy4qP1xcXFwubTN1OC8pWzBdO1xcbiAgICAgICAgdmFyIGdyb3VwX3F1YWxpdHkgPSBmZXRjaChwbGF5VXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICAvL2xvZyhncm91cF9xdWFsaXR5KVxcbiAgICAgICAgaGdoZXN0X3F1YWxpdHkgPSBncm91cF9xdWFsaXR5Lm1hdGNoKC9eW14jXFxcXHNdKyQvZ20pLm1hcCh2ID0+IHYuaW5jbHVkZXMoXFxcImh0dHBcXFwiKSA/IHYgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiIDogcGxheVVybC5yZXBsYWNlKC9bXlxcXFwvXSskLywgdikpXFxuICAgICAgICAvL2xvZyhoZ2hlc3RfcXVhbGl0eSlcXG4gICAgICAgIG5hbWVfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL1JFU09MVVRJT049Lio/XFxcXCwvZ20pLm1hcChuID0+IG4ucmVwbGFjZSgvUkVTT0xVVElPTj18XFxcXCwvZywgXFxcIlxcXCIpKVxcblxcbiAgICAgICAgLy8g5oyJ5YiG6L6o546H6ZmN5bqP5o6S5bqPIOWIhui+qOeOhyDmlbDnu4TvvIzlubblkIzml7bosIPmlbQgaGdoZXN0X3F1YWxpdHlcXG4gICAgICAgIHZhciBzb3J0ZWREYXRhID0gbmFtZV9xdWFsaXR5Lm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XFxuICAgICAgICAgICAgICAgIG5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogaGdoZXN0X3F1YWxpdHlbaW5kZXhdXFxuICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGdldFJlc29sdXRpb24oYi5uYW1lKSAtIGdldFJlc29sdXRpb24oYS5uYW1lKSk7XFxuICAgICAgICAvLyDliIblvIDmjpLluo/lkI7nmoQgbmFtZXMg5ZKMIHVybHMg5pWw57uEXFxuICAgICAgICB2YXIgc29ydGVkTmFtZXMgPSBzb3J0ZWREYXRhLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XFxuICAgICAgICB2YXIgc29ydGVkVXJscyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS51cmwpO1xcbiAgICAgICAgbGV0IHBsYXlsaXN0ID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG5hbWVzOiBzb3J0ZWROYW1lcyxcXG4gICAgICAgICAgICB1cmxzOiBzb3J0ZWRVcmxzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBBcnJheShoZ2hlc3RfcXVhbGl0eS5sZW5ndGgpLmZpbGwoe1xcbiAgICAgICAgICAgICAgICBSZWZlcmVyOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBwbGF5bGlzdDtcXG5cXG4gICAgfSBlbHNlIGlmICgvY2luZHlleWVmaW5hbHxmYzJzdHJlYW18bWljaGFlbGFwcGx5c29tZS8udGVzdChsb2NhdGlvbikpIHtcXG5cXG4gICAgICAgIC8v4pGhRlNU57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBzY3JpcHQgPSBwZGZoKGh0bWwsIFxcXCJib2R5PnNjcmlwdCYmSHRtbFxcXCIpLnJlcGxhY2UoXFxcImV2YWxcXFwiLCBcXFwiXFxcIilcXG4gICAgICAgIHZhciB1YXMgPSBldmFsKHNjcmlwdClcXG4gICAgICAgIHZhciBwbGF5VXJsID0gdWFzLm1hdGNoKC9cXFwiKGh0dHBzPy4qbTN1OC4qPylcXFwiLylbMV1cXG4gICAgICAgIHZhciBncm91cF9xdWFsaXR5ID0gZmV0Y2gocGxheVVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBsb2NhdGlvblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZ3JvdXBfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkuc3BsaXQoXFxcIlxcXFxuXFxcXG5cXFwiKVswXVxcbiAgICAgICAgLy8gbG9nKGdyb3VwX3F1YWxpdHkpXFxuICAgICAgICBoZ2hlc3RfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL15bXiNcXFxcc10rJC9nbSkubWFwKHYgPT4gdi5pbmNsdWRlcyhcXFwiaHR0cFxcXCIpID8gdiArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIgOiBwbGF5VXJsLnJlcGxhY2UoL1teXFxcXC9dKyQvLCB2KSlcXG4gICAgICAgIC8vbG9nKGhnaGVzdF9xdWFsaXR5KVxcbiAgICAgICAgbmFtZV9xdWFsaXR5ID0gZ3JvdXBfcXVhbGl0eS5tYXRjaCgvUkVTT0xVVElPTj0uKj9cXFxcLC9nbSkubWFwKG4gPT4gbi5yZXBsYWNlKC9SRVNPTFVUSU9OPXxcXFxcLC9nLCBcXFwiXFxcIikpXFxuXFxuICAgICAgICAvLyDmjInliIbovqjnjofpmY3luo/mjpLluo8g5YiG6L6o546HIOaVsOe7hO+8jOW5tuWQjOaXtuiwg+aVtCBoZ2hlc3RfcXVhbGl0eVxcbiAgICAgICAgdmFyIHNvcnRlZERhdGEgPSBuYW1lX3F1YWxpdHkubWFwKChuYW1lLCBpbmRleCkgPT4gKHtcXG4gICAgICAgICAgICAgICAgbmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBoZ2hlc3RfcXVhbGl0eVtpbmRleF1cXG4gICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gZ2V0UmVzb2x1dGlvbihiLm5hbWUpIC0gZ2V0UmVzb2x1dGlvbihhLm5hbWUpKTtcXG4gICAgICAgIC8vIOWIhuW8gOaOkuW6j+WQjueahCBuYW1lcyDlkowgdXJscyDmlbDnu4RcXG4gICAgICAgIHZhciBzb3J0ZWROYW1lcyA9IHNvcnRlZERhdGEubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKTtcXG4gICAgICAgIHZhciBzb3J0ZWRVcmxzID0gc29ydGVkRGF0YS5tYXAoaXRlbSA9PiBpdGVtLnVybCk7XFxuICAgICAgICBsZXQgcGxheWxpc3QgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgbmFtZXM6IHNvcnRlZE5hbWVzLFxcbiAgICAgICAgICAgIHVybHM6IHNvcnRlZFVybHMsXFxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEFycmF5KGhnaGVzdF9xdWFsaXR5Lmxlbmd0aCkuZmlsbCh7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IFxcXCJcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIHBsYXlsaXN0O1xcblxcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJzdHJlYW10YXBlXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGiU1Tnur/ot69cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmZXJlclxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICB2YXIgcGF0dGVybiA9IGh0bWwubWF0Y2goL1xcXFwoJyMoLiopJ1xcXFwpLylbMV1cXG4gICAgICAgIHZhciBzcmMgPSBcXFwidmFyIHNyY2xpbmsgPSBcXFwiICsgaHRtbC5tYXRjaChuZXcgUmVnRXhwKFxcXCInXFxcIiArIHBhdHRlcm4gKyBcXFwiLio/PShbXjtdKylcXFwiKSlbMV1cXG4gICAgICAgIGV2YWwoc3JjKVxcbiAgICAgICAgdmFyIGxpbmsgPSBcXFwiaHR0cHM6XFxcIiArIHNyY2xpbmsgKyBcXFwiJnN0cmVhbT0xXFxcIlxcbiAgICAgICAgdmFyIHBsYXlVcmwgPSBKU09OLnBhcnNlKGZldGNoKGxpbmssIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogbG9jYXRpb24sXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgfSkpLnVybFxcbiAgICAgICAgcmV0dXJuIHBsYXlVcmwgKyBcXFwiO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKC92b2UvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRpVZPRee6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgY3VycmVudFVybCA9IGh0bWwubWF0Y2goL2h0dHBzP1teJ10rLylbMF07XFxuICAgICAgICB2YXIgc291cmNlcyA9IGZldGNoKGN1cnJlbnRVcmwpLm1hdGNoKC92YXIgc291cmNlc1teXFxcXDtdKy8pWzBdICAgXFxuICAgICAgICBldmFsKHNvdXJjZXMpICAgXFxuICAgICAgICB2YXIgcGxheVVybCA9IGJhc2U2NERlY29kZShzb3VyY2VzLmhscykgXFxuICAgICAgICByZXR1cm4gcGxheVVybCArIFxcXCI7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAoL2QwMDAwZHxkb29kfGRzMnBsYXl8dmlkcGx5Ly50ZXN0KGxvY2F0aW9uKSkge1xcblxcbiAgICAgICAgLy/ikaNEU+e6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBwYXNzX21kNSA9IGdldEhvbWUobG9jYXRpb24pICsgaHRtbC5tYXRjaCgvXFxcXC9wYXNzX21kNVteXFxcIiddKy8pWzBdXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sLm1hdGNoKC9jb29raWVJbmRleC4qP1xcXFwnKC4qPylcXFxcJy8pWzFdXFxuICAgICAgICB2YXIgZGF0YSA9IGZldGNoKHBhc3NfbWQ1LCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5cXG4gICAgICAgIGZ1bmN0aW9uIG1ha2VQbGF5KHRva2VuKSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgYSA9IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdCA9IFxcXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGgsXFxuICAgICAgICAgICAgICAgICAgICBvID0gMDsgMTAgPiBvOyBvKyspXFxuICAgICAgICAgICAgICAgIGEgKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbikpO1xcbiAgICAgICAgICAgIHJldHVybiBhICsgXFxcIj90b2tlbj1cXFwiICsgdG9rZW4gKyBcXFwiJmV4cGlyeT1cXFwiICsgRGF0ZS5ub3coKTtcXG4gICAgICAgIH07XFxuICAgICAgICB2YXIgcGxheVVybCA9IGRhdGEgKyBtYWtlUGxheSh0b2tlbilcXG4gICAgICAgIHJldHVybiBwbGF5VXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJ2dGJlLnRvXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGkVlRV57q/6LevXFxuICAgICAgICBmdW5jdGlvbiBldmFsZGVjb2RlKHRleHQpIHtcXG4gICAgICAgICAgICB2YXIgY29kZSA9ICcnO1xcbiAgICAgICAgICAgIHZhciBzID0gdGV4dC5yZXBsYWNlKC9eZXZhbC8sICcnKVxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgncmV0dXJuIHAnLCAnY29kZSs9cCcpXFxuICAgICAgICAgICAgZXZhbChzKTtcXG4gICAgICAgICAgICByZXR1cm4gY29kZTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHZhciBob3N0UmVnZXggPSAodXJsKSA9PiB7XFxuICAgICAgICAgICAgdmFyIG1hdGNoID0gdXJsLm1hdGNoKC9eKD86aHR0cHM/OlxcXFwvXFxcXC8pPyg/Ond3d1xcXFwuKT8oW2EtekEtWjAtOS1dezEsNjN9XFxcXC4pK1thLXpBLVpdezIsNn0vaSk7XFxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMF0gOiB1cmw7XFxuICAgICAgICB9O1xcblxcbiAgICAgICAgbGV0IGhvc3QgPSBob3N0UmVnZXgocmVmZXJlcilcXG5cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IGhvc3QsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBpZnJhbWUgPSBwZGZhKGh0bWwsIFxcXCJpZnJhbWVcXFwiKTtcXG5cXG4gICAgICAgIGlmIChpZnJhbWUubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIGh0bWwgPSBmZXRjaChwZGZoKGlmcmFtZVswXSwgXFxcImlmcmFtZSYmc3JjXFxcIiksIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogaG9zdCxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuXFxuICAgICAgICB2YXIgc2NyaXB0cyA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJnNjcmlwdFxcXCIpO1xcbiAgICAgICAgbGV0IHNjcmlwdCA9IHNjcmlwdHMuZmlsdGVyKHggPT4geC5pbmNsdWRlcygnZXZhbCcpKS5tYXAobSA9PiBwZGZoKG0sIFxcXCJzY3JpcHQmJkh0bWxcXFwiKSlbMF07XFxuICAgICAgICBpZiAoc2NyaXB0ID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/ml6DmlbDmja4nXFxuICAgICAgICB9XFxuXFxuICAgICAgICBsZXQgbTN1OCA9IC9maWxlOlxcXCIoLio/KVxcXCIvZy5leGVjKGV2YWxkZWNvZGUoc2NyaXB0KSlbMV07XFxuICAgICAgICByZXR1cm4gbTN1ODtcXG5cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxvZyhcXFwi6Z2p5ZG95bCa5pyq5oiQ5YqfLOWQjOW/l+S7jemcgOWKquWKmyFcXFwiKVxcbiAgICAgICAgcmV0dXJuIFxcXCJjb25maXJtOi8v5ZKzLOacrOe6v+i3r+i/meS4quWcsOWdgOW5tuayoeacieino+aekO+8jOaXpeW/l+W3suaJk+WNsOWHuu+8jOaVrOivt+afpeeciy5qczonaGlrZXI6Ly9lbXB0eScgXFxcIlxcbiAgICB9XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue/u+ivkVwiLFwicGF0aFwiOlwidHJhbnNcIixcInJ1bGVcIjpcIiAgICAvL+e/u+ivkVxcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUodGV4dCkge1xcbiAgICAgICAgdmFyIHN3aXRjaHRyYW5zID0gZ2V0SXRlbSgnc3dpdGNodHJhbnMnLCAn5b2p5LqR5bCP6K+RJyk7XFxuICAgICAgICBpZiAoIHN3aXRjaHRyYW5zID09IHRydWUgfHwgc3dpdGNodHJhbnMgPT0gXFxcIuW9qeS6keWwj+ivkVxcXCIpIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICB2YXIgdG8gPSAnemgnXFxuICAgICAgICAgICAgICAgIHZhciBmcm9tID0gJ2F1dG8nXFxuXFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRfZGF0YShzb3VyY2VfbGFuZywgdGFyZ2V0X2xhbmcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb3NfdHlwZTogJ2lvcycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX2lkOiAnRjFGOTAyRjctMTc4MC00Qzg4LTg0OEQtNzFGMzVEODhBNjAyJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc190eXBlOiBzb3VyY2VfbGFuZyArICcyJyArIHRhcmdldF9sYW5nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiAndGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZDogNDI0MjM4MzM1LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tTnVtYmVyKCkge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTk5KSArIDEwMDAwMFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmQgKiAxMDAwXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zdF9kYXRhID0gaW5pdF9kYXRhKGZyb20sIHRvKVxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEuc291cmNlID0gdGV4dFxcbiAgICAgICAgICAgICAgICBwb3N0X2RhdGEucmVxdWVzdF9pZCA9IGdldFJhbmRvbU51bWJlcigpXFxuICAgICAgICAgICAgICAgIGxldCByZXMgPSBmZXRjaCgnaHR0cHM6Ly9pbnRlcnByZXRlci5jeWFwaS5jbi92MS90cmFuc2xhdG9yJywge1xcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd4LWF1dGhvcml6YXRpb24nOiAndG9rZW4gc3NkajI3M2tzZGl3aTkyM2JzZDknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyLWFnZW50JzogJ2NhaXl1bkludGVycHJldGVyLzUgQ0ZOZXR3b3JrLzE0MDQuMC41IERhcndpbi8yMi4zLjAnLFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHBvc3RfZGF0YSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzKVxcbiAgICAgICAgICAgICAgICAgICAgLnRhcmdldFxcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgXFxcIuOAkOKYge+4j+OAkVxcXCJcXG4gICAgICAgICAgICB9IGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2UgaWYgKHN3aXRjaHRyYW5zID09IFxcXCLlsI/niZvnv7vor5FcXFwiKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5uaXV0cmFucy5jb20vTml1VHJhbnNTZXJ2ZXIvdHJhbnNsYXRpb25cXFwiO1xcbiAgICAgICAgICAgICAgICB2YXIgYXBpID0gZ2V0SXRlbSgnYXBpJyk7XFxuICAgICAgICAgICAgICAgIGlmIChhcGkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0ICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmcgPSBcXFwiaHR0cHM6Ly90ZXN0Lm5pdXRyYW5zLmNvbS9OaXVUcmFuc1NlcnZlci9sYW5ndWFnZT9zcmNfdGV4dD1cXFwiICsgdGV4dCArIFxcXCImc291cmNlPXRleHRcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gSlNPTi5wYXJzZShmZXRjaChsYW5nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMDAwXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGFuZ3VhZ2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBvc3QodXJsLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY190ZXh0OiB0ZXh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogZnJvbSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBcXFwiemhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpa2V5OiBhcGksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEyMjNcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UocmVzdWx0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRndF90ZXh0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnRndF90ZXh0ICsgXFxcIuOAkPCfkK7jgJFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCLnv7vor5HlpLHotKXvvIzkvb/nlKjljp/mlodcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwi57+76K+R5aSx6LSl77yM5Y6f5paH5Li656m6XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLpooTlpITnkIbor7floavlhpnnv7vor5FhcGlcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2gge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIue/u+ivkeWksei0pe+8jOS9v+eUqOWOn+aWh1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRleHRcXG4gICAgICAgIH1cXG4gICAgfTtcXG5cXG4gICAgJC5leHBvcnRzLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA6KiAXCIsXCJwYXRoXCI6XCJ5aXlhblwiLFwicnVsZVwiOlwiLy9hdXRob3I657KJ5aa5XFxuZnVuY3Rpb24gc2F2ZV9kYXlfc2F5X2NhY2hlKCkge1xcbiAgICBsZXQgZGF5X3NheV9jYWNoZSA9IHt9XFxuICAgIGxldCBkYXlfc2F5X2h0bWwgPSBmZXRjaCgnaHR0cHM6Ly92MS5oaXRva290by5jbicsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6XFxuICAgICAgICAgICAgICAgICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIyLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxcbiAgICAgICAgfSxcXG4gICAgfSlcXG4gICAgZGF5X3NheV9odG1sID0gSlNPTi5wYXJzZShkYXlfc2F5X2h0bWwpXFxuICAgIGRheV9zYXlfY2FjaGVbJ2NvbnRlbnQnXSA9IGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbiAgICBkYXlfc2F5X2NhY2hlWyd0aW1lJ10gPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKVxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcignZGF5c2F5JywgZGF5X3NheV9jYWNoZSlcXG4gICAgcmV0dXJuIGRheV9zYXlfaHRtbFsnaGl0b2tvdG8nXVxcbn1cXG5cXG4gICAgbGV0IGRheV9zYXkgPSAnJ1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGRheV9zYXlfY2FjaGUgPSB7fVxcbiAgICAgICAgbGV0IGRheV90aW1lID0gMFxcbiAgICAgICAgaWYgKHN0b3JhZ2UwLmdldE15VmFyKCdkYXlzYXknKSkge1xcbiAgICAgICAgICAgIGRheV9zYXlfY2FjaGUgPSBzdG9yYWdlMC5nZXRNeVZhcignZGF5c2F5Jywge30pXFxuICAgICAgICAgICAgZGF5X3RpbWUgPSBkYXlfc2F5X2NhY2hlWyd0aW1lJ11cXG4gICAgICAgICAgICBpZiAoTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgLSBkYXlfdGltZSA+PSAxMCkge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBkYXlfc2F5ID0gZGF5X3NheV9jYWNoZVsnY29udGVudCddXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkYXlfc2F5ID0gc2F2ZV9kYXlfc2F5X2NhY2hlKClcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCB7XFxuICAgICAgICBkYXlfc2F5ID0gJydcXG4gICAgfVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5rqQ56CBXCIsXCJwYXRoXCI6XCJmZXRjaFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gU3VwZmV0Y2godXJsKSB7XFxuICAgIHZhciBodG1sO1xcbiAgICBpZiAoZ2V0TXlWYXIoXFxcImZldGNoXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgIGh0bWwgPSBmZXRjaCh1cmwpXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBodG1sID0gZmV0Y2hDb2RlQnlXZWJWaWV3KHVybClcXG4gICAgfVxcbiAgICByZXR1cm4gaHRtbDtcXG59XCJ9XSIsImljb24iOiJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvenJ3SzQud2VicCIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment