Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@✨𝐒𝐮𝐩𝐣𝐚𝐯✨@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi4pyo8J2QkvCdkK7wnZCp8J2Qo/CdkJrwnZCv4pyoIiwiYXV0aG9yIjoiQXJpZXMiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyNodHRwczovL3N1cGphdi5jb20vemgvIyNmeXBhZ2UiLCJ2ZXJzaW9uIjoyMDI0MDUxMSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICgpID0+IHtcbiAgICBjbGVhck15VmFyKFwibmV4dFBhZ2VcIik7XG59KTtcbi8qXG5hZGRMaXN0ZW5lcihcIm9uUmVmcmVzaFwiLCAoKSA9PiB7XG4gICAgY2xlYXJNeVZhcihcIm5leHRQYWdlXCIpO1xufSk7XG4qL1xudmFyIGQgPSBbXVxudmFyIHJlcyA9IFtdXG5NWV9VUkwgPSBNWV9VUkwuc3BsaXQoXCIjI1wiKVsxXVxubGV0IHRydWVfdXJsID0gZ2V0TXlWYXIoXCJ1cmxcIiwgTVlfVVJMKTtcbmxldCBuZXh0UGFnZSA9IGdldE15VmFyKFwibmV4dFBhZ2VcIiwgXCJcIik7XG5pZiAobmV4dFBhZ2UgJiYgTVlfUEFHRSA+IDEpIHtcbiAgICB0cnVlX3VybCA9IG5leHRQYWdlO1xufVxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCxKU09OLnBhcnNlKGdldE15VmFyKCdoZWFkZXJzJykpKVxubG9nKHRydWVfdXJsKVxuLy9sb2coaHRtbClcbnRyeSB7XG4gICAgbGV0IG5leHRVcmwgPSBwZChodG1sLCBcIi5wYWdpbmF0aW9uJiZsaVtjbGFzcz1hY3RpdmVdK2xpJiZhJiZocmVmXCIpO1xuICAgIGlmICghbmV4dFVybCA9PVwiXCIpXG4gICAgcHV0TXlWYXIoXCJuZXh0UGFnZVwiLCBuZXh0VXJsIHx8IFwiXCIpO1xufSBjYXRjaCAoZSkge1xuICAgIGNsZWFyTXlWYXIoXCJuZXh0UGFnZVwiKTtcbiAgIC8vIHRvYXN0KFwi5aW95YOP5rKh5pyJ5LiL5LiA6aG15LqG77yBXCIpO1xufVxuXG4vL2xvZyhcIuS4i+S4gOmhtSAg77yaXCIrbmV4dFBhZ2UpXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlLGNvbG9yKSB7XG4gICAgICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cIicgKyBjb2xvciArICdcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xuICAgICAgICAgfVxuXG4kLnJlcXVpcmUoXCJjYXRlZ29yeVwiKSgpXG5cbmlmICggdHJ1ZV91cmwgPT1cImh0dHBzOi8vc3VwamF2LmNvbS96aC9cIiApe1xuaWYgKE1ZX1BBR0UgPT0gMSkge1xuJC5yZXF1aXJlKFwiaG9tZVwiKVxufVxufSBlbHNlIGlmICgvdGFnfG1ha2VyfGNhc3QvLnRlc3QodHJ1ZV91cmwpKSB7XG4kLnJlcXVpcmUoXCJ0YWJzXCIpXG59IGVsc2Uge1xuJC5yZXF1aXJlKFwibGlzdFwiKSgpXG59XG5zZXRQcmVSZXN1bHQocmVzKVxuc2V0UmVzdWx0KGQpIiwic2VhcmNoX3VybCI6Imh0dHBzOi8vc3VwamF2LmNvbS96aC9wYWdlL2Z5cGFnZT9zPSoqIiwiZ3JvdXAiOiLinKgiLCJzZWFyY2hGaW5kIjoianM6XG4kLnJlcXVpcmUoXCJ5aVwiKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6ImlmICghZ2V0TXlWYXIoJ2hlYWRlcnMnKSl7XG5wdXRNeVZhcignaGVhZGVycycse2hlYWRlcnM6e1wiQ29va2llXCI6XCJjZl9jbGVhcmFuY2U9M1N3bi5JemNhUTdnZXBjTUhvS2ttTTNic19KMjZ4LkJXVzZIQlRsVXR6MC0xNzA1MjY2MDMwLTAtMi1hNjU5YjM4Yy42MzljODVkYy5mMTU4ZWM2Yy0xNjAuMi4xNzA1MjY2MDMwXCIsXCJVc2VyLUFnZW50XCI6XCJNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE2XzRfMSBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vMTYuNCBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMVwiLFwiUmVmZXJlclwiOlwiaHR0cHM6Ly9zdXBqYXYuY29tL1wifX0pXG59IiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuexu1wiLFwicGF0aFwiOlwiY2F0ZWdvcnlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9ICgpID0+IHtcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic29ydFxcXCIpOyAgIFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFwicGFnaVxcXCIpOyAgIFxcbiAgICAgICAvLyBjbGVhck15VmFyKFxcXCJ1cmxcXFwiKTsgICBcXG59KSk7XFxuYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNvcnRcXFwiKTsgICBcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInBhZ2lcXFwiKTsgICBcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVybFxcXCIpOyAgIFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFwidGFiXFxcIik7ICAgXFxufSk7XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICByZXMucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChyKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2tleXdvcmQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3NlYXJjaD9ydWxlPScgKyByICsgJyZzPScgKyBpbnB1dDtcXG4gICAgICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxcbiAgICAgICAgZGVzYzogJ+abvue7j+ayp+a1t+mavuS4uuawtCzpmaTljbTlt6vlsbHkuI3mmK/kupEnLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2tleXdvcmQnLCAnJykgfHwgXFxcIlxcXCIsXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICAgICAgdmFyIHRhYnMgPSBwZGZhKGh0bWwsIFxcXCIubmF2JiZsaTpub3QobGk6aGFzKC5zdWItbWVudSkpOm5vdCg6aGFzKGFbdGFyZ2V0XSkpOm5vdCg6aGFzKGFbdGl0bGVdKSlcXFwiKTtcXG4gICBmb3IgKHZhciBpIGluIHRhYnMpIHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgodGFic1tpXSwnVGV4dCcpXFxuICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd0YWInLCAnMCcpID09IGkgPyBnZXRIZWFkKHRpdGxlLCcjRkY2Njk5JykgOiB0aXRsZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogcGQodGFic1tpXSwgJ2EmJmhyZWYnKSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0YWInLCBpKVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgfSlcXG4gICAgaWYgKGk9PTUpIHtcXG4gICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSlcXG59XFxuICAgICB2YXIgcGFnaW5hdGlvbiA9IHBkZmEoaHRtbCwgXFxcIi5wYWdpbmF0aW9uJiZsaTpub3QoLnByZXYtcGFnZSk6bm90KC5uZXh0LXBhZ2UpXFxcIik7XFxuICAgIHZhciBjdXJyZW50dSA9IHBkZmgoaHRtbCxcXFwibGlua1tocmVmbGFuZz16aF0mJmhyZWZcXFwiKVxcblxcbiAgICB2YXIgZmlyc3R1ID0gY3VycmVudHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLFxcXCJcXFwiKVxcbiAgICB2YXIgYWN0aXZlID0gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKSA/IGN1cnJlbnR1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLylbMV0gOiAxO1xcbiAgICB2YXIgbGFzdHUgPSBwZGZoKHBhZ2luYXRpb24ucG9wKCksXFxcImEmJmhyZWZcXFwiKSB8fCBjdXJyZW50dVxcbiAgICB2YXIgbGFzdHAgPSBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gbGFzdHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuXFxuaWYgKCFjdXJyZW50dS5pbmNsdWRlcyhcXFwicG9wdWxhclxcXCIpKXtcXG4gICAgIGxhc3R1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIiArIChsYXN0cCAtIDIpKVxcbiAgICAgbGFzdHAgPSBsYXN0cCAtMlxcbn1cXG5cXG52YXIgcGFnaTtcXG4gICAgaWYgKGFjdGl2ZT09MSkge1xcbiAgICAgICBwYWdpID0gMFxcbn0gZWxzZSBpZiAoYWN0aXZlID09IGxhc3RwKSB7XFxuICAgICAgIHBhZ2kgPSAyXFxufSBlbHNlIHtcXG4gICAgICAgcGFnaSA9IDFcXG59XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIixcXFwi6Lez6aG1OlxcXCIgKyBhY3RpdmUsXFxcIuWwvumhtTpcXFwiICsgbGFzdHBdXFxuICAgIHZhciB1cmxzID0gW2ZpcnN0dSxNWV9VUkwsbGFzdHVdXFxuaWYgKCBjdXJyZW50dSAhPT0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cXFwiICl7XFxuICAgZm9yICh2YXIgaiBpbiB0aXRsZSkge1xcblxcbiAgICB2YXIgdXJsID0gdXJsc1tqXSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHsgICAgXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuXFxuICAgIGlmIChqPT0xKSB7XFxuICAgIHVybCA9ICQoJycsJ+mZpOmmlumhteWSjOWwvumhteS5i+WklueahOmhteeggScpLmlucHV0KChsYXN0dSxsYXN0cCk9PntcXG4gICAgICAgIGlmIChwYXJzZUludChpbnB1dCkgPiAxICYmIHBhcnNlSW50KGlucHV0KSA8IHBhcnNlSW50KGxhc3RwKSAmJiBwYXJzZUludChpbnB1dCkgJSAxID09IDApIHtcXG4gICAgICAgICAgICAgICAgdmFyIGp1bXB1ID0gbGFzdHUucmVwbGFjZSgvXFxcXC9wYWdlXFxcXC9cXFxcZCsvLCBcXFwiL3BhZ2UvXFxcIisgaW5wdXQpXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBqdW1wdSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbn0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTpobXnoIFcXFwifVxcbiAgICAgICAgICAgfSxsYXN0dSxsYXN0cCkgICAgICAgICAgICAgICAgICBcXG4gICAgICB9XFxuXFxuICAgICAgICByZXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhZ2kgPT0gaiA/IGdldEhlYWQodGl0bGVbal0sJyNGRjY2OTknKSA6IHRpdGxlW2pdLCAgICAgICAgICAgXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgfSlcXG59fVxcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgIHZhciBzb3R0ID0gY3VycmVudHUucmVwbGFjZSgvLio/KD0oLiopfCQpLyxcXFwiJDJcXFwiKVxcbiAgICAgdmFyIHNvcnQgPSBwZGZhKGh0bWwsIFxcXCIuc29ydCYmYVxcXCIpO1xcbiAgICAgc290dCA9IHNvdHQgPT09IFxcXCJcXFwiID8gcGRmaChzb3J0WzBdLCdUZXh0JykudG9Mb3dlckNhc2UoKSA6IHNvdHQ7XFxuICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sJ1RleHQnKVxcbiAgICAgICAgcmVzLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzb3R0ICA9PSB0aXRsZS50b0xvd2VyQ2FzZSgpID8gZ2V0SGVhZCh0aXRsZSwnI0ZGNjY5OScpIDogdGl0bGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICB1cmw6IHBkKHNvcnRbal0sICdhJiZocmVmJykgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGopXFxuICAgICAgICB9KVxcbn1cXG5cXG59XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YiX6KGoXCIsXCJwYXRoXCI6XCJsaXN0XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSAoKSA9PiB7XFxudmFyIGxpc3QgPSBwZGZhKGh0bWwsIFxcXCIucG9zdHMmJi5wb3N0XFxcIik7XFxubGlzdC5mb3JFYWNoKGl0ZW09PntcXG4gICB2YXIgaW1nID0gcGQoaXRlbSxcXFwiaW1nJiZkYXRhLW9yaWdpbmFsXFxcIik7XFxuICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLFxcXCJhJiZ0aXRsZVxcXCIpLnJlcGxhY2UoXFxcIlvkuK3mloflrZfluZVdXFxcIixcXFwi8J+HqPCfh7NcXFwiKS5yZXBsYWNlKFxcXCJb5peg56CB56C06KejXVxcXCIsXFxcIvCflKVcXFwiKS5yZXBsYWNlKFxcXCJbNEtdXFxcIixcXFwi8J+WpVxcXCIpLnJlcGxhY2UoXFxcIlvoi7HmloflrZfluZVdXFxcIixcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgZGVzYzogcGRmaChpdGVtLFxcXCIubWV0YS0tLmRhdGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICBpbWc6IGltZy5yZXBsYWNlKC8oaHR0cC4qP1xcXFwuKD86anBnfHdlYnB8cG5nfGpwZWcpKS4qLyxcXFwiJDFcXFwiKSxcXG4gICAgICAgICAgICAgICB1cmw6IHBkZmgoaXRlbSxcXFwiYSYmaHJlZlxcXCIpICsgJ0BydWxlPWpzOiQucmVxdWlyZShcXFwiZXJcXFwiKScsXFxuICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgICAgICAgICBleHRyYToge3BhZ2VUaXRsZTp0aXRsZX1cXG4gICAgICAgICB9KVxcbn0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5qCH562+XCIsXCJwYXRoXCI6XCJ0YWJzXCIsXCJydWxlXCI6XCJ2YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHtcXG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xcbn1cXG52YXIgbGlzdHMgPSBwZGZhKGh0bWwsIFxcXCIuY2F0ZWdvcnlzJiYuY2hpbGRcXFwiKTtcXG5saXN0cy5mb3JFYWNoKGl0ZW09PntcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnScgKyBwZGZoKGl0ZW0sXFxcImEmJlRleHRcXFwiKS5mb250Y29sb3IoZ2V0UmFuZ2VDb2xvcnMoKSksICAgICAgICAgXFxuICAgICAgICAgICAgICAgdXJsOiBwZGZoKGl0ZW0sXFxcImEmJmhyZWZcXFwiKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgICAgICAgfSlcXG59KVxcbmQucHVzaCh7Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJ9KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJ2YXIgdGFiMSA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5yZWNvbW1lbmQnKTsgXFxudmFyIHRhYjIgPSBwZGZhKGh0bWwsICdib2R5JiYuY29udGVudHMmJi5jb250ZW50Jyk7IFxcbnZhciB0YWJzID0gdGFiMS5jb25jYXQodGFiMilcXG52YXIgY29udHMgPSB0YWJzXFxuXFxuZm9yICh2YXIgaSA9IDA7IGkgPCBjb250cy5sZW5ndGg7IGkrKykge1xcbiAgICAgIHZhciBsaXN0ID0gcGRmYShjb250c1tpXSwgJy5wb3N0cyYmLnBvc3QnKTsgXFxuICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8bWlkZGxlPjxmb250IGNvbG9yPSNGRkE1MDA+JytwZGZoKHRhYnNbaV0sICcuYXJjaGl2ZS10aXRsZSYmVGV4dCcpLnJlcGxhY2UoXFxcIisgTW9yZVxcXCIsXFxcIlxcXCIpKyc8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgICAgIGRlc2M6ICc8bWlkZGxlPjxmb250IGNvbG9yPXJlZD4rXFxcXHRcXFxcdFxcXFx0XFxcXHQgIPCdkIzwnZCo8J2Qq/CdkJ48L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgICAgIGltZzogXFxcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JSWVuWC5wbmdcXFwiLFxcbiAgICAgICAgdXJsOiBwZCh0YWJzW2ldLCdhJiZocmVmJykgKyAnIyNmeXBhZ2VAcnVsZT1qczokLnJlcXVpcmUoXFxcInlpXFxcIiknLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtsaW5lVmlzaWJsZTpmYWxzZX1cXG4gICAgfSk7XFxuXFxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHsgICAgIFxcbiAgdmFyIGltZyA9ICBpID09IDA/IHBkKGxpc3Rbal0sJ2ltZyYmc3JjJykgOiBwZChsaXN0W2pdLCdpbWcmJmRhdGEtb3JpZ2luYWwnKTsgIFxcbiAgdmFyIHRpdGxlID0gcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKS5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsXFxcIvCfh6jwn4ezXFxcIikucmVwbGFjZShcXFwiW+aXoOeggeegtOino11cXFwiLFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsXFxcIvCflqVcXFwiKS5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcubWV0YS0tLmRhdGUmJlRleHQnKSxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgICAgICAgICAgICAgICBleHRyYToge3BhZ2VUaXRsZTp0aXRsZX1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qnXCIsXCJwYXRoXCI6XCJ5aVwiLFwicnVsZVwiOlwianM6XFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInlzb3J0XFxcIik7ICAgXFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ5dXJsXFxcIik7ICAgXFxuICAgICAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnXFxcIik7ICAgXFxufSkpO1xcbnZhciBkID0gW11cXG5NWV9VUkwgPSBnZXRNeVZhcihcXFwieXVybFxcXCIsIE1ZX1VSTC5yZXBsYWNlKC8jI1xcXFxkKy8sXFxcIlxcXCIpKTtcXG5sZXQgbmV4dFBhZyA9IGdldE15VmFyKFxcXCJuZXh0UGFnXFxcIiwgXFxcIlxcXCIpO1xcbmlmIChuZXh0UGFnICYmIE1ZX1BBR0UgPiAxKSB7XFxuICAgIE1ZX1VSTCA9IG5leHRQYWc7XFxufVxcbnZhciBodG1sID0gZmV0Y2goTVlfVVJMKVxcbnRyeSB7XFxuICAgIHZhciBuZXh0VXJsbCA9IHBkKGh0bWwsIFxcXCIubmV4dC1wYWdlJiZhJiZocmVmXFxcIik7XFxuICAgIGlmICghbmV4dFVybGwgPT1cXFwiXFxcIilcXG4gICAgcHV0TXlWYXIoXFxcIm5leHRQYWdcXFwiLCBuZXh0VXJsbCB8fCBcXFwiXFxcIik7XFxufSBjYXRjaCAoZSkge1xcbiAgICBjbGVhck15VmFyKFxcXCJuZXh0UGFnXFxcIik7XFxuICAgLy8gdG9hc3QoXFxcIuWlveWDj+ayoeacieS4i+S4gOmhteS6hu+8gVxcXCIpO1xcbn1cXG5sb2coTVlfVVJMKVxcblxcbi8vbG9nKFxcXCLkuIvkuIDpobUgIO+8mlxcXCIrbmV4dFBhZylcXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlLGNvbG9yKSB7XFxuICAgICAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBjb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxuICAgICAgICAgfVxcblxcbmlmKE1ZX1RZUEUgIT0gXFxcInNlYXJjaFxcXCIpIHtcXG4gICAgIHZhciBwYWdpbmF0aW9uID0gcGRmYShodG1sLCBcXFwiLnBhZ2luYXRpb24mJmxpOm5vdCgucHJldi1wYWdlKTpub3QoLm5leHQtcGFnZSlcXFwiKTtcXG4gICAgdmFyIGN1cnJlbnR1ID0gcGRmaChodG1sLFxcXCJsaW5rW2hyZWZsYW5nPXpoXSYmaHJlZlxcXCIpXFxuXFxuICAgIHZhciBmaXJzdHUgPSBjdXJyZW50dS5yZXBsYWNlKC9cXFxcL3BhZ2VcXFxcL1xcXFxkKy8sXFxcIlxcXCIpXFxuICAgIHZhciBhY3RpdmUgPSBjdXJyZW50dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pID8gY3VycmVudHUubWF0Y2goL1xcXFwvcGFnZVxcXFwvKFxcXFxkKykvKVsxXSA6IDE7XFxuICAgIHZhciBsYXN0dSA9IHBkZmgocGFnaW5hdGlvbi5wb3AoKSxcXFwiYSYmaHJlZlxcXCIpIHx8IGN1cnJlbnR1XFxuICAgIHZhciBsYXN0cCA9IGxhc3R1Lm1hdGNoKC9cXFxcL3BhZ2VcXFxcLyhcXFxcZCspLykgPyBsYXN0dS5tYXRjaCgvXFxcXC9wYWdlXFxcXC8oXFxcXGQrKS8pWzFdIDogMTtcXG5cXG52YXIgcGFnaTtcXG4gICAgaWYgKGFjdGl2ZT09MSkge1xcbiAgICAgICBwYWdpID0gMFxcbn0gZWxzZSBpZiAoYWN0aXZlID09IGxhc3RwKSB7XFxuICAgICAgIHBhZ2kgPSAyXFxufSBlbHNlIHtcXG4gICAgICAgcGFnaSA9IDFcXG59XFxuICAgIHZhciB0aXRsZSA9IFtcXFwi6aaWXFxcIixcXFwi6Lez6aG1OlxcXCIgKyBhY3RpdmUsXFxcIuWwvumhtTpcXFwiICsgbGFzdHBdXFxuICAgIHZhciB1cmxzID0gW2ZpcnN0dSxNWV9VUkwsbGFzdHVdXFxuaWYgKCBjdXJyZW50dSAhPT0gXFxcImh0dHBzOi8vc3VwamF2LmNvbS96aC9cXFwiICl7XFxuICAgZm9yICh2YXIgaiBpbiB0aXRsZSkge1xcblxcbiAgICB2YXIgdXJsID0gdXJsc1tqXSArICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGopID0+IHsgICAgXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcblxcbiAgICBpZiAoaj09MSkge1xcbiAgICB1cmwgPSAkKCcnLCfpmaTpppbpobXlkozlsL7pobXkuYvlpJbnmoTpobXnoIEnKS5pbnB1dCgobGFzdHUsbGFzdHApPT57XFxuICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXQpID4gMSAmJiBwYXJzZUludChpbnB1dCkgPCBwYXJzZUludChsYXN0cCkgJiYgcGFyc2VJbnQoaW5wdXQpICUgMSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIHZhciBqdW1wdSA9IGxhc3R1LnJlcGxhY2UoL1xcXFwvcGFnZVxcXFwvXFxcXGQrLywgXFxcIi9wYWdlL1xcXCIrIGlucHV0KVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwieXVybFxcXCIsIGp1bXB1KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxufSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOmhteeggVxcXCJ9XFxuICAgICAgICAgICB9LGxhc3R1LGxhc3RwKSAgICAgICAgICAgICAgICAgIFxcbiAgICAgIH1cXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhZ2kgPT0gaiA/IGdldEhlYWQodGl0bGVbal0sJyNGRjY2OTknKSA6IHRpdGxlW2pdLCAgICAgICAgICAgXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgfSlcXG59fVxcbn1cXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICB2YXIgc29ydCA9IHBkZmEoaHRtbCwgXFxcIi5zb3J0JiZhXFxcIik7XFxuICAgZm9yICh2YXIgaiBpbiBzb3J0KSB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKHNvcnRbal0sJ1RleHQnKVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3lzb3J0JywgJzAnKSA9PSBqID8gZ2V0SGVhZCh0aXRsZSwnI0ZGNjY5OScpIDogdGl0bGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICB1cmw6IHBkKHNvcnRbal0sICdhJiZocmVmJykgKyAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCd5c29ydCcsIGopXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ5dXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBqKVxcbiAgICAgICAgfSlcXG59XFxufVxcblxcbnZhciBsaXN0ID0gcGRmYShodG1sLCBcXFwiLnBvc3RzJiYucG9zdFxcXCIpO1xcbmxpc3QuZm9yRWFjaChpdGVtPT57XFxuICAgdmFyIGltZyA9IHBkKGl0ZW0sXFxcImltZyYmZGF0YS1vcmlnaW5hbFxcXCIpO1xcbiAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSxcXFwiYSYmdGl0bGVcXFwiKS5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsXFxcIvCfh6jwn4ezXFxcIikucmVwbGFjZShcXFwiW+aXoOeggeegtOino11cXFwiLFxcXCLwn5SlXFxcIikucmVwbGFjZShcXFwiWzRLXVxcXCIsXFxcIvCflqVcXFwiKS5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsXFxcIvCfh7rwn4e4XFxcIik7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXRlbSxcXFwiLm1ldGEtLS5kYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sXFxcIiQxXFxcIiksXFxuICAgICAgICAgICAgICAgdXJsOiBwZGZoKGl0ZW0sXFxcImEmJmhyZWZcXFwiKSArICdAcnVsZT1qczokLnJlcXVpcmUoXFxcImVyXFxcIiknLFxcbiAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICAgICAgICAgZXh0cmE6IHtwYWdlVGl0bGU6dGl0bGV9XFxuICAgICAgICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnXCIsXCJwYXRoXCI6XCJlclwiLFwicnVsZVwiOlwianM6IHZhciBkID0gW11cXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpO1xcbmxvZyhNWV9VUkwpXFxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwpO1xcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpXFxuICAgIC5ydWxlKTtcXG5cXG52YXIgdGl0bGUgPSBwZGZoKGh0bWwsICcuYXJjaGl2ZS10aXRsZSYmVGV4dCcpXFxuICAgIC5yZXBsYWNlKFxcXCJb5Lit5paH5a2X5bmVXVxcXCIsIFxcXCLwn4eo8J+Hs1xcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJb5peg56CB56C06KejXVxcXCIsIFxcXCLwn5SlXFxcIilcXG4gICAgLnJlcGxhY2UoXFxcIls0S11cXFwiLCBcXFwi8J+WpVxcXCIpXFxuICAgIC5yZXBsYWNlKFxcXCJb6Iux5paH5a2X5bmVXVxcXCIsIFxcXCLwn4e68J+HuFxcXCIpO1xcbnZhciDor4bliKvnoIEgPSB0aXRsZS5tYXRjaCgvXFxcXHcrKD86LXxfKVxcXFx3Kyg/OlxcXFxzK1xcXFxkKyk/fFxcXFx3Kyg/IVxcXFxuKVxcXFxzK1xcXFx3Ky8pWzBdXFxuaWYgKHRpdGxlICE9PSBudWxsKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj0jZTU3YTFhPicgKyB0aXRsZSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyDor4bliKvnoIEsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn572R6aG1JyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ3ZWI6Ly9cXFwiICsgTVlfVVJMXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eZvuW6pue/u+ivkScsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ4NTovL2h0dHBzOi8vZmFueWkuYmFpZHUuY29tLyNqcC96aC9cXFwiICsgdGl0bGVcXG4gICAgICAgICAgICAgICAgfSwgdGl0bGUpXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0RlZXBs57+76K+RJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHRpdGxlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly93d3cuZGVlcGwuY29tL3poL3RyYW5zbGF0b3ItbW9iaWxlI2phL3poL1xcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICB9LCB0aXRsZSlcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6LC35q2M57+76K+RJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHRpdGxlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIng1Oi8vaHR0cHM6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS8/aGw9emgtQ04mc2w9amEmdGw9emgtQ04mdGV4dD1cXFwiICsgdGl0bGVcXG4gICAgICAgICAgICAgICAgfSwgdGl0bGUpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxudmFyIGltZyA9IHBkKGh0bWwsIFxcXCIucG9zdC1tZXRhJiZpbWcmJnNyY1xcXCIpO1xcbmlmIChpbWcgIT09IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi25Zu+54mHJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGltZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aJk+W8gOWbvueJhycsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpbWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWdcXG4gICAgICAgICAgICAgICAgfSwgaW1nKVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3lm77niYcnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaW1nKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGltZ1xcbiAgICAgICAgICAgICAgICB9LCBpbWcpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNwYW4gc3R5bGU9XFxcImNvbG9yOiBcXFwiPjxzbWFsbD7wnZCS8J2QhPCdkJHwnZCV8J2QhPCdkJEg77ya5bey5bGP6JS9SlBB562J5peg55So57q/6LevPC9zbWFsbD48L3NwYW4+JyxcXG4gICAgdXJsOiDor4bliKvnoIEgKyAkKCcjbm9Mb2FkaW5nIycpXFxuICAgICAgICAubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveWo/cnVsZT3wnZCJ8J2QmvCdkK/wnZCD8J2QgSZ1cmw9XFxcIiArIGdldFB1YmxpY0l0ZW0oJ2phdmRiMCcsICdodHRwczovL2phdmRiLmNvbScpICsgXFxcIi9zZWFyY2jvvJ/vvJ9mPWFsbO+8hu+8hnBhZ2U9ZnlwYWdl77yG77yGcT1cXFwiICsgaW5wdXRcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIHBhZ2VUaXRsZTog6K+G5Yir56CBXFxuICAgIH1cXG59KTtcXG5cXG4vL+W3sue7j+ino+aekOeahOe6v+i3r1xcbnZhciBQbGF5bGluZWQgPSBbXFxcIlRWXFxcIiwgXFxcIkZTVFxcXCIsIFxcXCJTVFxcXCIsIFxcXCJWT0VcXFwiLCBcXFwiRFNcXFwiLCBcXFwiU3RyZWFtdGFwZVxcXCIsIFxcXCJWVFVcXFwiXVxcblxcbmxldCBidG5zID0gcGRmYShodG1sLCAnLmJ0bnMmJi5idG5zdCcpXFxuaWYgKGJ0bnMubGVuZ3RoID09IDEpIHtcXG4gICAgYnRuc3QgPSBwZGZhKGJ0bnNbMF0sICdib2R5JiZkaXYnKVxcbn0gZWxzZSB7XFxuICAgIGJ0bnN0ID0gcGRmYShidG5zWzFdLCAnYm9keSYmLmNkLXNlcnZlcicpXFxufVxcbmJ0bnN0LmZvckVhY2goKGNkcywgaW5kZXgpID0+IHtcXG4gICAgbGV0IHNlcnZlciA9IHBkZmEoY2RzLCAnYm9keSYmYTpub3QoOm1hdGNoZXMoSlBBfEpTfFNTQnxOU3xNaXhkcm9wfE5pbmphU3RyZWFtfE1EfEdvVW5saW1pdGVkKSknKTsgLy/lsY/olL3nur/ot6/wn4iy8J+IsvCfiLLwn4iy8J+IsvCfiLJcXG4gICAgaWYgKGJ0bnN0Lmxlbmd0aCA+IDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ0nICsgXFxcIkNEXFxcIi5ib2xkKClcXG4gICAgICAgICAgICAgICAgLmZvbnRjb2xvcihcXFwiIzhBMkJFMlxcXCIpICsgKGluZGV4ICsgMSlcXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgLmJvbGQoKVxcbiAgICAgICAgICAgICAgICAuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIikgKyBcXFwiOlxcXCIuZm9udGNvbG9yKFxcXCIjOEEyQkUyXFxcIiksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNlcnZlci5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xcbiAgICAgICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogUGxheWxpbmVkLmluZGV4T2YodGl0bGUpID49IDAgPyAnXFxcXHTigJzigJzigJ3igJ0nICsgJy0nLmZvbnRjb2xvcihcXFwiIzI3NzY4NlxcXCIpICsgdGl0bGUuYm9sZCgpXFxuICAgICAgICAgICAgICAgIC5mb250Y29sb3IoXFxcIiMyNzc2ODZcXFwiKSArICctXFxcXHQnLmZvbnRjb2xvcihcXFwiIzI3NzY4NlxcXCIpIDogJ1xcXFx0LeKAnOKAnOKAneKAnScgKyB0aXRsZS5ib2xkKCkgKyAnLVxcXFx0JyxcXG4gICAgICAgICAgICB1cmw6IHBkZmgobGlzdCwgJ2EmJmRhdGEtbGluaycpICsgbGF6eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgfSk7XFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuXFxubGV0IGluZm8gPSBwZGZhKGh0bWwsICcucG9zdC1tZXRhJiYuY2F0cyYmYScpO1xcbmluZm8uZm9yRWFjaCgobGlzdCwgaW5kZXgpID0+IHtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZGV4ID09IDEgPyAn4oCY4oCYTWFrZXI64oCZ4oCZJyArIHRpdGxlIDogKGluZGV4ID4gMSA/ICfigJjigJhDYXN0OuKAmeKAmScgKyB0aXRsZSA6IHRpdGxlKSxcXG4gICAgICAgIHVybDogcGQobGlzdCwgJ2EmJmhyZWYnKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHRpdGxlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBpZiAoaW5kZXggPT0gMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbn0pXFxubGV0IHRhZ3MgPSBwZGZhKGh0bWwsICcucG9zdC1tZXRhJiYudGFncyYmYScpO1xcbnRhZ3MuZm9yRWFjaCgobGlzdCwgaW5kZXgpID0+IHtcXG4gICAgdmFyIHRpdGxlID0gcGRmaChsaXN0LCAnVGV4dCcpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJwnICsgdGl0bGUgKyAn4oCd4oCdJyxcXG4gICAgICAgIHVybDogcGQobGlzdCwgJ2EmJmhyZWYnKSArICcjI2Z5cGFnZUBydWxlPWpzOiQucmVxdWlyZShcXFwieWlcXFwiKScsXFxuICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59KVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkZGRkZGO1xcXCI+8J2QmPCdkKjwnZCuIPCdkIzwnZCa8J2QsiDwnZCA8J2QpfCdkKzwnZCoIPCdkIvwnZCi8J2QpPCdkJ48L3NwYW4+JyxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxuXFxudmFyIGxpc3QgPSBwZGZhKGh0bWwsIFxcXCIucG9zdHMmJi5wb3N0XFxcIik7XFxubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICB2YXIgaW1nID0gcGQoaXRlbSwgXFxcImltZyYmZGF0YS1vcmlnaW5hbFxcXCIpO1xcbiAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sIFxcXCJhJiZ0aXRsZVxcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiW+S4reaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HqPCfh7NcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIlvml6DnoIHnoLTop6NdXFxcIiwgXFxcIvCflKVcXFwiKVxcbiAgICAgICAgLnJlcGxhY2UoXFxcIls0S11cXFwiLCBcXFwi8J+WpVxcXCIpXFxuICAgICAgICAucmVwbGFjZShcXFwiW+iLseaWh+Wtl+W5lV1cXFwiLCBcXFwi8J+HuvCfh7hcXFwiKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgXFxcIi5tZXRhLS0uZGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgaW1nOiBpbWcucmVwbGFjZSgvKGh0dHAuKj9cXFxcLig/OmpwZ3x3ZWJwfHBuZ3xqcGVnKSkuKi8sIFxcXCIkMVxcXCIpLFxcbiAgICAgICAgdXJsOiBwZGZoKGl0ZW0sIFxcXCJhJiZocmVmXFxcIikgKyAnQHJ1bGU9anM6JC5yZXF1aXJlKFxcXCJlclxcXCIpJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSlcXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuino+aekFwiLFwicGF0aFwiOlwibGF6eVwiLFwicnVsZVwiOlwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIC8vSlBB562J57q/6Lev5oyC5LqG5bey5bGP6JS977yM6ZyA6KaB5Y+v5Y675LqM57qn5oGi5aSNXFxuICAgIC8vVFbnur/ot68vL0ZTVOe6v+i3ry8vVk9F57q/6LevLy9TVOe6v+i3ry8vRFPnur/ot68vL1ZUVee6v+i3r1xcbiAgICB2YXIgaWQgPSBpbnB1dC5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpO1xcbiAgICB2YXIgdXJsID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/Yz0ke2lkfWA7XFxuICAgIHZhciByZWZlcmVyID0gYGh0dHBzOi8vbGsxLnN1cHJlbWVqYXYuY29tL3N1cGphdi5waHA/bD0ke2lucHV0fWA7XFxuICAgIHZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2godXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiByZWZlcmVyLFxcbiAgICAgICAgfSxcXG4gICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgIH0pKS51cmwucmVwbGFjZSgvIy4qLywgXFxcIlxcXCIpXFxuICAgIGxvZyhsb2NhdGlvbilcXG5cXG4gICAgaWYgKGxvY2F0aW9uLmluY2x1ZGVzKFxcXCJlbXR1cmJvdmlkXFxcIikpIHtcXG5cXG4gICAgICAgIC8v4pGgVFbnur/ot69cXG4gICAgICAgIHZhciBkb21haW4gPSBnZXRIb21lKGxvY2F0aW9uKVxcbiAgICAgICAgdmFyIHBhdGggPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkubWF0Y2goLycuKj8oXFxcXC8uKj9cXFxcLm0zdTgpLylbMV1cXG4gICAgICAgIHZhciBwbGF5VXJsID0gcGF0aC5pbmNsdWRlcyhcXFwiY29tXFxcIikgPyBcXFwiaHR0cHM6XFxcIiArIHBhdGggOiBnZXRIb21lKGxvY2F0aW9uKSArIHBhdGhcXG5wbGF5VXJsID0gcGxheVVybC5yZXBsYWNlKC8uKihodHRwLiopLyxcXFwiJDFcXFwiKVxcbiAgICAgICAgdmFyIGdyb3VwX3F1YWxpdHkgPSBmZXRjaChwbGF5VXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGxvY2F0aW9uXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgIH0pO2xvZyhncm91cF9xdWFsaXR5KVxcbiAgICAgICAgICAgICAgICAgICBoZ2hlc3RfcXVhbGl0eSA9IGdyb3VwX3F1YWxpdHkubWF0Y2goL14oLiopXFxcXC5tM3U4JC9nbSkubWFwKHY9PnYuaW5jbHVkZXMoXFxcImh0dHBcXFwiKT92OnBsYXlVcmwucmVwbGFjZSgvW15cXFxcL10rJC8sIHYpKS5yZXZlcnNlKClcXG4gICAgICAgICAgICAgICAgICAgbmFtZV9xdWFsaXR5ID0gZ3JvdXBfcXVhbGl0eS5tYXRjaCgvUkVTT0xVVElPTj0uKj9cXFxcLC9nbSkubWFwKG49Pm4ucmVwbGFjZSgvUkVTT0xVVElPTj18XFxcXCwvZywgXFxcIlxcXCIpKS5yZXZlcnNlKClcXG4gICAgICAgIGxldCBwbGF5bGlzdD17XFxuICAgICAgICAgICAgdXJsczogaGdoZXN0X3F1YWxpdHksXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVfcXVhbGl0eSxcXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgQXJyYXkoaGdoZXN0X3F1YWxpdHkubGVuZ3RoKS5maWxsKHtSZWZlcmVyOmxvY2F0aW9ufSlcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gcGxheWxpc3Q7ICAgICAgICBcXG5cXG4gICAgfSBlbHNlIGlmICgvY2luZHlleWVmaW5hbHxmYzJzdHJlYW18bWljaGFlbGFwcGx5c29tZS8udGVzdChsb2NhdGlvbikpIHtcXG5cXG4gICAgICAgIC8v4pGhRlNU57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBzY3JpcHQgPSBwZGZoKGh0bWwsXFxcImJvZHk+c2NyaXB0JiZIdG1sXFxcIikucmVwbGFjZShcXFwiZXZhbFxcXCIsXFxcIlxcXCIpXFxuICAgICAgICB2YXIgdWFzID0gZXZhbChzY3JpcHQpXFxuICAgICAgICB2YXIgandwbGF5ZXIgPSB1YXMubWF0Y2goL1xcXCIoaHR0cHM/LiptM3U4Lio/KVxcXCIvKVsxXSAgICBcXG4gICAgICAgLy9sb2coandwbGF5ZXIpICBcXG4gICAgICAgIHJldHVybiBqd3BsYXllciArIFxcXCI7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAobG9jYXRpb24uaW5jbHVkZXMoXFxcInN0cmVhbXRhcGVcXFwiKSkge1xcblxcbiAgICAgICAgLy/ikaJTVOe6v+i3r1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChsb2NhdGlvbiwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZlcmVyXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBwYXR0ZXJuID0gaHRtbC5tYXRjaCgvXFxcXCgnIyguKiknXFxcXCkvKVsxXVxcbiAgICAgICAgdmFyIHNyYyA9IFxcXCJ2YXIgc3JjbGluayA9IFxcXCIgKyBodG1sLm1hdGNoKG5ldyBSZWdFeHAoXFxcIidcXFwiICsgcGF0dGVybiArIFxcXCIuKj89KFteO10rKVxcXCIpKVsxXVxcbiAgICAgICAgZXZhbChzcmMpXFxuICAgICAgICB2YXIgbGluayA9IFxcXCJodHRwczpcXFwiICsgc3JjbGluayArIFxcXCImc3RyZWFtPTFcXFwiXFxuICAgICAgICB2YXIgdXJsUGxheSA9IEpTT04ucGFyc2UoZmV0Y2gobGluaywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBsb2NhdGlvbixcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgICAgICB9KSkudXJsXFxuICAgICAgICByZXR1cm4gdXJsUGxheSArIFxcXCI7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAoL2QwMDAwZHxkb29kfGRzMnBsYXkvLnRlc3QobG9jYXRpb24pKSB7XFxuXFxuICAgICAgICAvL+KRo0RT57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIHBhc3NfbWQ1ID0gZ2V0SG9tZShsb2NhdGlvbikgKyBodG1sLm1hdGNoKC9cXFxcL3Bhc3NfbWQ1W15cXFwiJ10rLylbMF1cXG4gICAgICAgIHZhciB0b2tlbiA9IGh0bWwubWF0Y2goL2Nvb2tpZUluZGV4Lio/XFxcXCcoLio/KVxcXFwnLylbMV1cXG4gICAgICAgIHZhciBkYXRhID0gZmV0Y2gocGFzc19tZDUsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogbG9jYXRpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcblxcbiAgICAgICAgZnVuY3Rpb24gbWFrZVBsYXkodG9rZW4pIHtcXG4gICAgICAgICAgICBmb3IgKHZhciBhID0gXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB0ID0gXFxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIG4gPSB0Lmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgICAgIG8gPSAwOyAxMCA+IG87IG8rKylcXG4gICAgICAgICAgICAgICAgYSArPSB0LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuKSk7XFxuICAgICAgICAgICAgcmV0dXJuIGEgKyBcXFwiP3Rva2VuPVxcXCIgKyB0b2tlbiArIFxcXCImZXhwaXJ5PVxcXCIgKyBEYXRlLm5vdygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHZhciB1cmxQbGF5ID0gZGF0YSArIG1ha2VQbGF5KHRva2VuKVxcbiAgICAgICAgcmV0dXJuIHVybFBsYXkgKyBcXFwiI2lzVmlkZW89dHJ1ZSM7e1JlZmVyZXJAXFxcIiArIGxvY2F0aW9uICsgXFxcIn1cXFwiXFxuXFxuICAgIH0gZWxzZSBpZiAobG9jYXRpb24uaW5jbHVkZXMoXFxcInZ0YmUudG9cXFwiKSkge1xcblxcbiAgICAgICAgLy/ikaRWVFXnur/ot69cXG4gICAgICAgIGZ1bmN0aW9uIGV2YWxkZWNvZGUodGV4dCkge1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gJyc7XFxuICAgICAgICAgICAgdmFyIHMgPSB0ZXh0LnJlcGxhY2UoL15ldmFsLywgJycpXFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdyZXR1cm4gcCcsICdjb2RlKz1wJylcXG4gICAgICAgICAgICBldmFsKHMpO1xcbiAgICAgICAgICAgIHJldHVybiBjb2RlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgY29uc3QgaG9zdFJlZ2V4ID0gKHVybCkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKC9eKD86aHR0cHM/OlxcXFwvXFxcXC8pPyg/Ond3d1xcXFwuKT8oW2EtekEtWjAtOS1dezEsNjN9XFxcXC4pK1thLXpBLVpdezIsNn0vaSk7XFxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMF0gOiB1cmw7XFxuICAgICAgICB9O1xcblxcbiAgICAgICAgbGV0IGhvc3QgPSBob3N0UmVnZXgocmVmZXJlcilcXG5cXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2gobG9jYXRpb24sIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFJlZmVyZXI6IGhvc3QsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciBpZnJhbWUgPSBwZGZhKGh0bWwsIFxcXCJpZnJhbWVcXFwiKTtcXG4gICAgICAgIFxcbiAgICAgICAgaWYgKGlmcmFtZS5sZW5ndGg+MCkge1xcbiAgICAgICAgICAgIGh0bWwgPSBmZXRjaChwZGZoKGlmcmFtZVswXSwgXFxcImlmcmFtZSYmc3JjXFxcIiksIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogaG9zdCxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuXFxuICAgICAgICB2YXIgc2NyaXB0cyA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJnNjcmlwdFxcXCIpO1xcbiAgICAgICAgbGV0IHNjcmlwdCA9IHNjcmlwdHMuZmlsdGVyKHggPT4geC5pbmNsdWRlcygnZXZhbCcpKS5tYXAobSA9PiBwZGZoKG0sIFxcXCJzY3JpcHQmJkh0bWxcXFwiKSlbMF07XFxuICAgICAgICBpZihzY3JpcHQ9PXVuZGVmaW5lZCl7XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aXoOaVsOaNridcXG4gICAgICAgIH1cXG4gICAgICAgIFxcbiAgICAgICAgbGV0IG0zdTggPSAvZmlsZTpcXFwiKC4qPylcXFwiL2cuZXhlYyhldmFsZGVjb2RlKHNjcmlwdCkpWzFdO1xcbiAgICAgICAgcmV0dXJuIG0zdTg7XFxuXFxuICAgIH0gZWxzZSBpZiAoL3ZvZS8udGVzdChsb2NhdGlvbikpIHtcXG5cXG4gICAgICAgIC8v4pGlVk9F57q/6LevXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGxvY2F0aW9uLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZmVyZXJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIGN1cnJlbnRVcmwgPSBodG1sLm1hdGNoKC9odHRwcz9bXiddKy8pWzBdXFxuICAgICAgICB2YXIgdXJsUGxheSA9IGZldGNoKGN1cnJlbnRVcmwpLm1hdGNoKC9odHRwcz8uKj9tM3U4W15cXFwiXSsvKVswXVxcbiAgICAgICAgcmV0dXJuIHVybFBsYXkgKyBcXFwiO3tSZWZlcmVyQFxcXCIgKyBsb2NhdGlvbiArIFxcXCJ9XFxcIlxcblxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgbG9nKFxcXCLpnanlkb3lsJrmnKrmiJDlip8s5ZCM5b+X5LuN6ZyA5Yqq5YqbIVxcXCIpXFxuICAgICAgICByZXR1cm4gXFxcImNvbmZpcm06Ly/lkrMs5pys57q/6Lev6L+Z5Liq5Zyw5Z2A5bm25rKh5pyJ6Kej5p6Q77yM5pel5b+X5bey5omT5Y2w5Ye677yM5pWs6K+35p+l55yLLmpzOidoaWtlcjovL2VtcHR5JyBcXFwiXFxuICAgIH1cXG59KVwifV0iLCJpY29uIjoiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL3pyd0s0LndlYnAiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment