xiaomianao666

小程序:uckk云

Jul 20th, 2023
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@uckk云@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoidWNra+S6kSIsImF1dGhvciI6IlRob21hc+WWsiIsInVybCI6Imhpa2VyOi8vZW1wdHkjIyNmeXBhZ2UjIyN1Y2tr5LqRIiwidmVyc2lvbiI6MjAyMzA3MTgsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoiYWxsIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG4vLyDlpLjlhYvkupHnm5ggLyBVQ+S6keebmCDotYTmupDkuIvovb1cblxuLy8g5aGr5YaZ5qC85byP5aaC5LiLXG4vLyBbXCLotYTmupDlkI3np7BcIiwgXCLotYTmupBpZFwiLCBcIuaPkOWPlueggVwiLCBcIuaWh+S7tmlkXCIsICBcIuaOkuW6j+exu+Wei1wiLCBcIuagt+W8j+exu+Wei1wiXSxcblxuXG4vLyDotYTmupDlkI3np7AgLSDoh6rlrprkuYnkvaDllpzmrKLnmoRcblxuXG4vLyDotYTmupBpZCAtIOWIhuS6q+mTvuaOpemdoOWQjumdoueahOWtl+esplxu44CA44CAIC8vIOS+i++8muOAkGYyYWI2MzljMmM1ZOOAkSMvXG7jgIDjgIAgLy8g4p2X5rKh5pyJ6LWE5rqQaWTml7bkvJrliKTlrprkuLrjgJDmlrDliIbnsbvjgJFcblxuXG4vLyDmj5Dlj5bnoIEgLSDmsqHmnInlsLHnlZnnqbrjgIJcblxuXG4vLyDmlofku7ZpZCAtIOayoeacieWwseeVmeepuuOAglxu44CA44CAIC8vIOeCueWHu+aWh+S7tuWkueaXtu+8jOivt+axgumTvuaOpeeahHBkaXJfZmlkKOmcgOimgeaKk+WMhSlcblxuXG4vLyDmjpLluo/nsbvlnosgLSDlj6/ku6XkuI3loavvvIznlZnnqbrkuZ/ooYzjgIJcbuOAgOOAgCAvLyAwIO+8jOacgOi/keabtOaWsOaOkuOAgijpu5jorqQpXG7jgIAgLy8gMSDvvIzlkI3np7DmraPluo/mjpLjgIIo6Ziy5q2i5Lmx5bqP77yfKVxuLy8gMiDvvIzlj5HluIPml7bpl7TmjpLjgIIo4omI5ZCN56ew5q2j5bqP77yfKVxuLy8gMyDvvIzlkI3np7DlgJLluo/mjpLjgIIo4omI5pyA6L+R5pu05paw77yfKVxuXG5cbi8vIOagt+W8j+exu+WeiyAtIOWPr+S7peS4jeWhq++8jOeVmeepuuS5n+ihjOOAglxuLy8g56iL5bqP6buY6K6kIC0g5a2X6Z2i5oSP5oCdXG4vLyDlhbbku5bmoLflvI8gLSDloavlhpnlrZjlnKjnmoTnu4Tku7bmoLflvI/ljbPlj69cblxuXG5cbi8vIOi1hOa6kOWIl+ihqF/lvIDlp4tcbnp5ID0gW1tcIuW9seinhlwiXSxbXCLnlLXop4bliadcIixcImQ2ZmVhODBlMDU1Y1wiLFwiXCIsXCI5YjA0NjMzN2MxNWM0MzgxYWFkNmJhMmE0YjBkOGUxOFwiXSxbXCLogIHnlLXlvbFcIixcIjdiYTljZGE0MzZjMVwiLFwiXCIsMF0sW1wi5oGQ5oCW54mHXCIsXCI3OGRkNWM2NmVlZGVcIixcIlwiLFwiZmFkYTE2MTE0NDc3NDU0ZmFmOWU0NzQ1ZDQ5NjQ5NjlcIl0sW1wi5piO5pifXCJdLFtcIuiDoeatjFwiLFwiYzM0YTVmYjY3OGM4XCIsXCJcIiwwXSxbXCLlvKDlm73ojaNcIixcIjQ1OTYzYTk5MmY1YlwiLFwiXCIsMF0sW1wi5p2O5bCP6b6ZXCIsXCJlZWI1ZDcwNWIxN2VcIixcIlwiLDBdLFtcIuadjuWuiVwiLFwiNDI5MWY1NzgxNzNhXCIsXCJcIiwwXSxbXCLnjovlrrbljatcIixcIjFjMzk1YTE2M2Y2OFwiLFwiXCIsMF0sW1wi5p2O5piT5bOwXCIsXCIxODQyODVlMDJmMzJcIixcIlwiLDBdLFtcIuaIt+eUsOaDoOaiqOmmmVwiLFwiNTM5NGQ3Nzc0MGEwXCIsXCJcIiwwXSxbXCLlsqnkupXkv4rkuoxcIixcIjQ3Y2FjMGQ2MTVlYVwiLFwiXCIsMF0sW1wi5YiY5b635Y2OXCIsXCJiZDE0Yzc1YzNhNjhcIixcIlwiLDBdLFtcIuWMl+mHjuatplwiLFwiZTMyODVhODUwZGNiXCIsXCJcIiwwXSxbXCLlkLTkuqxcIixcIjZjMjk0NzVlZWUyNlwiLFwiXCIsMF0sW1wi5p6X5q2j6IuxXCIsXCIzNTY1NzRhYzEwZWFcIixcIlwiLDBdLFtcIuaIkOm+mVwiLFwiNGYzNDk5MDE0Y2YwXCIsXCJcIiwwXSxbXCLpgrHmt5HotJ5cIixcIjMyMzQ1MWNiM2FlMFwiLFwiXCIsMF0sW1wi5aec5rabXCIsXCIzMzcwOWQwZGY5MWVcIixcIlwiLDBdLFtcIuadjui/nuadsFwiLFwiZDFmMjE5Yjg3MWUyXCIsXCJcIiwwXSxbXCLlkajmmJ/pqbBcIixcIjM1ZjJkMGUxODRmOVwiLFwiXCIsMF0sW1wi6ams5Lic6ZShXCIsXCI4ZjY4NTMwNzJjZGRcIixcIlwiLDBdLFtcIuadjue/sOelpVwiLFwiYTNmMTA3NjQ0MDAwXCIsXCJcIiwwXSxbXCLlrqvltI7pqo9cIixcIjNmZmRmMGYzZmRhMFwiLFwiXCIsXCJjN2E2YWVhZTc3MjU0ODA3YmU0NmVkNGY0ZWI5ZGJmZVwiXSxbXCLmnY7kuL3nj41cIixcIjZkOTdhNWM4YjNmN1wiLFwiXCIsMF0sW1wi6Z+z5LmQXCJdLFtcIuWlveWPi+mfs+S5kOKZs+KYhVwiLFwiZGViNTU0YmVmNjNmXCIsXCJcIiwwXSxbXCLlpb3lj4vpn7PkuZDimbTimIVcIixcIjgxMzg5ZmUxMzYwMlwiLFwiXCIsMF0sW1wi6Z+z5LmQ5ZCI6ZuG4pmaXCIsXCIzYzU2MzBiNjYyODhcIixcIlwiLDBdLFtcIumfs+S5kOWQiOmbhlwiLFwiYjYwOWRhZWFlZDQ2XCIsXCJcIixcImViYzRkZGIyYjBlZTQzMjBiM2JhYTA3ZjY5YWQyNTlkXCIsMV0sW1wi6Z+z5LmQ5LiT5Yy6XCIsXCI0M2Q0MWM3OTFhNzJcIixcIlwiLFwiYzcwYTlkYTNjZTdlNDI2NWI0MGYxMGZjYmY5NDAxYWRcIl0sW1wi6Z+z5LmQ5bqTXCIsXCIyNjI3NTliNzFhNDBcIixcIlwiLFwiNjk4NDkyYmM1MjBlNDdlMzlhMTUzMjg5YTAyNzMwMTFcIiwwLFwi56iL5bqP6buY6K6kXCJdLFtcIuaXoOaNn+mfs+S5kFwiLFwiN2RlNjAxZjQwOWMxXCIsXCJcIixcIjRjMjY1NTgzMmU1MTRlZGZhMWI3ODAzMjQwYTI0Mjc0XCJdLFtcIue7j+WFuOa1geihjFwiLFwiODUwMzRhM2RhOTMwXCIsXCJcIiwwXSxbXCLovabovb3pn7PkuZBcIixcImY4MzNlMmFkN2EwMVwiLFwiXCIsMF0sW1wi5b635LqR56S+XCIsXCI3Nzg2YzIxN2NmNjZcIixcIlwiLDBdLFtcImR0c+aXoOaNnzFcIixcIjY2YzVjZTg4NDQyOVwiLFwiXCIsXCIzMzI4OWYxYjkxZDM0OGUwODZiNWI2ZGI5MWNlMmVkNFwiLDEsXCLnqIvluo/pu5jorqRcIl0sW1wiZHRz5peg5o2fMlwiLFwiMmY0OWE4ZjlmZTAyXCIsXCJcIixcIjFiOTlhNzI4OGNlNTQ5NTY4YjBlOGEzNmYwNjIwY2RhXCIsMSxcIueoi+W6j+m7mOiupFwiXSxbXCJkdHPml6DmjZ8zXCIsXCJkMTg3ZTJkOGIzNGRcIixcIlwiLFwiMjZhZjAxMmMwZDZmNDhhMmFmODQ4ODBlYTA3YTQ1OTRcIiwxLFwi56iL5bqP6buY6K6kXCJdLFtcIjQ2NOmfs+S5kFwiLFwiZTgxMzBhNDI2M2IwXCIsXCJcIixcImRjZGZjNTEwM2FiZjRmY2ZiZmFhZWZlZGViNzNlZTgzXCJdLFtcIkRKIOmfs+S5kFwiLFwiMThlNTUxYjk0ZmJiXCIsXCJcIixcIjY3MjIyODc0ZDExNjRkZTQ4ODE0MTc5MzcyM2FhMGU4XCJdLFtcIueOi+WKm+Wuj1wiLFwiNjRjYTdmOWZiYzQ1XCIsXCJcIixcIjI4ZTc1M2NiODY0MjQ5Yjk5Y2M3NmJjOGUyNWNlNTU4XCJdLFtcIk1LVuKRoFwiLFwiZTAxMjlhNmQ5Y2UxXCIsXCJcIixcIjIyYjU3NjNiOWY5NDQyYTViYzUxODUzMWQ0ZDlhYzE2XCJdLFtcIk1LVuKRoVwiLFwiOTMzYTZmMzBhMGY4XCIsXCJcIixcImU5MTdiNjZhYzlhMTRkNmFhY2UyYzRlZjAxNDNhNmNiXCJdLFtcIk1LVuKRolwiLFwiZDNiN2YzODUxYTY2XCIsXCJcIixcImJkZjcwMTgyOWFiODQ2ZDU5MDE1ZjQ4ZTgxOGYzMGYzXCJdLFtcIk1LVuKRo1wiLFwiNzc5MGJmNTEwNzEwXCIsXCJcIixcIjBiMDg1OTZiNmVmNDRiZTM4YWEyMDAyMTg1MTdlMmVmXCJdLFtcIk1LVuKRpFwiLFwiMDdlZGU1OTE2N2FiXCIsXCJcIixcIjg5NWQ2NDY3YWFjYzQ0Y2JiMmNkZDc0OGJhYTM3ZTg4XCJdLFtcIk1LVuKRpVwiLFwiZDU0YjI1YTIxYTE2XCIsXCJcIixcIjBkOGE0ODdlNWUwYTQ5ZWZiN2JkYWY2NWRiMmI5NWMzXCJdLFtcIuaWh+WtplwiXSxbXCLmr4/ml6XojZDkuabimIVcIixcImRiYjI4NGI2NjhhNVwiLFwiXCIsXCJjYWMwZDYzM2UwZjE0N2Q5OGIyOGMzZjJhZDVkYzNiYlwiXSxbXCLnlLXlrZDkuablupPimIVcIixcIjYyMzUwYWJjMTg5YlwiLFwiXCIsXCI1NzM1ZjUzZDljZjA0NWQxYTUxNDkxZTBkZjU1YzExNVwiLDEsXCLnqIvluo/pu5jorqRcIl0sW1wi55S15a2Q5Lmm5bqT4piGXCIsXCJhNGQyZDJjZTI4OWNcIixcIlwiLFwiNzI4MjMzMTQ1YmY2NGU1MmJmMDQwMmIwOTdjODMyMWFcIl0sW1wi5bCP6K+05ZCI6ZuGXCIsXCJhMDBmMzRkOTNkZGFcIixcIlwiLFwiNGFmNWYxNTFmN2YzNDUyZThjMWZmYjc4MDA1MGYxZTZcIiwwLFwi56iL5bqP6buY6K6kXCJdLFtcIuenkeW5u1RvcDEwMCtcIixcIjZmMTg5NThhZTcwZlwiLFwiXCIsXCI2YmRjOGE2YjQ5MDg0OWY0OGJlOTZiMTI2OGNjNGUxNFwiXSxbXCLov57njq/nlLtcIixcImZjNWYwNGE3MjE0MFwiLFwiXCIsXCJlNTEwYzNiNjU5MWM0OTUxYmQyNzMwYzVmNmQzMWMyMFwiXSxbXCLnlLXlrZDkuaYyMDAwXCIsXCI3NTQ0Y2Y0OTM5MTZcIixcIlwiLDBdLFtcIuexs+WFsOaYhuW+t+aLiVwiLFwiM2I2ODdiOGFjODgzXCIsXCJcIiwwXSxbXCLlup/ljaLkuablupNcIixcIjE5NzJiMTIyNzc4OVwiLFwiXCIsMF0sW1wi6LaF57qn5Zu+5LmmXCIsXCIzNDc2MjUxNWNkN2NcIixcIlwiLDBdLFtcIuaVmeiCsuWbvuS5plwiLFwiNWE4NmQzNTVhNjAwXCIsXCJcIiwwXSxbXCLnvZHnu5zlsI/or7RcIixcIjQ4MDA5OWQ1ODg0NFwiLFwiXCIsMF0sW1wiTU9CSeWbvuS5puKYhlwiLFwiMWQxY2NmNDNmYzg1XCIsXCJcIiwwXSxbXCJUWFTkuablupPimIZcIixcImI5NWVjNWM2OTJkN1wiLFwiXCIsMF0sW1wi6LGG55OjNDAw77yLXCIsXCI4N2E5ZWMzYWI3MmRcIixcIlwiLDBdLFtcIuW3peWFt+S5puKYhlwiLFwiMDM0MzRkNGFkZWNmXCIsXCJcIiwwXSxbXCJFUFVC5Zu+5Lmm4piGXCIsXCIxZDQyNmJjYjA1MDdcIixcIlwiLDBdLFtcIlBERuWbvuS5puKYhlwiLFwiMmE1NjgzMjZhMjg0XCIsXCJcIiwwXSxbXCLmlYXkuovkvJrimIZcIixcIjU1MDVjNTMwNzJjMFwiLFwiXCIsMF0sW1wi55+l5LmO5ZCI6ZuG4piGXCIsXCI1YTQ2M2NkZGFhZmNcIixcIlwiLDBdLFtcIuWbvuS5puWQiOmbhlwiLFwiMTZjYzZmMzU2NDIzXCIsXCJcIiwwXSxbXCLmvKvnlLvlkIjpm4ZcIixcIjhmNTBmMmZkNzViZlwiLFwiXCIsMF0sW1wi54Ot6Zeo5bCP6K+0XCIsXCIyZTM5MTA4Y2M2NmNcIixcIlwiLDBdLFtcIuefpeS5juaWh+eroFwiLFwiNWM3OGIyYzMwOWQwXCIsXCJcIiwwXSxbXCLml6fmiqXlkIjpm4ZcIixcIjYwOGEyMmY0NjIzYlwiLFwiXCIsMF0sW1wi5Zu+5Lmm6aaGXCIsXCI5OTU1ODJiOWVjNmZcIixcIlwiLDBdLFtcIumrmOa4heWjgee6uFwiLFwiMTcxMWIzNjU0OTc1XCIsXCJcIixcIjk3YTQ5OGNkM2MyODQzMzNhNTdmMGE2ODE0MGUyZWYwXCIsMCxcIueoi+W6j+m7mOiupFwiXSxbXCLnvo7lm77lkIjpm4ZcIixcIjcwZDgzYTRmOGQyZFwiLFwiXCIsXCI0MDM3MTc0ZWQ1NmY0N2VlYWNiMGY4YWM1NzhkZmQ3NFwiLDAsXCLnqIvluo/pu5jorqRcIl0sW1wi6L2v5Lu2XCJdLFtcIuWlveWPi+i9r+S7tuKYhVwiLFwiMWM5MDAyZjk2ODcxXCIsXCJcIiwwXSxbXCLpmIXor7vkuabmupBcIixcImU3YzVkODQ5ZGM1OTRcIixcIlwiLDBdLFtcIumFt+aIkeegtOino+eJiFwiLFwiMzE2ZDE5YWY2NTBhXCIsXCJcIl0sW1wiVFZCb3jmnKzlnLDljIVcIixcIjkzMzkxOTMwMDMyMzRcIixcIlwiLDBdLFtcIuinhumikeWJqui+kVwiLFwiNzdjMjA5Njg4Nzg3XCIsXCJcIiwwXSxbXCI35pyI6L2v5Lu2XCIsXCIyNjAyMWQ3MTA5ODZcIixcIlwiLDBdLFtcIui9r+S7tuWQiOmbhlwiLFwiMDFkNWMyMDJlYmUzXCIsXCJcIiwwXSxbXCLova/ku7bmuLjmiI9cIixcImIwZDhlZDMzOGNlZFwiLFwiXCIsMF0sW1wi6Iu55p6c6L2v5Lu2XCIsXCJjOTAwMDUzMjgzN2FcIixcIlwiLDBdLFtcIuWuieWNk+i9r+S7tlwiLFwiMWM5MDAyZjk2ODcxXCIsXCJcIiwwXSxbXCLnlLXohJHova/ku7ZcIixcImRmODhjZmRjZWU0ZlwiLFwiXCIsMF0sW1wi5a2m5LmgXCJdLFtcIuiAg+eglOaVsOWtplwiLFwiNjYwMDYwNjRlZmI0XCIsXCJcIiwwXSxbXCLogIPnoJTmlL/msrtcIixcIjQyMzZiODc0MjgxM1wiLFwiXCIsMF0sW1wi5Yy75a2m5Lmm57GNXCIsXCIwMjZmYmRhNzE4OTBcIixcIlwiLDBdLFtcIuWFrOiAg+i1hOaWmVwiLFwiMTUwYmE1Njk0NmRjXCIsXCJcIiwwXSxbXCLnq57otZvkuJPljLpcIixcImNjZmQ4YTIzN2Q0MlwiLFwiXCIsXCJhN2UzNzg0NzUxNjA0OTIxOWNhYzU0MGZkNzA1YjVjYVwiXSxbXCLlpKflraY0Nue6p1wiLFwiMTI1YjJmMzQxNDA0XCIsXCJcIixcIjcxNDEwN2QxNjk5ODQ3OTI4N2RlM2M1N2ExYzQ3NjljXCJdLFtcIuiHquiAg+i1hOaWmVwiLFwiMmZhNmQ2NTI1OTUwXCIsXCJcIixcImZjNTg2ZDJiMWU4ZTQ1MDc4MDdiZTYyMjMzZjJjY2M4XCJdLFtcIuiAg+ivgeiAg+e6p1wiLFwiOTZkOTU3MzgxZDk5XCIsXCJcIixcIjc4MDFiZDc4Y2Y1MDQxNDQ5MTMxYzc1MGM4MWNiMWZkXCJdLFtcIuiAg+eglOS4k+WMulwiLFwiZDIxODRlYTFkYzA4XCIsXCJcIixcImMwYWJiNGIwNGRlMzRjMDY4MWQ4Mzg5ZmE1MTA2OGE5XCJdLFtcIuWkp+WtpuS4k+WMulwiLFwiMjk5MTdmMTkyNjI4XCIsXCJcIixcImVmMzY5NmMzMGQ2NDRhNDE5MWRmZTQzODhiNzFhOWY4XCJdLFtcIumrmOS4reS4k+WMulwiLFwiYzRjNDdkYzRkN2ZiXCIsXCJcIixcImYwZjNhODNiMTJhYTQ4NzBhZGRhNzc3MzJiMjkwZjQ0XCJdLFtcIuWIneS4reS4k+WMulwiLFwiNmVlZTYwZjYwNjFkXCIsXCJcIixcIjJiZTZjNWRjYmZmMzRiMjk4OTZiNzZhMjZlM2JkYmE1XCJdLFtcIuWwj+WtpuS4k+WMulwiLFwiMjAzZmY5ZjMzZWYyXCIsXCJcIixcIjc0NTZhM2YxNjc2ZTRlYTI5MGJjZGRkNGNiZDAyMmMxXCJdLFtcIuWwkeWEv+S4k+WMulwiLFwiNjA0ZWZjZjdhNjA1XCIsXCJcIixcIjFhNzBkYTI3MDBhMjQ2ZjFhOGM1OGQxMzlkZmE3ZTQxXCJdLFtcIuWFtuS7llwiXSxbXCLpgZPlrrbotYTmlplcIixcIjk2YzUwZGQ3NTk4M1wiLFwiXCIsMF0sW1wi5L+u5Zu+6K6+6K6hXCIsXCI1YzNlNzYyYjdmMTZcIixcIlwiLFwiN2Q1NjQ0M2M1OTQ4NDYzYWE3ODNhMWZjMzNjZjhhYTNcIl0sW1wi6YeR6J6N55CG6LSiXCIsXCIyZjFmZjgzOWNlNjNcIixcIlwiLFwiZDE1MWNkNzQ2ZDFjNDM0NGJmMDQ3ODQ5OGMxZDE0MzZcIl0sW1wi6L+Q5Yqo5YGl6LqrXCIsXCI4ZWVlZjIxYzNmYmJcIixcIlwiLFwiMTAwYWQ3MGJjNDk2NGU3MDhkYWFmMmJmNjZiNDM0YWNcIl0sW1wi6Z+z5LmQ5pWZ56iLXCIsXCIxNzFlYmY5NGUzOTdcIixcIlwiLFwiMGMwNTQzYTc4YzI1NDRhYzg4MGEzMTYzNjlmZDAzNzlcIl0sW1wi5YaZ5L2c5pWZ56iLXCIsXCI1YmZlMDk5NGQ4ZGFcIixcIlwiLFwiODE0ZDNlMDgzMmU4NDhjODg2NWU3NTg5MjQ5YzY4ZmZcIl0sW1wi5YW25LuW5oqA6IO9XCIsXCJhNTEwNjc0ZTMyN2RcIixcIlwiLFwiMjkwNDdlYjgwMGE0NGFjOTk0YWU1ZDMzZTA2YzIyZmJcIl0sW1wi5Lmm5rOV5pWZ56iLXCIsXCI5ZDk4MjBmMmYxYTJcIixcIlwiLFwiOGI3OWUyZTFhZGZiNDYzMGJhZGYzZjViMWYyYWYyZTdcIl0sW1wi6IGM5Zy65Yib5LiaXCIsXCI2ZTg4NDhkZGRmYWZcIixcIlwiLFwiZGIyYTRiYzAwODMwNDEzNGI5MGFlMDg5ODYzOTlhNzFcIl0sW1wi576O5pyv57uY55S7XCIsXCJkODc4Y2Y4Yzg2YmNcIixcIlwiLFwiMjA5NDQ1YzM5ZGU2NGEwM2EyNzgwYzRkZTQ0OGM4MDBcIl0sW1wi5pGE5b2x5pWZ56iLXCIsXCIzMzU5NzQ2YWE0MGJcIixcIlwiLFwiNDEwOWIxYzVhYzQxNDk5ZDliOThiZjY5OWRjOWFjZTFcIl0sW1wi5oqW6Z+z6L+Q6JClXCIsXCI0NjNlYjgxMDRmODBcIixcIlwiLFwiYTlhYjBkMzExYzk3NGQyYjk5NTcxODZlNDgxYzQwMzVcIl0sW1wi6KeG6aKR5Ymq6L6RXCIsXCI2NzZiYWJlNTU5MzJcIixcIlwiLFwiMmU3ODRlMDIxYTA5NDI3MmFlYjJiYzFhMWI5NWQzMTlcIl0sW1wi57yW56iL5byA5Y+RXCIsXCJkOWFiZGE3MTUyNDRcIixcIlwiLFwiNmJjYmIzYWE4YzgzNGJhMTgzZjE5YzBkMTlkMTgzNWZcIl1dOyAvL+i1hOa6kOWIl+ihqF/nu5PmnZ9cbiQucmVxdWlyZSgnaG9tZT9ydWxlPXVja2vkupEnKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjIyoqIiwiZ3JvdXAiOiLikaDluLjnlKgiLCJzZWFyY2hGaW5kIjoianM6XG4kLnJlcXVpcmUoJ3NlYXJjaD9ydWxlPXVja2vkupEnKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6K+35rGC5Ye95pWwXCIsXCJwYXRoXCI6XCJpbmZvXCIsXCJydWxlXCI6XCJqczpcXG5zYXJyID0gWyAvLyDmjqXlj6PlkI3np7DvvIzmjqXlj6NzaWRcXG4gICAgW1xcXCLogZrmkJxcXFwiLCA5OTldLFxcbiAgICBbXFxcIuaYk+aQnFxcXCIsIDFdLFxcbiAgICBbXFxcIui2o+aQnFxcXCIsIDJdLFxcbiAgICBbXFxcIueIseaQnFxcXCIsIDNdLFxcbiAgICBbXFxcIuWSlOW4lVxcXCIsIDRdLFxcbiAgICBbXFxcImtr5bCP56uZXFxcIiwgNV0sXFxuICAgIFtcXFwia2vnpL7ljLpcXFwiLCA2XSxcXG4gICAgW1xcXCJra+i1hOa6kFxcXCIsIDddLFxcbiAgICBbXFxcIuWwj+eZveebmFxcXCIsIDhdLFxcbiAgICBbXFxcIua3t+WQiOebmFxcXCIsIDldLFxcbiAgICBbXFxcIuebmOaQnOe9kVxcXCIsIDEwXSxcXG4gICAgW1xcXCLmnaXmkJznvZFcXFwiLCAxMV0sXFxuICAgIFtcXFwi5Y+j6KKL5LqRXFxcIiwgMTJdLFxcbiAgICBbXFxcIuWwj+S6keaQnFxcXCIsIDEzXSxcXG4gICAgW1xcXCLmqZjlrZDnvZFcXFwiLCAxNF0sXFxuICAgIFtcXFwi5pCc57Si55uYXFxcIiwgMTVdLFxcbiAgICBbXFxcIumYv+mHjOebmFxcXCIsIDE2XSxcXG4gICAgW1xcXCLlnJ/mi6jpvKBcXFwiLCAxN10sXFxuXTtcXG5zb3J0MSA9IFtcXFwi5pyA6L+R5pu05pawXFxcIiwgXFxcIuWQjeensOato+W6j1xcXCIsIFxcXCLlkI3np7DlgJLluo9cXFwiLCBcXFwi5Y+R5biD5pe26Ze0XFxcIl07XFxuc29ydDIgPSBbXFxcInVwZGF0ZWRfYXQlM0FkZXNjXFxcIiwgXFxcImZpbGVfbmFtZSUzQWFzY1xcXCIsIFxcXCJmaWxlX25hbWUlM0FkZXNjXFxcIiwgXFxcInVwZGF0ZWRfYXQlM0Fhc2NcXFwiXTtcXG5zdHlsZSA9IFtcXFwi56iL5bqP6buY6K6kXFxcIiwgXFxcImF2YXRhclxcXCIsIFxcXCJ0ZXh0XzFcXFwiLCBcXFwibW92aWVfM19tYXJxdWVlXFxcIl07XFxuXFxuXFxuXFxuXFxuY29uc3QgZW1wdHkgPSAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlJztcXG5cXG5jb25zdCBDb2xvciA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiNGQTcyOThcXFwiPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXG59XFxuXFxuY29uc3QgU3Ryb25nID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXN0ICsgJzwvc3Ryb25nPic7XFxufVxcblxcbmNvbnN0IFJpY2ggPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmVxcXCIgKyB0ZXN0O1xcbn1cXG5cXG5cXG5cXG5wb3N0ID0gKHVybCwgYm9keSkgPT4gSlNPTi5wYXJzZShmZXRjaCh1cmwsIHtcXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXFxuICAgIG1ldGhvZDogJ1BPU1QnXFxufSkpO1xcblxcblxcblxcbi8vIOiOt+WPlnN0b2tlblxcbmdldHMgPSAocHdkX2lkLCBwYXNzY29kZSkgPT4ge1xcbiAgICB1cmwgPSAnaHR0cHM6Ly9wYW4ucXVhcmsuY24vMS9jbG91ZGRyaXZlL3NoYXJlL3NoYXJlcGFnZS90b2tlbic7XFxuICAgIGJvZHkgPSB7XFxuICAgICAgICBwd2RfaWQ6IHB3ZF9pZCxcXG4gICAgICAgIHBhc3Njb2RlOiBwYXNzY29kZVxcbiAgICB9O1xcbiAgICBfID0gcG9zdCh1cmwsIGJvZHkpO1xcbiAgICBpZiAoXy5zdGF0dXMgPT0gMjAwKSB7XFxuICAgICAgICBzdG9rZW4gPSBfLmRhdGEuc3Rva2VuO1xcbiAgICAgICAgc3Rva2VuID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0b2tlbik7XFxuICAgICAgICBwdXRNeVZhcignc3Rva2VuJywgc3Rva2VuKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuICAgIHJldHVybiBmYWxzZTtcXG59XFxuXFxuXFxuXFxuXFxuLy8g6LWE5rqQ5aSn5bCPXFxuZ2V0eiA9IChiKSA9PiB7XFxuICAgIGtiID0gfn4oYiAqIDEwMCAvIDEwMjQpIC8gMTAwO1xcbiAgICBpZiAoa2IgPiAxMDI0KSB7XFxuICAgICAgICBtYiA9IH5+KGtiICogMTAwIC8gMTAyNCkgLyAxMDBcXG4gICAgICAgIGlmIChtYiA+IDEwMjQpIHtcXG4gICAgICAgICAgICBnYiA9IH5+KG1iICogMTAwIC8gMTAyNCkgLyAxMDBcXG4gICAgICAgICAgICByZXR1cm4gZ2IudG9GaXhlZCgyKSArICdHQic7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbWIudG9GaXhlZCgyKSArICdNQic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGtiLnRvRml4ZWQoMikgKyAnS0InO1xcbn1cXG5cXG5cXG5cXG4vLyDojrflj5botYTmupDliJfooahcXG5nZXRkID0gKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpID0+IHtcXG5cXG4gICAgLy8g5pS26JeP5ZCO6YeN5byA5pegc3Rva2Vu44CCXFxuICAgIC8vIOWFiOWIpOWumu+8jOWwkeWKoOi9veS4gOasoemTvuaOpeOAglxcbiAgICBpZiAoZ2V0TXlWYXIoJ3N0b2tlbicpID09ICcnKSB7XFxuICAgICAgICBpZiAoZ2V0cyhwd2RfaWQsIHBhc3Njb2RlKSkge1xcbiAgICAgICAgICAgIHJldHVybiBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkID0gW3tcXG4gICAgICAgICAgICB0aXRsZTogXy5tZXNzYWdlXFxuICAgICAgICB9XTtcXG4gICAgfVxcbiAgICBzZXRQYWdlUGljVXJsKFxcXCJcXFwiKTtcXG4gICAgUGFnZVRpdGxlID0gZ2V0UGFnZVRpdGxlKCkucmVwbGFjZSgvXFxcXHMqXFxcXC1cXFxccypb5L+d5o6S5qC35YiGXVvlrZjluo/lvI/kuqtdXFxcXHMqJC8sICcnKTtcXG4gICAgc2V0UGFnZVRpdGxlKFBhZ2VUaXRsZSk7XFxuICAgIGNvcHl1cmwgPSB7XFxuICAgICAgICB0aXRsZTogJyDimIYg5YiG5Lqr6LWE5rqQ6ZO+5o6lIOKYhiAnLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUpID0+IHtcXG4gICAgICAgICAgICB1cmwgPSBcXFwiY29weTovL2h0dHBzOi8vcGFuLnF1YXJrLmNuL3MvXFxcIiArIHB3ZF9pZDtcXG4gICAgICAgICAgICBpZiAocGFzc2NvZGUpIHtcXG4gICAgICAgICAgICAgICAgdXJsICs9IFxcXCJcXFxcblxcXFxu5o+Q5Y+W56CBJO+8mlxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgfSwgcHdkX2lkLCBwYXNzY29kZSlcXG4gICAgfTtcXG5cXG5cXG4gICAgaWYgKHNvcnRudW0gPT0gJ3VuZGVmaW5lZCcgfHwgIXNvcnRudW0pIHtcXG4gICAgICAgIHNvcnRudW0gPSBnZXRJdGVtKCdzb3J0bnVtJywgJzAnKTtcXG4gICAgfVxcbiAgICBpZiAoc3R5bGUxID09ICd1bmRlZmluZWQnIHx8ICFzdHlsZTEpIHtcXG4gICAgICAgIHN0eWxlMSA9IGdldEl0ZW0oJ3N0eWxlMScsICfnqIvluo/pu5jorqQnKTtcXG4gICAgfVxcblxcblxcbiAgICBzb3J0bnVtID0gTnVtYmVyKGdldE15VmFyKCdzb3J0bnVtJywgc29ydG51bSkpO1xcbiAgICBzdHlsZTEgPSBTdHJpbmcoZ2V0TXlWYXIoJ3N0eWxlMScsIHN0eWxlMSkpO1xcbiAgICBjbGVhck15VmFyKCdzb3J0bnVtJyk7XFxuICAgIGNsZWFyTXlWYXIoJ3N0eWxlMScpO1xcblxcblxcblxcbiAgICBkID0gW107XFxuICAgIGV4dHJhID0ge1xcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgIHRpdGxlOiAnIOKYhSDmiZPlvIDkuLrmlrDkuoznuqcg4piFICcsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGlucHV0KSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT11Y2tr5LqRJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIFtwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXSA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0cyhwd2RfaWQsIHBhc3Njb2RlKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldGQocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0sIHN0eWxlMSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpO1xcbiAgICAgICAgICAgIH0sIHB3ZF9pZCArICcjJyArIHBhc3Njb2RlICsgJyMnICsgcGRpcl9maWQgKyAnIycgKyBzb3J0bnVtICsgXFxcIiNcXFwiICsgc3R5bGUxKVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAnIOKYhSDlpI3liLbmkJzntKLor63lj6Ug4piFICcsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vL3MvXFxcIiArIHB3ZF9pZCArIFxcXCIvcGRpcl9maWQvXFxcIiArIHBkaXJfZmlkICsgXFxcIi9zb3J0bnVtL1xcXCIgKyBzb3J0bnVtO1xcbiAgICAgICAgICAgICAgICBpZiAocGFzc2NvZGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBcXFwiJFxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsXFxuICAgICAgICAgICAgfSwgcHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0pXFxuICAgICAgICB9LCBjb3B5dXJsXVxcbiAgICB9O1xcblxcblxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSMyMGIyYWE+JyArIFBhZ2VUaXRsZSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9I2ZmN2Y1MD7mjpLluo/vvJonICsgc29ydDFbc29ydG51bV0gKyAn44CA5qC35byP77yaJyArIHN0eWxlMSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgIHVybDogJChbXFxcIui/lOWbnuS4iue6p1xcXCIsIFxcXCLmn6XnnIvmlLbol49cXFwiLCBcXFwi5Y6G5Y+y5rWP6KeIXFxcIl0sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICfov5Tlm57kuIrnuqcnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICdoaWtlcjovL2hvbWVAdWNra+S6kSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICfmn6XnnIvmlLbol48nOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICdoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT11Y2tr5LqRJztcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+WOhuWPsua1j+iniCc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ2hpa2VyOi8vaGlzdG9yeT9ydWxlPXVja2vkupEnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiB1cmw7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKENvbG9yKCfkv53lrZgnKSkpLFxcbiAgICAgICAgICAgIHVybDogJC5yZXF1aXJlKFxcXCLkv53lrZg/cnVsZT11Y2tr5LqRXFxcIikoUGFnZVRpdGxlLCBwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxKSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzInLCAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvOC5wbmcnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfc21hbGxfNCcsXFxuICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICB9KTtcXG5cXG5cXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKENvbG9yKCfmjpLluo8nKSkpLFxcbiAgICAgICAgICAgIHVybDogJChzb3J0MSwgMSwgJ+ivt+mAieaLqScpLnNlbGVjdCgoc3R5bGUxKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOi/keabtOaWsCc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRudW0nLCAnMCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAn5ZCN56ew5q2j5bqPJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydG51bScsICcxJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICflkI3np7DlgJLluo8nOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0bnVtJywgJzInKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+WPkeW4g+aXtumXtCc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRudW0nLCAnMycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzdHlsZTEnLCBzdHlsZTEpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0sIHN0eWxlMSksXFxuICAgICAgICAgICAgaW1nOiBnZXRJdGVtKCdpbWczJywgJ2h0dHBzOi8vZ2hwcm94eS5jb20vaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL2xtdHViaWFvL21haW4vcmVkLzQwLnBuZycpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF9zbWFsbF80JyxcXG4gICAgICAgICAgICBleHRyYTogZXh0cmFcXG4gICAgICAgIH0pO1xcblxcblxcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogUmljaChTdHJvbmcoQ29sb3IoJ+agt+W8jycpKSksXFxuICAgICAgICAgICAgdXJsOiAkKHN0eWxlLCAxLCAn6K+36YCJ5oupJykuc2VsZWN0KChzb3J0bnVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0bnVtJywgc29ydG51bSk7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzdHlsZTEnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBTdHJpbmcoc29ydG51bSkpLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nNCcsICdodHRwczovL2docHJveHkuY29tL2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sczEyNTc4MTAwMy9sbXR1Ymlhby9tYWluL3JlZC8yNy5wbmcnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfc21hbGxfNCcsXFxuICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICB9KTtcXG5cXG5cXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKENvbG9yKCfliIbkuqsnKSkpLFxcbiAgICAgICAgICAgIHVybDogJChbJ+aJk+W8gOS4uuaWsOS6jOe6pycsICflpI3liLbmkJzntKLor63lj6UnLCAn5YiG5Lqr6LWE5rqQ6ZO+5o6lJ10sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKGxpc3QpID0+IHtcXG4gICAgICAgICAgICAgICAgZm9yIChpIGluIGxpc3QpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0W2ldLnRpdGxlLm1hdGNoKGlucHV0KSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGxpc3RbaV0uanMpXFxuICAgICAgICAgICAgfSwgZXh0cmEubG9uZ0NsaWNrKSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzUnLCAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvMTIucG5nJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kX3NtYWxsXzQnLFxcbiAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG5cXG5cXG5cXG5cXG5cXG4gICAgdXJsID0gXFxcImh0dHBzOi8vcGFuLnF1YXJrLmNuLzEvY2xvdWRkcml2ZS9zaGFyZS9zaGFyZXBhZ2UvZGV0YWlsP3B3ZF9pZD1cXFwiICsgcHdkX2lkICsgXFxcIiZzdG9rZW49XFxcIiArIGdldE15VmFyKCdzdG9rZW4nKSArIFxcXCImcGRpcl9maWQ9XFxcIiArIHBkaXJfZmlkICsgXFxcIiZmb3JjZT0wJl9wYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZfc2l6ZT01MCZfc29ydD1maWxlX3R5cGUlM0Fhc2MlMkNcXFwiICsgc29ydDJbc29ydG51bV07XFxuXFxuICAgIF8gPSBfXyA9IEpTT04ucGFyc2UoZmV0Y2godXJsKSk7XFxuXFxuXFxuICAgIGlmIChfLmNvZGUgIT0gMCB8fCBfLm1lc3NhZ2UgPT0gXFxcIuWIhuS6q+eahHN0b2tlbui/h+acn1xcXCIpIHtcXG4gICAgICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGdldGQocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQgPSBbe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLm1lc3NhZ2VcXG4gICAgICAgIH1dO1xcbiAgICB9O1xcblxcbiAgICB0cnkge1xcbiAgICAgICAgX18uZGF0YS5saXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICB0aW1lID0gXFxcIuKPse+4jyBcXFwiICsgJC5kYXRlRm9ybWF0KF8udXBkYXRlZF9hdCwgJ3l5eXktTU0tZGQnKSArIFxcXCLjgIBcXFwiO1xcblxcbiAgICAgICAgICAgIC8vIOaWh+S7tuWkueW1jOWll1xcbiAgICAgICAgICAgIGlmIChfLmZpbGVfdHlwZSA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBpZiAoXy5pbmNsdWRlX2l0ZW1zID09PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBudW0gPSAn8J+TgSAnICsgXy5pbmNsdWRlX2l0ZW1zICsgJ+mhuSc7XFxuICAgICAgICAgICAgICAgICAgICB1cmwgPSAndG9hc3Q6Ly/msqHmnInotYTmupAnO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbnVtID0gJ/Cfl4LvuI8gJyArIF8uaW5jbHVkZV9pdGVtcyArICfpobknO1xcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gJChlbXB0eSkucnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0ZChfWzBdLCBfWzFdLCBfWzJdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBwd2RfaWQgKyBcXFwiI1xcXCIgKyBwYXNzY29kZSArIFxcXCIjXFxcIiArIF8uZmlkKTtcXG4gICAgICAgICAgICAgICAgfVxcblxcblxcbiAgICAgICAgICAgICAgICBleHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogXy5maWxlX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcg4piFIOWkjeWItuaQnOe0ouivreWPpSDimIUgJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gXFxcImNvcHk6Ly8vcy9cXFwiICsgcHdkX2lkICsgXFxcIi9wZGlyX2ZpZC9cXFwiICsgcGRpcl9maWQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzY29kZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFxcXCIkXFxcIiArIHBhc3Njb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBwd2RfaWQsIHBhc3Njb2RlLCBfLmZpZCwgc29ydG51bSlcXG4gICAgICAgICAgICAgICAgICAgIH0sIGNvcHl1cmxdXFxuICAgICAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgICAgICAgICAgaWYgKHN0eWxlMSA9PSAn56iL5bqP6buY6K6kJykge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5maWxlX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBnZXRJdGVtKCdpbWc2JywgJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjIvMDgvMDUvNS8xMTBfZmE2NjBlMTNlZDY3Zjg2ODgyMDUwMWU2YWNlNmQ1ZTFfY29uXzEzMHgxMzAucG5nJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aW1lICsgbnVtLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogZXh0cmFcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5maWxlX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogdGltZSArIG51bSxcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzYnLCAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMi8wOC8wNS81LzExMF9mYTY2MGUxM2VkNjdmODY4ODIwNTAxZTZhY2U2ZDVlMV9jb25fMTMweDEzMC5wbmcnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogc3R5bGUxLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgLy8g5LiN5piv6Z+z6aKR5oiW6KeG6aKR5pe277yM5LiN5Yqg5YWl6ZuG5pWw5YiX6KGo44CCXFxuICAgICAgICAgICAgaWYgKCFfLmZpbGVfbmFtZS5tYXRjaCgvXFxcXC4oYXZpfHdtdnxtcGVnfG1wNHxtNHZ8bW92fGFzZnxmbHZ8ZjR2fHJtdmJ8cm18M2dwfHZvYnxta3Z8bTN1OHxhYWN8YWMzfGFpZmZ8YW1yfG00YXxtcDJ8bXAzfG9nZ3xyYXxhdXx3YXZ8d21hfG1rYXxmbGFjfHdhdikvKSkge1xcbiAgICAgICAgICAgICAgICB0eXBlID0gXFxcIm5vXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0eXBlID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHVybCA9IF8uZmlkICsgXFxcIiNcXFwiICsgcHdkX2lkICsgXFxcIiNcXFwiICsgXy5zaGFyZV9maWRfdG9rZW4gKyBcXFwiI1xcXCIgKyBwYXNzY29kZSArIGdldFU7XFxuICAgICAgICAgICAgZGVzYyA9IHRpbWUgKyBcXFwi8J+TpSBcXFwiICsgZ2V0eihfLnNpemUpO1xcblxcbiAgICAgICAgICAgIGlmIChzdHlsZTEgPT0gJ+eoi+W6j+m7mOiupCcpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLmZpbGVfbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBfLnRodW1ibmFpbCB8fCBnZXRJdGVtKCdpbWc3JywgJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjIvMDcvMjYvNy8xMTBfMTlkOTgyMzgxN2E4MzM3MDRkNmU5YjQwYzcxZGEwNDJfY29uXzEzMHgxMzAucG5nJyksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogXy5maWxlX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiB0eXBlICsgJ3BsYXlsaXN0J1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogXy5maWxlX25hbWVcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLmZpbGVfbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogXy50aHVtYm5haWwgfHwgZ2V0SXRlbSgnaW1nNycsICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA3LzI2LzcvMTEwXzE5ZDk4MjM4MTdhODMzNzA0ZDZlOWI0MGM3MWRhMDQyX2Nvbl8xMzB4MTMwLnBuZycpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IHN0eWxlMSxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZXJyKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLm1lc3NhZ2UsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy9cXFwiICsgcHdkX2lkXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHJldHVybiBkO1xcbn1cXG5cXG5cXG5cXG5cXG4vLyDojrflj5bkuIvovb3pk77mjqVcXG5nZXRVID0gJChcXFwiXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgIF8gPSBpbnB1dC5zcGxpdCgnIycpO1xcbiAgICByZXR1cm4gZ2V0dShfWzBdLCBfWzFdLCBfWzJdLCBfWzNdKTtcXG59KTtcXG5nZXR1ID0gKGEsIGIsIGMsIGUpID0+IHtcXG4gICAgdXJsID0gXFxcImh0dHBzOi8vcGFuLnF1YXJrLmNuLzEvY2xvdWRkcml2ZS9maWxlL3NoYXJlL2Rvd25sb2FkXFxcIjtcXG4gICAgYm9keSA9IHtcXG4gICAgICAgIGZpZHM6IFthXSxcXG4gICAgICAgIHB3ZF9pZDogYixcXG4gICAgICAgIHN0b2tlbjogZGVjb2RlVVJJQ29tcG9uZW50KGdldE15VmFyKCdzdG9rZW4nKSksXFxuICAgICAgICBmaWRzX3Rva2VuOiBbY11cXG4gICAgfTtcXG5cXG5cXG5cXG4gICAgXyA9IHBvc3QodXJsICsgXFxcIj9wcj11Y3BybyZmcj1oNVxcXCIsIGJvZHkpO1xcblxcblxcbiAgICBpZiAoXy5tZXNzYWdlID09IFxcXCLliIbkuqvnmoRzdG9rZW7ov4fmnJ9cXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0cyhiLCBlKSkge1xcbiAgICAgICAgICAgIHJldHVybiBnZXR1KGEsIGIsIGMsIGUpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQgPSBbe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLm1lc3NhZ2VcXG4gICAgICAgIH1dO1xcbiAgICB9O1xcblxcbiAgICBpZiAoXy5zdGF0dXMgPiAzMDAgfHwgXy5tZXNzYWdlID09IFxcXCLliIbkuqvkuI3lrZjlnKhcXFwiKSB7XFxuICAgICAgICBfID0gcG9zdCh1cmwsIGJvZHkpO1xcbiAgICB9XFxuICAgIGlmIChfLnN0YXR1cyA+IDMwMCB8fCBfLm1lc3NhZ2UgPT0gXFxcIuWIhuS6q+S4jeWtmOWcqFxcXCIpIHtcXG4gICAgICAgIF8gPSBwb3N0KHVybCArIFxcXCI/cHI9VUNCcm93c2VyJmZyPWg1XFxcIiwgYm9keSk7XFxuICAgIH1cXG5cXG4gICAgdHJ5IHtcXG4gICAgICAgIF8gPSBfLmRhdGFbMF07XFxuICAgICAgICB1cmwgPSBfLmRvd25sb2FkX3VybFxcbiAgICAgICAgaWYgKF8uZm9ybWF0X3R5cGUubWF0Y2goJ2F1ZGlvJykgfHwgXy5maWxlX25hbWUubWF0Y2goL1xcXFwuKGFhY3xhYzN8YWlmZnxhbXJ8bTRhfG1wMnxtcDN8b2dnfHJhfGF1fHdhdnx3bWF8bWthfGZsYWN8d2F2KS8pKSB7XFxuICAgICAgICAgICAgdXJsICs9IFxcXCIjaXNNdXNpYz10cnVlI1xcXCJcXG4gICAgICAgIH0gZWxzZSBpZiAoXy5mb3JtYXRfdHlwZS5tYXRjaCgndmlkZW8nKSB8fCBfLmZpbGVfbmFtZS5tYXRjaCgvXFxcXC4oYXZpfHdtdnxtcGVnfG1wNHxtNHZ8bW92fGFzZnxmbHZ8ZjR2fHJtdmJ8cm18M2dwfHZvYnxta3YpLykpIHtcXG4gICAgICAgICAgICB1cmwgKz0gXFxcIiNpc1ZpZGVvPXRydWUjXFxcIlxcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgIHVybCA9ICd0b2FzdDovL+aXoOazleiOt+WPlidcXG4gICAgfVxcbiAgICByZXR1cm4gdXJsO1xcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLogZrlkIjmkJzntKJcIixcInBhdGhcIjpcInNlYXJjaFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXVja2vkupEnLCB7fSkpLnJ1bGUpO1xcbmQgPSBbXTtcXG5fID0gTVlfVVJMLnNwbGl0KCcjIyMnKTtcXG5cXG4vLyDpu5jorqQx77yM6Laj55uY5pCcXFxuc2lkID0gX1szXSB8fCBnZXRJdGVtKCdzaWQnLCAnMScpO1xcbnNva2V5ID0gX1syXTtcXG5cXG5pZiAoc29rZXkubWF0Y2goL17ogZrlkIg/5pCc57SiPy8pKSB7XFxuICAgIHNpZCA9ICc5OTknXFxufVxcbnNva2V5ID0gc29rZXkudHJpbSgpLnJlcGxhY2UoL17ogZrlkIg/5pCc57SiPy8sIFxcXCJcXFwiKTtcXG5cXG5cXG5pZiAoc29rZXkubWF0Y2goL1xcXFwvc1xcXFxcXFxcP1xcXFwvLisvKSkge1xcbiAgICB2YXIgcHdkX2lkID0gTVlfVVJMLm1hdGNoKC9cXFxcL3NcXFxcXFxcXD9cXFxcLyhbXlxcXFwvXFxcXD9cXFxcJFxcXFwjXSspLylbMV0sXFxuICAgICAgICBwYXNzY29kZSA9IFxcXCJcXFwiLFxcbiAgICAgICAgcGRpcl9maWQgPSBzb3J0bnVtID0gMDtcXG4gICAgaWYgKHNva2V5Lm1hdGNoKC9cXFxcL3BkaXJfZmlkXFxcXC8uKy8pKSB7XFxuICAgICAgICBwZGlyX2ZpZCA9IHNva2V5Lm1hdGNoKC9cXFxcL3BkaXJfZmlkXFxcXC8oW15cXFxcL1xcXFw/XFxcXCRcXFxcI10rKS8pWzFdO1xcbiAgICB9XFxuICAgIGlmIChzb2tleS5tYXRjaCgvXFxcXC9zb3J0bnVtXFxcXC8uKy8pKSB7XFxuICAgICAgICBzb3J0bnVtID0gc29rZXkubWF0Y2goL1xcXFwvc29ydG51bVxcXFwvKFteXFxcXC9cXFxcP1xcXFwkXFxcXCNdKykvKVsxXTtcXG4gICAgfVxcbiAgICBpZiAoc29rZXkubWF0Y2goL1xcXFwkLisvKSkge1xcbiAgICAgICAgcGFzc2NvZGUgPSBzb2tleS5yZXBsYWNlKC9eW1xcXFxTXFxcXHNdK1xcXFwkKO+8mlxcXFxzKik/LywgJycpO1xcbiAgICB9XFxuXFxuXFxuICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCAwKTtcXG4gICAgICAgIGEgPSBbXTtcXG4gICAgICAgIGlmIChnZXRJdGVtKCdzdHlsZTEnLCAn56iL5bqP6buY6K6kJykgPT0gJ+eoi+W6j+m7mOiupCcpIHtcXG4gICAgICAgICAgICBmb3IgKGkgPSA1OyBpIDwgZC5sZW5ndGg7IGkgKz0gMykge1xcbiAgICAgICAgICAgICAgICBhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRbaV0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBkW2kgKyAxXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZFtpXS51cmwsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogZFtpXS50aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZm9yIChpID0gNTsgaSA8IGQubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgYS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkW2ldLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZFtpXS5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBkW2ldLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBkW2ldLnRpdGxlXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZCA9IGFcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQgPSBbe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLm1lc3NhZ2VcXG4gICAgICAgIH1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG5cXG5cXG4gICAgLy8g5L+d5a2Y5pCc57Si6K6w5b2VXFxuICAgIGxldCBoaXN0b3J5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwic2VhcmNoSGlzdG9yeVxcXCIsIFtdKTtcXG4gICAgbGV0IGlpID0gaGlzdG9yeS5pbmRleE9mKHNva2V5KTtcXG4gICAgaWYgKGlpID4gLTEpIHtcXG4gICAgICAgIGhpc3Rvcnkuc3BsaWNlKGlpLCAxKTtcXG4gICAgfVxcbiAgICBpZiAoaGlzdG9yeS5sZW5ndGggPiAyMCkge1xcbiAgICAgICAgaGlzdG9yeS5zcGxpY2UoaGlzdG9yeS5sZW5ndGggLSAxLCAxKTtcXG4gICAgfVxcbiAgICBoaXN0b3J5LnVuc2hpZnQoc29rZXkpO1xcbiAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJzZWFyY2hIaXN0b3J5XFxcIiwgaGlzdG9yeSk7XFxuXFxuXFxuICAgIHN3aXRjaCAoc2lkKSB7XFxuXFxuICAgICAgICBjYXNlICc5OTknOlxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6IGa5pCcID0+IFxcXCIgKyBzb2tleSxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgc29rZXkgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoc2FyciwgaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFNhcnIgPSBzdG9yYWdlMC5nZXRJdGVtKCdTYXJyJywgW10pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBTYXJyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyW1NhcnJbaV1dO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXJyLm1hcChbdGl0bGUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJoaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIGlucHV0LnJlcGxhY2UoL17ogZrlkIg/5pCc57SiP1xcXFxzKi8sICcnKSArIFxcXCIjIyNcXFwiICsgc2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6ICQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dWNra+S6kScpO1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzYXJyLCBzb2tleSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICcxJzpcXG4gICAgICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcblxcbiAgICAgICAgICAgIGZ1bmN0aW9uIGtleWVuKHN0cikge1xcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjRPVG9TY1VGT2FlVlRySEVcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjlDTEdhbzF2SEtxbTE3T3pcXFwiKTtcXG4gICAgICAgICAgICAgICAgdmFyIGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHtcXG4gICAgICAgICAgICAgICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2Uoc3RyKVxcbiAgICAgICAgICAgICAgICB9LCBrZXksIHtcXG4gICAgICAgICAgICAgICAgICAgIGl2OiBpdixcXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHRlZDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3lpc28uZnVuL2FwaS9zZWFyY2g/bmFtZT1cXFwiICsgc29rZXkgKyBcXFwiJnBhZ2VObz1cXFwiICsgTVlfUEFHRSArIFxcXCImZnJvbT1xdWFya1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT1cXFwiICsgc29rZXksXFxuICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogZ2V0SXRlbSgneWlzb3Vjb29rZScsICcnKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgLy9sb2coaHRtbCk7XFxuICAgICAgICAgICAgaWYgKGh0bWwuaW5jbHVkZXMoJ+eZu+W9leeUqOaIt+aXoOmZkOWIticpKSB7XFxuICAgICAgICAgICAgICAgIHZhciBpID0gMDtcXG4gICAgICAgICAgICAgICAgZG8ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5aW1nbGluID0gJ2h0dHBzOi8veWlzby5mdW4vYXBpL3VzZXIvbG9naW4vY2FwdGNoYT90PScgKyBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgKyAnJztcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbWcgPSBjb252ZXJ0QmFzZTY0SW1hZ2UodHlpbWdsaW4pLnNwbGl0KCcsJylbMV07XFxuICAgICAgICAgICAgICAgICAgICBsZXQgY29kID0gcmVxdWVzdCgnaHR0cHM6Ly9hcGkueGhvZmUudG9wL29jci9iNjQvdGV4dCcsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdmVyID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL3lpc28uZnVuL2FwaS91c2VyL2xvZ2luJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly95aXNvLmZ1bi9sb2dpbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb29raWUnOiBnZXRDb29raWUodHlpbWdsaW4pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1c2VyTmFtZVxcXCI6IFxcXCJ0dmJveDIwMjNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicGFzc3dvcmRcXFwiOiBcXFwiVHZib3gyMDIzXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBjb2RcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodmVyLmNvZGUgPT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCfmmJPmkJznmbvlhaXpqozor4HmiJDlip8nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd5aXNvdWNvb2tlJywgZ2V0Q29va2llKCdodHRwczovL3lpc28uZnVuJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3lpc28uZnVuL2FwaS9zZWFyY2g/bmFtZT1cXFwiICsgc29rZXkgKyBcXFwiJnBhZ2VObz1cXFwiICsgTVlfUEFHRSArIFxcXCImZnJvbT1xdWFya1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT1cXFwiICsgc29rZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogZ2V0SXRlbSgneWlzb3Vjb29rZScsICcnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBpKys7XFxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKGkgPCA0KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgSlNPTi5wYXJzZShodG1sKS5kYXRhLmxpc3RcXG4gICAgICAgICAgICAgICAgLm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLmdtdFNoYXJlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGtleWVuKF8udXJsKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG4gICAgICAgIGNhc2UgJzInOlxcbiAgICAgICAgICAgIHVybCA9ICdodHRwczovL3YuZnVubGV0dS5jb20vc2VhcmNoJ1xcbiAgICAgICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgICAgIFxcXCJzdHlsZVxcXCI6IFxcXCJnZXRcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZGF0YXNyY1xcXCI6IFxcXCJzZWFyY2hcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwicXVlcnlcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJkYXRldGltZVxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcImNvbW1vbmlkXFxcIjogMSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYXJtaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJmaWxlaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZXBvcnRpZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInZhbGlkaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2h0ZXh0XFxcIjogc29rZXlcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFnZVNpemVcXFwiOiAxMCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwYWdlSW5kZXhcXFwiOiBNWV9QQUdFXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJwcm9wXFxcIjogXFxcImlkXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJvcmRlclxcXCI6IFxcXCJkZXNjXFxcIlxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwibWVzc2FnZVxcXCI6IFxcXCLor7fmsYLotYTmupDliJfooajmlbDmja5cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHBvc3QodXJsLCBib2R5KS5kYXRhLm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKF8udmFsaWQgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLnVwZGF0ZXRpbWUgKyBcXFwi44CA8J+UliBcXFwiICsgXy5maWxldHlwZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBfLnVybCArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuXFxuXFxuICAgICAgICBjYXNlICczJzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly9haXBhbnNvLmNvbS9zZWFyY2g/cGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImaz1cXFwiICsgc29rZXkgKyBcXFwiJnM9MCZ0PS0xXFxcIjtcXG4gICAgICAgICAgICBwZGZhKGZldGNoKHVybCksIFxcXCJib2R5JiZ2YW4tcm93XFxcIilcXG4gICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYubWF0Y2goL1xcXFwvc1xcXFwvLykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBfID0gZGl2LnNwbGl0KCc8L3RlbXBsYXRlPicpXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoX1swXSwgXFxcIiomJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogcGRmaChfWzFdLCBcXFwiKiYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcImh0dHBzOi8vYWlwYW5zby5jb21cXFwiICsgaHJlZi5yZXBsYWNlKCcvcy8nLCAnL2N2LycpKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gSlNPTi5wYXJzZShmZXRjaChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiBpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGhyZWYgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnNCc6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LmN1cHBhc28uY29tL3NlYXJjaD90eXBlPWFsbCZrZXl3b3JkPVxcXCIgKyBzb2tleSArIFxcXCImcGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImc2VhcmNoVHlwZT0xXFxcIjtcXG4gICAgICAgICAgICBwZGZhKGZldGNoKHVybCksIFxcXCIucm93LWNhcmRzJiYuY2FyZFxcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoZGl2ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwZGZoKGRpdiwgXFxcIi5jYXJkLXRpdGxlJiZUZXh0XFxcIikucmVwbGFjZSgvXuWkuOWFi1vkupHnvZFd55uYXFxcXHMqXFxcXC1cXFxccyovLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIW5hbWUubWF0Y2goL14o8J+agOmXrumimOWPjemmiCk/JC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLmNhcmQtZm9vdGVyJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaHR0cHM6Ly93d3cuY3VwcGFzby5jb20vJyArIHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzRW5jcnlwdCA9ICh3b3JkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2tleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXCIxMjM0MTIzNDEyQUJDREVGXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2l2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIkFCQ0RFRjEyMzQxMjM0MTJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZSh3b3JkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkod29yZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KHdvcmQsIHN0cl9rZXksIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXY6IHN0cl9pdixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KS50b1N0cmluZygpLnJlcGxhY2UoL1xcXFxcXFwiL2csIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBhZXNFbmNyeXB0KHBkZmgoZmV0Y2goaW5wdXQpLCBcXFwiYSNnbyYmZGF0YS1pZFxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgaHJlZiArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICc1JzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly9ra3h6LnZpcC9hcGkvZGlzY3Vzc2lvbnM/aW5jbHVkZT11c2VyLGxhc3RQb3N0ZWRVc2VyLG1vc3RSZWxldmFudFBvc3QsbW9zdFJlbGV2YW50UG9zdC51c2VyLGZpcnN0UG9zdCx0YWdzLHRhZ3MucGFyZW50JmZpbHRlcltxXT1cXFwiICsgc29rZXkgKyBcXFwiJnNvcnQmcGFnZVtvZmZzZXRdPVxcXCIgKyAoKE1ZX1BBR0UgLSAxKSAqIDIwKTtcXG4gICAgICAgICAgICBfID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKTtcXG4gICAgICAgICAgICBwb3N0cyA9IFtdO1xcbiAgICAgICAgICAgIF8uaW5jbHVkZWQubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoXy50eXBlID09IFxcXCJwb3N0c1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHBvc3RzLnB1c2goXy5hdHRyaWJ1dGVzLmNvbnRlbnRIdG1sKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIF8uZGF0YS5tYXAoKF8sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgXyA9IF8uYXR0cmlidXRlcztcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKPse+4jyBcXFwiICsgXy5jcmVhdGVkQXQsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IycpLnJ1bGUoKHRleHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88YSBocmVmPVxcXCIuKj9xdWFya1xcXFwuY24vZywgJzxhIGhyZWY9XFxcImhpa2VyOi8vc2VhcmNoP3J1bGU9dWNra+S6kSZzPScpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBwb3N0c1tpXSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG4gICAgICAgIGNhc2UgJzYnOlxcbiAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3l1bnBhbjEuY2MvYXBpL2Rpc2N1c3Npb25zP2luY2x1ZGU9dXNlcixsYXN0UG9zdGVkVXNlcixtb3N0UmVsZXZhbnRQb3N0LG1vc3RSZWxldmFudFBvc3QudXNlcix0YWdzLHRhZ3MucGFyZW50LGZpcnN0UG9zdCZmaWx0ZXJbcV09XFxcIiArIHNva2V5ICsgXFxcIiB0YWc6a3Vha2UmZmlsdGVyW3RhZ109a3Vha2Umc29ydCZwYWdlW29mZnNldF09XFxcIiArICgoTVlfUEFHRSAtIDEpICogMjApO1xcbiAgICAgICAgICAgIF8gPSBKU09OLnBhcnNlKGZldGNoKHVybCkpO1xcbiAgICAgICAgICAgIHBvc3RzID0gW107XFxuICAgICAgICAgICAgXy5pbmNsdWRlZC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChfLnR5cGUgPT0gXFxcInBvc3RzXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcG9zdHMucHVzaChfLmF0dHJpYnV0ZXMuY29udGVudEh0bWwpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgXy5kYXRhLm1hcCgoXywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBfID0gXy5hdHRyaWJ1dGVzO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLmNyZWF0ZWRBdCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjJykucnVsZSgodGV4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzxhIGhyZWY9XFxcIi4qP3F1YXJrXFxcXC5jbi9nLCAnPGEgaHJlZj1cXFwiaGlrZXI6Ly9zZWFyY2g/cnVsZT11Y2tr5LqRJnM9JyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBvc3RzW2ldKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnNyc6XFxuICAgICAgICAgICAgaG9zdCA9IFxcXCJodHRwczovL3d3dy5ra3BhbnMuY29tL1xcXCI7XFxuICAgICAgICAgICAgaGVhZCA9IHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0OiAndGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45J1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignZm9ybWhhc2gnKSA9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgZm9ybWhhc2ggPSBwZGZoKGZldGNoUEMoaG9zdCwgaGVhZCksICdpbnB1dFtuYW1lPWZvcm1oYXNoXSYmdmFsdWUnKVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2Zvcm1oYXNoJywgZm9ybWhhc2gpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgYm9keSA9ICdtb2Q9Zm9ydW0mZm9ybWhhc2g9JyArIGdldE15VmFyKCdmb3JtaGFzaCcpICsgJyZzcmNodHlwZT10aXRsZSZzcmhmaWQ9JnNyaGxvY2FsaXR5PWZvcnVtOjppbmRleCZzcmNodHh0PScgKyBzb2tleSArICcmc2VhcmNoc3VibWl0PXRydWUnXFxuXFxuICAgICAgICAgICAgICAgIHVybCA9IEpTT04ucGFyc2UoZmV0Y2hQQyhob3N0ICsgJ3NlYXJjaC5waHA/c2VhcmNoc3VibWl0PXllcycsIHtcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXG4gICAgICAgICAgICAgICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgICAgICAgICAgICAgIH0pKS51cmw7XFxuXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdra3BhbnMnLCB1cmwucmVwbGFjZSgva3c9LiovLCAncGFnZT0nKSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB1cmwgPSBnZXRNeVZhcigna2twYW5zJykgKyBNWV9QQUdFXFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHBkZmEoZmV0Y2hQQyh1cmwsIGhlYWQpLCBcXFwiYm9keSYmbGkucGJ3XFxcIilcXG4gICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChkaXYsIFxcXCJoMyYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwicCwtMSYmVGV4dFxcXCIpLnJlcGxhY2UoL14oLis/KSAuK1xcXFwtIC8sICfij7HvuI8gJDHjgIDwn4+377iPICcpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjJykucnVsZSgodXJsLCBoZWFkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZmV0Y2hQQyh1cmwsIGhlYWQpLCBcXFwiYm9keSYmLnRfZnx8Lm1lc3NhZ2UmJkh0bWxcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88YSBocmVmPVxcXCIuKj9xdWFya1xcXFwuY24vZywgJzxhIGhyZWY9XFxcImhpa2VyOi8vc2VhcmNoP3J1bGU9dWNra+S6kSZzPScpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBob3N0ICsgcGRmaChkaXYsIFxcXCJhLDAmJmhyZWZcXFwiKSwgaGVhZClcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICc4JzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly93d3cueGlhb2JhaXBhbi5jb20vbGlzdC1cXFwiICsgc29rZXkgKyBcXFwiLXBcXFwiICsgTVlfUEFHRSArIFxcXCIuaHRtbFxcXCI7XFxuICAgICAgICAgICAgcGRmYShmZXRjaCh1cmwpLCBcXFwiYm9keSYmLmFkZC1kZXRhaWxzXFxcIilcXG4gICAgICAgICAgICAgICAgLm1hcCgoZGl2LCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBocmVmID0gXFxcImh0dHBzOi8vd3d3LnhpYW9iYWlwYW4uY29tXFxcIiArIHBkZmgoZGl2LCBcXFwiYSwxJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRpdiwgXFxcImEsMSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLmluZm8tcm93JiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGhyZWYpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBkZmgoZmV0Y2goaW5wdXQpLCBcXFwiI2J0bi1saW5rJiZhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gXFxcImh0dHBzOi8vd3d3LnhpYW9iYWlwYW4uY29tXFxcIiArIGhyZWY7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gSlNPTi5wYXJzZShmZXRjaChocmVmLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlcic6ICdodHRwczovL3d3dy54aWFvYmFpcGFuLmNvbSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmhlYWRlcnNcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IF8ubG9jYXRpb25bMF0gfHwgXy5Mb2NhdGlvblswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5tYXRjaCgvcXVhcmsvaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIHVybCArIFxcXCImcnVsZT11Y2tr5LqRXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6ZO+5o6l6ZSZ6K+vL+ayoeaciei1hOa6kFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICc5JzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly9hcGkuaHVuaGVwYW4uY29tL3YxL3NlYXJjaFxcXCI7XFxuICAgICAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICAgICAgcTogc29rZXksXFxuICAgICAgICAgICAgICAgIHBhZ2U6IE1ZX1BBR0UsXFxuICAgICAgICAgICAgICAgIHNpemU6IDE1XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBwb3N0KHVybCwgYm9keSkuZGF0YS5saXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKF8uZGlza190eXBlLm1hdGNoKC9xdWFyay9pKSkge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5kaXNrX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKPse+4jyBcXFwiICsgXy51cGRhdGVfdGltZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBfLmxpbmsgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnMTAnOlxcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcignYnVpbGRJZCcpID09ICcnKSB7XFxuICAgICAgICAgICAgICAgIGJ1aWxkSWQgPSBmZXRjaChcXFwiaHR0cHM6Ly93d3cucGFuc2VhcmNoLm1lL1xcXCIpLm1hdGNoKC9idWlsZElkXFxcIjpcXFwiKFteXFxcIl0rKS8pWzFdXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdidWlsZElkJywgYnVpbGRJZClcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LnBhbnNlYXJjaC5tZS9fbmV4dC9kYXRhL1xcXCIgKyBnZXRNeVZhcignYnVpbGRJZCcpICsgXFxcIi9zZWFyY2guanNvbj9rZXl3b3JkPVxcXCIgKyBzb2tleSArIFxcXCImb2Zmc2V0PVxcXCIgKyAoKE1ZX1BBR0UgLSAxKSAqIDEwKSArIFxcXCImcGFuPXF1YXJrXFxcIlxcbiAgICAgICAgICAgIEpTT04ucGFyc2UoZmV0Y2godXJsKSlcXG4gICAgICAgICAgICAgICAgLnBhZ2VQcm9wcy5kYXRhLmRhdGEubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5jb250ZW50Lm1hdGNoKC/otYTmupDlkI3np7DvvJo/KFteXFxcXG5dKykvKVsxXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLnRpbWUucmVwbGFjZSgvVC4qLywgJ+OAgPCflJYgJykgKyBfLmNvbnRlbnQubWF0Y2goL+aWh+S7tuexu+Wei++8mj8oW15cXFxcbl0rKS8pWzFdLnJlcGxhY2UoLzxcXFxcLz9zcGFuW14+XSo+L2csICcnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBwZGZoKF8uY29udGVudCwgXFxcImEmJmhyZWZcXFwiKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG4gICAgICAgIGNhc2UgJzExJzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly93d3cubGFpc295aXhpYS5jb20vcy9zZWFyY2g/cT1cXFwiICsgc29rZXkgKyBcXFwiJmN1cnJlbnRQYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZvPTQxXFxcIlxcbiAgICAgICAgICAgIHBkZmEoZmV0Y2godXJsKSwgXFxcImJvZHkmJi5yZXN1bHQtcGllY2VcXFwiKVxcbiAgICAgICAgICAgICAgICAubWFwKGRpdiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRpdiwgXFxcIi50aXRsZSYmYSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLmJhc2ljLWluZm8mJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBwZGZoKGRpdiwgXFxcIi50aXRsZSYmYSYmaHJlZlxcXCIpICsgXFxcIiZydWxlPXVja2vkupFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnMTInOlxcbiAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3d3dy53b3hpYW5nc291LmNvbS9hcGkvdjEvcmVzSW5mby9zZWFyY2g/ZGV2aWNlSWQ9MCZrZXl3b3JkPVxcXCIgKyBzb2tleSArIFxcXCImc291cmNlVHlwZT0zJnRpbWVGaWx0ZXI9MCZzaXplRmlsdGVyPTAmb2Zmc2V0PVxcXCIgKyAoKE1ZX1BBR0UgLSAxKSAqIDIwKSArIFxcXCImbGltaXQ9MjAmYXBwbHlBdD0wJmNoYW5uZWxJZD0wXFxcIlxcbiAgICAgICAgICAgIEpTT04ucGFyc2UoZmV0Y2godXJsKSlcXG4gICAgICAgICAgICAgICAgLnJlc0luZm9zLm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyAoJC5kYXRlRm9ybWF0KF8ubGFzdFVwZGF0ZVRpbWUgLyAxLCAneXl5eS1NTS1kZCcpKSArIFxcXCLjgIDwn5OlIFxcXCIgKyBnZXR6KF8uc2l6ZSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgZGVjb2RlVVJJQ29tcG9uZW50KF8udXJsKS5yZXBsYWNlKC9eW1xcXFxzXFxcXFNdKj9cXFxcL3NcXFxcLy8sIFxcXCIvcy9cXFwiKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG5cXG4gICAgICAgIGNhc2UgJzEzJzpcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cHM6Ly93d3cueXVuc28ubmV0L2FwaS92YWxpZGF0ZS9zZWFyY2g/d2Q9XFxcIiArIHNva2V5ICsgXFxcIiZtb2RlPTkwMDAxJnN0eXBlPTIwNTAwJnVrPSZwYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZsaW1pdD0yMCZzY3JlZW5fZmlsZXR5cGU9dW5kZWZpbmVkXFxcIlxcbiAgICAgICAgICAgIGRhdGEgPSAnPGJvZHk+JyArIEpTT04ucGFyc2UoZmV0Y2godXJsKSkuZGF0YSArICc8L2JvZHk+J1xcbiAgICAgICAgICAgIHBkZmEoU3RyaW5nKGRhdGEpLCBcXFwiYm9keSYmLmxheXVpLWNhcmRcXFwiKVxcbiAgICAgICAgICAgICAgICAubWFwKGRpdiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAocGRmaChkaXYsIFxcXCJhJiZUZXh0XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChkaXYsIFxcXCJhJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLmxheXVpLWNhcmQtYm9keSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBiYXNlNjREZWNvZGUocGRmaChkaXYsIFxcXCJkaXYmJnVybFxcXCIpKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICcxNCc6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3Lm5tbWUueHl6L3MvXFxcIiArIE1ZX1BBR0UgKyBcXFwiL1xcXCIgKyBzb2tleVxcbiAgICAgICAgICAgIGJvZHkgPSBmZXRjaCh1cmwpXFxuICAgICAgICAgICAgdGl0bGUgPSBwZGZhKGJvZHksIFxcXCJib2R5JiZhLmNvcHlbZGF0YS10eXBlfj1xdWFya11cXFwiKVxcbiAgICAgICAgICAgIHBkZmEoYm9keSwgXFxcImJvZHkmJmEub3BlbjpoYXMoaW1nW3NyY349cXVhcmtdKVxcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoKGRpdiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IHBkZmgoZGl2LCBcXFwiYSYmZGF0YS1jb2RlXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBcXFwiaHR0cHM6Ly93d3cubm1tZS54eXovb3Blbi9vdGhlci9cXFwiICsgcGRmaChkaXYsIFxcXCJhJiZkYXRhLXVybFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKHRpdGxlW2ldLCBcXFwiYSYmZGF0YS10aXRsZVxcXCIpLnJlcGxhY2UoL+WkuOWFi1vkupHnvZFd55uYLywgJycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLmj5Dlj5bnoIHvvJpcXFwiICsgY29kZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoaHJlZikubGF6eVJ1bGUoKGNvZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGZldGNoKGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly93d3cubm1tZS54eXovJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGhyZWYgKyBcXFwiJFxcXCIgKyBjb2RlICsgXFxcIiZydWxlPXVja2vkupFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29kZS5yZXBsYWNlKC9e5pegJC8sIFxcXCJcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBjYXNlICcxNSc6XFxuICAgICAgICAgICAgaG9zdCA9ICdodHRwczovL3d3dy5zb3VzdW9wYW4uY29tJztcXG4gICAgICAgICAgICB1cmwgPSBob3N0ICsgXFxcIi9zZWFyY2g/cGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImY2F0ZWdvcnk9JnNpdGU95aS45YWL572R55uYJnNpemU9MCZ0aW1lPTAma2V5d29yZD1cXFwiICsgc29rZXk7XFxuICAgICAgICAgICAgcGRmYShmZXRjaCh1cmwpLCBcXFwiYm9keSYmLnBvc3QtaGVhZFxcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoZGl2ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGl2LCBcXFwiYSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLij7HvuI8gXFxcIiArIHBkZmgoZGl2LCBcXFwiLmZlZWRfdGltZSYmVGV4dFxcXCIpICsgcGRmaChkaXYsIFxcXCIuc2l6ZSYmVGV4dFxcXCIpLnJlcGxhY2UoL14oLispLywgXFxcIuOAgPCfk6UgJDFcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoaG9zdCArIHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpLnJlcGxhY2UoJy9maWxlLycsICcvcmVkaXJlY3QvJykpLmxhenlSdWxlKCgpID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gcGRmaChmZXRjaChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVyJzogaW5wdXRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFxcXCIjdGlwX21zZyYmcCwxJiZUZXh0XFxcIik7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgdXJsICsgXFxcIiZydWxlPXVja2vkupFcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcblxcbiAgICAgICAgY2FzZSAnMTYnOlxcbiAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3d3dy5hbHlwdy5jbi9zZWFyY2gucGhwP3E9XFxcIiArIHNva2V5ICsgXFxcIiZwYWdlPVxcXCIgKyBNWV9QQUdFO1xcbiAgICAgICAgICAgIHBkZmEoZmV0Y2godXJsKSwgXFxcIi5saXN0JiZsaVxcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoZGl2ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwZGZoKGRpdiwgXFxcImltZyYmYWx0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5tYXRjaCgv5aS45YWLW14o5paw55So5oi3KV0vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuYW1lLnJlcGxhY2UoL1xcXFxbW15cXFxcXV0q5aS45YWLW15cXFxcXV0qXFxcXF1cXFxccyovLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfwn5OWICcgKyBwZGZoKGRpdiwgXFxcIi5pbmZvJiZzcGFuLDAmJlRleHRcXFwiKSArICfjgIDij7HvuI8gJyArIHBkZmgoZGl2LCBcXFwiLmluZm8mJnNwYW4sMSYmVGV4dFxcXCIpICsgJ1xcXFxuJyArIHBkZmgoZGl2LCBcXFwicCYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHBkZmgoZGl2LCBcXFwiaW1nJiZzcmNcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gcGRmaChmZXRjaChpbnB1dCksIFxcXCIuYXJ0aWNsZV9jb250ZW50JiZhW2hyZWZ+PXF1YXJrLmNuXSYmaHJlZlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGhyZWYgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnMTcnOlxcbiAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3d3dy50YnNkeS5jb20vc2VhcmNoLmh0bWw/a2V5d29yZD1cXFwiICsgc29rZXkgKyBcXFwiJnBhZ2VkPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZjYXRlZ29yeT05ODM5MjUmZGF0YV90eXBlPTk4NzkxMFxcXCI7XFxuICAgICAgICAgICAgcGRmYShmZXRjaFBDKHVybCksIFxcXCIuc2VhcmNoX3Jlc3VsdF9uZXRkaXNrX2xpc3QmJmFcXFwiKVxcbiAgICAgICAgICAgICAgICAubWFwKGRpdiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRpdiwgXFxcImEmJlRleHRcXFwiKS5yZXBsYWNlKC9cXFxccyrlpLjlhYtb572R5LqRXeebmFxcXFxzKiQvLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgcGRmaChkaXYsIFxcXCJhJiZocmVmXFxcIikgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5peg5rOV6I635Y+W5pCc57Si5o6l5Y+jXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi56iL5bqP6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuXFxuZmFyciA9IFtcXG4gICAgXFxcIumaj+acuuS4u+mhtVxcXCIsXFxuICAgIFxcXCJra+Wwj+ermVxcXCIsXFxuICAgIFxcXCJra+ekvuWMulxcXCIsXFxuICAgIFxcXCJra+i1hOa6kFxcXCIsXFxuICAgIFxcXCLpmL/ph4zkupHnm5jnvZFcXFwiLFxcbiAgICBcXFwi5Zyf5ouo6byg55S15b2xXFxcIixcXG5dO1xcblxcbmQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIFtcXFwi5oiR55qE5pS26JePXFxcIiwgXFxcIuaQnOe0ouWPkeeOsFxcXCIsIFxcXCJ4NS13ZWJcXFwiLCBcXFwi56iL5bqP6K6+572uXFxcIl0ubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigndGlkJywgZ2V0SXRlbSgndGlkJywgJzAnKSkgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcigndGlkJywgaSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2knKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxufVxcblxcblxcblxcbnRpZCA9IGdldE15VmFyKCd0aWQnLCBnZXRJdGVtKCd0aWQnLCAnMCcpKTtcXG5pZiAodGlkIDwgMiAmJiBNWV9QQUdFID09IDEpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn8J+UjScsXFxuICAgICAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g6ZO+5o6lJOaPkOWPlueggScsXFxuICAgICAgICB1cmw6ICdcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiK2lucHV0K1xcXCImcnVsZT1cXFwiK01ZX1JVTEUudGl0bGUnLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfmiJHnmoTmlLbol48nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9dWNra+S6kScsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5Y6G5Y+y5rWP6KeIJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vaGlzdG9yeT9ydWxlPXVja2vkupEnLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+afpeivoui1hOa6kCcsXFxuICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLovpPlhaXotYTmupDlhbPplK7or41cXFwiKS5pbnB1dCgoenkpID0+IHtcXG4gICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgenkubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBbYSwgYiwgYywgZSwgZiwgZ10gPSBfO1xcbiAgICAgICAgICAgICAgICBpZiAoYiAhPSB1bmRlZmluZWQgJiYgKFN0cmluZyhhKS5tYXRjaChpbnB1dCkgfHwgaW5wdXQubWF0Y2goYSkpKSB7XFxuICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCAwXFxuICAgICAgICAgICAgICAgICAgICBleHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJyDimIUg5aSN5Yi25pCc57Si6K+t5Y+lIOKYhSAnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vL3MvXFxcIiArIHB3ZF9pZCArIFxcXCIvcGRpcl9maWQvXFxcIiArIHBkaXJfZmlkICsgXFxcIi9zb3J0bnVtL1xcXCIgKyBzb3J0bnVtO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFxcXCIkXFxcIiArIHBhc3Njb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLCBjLCBlLCBmKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcg4piGIOWIhuS6q+i1hOa6kOmTvuaOpSDimIYgJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy9cXFwiICsgcHdkX2lkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFxcXCJcXFxcblxcXFxu5o+Q5Y+W56CBJO+8mlxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYiwgYylcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyBhICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5IyNmeXBhZ2UnKS5ydWxlKChpbnB1dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXSA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgYiArIFxcXCIjXFxcIiArIGMgKyBcXFwiI1xcXCIgKyBlICsgXFxcIiNcXFwiICsgZiArIFxcXCIjXFxcIiArIGcpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nMCcsICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA4LzA1LzUvMTEwX2ZhNjYwZTEzZWQ2N2Y4Njg4MjA1MDFlNmFjZTZkNWUxX2Nvbl8xMzB4MTMwLnBuZycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogZXh0cmFcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMnKS5ydWxlKChkKSA9PiBzZXRSZXN1bHQoZCksIGQpO1xcbiAgICAgICAgfSwgenkpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+mrmOe6p+aQnOe0oicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoMicsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxufVxcbmlmICh0aWQgPT0gJzAnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjdmNTA+5oiR55qE5pS26JePPC9mb250PjwvYj4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9dWNra+S6kVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGlpID0gMDtcXG4gICAgaVRhZyA9IFtdO1xcbiAgICB6eS5tYXAoKFthLCBiLCBjLCBlLCBmLCBnXSwgaSkgPT4ge1xcbiAgICAgICAgaWYgKCFiKSB7XFxuICAgICAgICAgICAgaVRhZy5wdXNoKFthLCBpXSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCdpJywgJzAnKSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKGEpKSkgOiBhLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpJywgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpaSsrXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICB9KTtcXG5cXG4gICAgaSA9IH5+Z2V0TXlWYXIoJ2knLCAnMCcpO1xcbiAgICBpZiAoaSA+IGlUYWcubGVuZ3RoIC0gMSkge1xcbiAgICAgICAgcHV0TXlWYXIoJ2knLCAnMCcpO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgfVxcbiAgICBpaSA9IGlUYWdbaSArIDFdID8gaVRhZ1tpICsgMV1bMV0gOiB6eS5sZW5ndGg7XFxuICAgIGkgPSBpVGFnW2ldWzFdICsgMTtcXG4gICAgZm9yICg7IGkgPCBpaTsgaSsrKSB7XFxuICAgICAgICBbYSwgYiwgYywgZSwgZiwgZ10gPSB6eVtpXTtcXG5cXG4gICAgICAgIGUgPSBlIHx8IDA7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBTdHJvbmcoYSksXFxuICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5ydWxlKChpbnB1dCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIFtwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXSA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgZCA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgfSwgYiArIFxcXCIjXFxcIiArIGMgKyBcXFwiI1xcXCIgKyBlICsgXFxcIiNcXFwiICsgZiArIFxcXCIjXFxcIiArIGcpLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nMCcsICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA4LzA1LzUvMTEwX2ZhNjYwZTEzZWQ2N2Y4Njg4MjA1MDFlNmFjZTZkNWUxX2Nvbl8xMzB4MTMwLnBuZycpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJyDimIUg5aSN5Yi25pCc57Si6K+t5Y+lIOKYhSAnLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gXFxcImNvcHk6Ly8vcy9cXFwiICsgcHdkX2lkICsgXFxcIi9wZGlyX2ZpZC9cXFwiICsgcGRpcl9maWQgKyBcXFwiL3NvcnRudW0vXFxcIiArIHNvcnRudW07XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCArPSBcXFwiJFxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgICAgICAgICAgfSwgYiwgYywgZSwgZilcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcg4piGIOWIhuS6q+i1hOa6kOmTvuaOpSDimIYgJyxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChwd2RfaWQsIHBhc3Njb2RlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gXFxcImNvcHk6Ly9odHRwczovL3Bhbi5xdWFyay5jbi9zL1xcXCIgKyBwd2RfaWQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCArPSBcXFwiXFxcXG5cXFxcbuaPkOWPlueggSTvvJpcXFwiICsgcGFzc2NvZGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGIsIGMpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxufSBlbHNlIGlmICh0aWQgPT0gJzEnKSB7XFxuICAgIGlpID0gZ2V0TXlWYXIoJ2lpJywgZ2V0SXRlbSgnaWknLCAnMScpKTtcXG4gICAgaWYgKGlpID09ICcwJykge1xcbiAgICAgICAgaWkgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIChmYXJyLmxlbmd0aCAtIDEpKTtcXG4gICAgICAgIHRvYXN0KCfpmo/mnLrkuLvpobUg4oaSICcgKyBmYXJyW2lpXSk7XFxuICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgIH1cXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjdmNTA+JyArIGZhcnJbaWldICsgJzwvZm9udD48L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoZmFyciwgMSwgJ+mAieaLqeWPkeeOsOaOpeWPoycpLnNlbGVjdCgoZmFycikgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBmYXJyLmluZGV4T2YoaW5wdXQpKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcigndGlpJyk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSwgZmFyciksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgICQucmVxdWlyZShcXFwi5Y+R546wP3J1bGU9dWNra+S6kVxcXCIpKGZhcnJbaWldKTtcXG59IGVsc2UgaWYgKHRpZCA9PSAnMicpIHtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmN2Y1MD54NV93ZWI8L2ZvbnQ+PC9iPicsXFxuICAgICAgICBkZXNjOiAn6K+36YCJ5oup5o6l5Y+jJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcblxcblxcbiAgICBsZXQge1xcbiAgICAgICAgbG9hZFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDUtZGF0YVxcXCIpO1xcbiAgICBsZXQgYXJyID0gbG9hZCgpO1xcbiAgICBmb3IgKGl0IG9mIGFycikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxiPicgKyBpdC5uYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodSkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCd1JywgdSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3g1LXdlYiNub0hpc3RvcnkjJztcXG4gICAgICAgICAgICB9LCBpdC51cmwpLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nMScsICdoaWtlcjovL2ltYWdlcy9ob21lX2JnJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogJ3g1LXdlYicsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi572u6aG2XFxcIiArIGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS94NS1kYXRhXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBpdC5uYW1lKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpFxcXCIgKyBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDUtZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaXQubmFtZSlcXG4gICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcblxcblxcblxcbn0gZWxzZSBpZiAodGlkID09ICczJykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48Zm9udCBjb2xvcj0jZmY3ZjUwPueoi+W6j+iuvue9rjwvZm9udD48L2I+JyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBbXFxcIuWfuuehgFxcXCIsIFxcXCLkuLvpobVcXFwiLCBcXFwi5LqM57qnXFxcIiwgXFxcIuaQnOe0olxcXCIsIFxcXCLogZrmkJxcXFwiLCBcXFwi5bCB6Z2iXFxcIl0ubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcignaScsICcwJykgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignaScsIGkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbiAgICBpID0gZ2V0TXlWYXIoJ2knLCAnMCcpO1xcbiAgICBpZiAoaSA9PSAnMCcpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLln7rnoYDorr7nva5cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIkdVSee8lui+kVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ndWknXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmgaLlpI3pu5jorqRcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3RpZCcpXFxuICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWknKVxcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NvcnRudW0nKVxcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3N0eWxlMScpXFxuICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnc2lkJylcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdTYXJyJylcXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgY2xlYXJJdGVtKCdpbWcnICsgaSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCJ4NS11cmzljrvph41cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcblxcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS94NS1kYXRhP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIGFycmF5ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDUtZGF0YVxcXCIpLmxvYWQoKS5jb25jYXQoZGVmYXVsdFZhbHVlKTtcXG5cXG4gICAgICAgICAgICAgICAgYXJyYXkgPSBhcnJheS5maWx0ZXIoKGl0ZW0sIGluZGV4LCBzZWxmKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5maW5kSW5kZXgob2JqID0+IG9iai51cmwgPT09IGl0ZW0udXJsKSA9PT0gaW5kZXg7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJkYXRhMVxcXCIsIGFycmF5KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgbGV0IGJhY2t1cEZpbGVOYW1lID0gXFxcImJhY2t1cC5qc29uXFxcIjtcXG4gICAgICAgIGxldCBwYXRoID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvZmlsZXMvdWNra+S6kS9cXFwiICsgYmFja3VwRmlsZU5hbWU7XFxuICAgICAgICBsZXQgYmFja3VwRmlsZSA9IG5ldyBqYXZhLmlvLkZpbGUoZ2V0UGF0aChwYXRoKS5zbGljZSg3KSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5aSH5Lu95LiO6L+Y5Y6fXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwi5LiK5qyh5aSH5Lu977yaXFxcIiArIChiYWNrdXBGaWxlLmV4aXN0cygpID8gJC5kYXRlRm9ybWF0KGJhY2t1cEZpbGUubGFzdE1vZGlmaWVkKCksICd5eXl5LU1NLWRkJykgOiBcXFwi6L+Y5pyq5aSH5Lu9XFxcIiksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgZiA9IChiYWNrdXBGaWxlTmFtZSkgPT4ge1xcbiAgICAgICAgICAgIGxldCBkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgIHNhdmVGaWxlKGJhY2t1cEZpbGVOYW1lLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpIfku73lrozmiJBcXFwiO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlpIfku71cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgICAgICB1cmw6IGJhY2t1cEZpbGUuZXhpc3RzKCkgPyAkKFxcXCLlt7LmnInlpIfku73mlofku7bmmK/lkKbopobnm5Y/XFxcIikuY29uZmlybShmLCBiYWNrdXBGaWxlTmFtZSkgOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKGYsIGJhY2t1cEZpbGVOYW1lKVxcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5oGi5aSNXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChiYWNrdXBGaWxlTmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UocmVhZEZpbGUoYmFja3VwRmlsZU5hbWUpKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iXFxcIikoZGF0YSk7XFxuICAgICAgICAgICAgfSwgYmFja3VwRmlsZU5hbWUpXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlkIjlubbmgaLlpI1cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGJhY2t1cEZpbGVOYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShyZWFkRmlsZShiYWNrdXBGaWxlTmFtZSkpO1xcbiAgICAgICAgICAgICAgICBsZXQgYWRkRGF0YSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKTtcXG4gICAgICAgICAgICAgICAgbGV0IGRhdGFQbGFuZSA9IGRhdGEuZmlsdGVyKHYgPT4gdi5sZW5ndGggPiAxKS5tYXAodiA9PiB2WzFdICsgdlszXSk7XFxuICAgICAgICAgICAgICAgIGxldCBuZXdEYXRlID0gYWRkRGF0YS5maWx0ZXIodiA9PiB2Lmxlbmd0aCA+IDEgJiYgIWRhdGFQbGFuZS5pbmNsdWRlcyh2WzFdICsgdlszXSkpO1xcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBkYXRhLmZpbmRJbmRleCh2ID0+IHYubGVuZ3RoID09PSAxICYmIHZbMF0gPT09IFxcXCLkvZzogIXmlrDlop5cXFwiKTtcXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzID0gZGF0YS5zcGxpY2UoMCwgaW5kZXggKyAxKTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzLmNvbmNhdChuZXdEYXRlLCBkYXRhKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaChbXFxcIuS9nOiAheaWsOWinlxcXCJdKTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmNvbmNhdChuZXdEYXRlKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCLmm7/mjaJcXFwiKShkYXRhKTtcXG4gICAgICAgICAgICB9LCBiYWNrdXBGaWxlTmFtZSlcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuajgOa1i+abtOaWsFxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIuW9k+WJjeeJiOacrO+8mlxcXCIgKyBTdHJpbmcoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2hvbWVAdWNra+S6kVxcXCIpKS52ZXJzaW9uKS5yZXBsYWNlKC8oXFxcXGRcXFxcZCkoXFxcXGRcXFxcZCkkLywgJy0kMS0kMicpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5XFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcblxcbiAgICAgICAgICAgICAgICB2dGltZSA9IE51bWJlcihnZXRJdGVtKCd2dGltZScsICcwJykpICsgNmU2O1xcblxcbiAgICAgICAgICAgICAgICBpZiAodnRpbWUgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9ob21lQHVja2vkupFcXFwiKSkudmVyc2lvbjtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3d3ci5sYW56b3VpLmNvbS9iMDNxZjI4cWJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgcHdkID0gXFxcInJlYWRcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZCA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA4LjAuMDsgTUkgNXMgUGx1cyBCdWlsZC9PUFIxLjE3MDYyMy4wMzI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzEuMC4zNTc4Ljk5IE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHNyYyA9IGZldGNoKHVybCwgaGVhZCk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKHNyYy5tYXRjaCgvdmFyIHBnczsoW1xcXFxzXFxcXFNdKj9wZ3MuKzspLylbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgnXz0nICsgc3JjLm1hdGNoKC9kYXRhIDooW1xcXFxzXFxcXFNdKj9cXFxcfSkvKVsxXSk7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkLmJvZHkgPSBPYmplY3Qua2V5cyhfKS5tYXAoa2V5ID0+IGtleSArIFxcXCI9XFxcIiArIF9ba2V5XSkuam9pbignJicpO1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZC5tZXRob2QgPSAnUE9TVCc7XFxuICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFxcXC5jb20uKi8sIFxcXCIuY29tL2ZpbGVtb3JlYWpheC5waHBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIF8gPSBKU09OLnBhcnNlKGZldGNoKHVybCwgaGVhZCkpLnRleHRbMF07XFxuXFxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gXy5uYW1lX2FsbC5tYXRjaCgvXFxcXFsoLispXFxcXF0vKVsxXS5zcGxpdCgnXycpO1xcbiAgICAgICAgICAgICAgICAgICAgdiA9IH5+bmFtZVswXTtcXG4gICAgICAgICAgICAgICAgICAgIHZ2ID0gbmFtZVsxXSB8fCAxO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24gPCB2IHx8ICh2ZXJzaW9uID09IHYgJiYgdnYgPiAxKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmm7TmlrDmj5DnpLonLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAn5qOA5rWL5Yiw5L2g55qE6KeE5YiZ54mI5pys5bCP5LqO5pyN5Yqh5Zmo54mI5pys77yM5piv5ZCm56uL5Y2z5pu05paw77yfJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygoZGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3Z0aW1lJywgU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IFxcXCJodHRwczovL2RldmVsb3Blci5sYW56b3VnLmNvbS9maWxlL1xcXCIgKyByZXF1ZXN0KGRhKS5tYXRjaCgvJyhcXFxcPy4qPyknLylbMV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9fZmlsZVNlbGVjdF9ydWxlLmpzb25cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRGaWxlKGssIGYpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFxcdTZkNzdcXFxcdTk2MTRcXFxcdTg5YzZcXFxcdTc1NGNcXFxcdWZmZTVob21lX3J1bGVfdXJsXFxcXHVmZmU1XFxcIiArIGdldFBhdGgoZik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVybC5yZXBsYWNlKC9maWxlbW8uKi8sICd0cC8nICsgXy5pZCkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3Z0aW1lJywgU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5rKh5pyJ5pu05paw5ZOmXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L+H5LiA5Lya5YaN55yL55yL5ZCnXFxcIjtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuXFxuXFxuICAgIH0gZWxzZSBpZiAoaSA9PSAnMScpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTpppbpobUnLFxcbiAgICAgICAgICAgIGRlc2M6ICfmiZPlvIDlsI/nqIvluo/ml7bvvIzpu5jorqTmiZPlvIAnLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBbXFxcIummlumhteaUtuiXj1xcXCIsIFxcXCLmkJzntKLlj5HnjrBcXFwiLCBcXFwieDUtd2ViXFxcIl0ubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd0aWQnLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgU3RyaW5nKGkpKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ3RpZCcsICcwJykgPT0gaSA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19iaWdfYmxhbmtfYmxvY2snXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTlj5HnjrAnLFxcbiAgICAgICAgICAgIGRlc2M6ICfkuLvpobXkuLpcXFwi5Y+R546w5pCc57SiXFxcIuaXtu+8jOm7mOiupOaYvuekuueahOaOpeWPo+OAgicsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGZhcnIubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdpaScsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBTdHJpbmcoaSkpLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgnaWknLCAnMScpID09IGkgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KTtcXG5cXG4gICAgfSBlbHNlIGlmIChpID09IDIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTmjpLluo8nLFxcbiAgICAgICAgICAgIGRlc2M6ICfmjqjojZDvvJrmnIDov5Hmm7TmlrAgLyDlkI3np7DmraPluo8nLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBzb3J0MS5tYXAoKG5hbWUsIGkpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxiPicgKyBuYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NvcnRudW0nLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgU3RyaW5nKGkpKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ3NvcnRudW0nLCAnMCcpID09IGkgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19iaWdfYmxhbmtfYmxvY2snXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTmoLflvI8nLFxcbiAgICAgICAgICAgIGRlc2M6ICfmjqjojZDvvJrnqIvluo/pu5jorqQgLyBhdmF0YXInLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBzdHlsZS5tYXAobmFtZSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdzdHlsZTEnLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgbmFtZSksXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCdzdHlsZTEnLCAn56iL5bqP6buY6K6kJykgPT0gbmFtZSA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pXFxuXFxuXFxuXFxuICAgIH0gZWxzZSBpZiAoaSA9PSAzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y6f55Sf5pCc57Si55qE6buY6K6k5o6l5Y+jJyxcXG4gICAgICAgICAgICBkZXNjOiAn5o6o6I2Q77ya6IGa5ZCI5pCc57SiIC8g6Laj55uY5pCc57SiJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc2Fyci5tYXAoW25hbWUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdzaWQnLCBzaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBTdHJpbmcoc2lkKSksXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCdzaWQnLCAnMScpID09IHNpZCA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICB9IGVsc2UgaWYgKGkgPT0gNCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iBmuWQiOaQnOe0oueahOaOpeWPo+iuvue9ricsXFxuICAgICAgICAgICAgZGVzYzogJ+inieW+l+i/meS4quaOpeWPo+aFouWwseWFs+aOieWQpycsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIFNhcnIgPSBzdG9yYWdlMC5nZXRJdGVtKCdTYXJyJywgW10pO1xcbiAgICAgICAgc2Fyci5tYXAoKFtuYW1lLCBzaWRdLCBpKSA9PiB7XFxuICAgICAgICAgICAgeCA9IHRydWU7XFxuICAgICAgICAgICAgZm9yICh5IGluIFNhcnIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKFNhcnJbeV0gPT0gaSkge1xcbiAgICAgICAgICAgICAgICAgICAgeCA9IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoeCwgU2FyciwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXJyLnB1c2goaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhcnIgPSBTYXJyLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXhcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FyciA9IFNhcnIuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ1NhcnInLCBTYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgeCwgU2FyciwgaSksXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArICh4ID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5LiA57qn55u45YWzJyxcXG4gICAgICAgICAgICBkZXNjOiAn5bCP56iL5bqP6aaW6aG155qE5bCB6Z2i6K6+572uJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJzxiPuaWh+S7tuWkuTwvYj4nLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiXFxcIiwgXFxcIuivt+i+k+WFpeato+ehrueahOWwgemdoumTvuaOpVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnaW1nMCcsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nMCcsICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA4LzA1LzUvMTEwX2ZhNjYwZTEzZWQ2N2Y4Njg4MjA1MDFlNmFjZTZkNWUxX2Nvbl8xMzB4MTMwLnBuZycpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAnPGI+eDUtd2ViPC9iPicsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5q2j56Gu55qE5bCB6Z2i6ZO+5o6lXFxcIikuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdpbWcxJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgaW1nOiBnZXRJdGVtKCdpbWcxJywgJ2hpa2VyOi8vaW1hZ2VzL2hvbWVfYmcnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19iaWdfYmxhbmtfYmxvY2snXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfkuoznuqfnm7jlhbMnLFxcbiAgICAgICAgICAgIGRlc2M6ICfkuoznuqfpobXpnaLnmoTlsIHpnaLorr7nva7jgIInLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAnPGI+5L+d5a2YPC9iPicsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5q2j56Gu55qE5bCB6Z2i6ZO+5o6lXFxcIikuaW5wdXQoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdpbWcwJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgaW1nOiBnZXRJdGVtKCdpbWcyJywgJ2h0dHBzOi8vZ2hwcm94eS5jb20vaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL2xtdHViaWFvL21haW4vcmVkLzgucG5nJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICc8Yj7mjpLluo88L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmraPnoa7nmoTlsIHpnaLpk77mjqVcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2ltZzMnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzMnLCAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvNDAucG5nJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICc8Yj7moLflvI88L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmraPnoa7nmoTlsIHpnaLpk77mjqVcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2ltZzQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzQnLCAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvMjcucG5nJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICc8Yj7liIbkuqs8L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmraPnoa7nmoTlsIHpnaLpk77mjqVcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2ltZzUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzUnLCAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvMTIucG5nJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICc8Yj7mlofku7blpLk8L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmraPnoa7nmoTlsIHpnaLpk77mjqVcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2ltZzYnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBpbWc6IGdldEl0ZW0oJ2ltZzYnLCAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMi8wOC8wNS81LzExMF9mYTY2MGUxM2VkNjdmODY4ODIwNTAxZTZhY2U2ZDVlMV9jb25fMTMweDEzMC5wbmcnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJzxiPuaWh+S7tjwvYj4nLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiXFxcIiwgXFxcIuivt+i+k+WFpeato+ehrueahOWwgemdoumTvuaOpVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnaW1nNycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgnaW1nNycsICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA3LzI2LzcvMTEwXzE5ZDk4MjM4MTdhODMzNzA0ZDZlOWI0MGM3MWRhMDQyX2Nvbl8xMzB4MTMwLnBuZycpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6LWE5rqQ5pWw5o2uXCIsXCJwYXRoXCI6XCJkYXRhXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgcnVsZSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9ob21lQHVja2vkupFcXFwiKSk7XFxubGV0IHN0ciA9IHJ1bGUuZmluZF9ydWxlLm1hdGNoKC96eS4qPyhcXFxcW1tcXFxcU1xcXFxzXSo/XFxcXF0pOy8pWzFdO1xcbnZhciBkYXRhID0gZXZhbChcXFwiKFxcXCIgKyBzdHIgKyBcXFwiKVxcXCIpO1xcbiQuZXhwb3J0cy5nZXR6eXp1ID0gKCkgPT57XFxubGV0IHp5ID0gZ2V0RGF0YSgpO1xcbmxldCB6dSA9IGdldEdyb3VwKCk7XFxufTtcXG4kLmV4cG9ydHMuZ2V0RGF0YSA9ICgpID0+IGRhdGE7XFxuJC5leHBvcnRzLmdldEdyb3VwID0gbmV3RGF0YSA9PiAobmV3RGF0YSB8fCBkYXRhKS5maWx0ZXIodiA9PiB2Lmxlbmd0aCA9PT0gMSkubWFwKHYgPT4gdlswXSk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmm7/mjaLlr7zlhaVcIixcInBhdGhcIjpcIuabv+aNolwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oenkpIHtcXG4gICAgbGV0IHJ1bGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vaG9tZUB1Y2tr5LqRXFxcIikpO1xcbiAgICBydWxlLmZpbmRfcnVsZSA9IHJ1bGUuZmluZF9ydWxlLnJlcGxhY2UoL3p5Lio/XFxcXFtbXFxcXFNcXFxcc10qP1xcXFxdOy8sICgpID0+IFxcXCJ6eSA9IFxcXCIgKyBKU09OLnN0cmluZ2lmeSh6eSkucmVwbGFjZSgvXFxcXCxcXFxcW1xcXFxcXFwi5L2c6ICF5paw5aKeXFxcXFxcXCJcXFxcXVxcXFxdJC8sJ10nKSArIFxcXCI7XFxcIik7XFxuICAgIHJldHVybiBcXFwicnVsZTovL1xcXCIgKyBiYXNlNjRFbmNvZGUoXFxcIua1t+mYlOinhueVjO+/pWhvbWVfcnVsZe+/pVxcXCIgKyBKU09OLnN0cmluZ2lmeShydWxlKSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiR1VJ57yW6L6RXCIsXCJwYXRoXCI6XCJndWlcIixcInJ1bGVcIjpcImpzOlxcbmxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG5cXG5sZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxubGV0IGQgPSBbXTtcXG5sZXQgZ3JvdXAgPSBnZXRNeVZhcihcXFwiZ3JvdXBcXFwiLCBTdHJpbmcoenVbMF0pKTtcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICgpID0+IHtcXG4gICAgY2xlYXJNeVZhcihcXFwiZ3JvdXBcXFwiKTtcXG4gICAgY2xlYXJNeVZhcihcXFwiZGF0YVxcXCIpO1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5L+d5a2Y5pWw5o2uXFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcIuabv+aNolxcXCIpKHp5KTtcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG59KTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG59KTtcXG56dS5mb3JFYWNoKHYgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdyb3VwID09PSB2ID8gXFxcIuKAnOKAnFxcXCIgKyB2ICsgXFxcIuKAneKAnVxcXCIgOiB2LFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh2KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcImdyb3VwXFxcIiwgdik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9LCB2KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLliKDpmaRcXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoZ3JvdXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7orqTliKDpmaQ/XFxcXG4o5Lya5Yig6Zmk6K+l57uE5LiL5YWo6YOo5paH5Lu25aS5KVxcXCIpLmNvbmZpcm0oKGdyb3VwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdEYXRhID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzZ3JvdXAgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2IG9mIHp5KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2Lmxlbmd0aCA9PT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZbMF0gPT09IGdyb3VwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNncm91cCA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzZ3JvdXApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2dyb3VwID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzZ3JvdXApIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdEYXRhLnB1c2godik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwiZ3JvdXBcXFwiKSA9PT0gZ3JvdXApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiZ3JvdXBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgZ3JvdXApO1xcbiAgICAgICAgICAgICAgICB9LCB2KVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLph43lkb3lkI1cXFwiLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoZ3JvdXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGdyb3VwLCBcXFwi5paw55qE5ZCN56ewKOS4jemHjeWkjSlcXFwiKS5pbnB1dCgoZ3JvdXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp1ID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0R3JvdXAoenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6dS5pbmNsdWRlcyhpbnB1dCkpIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LlrZjlnKhcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0genkuZmluZEluZGV4KHYgPT4gdi5sZW5ndGggPT09IDEgJiYgdlswXSA9PT0gZ3JvdXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp5W2ldWzBdID0gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKFxcXCJncm91cFxcXCIpID09PSBncm91cCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiZ3JvdXBcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJkYXRhXFxcIiwgSlNPTi5zdHJpbmdpZnkoenkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBncm91cCk7XFxuICAgICAgICAgICAgICAgIH0sIHYpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSk7XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXVja2vkupEnLCB7fSkpLnJ1bGUpO1xcbmxldCBpc0dyb3VwID0gZmFsc2U7XFxubGV0IGkgPSAwO1xcbmxldCBpaSA9IC0xO1xcbmZvciAobGV0IHYgb2YgenkpIHtcXG4gICAgaWkrKztcXG4gICAgaWYgKHYubGVuZ3RoID09IDEpIHtcXG4gICAgICAgIGlmICh2WzBdID09PSBncm91cCkge1xcbiAgICAgICAgICAgIGlzR3JvdXAgPSB0cnVlO1xcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgfSBlbHNlIGlmIChpc0dyb3VwKSB7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKCFpc0dyb3VwKSBjb250aW51ZTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB2WzBdLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIui1hOa6kElEOiBcXFwiICsgdlsxXSArIFxcXCJcXFxcbuaWh+S7tklEOiBcXFwiICsgKHZbM118fDApICsgXFxcIlxcXFxu5o+Q5Y+W56CBOiBcXFwiICsgdlsyXSArIFxcXCLjgIDmjpLluo86IFxcXCIgKyBzb3J0MVt2WzRdIHx8IDBdICsgXFxcIuOAgOagt+W8jzogXFxcIiArIHN0eWxlW3ZbNV0gfHwgMF0sXFxuICAgICAgICB1cmw6ICQoW1xcXCLliKDpmaRcXFwiLCBcXFwi6YeN5ZG95ZCNXFxcIiwgXFxcIumHjeaWsOWIhue7hFxcXCIsIFxcXCLliIbkuqtcXFwiXSkuc2VsZWN0KChpLCB2KSA9PiB7XFxuICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLliIbkuqtcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy9cXFwiICsgdlsxXSArICh2WzJdID8gXFxcIiRcXFwiICsgdlsyXSA6IFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5Yig6ZmkXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLmmK/lkKbliKDpmaRcXFwiKS5jb25maXJtKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiZGF0YVxcXCIsIEpTT04uc3RyaW5naWZ5KHp5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaSk7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIumHjeWRveWQjVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh2WzBdLCBcXFwi5paw55qE5ZCN56ewXFxcIikuaW5wdXQoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgenlbaV1bMF0gPSBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiZGF0YVxcXCIsIEpTT04uc3RyaW5naWZ5KHp5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaSk7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIumHjeaWsOWIhue7hFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIumAiee7hFxcXCIsIFxcXCLmlrDnu4RcXFwiXSwgMikuc2VsZWN0KGkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNldE5ld0RhdGEoaSwgaXNOZXdadSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0RhdGEgPSB6eS5zcGxpY2UoaSwgMSlbMF07XFxuXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05ld1p1ICYmICF6dS5pbmNsdWRlcyhpbnB1dCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5pyA5YmN6Z2iXFxcIiwgXFxcIuacgOWQjumdolxcXCIsIFxcXCLoh6rlrprkuYlcXFwiXSwgMSwgJ+ivt+mAieaLqScpLnNlbGVjdCgoaW5wdXQyLCBuZXdEYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWJjemdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS51bnNoaWZ0KFtpbnB1dDJdLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDlkI7pnaInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkucHVzaChbaW5wdXQyXSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn6Ieq5a6a5LmJJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1LCAxLCAn6K+36YCJ5oup5paw57uE5L2N572uJykuc2VsZWN0KChpbnB1dDIsIG5ld0RhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp1ID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0R3JvdXAoenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSBpbnB1dCAmJiB2WzFdID09PSB1bmRlZmluZWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAwLCBbaW5wdXQyXSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlucHV0MiwgbmV3RGF0YSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiZGF0YVxcXCIsIEpTT04uc3RyaW5naWZ5KHp5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5wdXQsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IHp5LmZpbmRJbmRleCh2ID0+IHZbMF0gPT09IGlucHV0ICYmIHZbMV0gPT09IHVuZGVmaW5lZCkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWkgPSB6dS5pbmRleE9mKGlucHV0KSArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpaSA9IHp5LmZpbmRJbmRleCh2ID0+IHZbMF0gPT09IHp1W2lpXSAmJiB2WzFdID09PSB1bmRlZmluZWQpKzE7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuacgOWJjemdolxcXCIsIFxcXCLmnIDlkI7pnaJcXFwiLCBcXFwi6Ieq5a6a5LmJXFxcIl0sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKGksIGlpLCBuZXdEYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWJjemdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pyA5ZCO6Z2iJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn6Ieq5a6a5LmJJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp1MiA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gaTsgaiA8IGlpOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6dTIucHVzaCh6eVtqXVswXSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1MiwgMSwgJ+ivt+mAieaLqei1hOa6kOS9jee9ricpLnNlbGVjdCgoaSwgenUyLCBuZXdEYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IHp1Mi5pbmRleE9mKGlucHV0KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGksIHp1MiwgbmV3RGF0YSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiZGF0YVxcXCIsIEpTT04uc3RyaW5naWZ5KHp5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSwgaWksIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6YCJ57uEXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUsIDIsIFxcXCLpgInmi6nnu4RcXFwiKS5zZWxlY3Qoc2V0TmV3RGF0YSwgaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmlrDnmoTnu4TlkI1cXFwiKS5pbnB1dChzZXROZXdEYXRhLCBpLCB0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBpaSwgdilcXG4gICAgfSk7XFxufVxcblxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS/neWtmOi1hOa6kFwiLFwicGF0aFwiOlwi5L+d5a2YXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihQYWdlVGl0bGUsIHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpIHtcXG4gICAgcmV0dXJuICQoUGFnZVRpdGxlLCBcXFwi6L6T5YWl5ZCN56ewXFxcIikuaW5wdXQoKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpID0+IHtcXG4gICAgICAgIGxldCBuZXdEYXRhID0gW2lucHV0LCBwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXTtcXG4gICAgICAgIHJldHVybiAkKFtcXFwi6YCJ57uEXFxcIiwgXFxcIuaWsOe7hFxcXCJdLCAyKS5zZWxlY3QobmV3RGF0YSA9PiB7XFxuICAgICAgICAgICAgZnVuY3Rpb24gc2V0TmV3RGF0YShuZXdEYXRhLCBpc05ld1p1KSB7XFxuXFxuICAgICAgICAgICAgICAgIGxldCB6eSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXREYXRhKCk7XFxuICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXRHcm91cCgpO1xcblxcblxcbiAgICAgICAgICAgICAgICBpZiAoaXNOZXdadSAmJiAhenUuaW5jbHVkZXMoaW5wdXQpKSB7XFxuXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuacgOWJjemdolxcXCIsIFxcXCLmnIDlkI7pnaJcXFwiLCBcXFwi6Ieq5a6a5LmJXFxcIl0sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKGlucHV0MiwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXREYXRhKCk7XFxuICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXRHcm91cCgpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pyA5YmN6Z2iJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnVuc2hpZnQoW2lucHV0Ml0sIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWQjumdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5wdXNoKFtpbnB1dDJdLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfoh6rlrprkuYknOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUsIDEsICfor7fpgInmi6nmlrDnu4TkvY3nva4nKS5zZWxlY3QoKGlucHV0MiwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXREYXRhKCk7XFxuICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXRHcm91cCgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSBpbnB1dCAmJiB2WzFdID09PSB1bmRlZmluZWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAwLCBbaW5wdXQyXSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iP3J1bGU9dWNra+S6kVxcXCIpKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlucHV0MiwgbmV3RGF0YSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCLmm7/mjaI/cnVsZT11Y2tr5LqRXFxcIikoenkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5wdXQsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IHp5LmZpbmRJbmRleCh2ID0+IHZbMF0gPT09IGlucHV0ICYmIHZbMV0gPT09IHVuZGVmaW5lZCkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgaWkgPSB6dS5pbmRleE9mKGlucHV0KSArIDE7XFxuICAgICAgICAgICAgICAgICAgICBpaSA9IHp5LmZpbmRJbmRleCh2ID0+IHZbMF0gPT09IHp1W2lpXSAmJiB2WzFdID09PSB1bmRlZmluZWQpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXCLmnIDliY3pnaJcXFwiLCBcXFwi5pyA5ZCO6Z2iXFxcIiwgXFxcIuiHquWumuS5iVxcXCJdLCAxLCAn6K+36YCJ5oupJykuc2VsZWN0KChpLCBpaSwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXREYXRhKCk7XFxuICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXRHcm91cCgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pyA5YmN6Z2iJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAwLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDlkI7pnaInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkuc3BsaWNlKGlpLCAwLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfoh6rlrprkuYknOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenUyID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBpOyBqIDwgaWk7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp1Mi5wdXNoKHp5W2pdWzBdKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUyLCAxLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KChpLCB6dTIsIG5ld0RhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IHp1Mi5pbmRleE9mKGlucHV0KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iP3J1bGU9dWNra+S6kVxcXCIpKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGksIHp1MiwgbmV3RGF0YSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCLmm7/mjaI/cnVsZT11Y2tr5LqRXFxcIikoenkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaSwgaWksIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6YCJ57uEXFxcIikge1xcbiAgICAgICAgICAgICAgICB6dSA9ICQucmVxdWlyZShcXFwiZGF0YT9ydWxlPXVja2vkupFcXFwiKS5nZXRHcm91cCgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCh6dSwgMiwgXFxcIumAieaLqee7hFxcXCIpLnNlbGVjdChzZXROZXdEYXRhLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiXFxcIiwgXFxcIuivt+i+k+WFpeaWsOeahOe7hOWQjVxcXCIpLmlucHV0KHNldE5ld0RhdGEsIG5ld0RhdGEsIHRydWUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIG5ld0RhdGEpO1xcbiAgICB9LCBwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumrmOe6p+aQnOe0olwiLFwicGF0aFwiOlwic2VhcmNoMlwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXVja2vkupEnLCB7fSkpLnJ1bGUpO1xcblxcbmQgPSBbe1xcbiAgICB0aXRsZTogXFxcIumAgOWHuumrmOe6p+aQnOe0olxcXCIsXFxuICAgIHVybDogXFxcImhpa2VyOi8vaG9tZUB1Y2tr5LqRXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMi8wNy8yNi83LzExMF8xOWQ5ODIzODE3YTgzMzcwNGQ2ZTliNDBjNzFkYTA0Ml9jb25fMTMweDEzMC5wbmdcXFwiXFxufSwge1xcbiAgICB0aXRsZTogJ/CflI0nLFxcbiAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g6ZO+5o6lJOaPkOWPlueggScsXFxuICAgIHVybDogJ1xcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIraW5wdXQrXFxcIiZydWxlPVxcXCIrTVlfUlVMRS50aXRsZScsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgcnVsZXM6ICQudG9TdHJpbmcoKHNhcnIpID0+IHtcXG4gICAgICAgICAgICBsZXQgZGF0YSA9IFtdO1xcbiAgICAgICAgICAgIGlucHV0MiA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgvIyMjLisvKSkge1xcbiAgICAgICAgICAgICAgICBpbnB1dDIgPSBpbnB1dC5tYXRjaCgvIyMjKC4rKS8pWzFdO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL1xcXFwvc1xcXFwvLisvKSkge1xcbiAgICAgICAgICAgICAgICBzYXJyID0gW1xcbiAgICAgICAgICAgICAgICAgICAgW1xcXCLojrflj5botYTmupDmlofku7ZcXFwiLCA5OTldXFxuICAgICAgICAgICAgICAgIF07XFxuICAgICAgICAgICAgfSBlbHNlIGlmICghaW5wdXQyLm1hdGNoKC9eKDk5OSk/JC8pICYmIHNhcnJbaW5wdXQyXSkge1xcbiAgICAgICAgICAgICAgICBzYXJyID0gW3NhcnJbaW5wdXQyXV1cXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0Mi5tYXRjaCgvXig5OTkpPyQvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zcGxpdCgnIyMjJylbMF1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoIWdldE15VmFyKCdpbnB1dDInKS5tYXRjaCgvXjA/JC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBzYXJyID0gW3NhcnJbZ2V0TXlWYXIoJ2lucHV0MicpXV1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyWzBdO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFNhcnIgPSBzdG9yYWdlMC5nZXRJdGVtKCdTYXJyJywgW10pO1xcbiAgICAgICAgICAgIGZvciAoaSBpbiBTYXJyKSB7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyW1NhcnJbaV1dO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL17ogZrlkIg/5pCc57SiP1xcXFxzKi8sICcnKTtcXG4gICAgICAgICAgICBwdXRNeVZhcignc29rZXknLCBpbnB1dCk7XFxuICAgICAgICAgICAgc2Fyci5tYXAoW3RpdGxlLCBzaWRdID0+IHtcXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjI1xcXCIgKyBpbnB1dCArIFxcXCIjIyNcXFwiICsgc2lkLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6ICQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dWNra+S6kScpO1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICB9LCBzYXJyKSxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcInNva2V5XFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignc29rZXknLGlucHV0KVxcXCJcXG4gICAgfVxcbn1dO1xcbnNhcnIubWFwKChbbmFtZSwgc2lkXSwgaSkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldE15VmFyKCdpbnB1dDInLCAnMCcpID09IGkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdpbnB1dDInLCBpKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0sIGkpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59KTtcXG5cXG5cXG5cXG5cXG5cXG5cXG5sZXQgaWQgPSBEYXRlLm5vdygpICsgTVlfUlVMRS50aXRsZTtcXG5sZXQgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBbXSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFwiIzEzQjYxQlxcXCI+4paQIDwvZm9udD48Yj7mkJzntKLorrDlvZU8Yj4nLFxcbiAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogaWQgKyBcXFwiOnNlYXJjaEhpc3RvcnlcXFwiXFxuICAgIH1cXG59KTtcXG5cXG5pZiAoaGlzdG9yeS5sZW5ndGggPT09IDApIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCJ+fn7ku4DkuYjpg73msqHmnInlk6Z+fn5cXFwiLmZvbnRjb2xvcihcXFwiR3JheVxcXCIpLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGxldCBpID0gMDtcXG4gICAgZm9yIChsZXQga2V5IG9mIGhpc3RvcnkpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGtleSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGlkLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNva2V5XFxcIiwga2V5KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICB9LCBpZCwga2V5KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogaWQgKyBcXFwiOmtleTpcXFwiICsga2V5LFxcbiAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpOWFs+mUruivjTpcXFwiICsga2V5LFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGlkLCBrZXksIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcInNlYXJjaEhpc3RvcnlcXFwiLCBbXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwic2VhcmNoSGlzdG9yeVxcXCIsIGhpc3RvcnkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0oaWQgKyBcXFwiOmtleTpcXFwiICsga2V5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RvYXN0KCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBpZCwga2V5LCBpKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4heepuuiusOW9lVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu5a6a5riF6Zmk5YWo6YOo5pCc57Si6K6w5b2V77yfXFxcIikuY29uZmlybSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJzZWFyY2hIaXN0b3J5XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhpZCArIFxcXCI6a2V5XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcihpZCArIFxcXCI6c2VhcmNoSGlzdG9yeVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCJ+fn7ku4DkuYjpg73msqHmnInlk6Z+fn5cXFwiLmZvbnRjb2xvcihcXFwiR3JheVxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaWQpLFxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiAnbGluZSdcXG59KTtcXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJzxmb250IGNvbG9yPVxcXCIjMDA4NmYxXFxcIj7ilpAgPC9mb250PjxiPueZvuW6pueDreaQnDwvYj4nLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiLFxcbn0pO1xcblxcblxcblxcbnJlc291ID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ3Jlc291Jyk7XFxuaWYgKHJlc291ID09ICcnKSB7XFxuICAgIHJzQWpheCA9IHJzVHlwZSA9PiBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9hcGkvYm9hcmQ/cGxhdGZvcm09d2lzZSZ0YWI9JyArIHJzVHlwZSArICcmdGFnPSU3QiU3RCcsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgNi4wOyBOZXh1cyA1IEJ1aWxkL01SQTU4TikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzk5LjAuNDg0NC41MSBNb2JpbGUgU2FmYXJpLzUzNy4zNicsXFxuICAgICAgICAgICAgJ0hvc3QnOiAndG9wLmJhaWR1LmNvbScsXFxuICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxcbiAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnemgtQ04semg7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjcnLFxcbiAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCwgZGVmbGF0ZSwgYnInLFxcbiAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9ib2FyZD90YWI9bm92ZWwnLFxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YS5jYXJkc1swXS5jb250ZW50O1xcbiAgICByczEgPSByc0FqYXgoJ3RlbGVwbGF5Jyk7XFxuICAgIHJzMiA9IHJzQWpheCgnbW92aWUnKTtcXG5cXG4gICAgcmVzb3UgPSBbXFxcIuKGk+WJp+mbhueDreaQnOKGk1xcXCIsIFxcXCLihpPnlLXlvbHng63mkJzihpNcXFwiXTtcXG4gICAgcnMxLm1hcCgoXywgaSkgPT4ge1xcbiAgICAgICAgcmVzb3UucHVzaChfLndvcmQsIHJzMltpXS53b3JkKVxcbiAgICB9KTtcXG4gICAgc3RvcmFnZTAucHV0TXlWYXIoJ3Jlc291JywgcmVzb3UpO1xcbn1cXG5cXG5cXG5yZXNvdS5mb3JFYWNoKCh3b3JkLCBpKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogd29yZCxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodXJsKSA9PiB7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgIH0sIGkgPiAxID8gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIHdvcmQgKyBcXFwiIyMjXFxcIiArIGdldE15VmFyKCdpbnB1dDInLCAnOTk5JykgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCIgOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbn0pO1xcblxcblxcblxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhteWPkeeOsFwiLFwicGF0aFwiOlwi5Y+R546wXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihmdHlwZSkge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgIGV4dHJhID0ge1xcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgIHRpdGxlOiAnIOKYhiDlm57liLDmlLbol48g4piGICcsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcigndGlkJywgJzAnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcignaScpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogJyDimIUg5Zue5Yiw6aG25bGCIOKYhSAnLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XVxcbiAgICB9O1xcbiAgICB0cnkge1xcbiAgICAgICAgc3dpdGNoIChmdHlwZSkge1xcbiAgICAgICAgICAgIGNhc2UgJ2tr5bCP56uZJzpcXG4gICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgW1xcXCLmnIDmlrBcXFwiLCBcXFwi6L+e6L29XFxcIiwgXFxcIueUteW9sVxcXCIsIFxcXCLliafpm4ZcXFwiLCBcXFwi57u86Im6XFxcIiwgXFxcIuWKqOa8q1xcXCIsIFxcXCLpn7PpopFcXFwiLCBcXFwi5Lmm57GNXFxcIiwgXFxcIuWtpuS5oFxcXCIsIFxcXCLova/ku7ZcXFwiLCBcXFwi5ri45oiPXFxcIiwgXFxcIuWbvueJh1xcXCJdLm1hcCgobmFtZSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigndGlpJywgJzAnKSA9PSBpID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3RpaScsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL2treHoudmlwL2FwaS9kaXNjdXNzaW9ucz9pbmNsdWRlPXVzZXIsbGFzdFBvc3RlZFVzZXIsZmlyc3RQb3N0LHRhZ3MsdGFncy5wYXJlbnQmXFxcIiArIChcXFwiZmlsdGVyW3RhZ109XFxcIiArIFtcXFwi5pyA5pawXFxcIiwgXFxcImx6XFxcIiwgXFxcIm1vdmllXFxcIiwgXFxcInR2XFxcIiwgXFxcInZhcmlldHlcXFwiLCBcXFwiY29taWNcXFwiLCBcXFwibXVzaWNcXFwiLCBcXFwiYm9va1xcXCIsIFxcXCJzdHVkeVxcXCIsIFxcXCJzb2Z0d2FyZVxcXCIsIFxcXCJnYW1lXFxcIiwgXFxcInBob3RvXFxcIl1bZ2V0TXlWYXIoJ3RpaScsICcwJyldKS5yZXBsYWNlKCdmaWx0ZXJbdGFnXT3mnIDmlrAnLCAnc29ydD0tY3JlYXRlZEF0JykgKyBcXFwiJnNvcnQmcGFnZVtvZmZzZXRdPVxcXCIgKyAoKE1ZX1BBR0UgLSAxKSAqIDIwKTtcXG4gICAgICAgICAgICAgICAgXyA9IEpTT04ucGFyc2UoZmV0Y2godXJsKSk7XFxuICAgICAgICAgICAgICAgIHBvc3RzID0gW107XFxuICAgICAgICAgICAgICAgIF8uaW5jbHVkZWQubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8udHlwZSA9PSBcXFwicG9zdHNcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHMucHVzaChfLmF0dHJpYnV0ZXMuY29udGVudEh0bWwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgXy5kYXRhLm1hcCgoXywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgXyA9IF8uYXR0cmlidXRlcztcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKPse+4jyBcXFwiICsgXy5jcmVhdGVkQXQucmVwbGFjZSgvVHxcXFxcKy4qL2csICcgJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMnKS5ydWxlKCh0ZXh0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPGEgaHJlZj1cXFwiLio/cXVhcmtcXFxcLmNuL2csICc8YSBocmVmPVxcXCJoaWtlcjovL3NlYXJjaD9ydWxlPXVja2vkupEmcz0nKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcG9zdHNbaV0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG5cXG5cXG4gICAgICAgICAgICBjYXNlICdra+ekvuWMuic6XFxuICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIFtcXFwi5pyA5paw5Zue5aSNXFxcIiwgXFxcIueDremXqOS4u+mimFxcXCIsIFxcXCLmlrDpspzlh7rngolcXFwiLCBcXFwi5rKJ5bm05pen5biWXFxcIl0ubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd0aWknLCAnMCcpID09IGkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndGlpJywgaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8veXVucGFuMS5jYy9hcGkvZGlzY3Vzc2lvbnM/aW5jbHVkZT11c2VyLGxhc3RQb3N0ZWRVc2VyLHRhZ3MsdGFncy5wYXJlbnQsZmlyc3RQb3N0JmZpbHRlclt0YWddPWt1YWtlJnNvcnRcXFwiICsgKFtcXFwiXFxcIiwgXFxcIj0tY29tbWVudENvdW50XFxcIiwgXFxcIj0tY3JlYXRlZEF0XFxcIiwgXFxcIj1jcmVhdGVkQXRcXFwiXVtnZXRNeVZhcigndGlpJywgJzAnKV0pICsgXFxcIiZwYWdlW29mZnNldF09XFxcIiArICgoTVlfUEFHRSAtIDEpICogMjApO1xcbiAgICAgICAgICAgICAgICBfID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKTtcXG4gICAgICAgICAgICAgICAgcG9zdHMgPSBbXTtcXG4gICAgICAgICAgICAgICAgXy5pbmNsdWRlZC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoXy50eXBlID09IFxcXCJwb3N0c1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0cy5wdXNoKF8uYXR0cmlidXRlcy5jb250ZW50SHRtbCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBfLmRhdGEubWFwKChfLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBfID0gXy5hdHRyaWJ1dGVzO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLmNyZWF0ZWRBdC5yZXBsYWNlKC9UfFxcXFwrLiovZywgJyAnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IycpLnJ1bGUoKHRleHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88YSBocmVmPVxcXCIuKj9xdWFya1xcXFwuY24vZywgJzxhIGhyZWY9XFxcImhpa2VyOi8vc2VhcmNoP3J1bGU9dWNra+S6kSZzPScpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBwb3N0c1tpXSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IGV4dHJhLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcblxcblxcblxcblxcbiAgICAgICAgICAgIGNhc2UgJ2tr6LWE5rqQJzpcXG4gICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgW1xcXCLotYTmupDlkIjpm4ZcXFwiLCBcXFwi5Zu95aSW55S15b2xXFxcIiwgXFxcIuWbveWklueUteinhuWJp1xcXCIsIFxcXCLnuqrlvZXniYfotYTmupBcXFwiLCBcXFwi57u86Im66LWE5rqQXFxcIiwgXFxcIumfs+S5kOi1hOa6kFxcXCIsIFxcXCLliqjmvKvotYTmupBcXFwiLCBcXFwi5ri45oiP6LWE5rqQXFxcIiwgXFxcIui9r+S7tui1hOa6kFxcXCIsIFxcXCLlrabkuaDotYTmupBcXFwiXS5tYXAoKG5hbWUsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ3RpaScsICcwJykgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd0aWknLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBob3N0ID0gXFxcImh0dHBzOi8vd3d3LmtrcGFucy5jb20vXFxcIjtcXG4gICAgICAgICAgICAgICAgaGVhZCA9IHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjknXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHVybCA9IGhvc3QgKyBcXFwiZm9ydW0ucGhwP21vZD1mb3J1bWRpc3BsYXkmZmlkPVxcXCIgKyAoWzIsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDYsIDQ4LCA2NywgNjhdW2dldE15VmFyKCd0aWknLCAnMCcpXSkgKyBcXFwiJnBhZ2U9XFxcIiArIE1ZX1BBR0UgKyBcXFwiJm1vYmlsZT0yXFxcIjtcXG5cXG4gICAgICAgICAgICAgICAgcGRmYShmZXRjaCh1cmwsIGhlYWQpLCBcXFwiYm9keSYmbGkubGlzdFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAubWFwKGRpdiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRpdiwgXFxcIi50aHJlYWRsaXN0X3RpdCYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKPse+4jyBcXFwiICsgcGRmaChkaXYsIFxcXCIubXRpbWUmJlRleHRcXFwiKSArIFxcXCJcXFxcblxcXCIgKyBwZGZoKGRpdiwgXFxcIi50aHJlYWRsaXN0X21lcyYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMnKS5ydWxlKCh1cmwsIGhlYWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZmV0Y2hQQyh1cmwsIGhlYWQpLCBcXFwiYm9keSYmLnRfZnx8Lm1lc3NhZ2UmJkh0bWxcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzxhIGhyZWY9XFxcIi4qP3F1YXJrXFxcXC5jbi9nLCAnPGEgaHJlZj1cXFwiaGlrZXI6Ly9zZWFyY2g/cnVsZT11Y2tr5LqRJnM9JyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGhvc3QgKyBwZGZoKGRpdiwgXFxcImEsLTEmJmhyZWZcXFwiKS5yZXBsYWNlKCdtb2JpbGU9MicsICdtb2JpbGU9bm8nKSwgaGVhZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYSxcXG5jb2xfdHlwZTondGV4dF8xJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG5cXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuXFxuXFxuICAgICAgICAgICAgY2FzZSAn6Zi/6YeM5LqR55uY572RJzpcXG4gICAgICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LmFseXB3LmNuL3RhZ3MtNjdfXFxcIiArIE1ZX1BBR0UgKyBcXFwiLmh0bWxcXFwiO1xcbiAgICAgICAgICAgICAgICBwZGZhKGZldGNoKHVybCksIFxcXCIubGlzdCYmbGlcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwZGZoKGRpdiwgXFxcImltZyYmYWx0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUubWF0Y2goL+WkuOWFi1teKOaWsOeUqOaItyldLykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuYW1lLnJlcGxhY2UoL1xcXFxbW15cXFxcXV0q5aS45YWLW15cXFxcXV0qXFxcXF1cXFxccyovLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn8J+TliAnICsgcGRmaChkaXYsIFxcXCIuaW5mbyYmc3BhbiwwJiZUZXh0XFxcIikgKyAn44CA4o+x77iPICcgKyBwZGZoKGRpdiwgXFxcIi5pbmZvJiZzcGFuLDEmJlRleHRcXFwiKSArICdcXFxcbicgKyBwZGZoKGRpdiwgXFxcInAmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogcGRmaChkaXYsIFxcXCJpbWcmJnNyY1xcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBkZmgoZmV0Y2goaW5wdXQpLCBcXFwiLmFydGljbGVfY29udGVudCYmYVtocmVmfj1xdWFyay5jbl0mJmhyZWZcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgaHJlZiArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogZXh0cmEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcblxcblxcblxcbiAgICAgICAgICAgIGNhc2UgJ+Wcn+aLqOm8oOeUteW9sSc6XFxuICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIFtcXFwi55S15b2xXFxcIiwgXFxcIueUteinhuWJp1xcXCIsIFxcXCLnu7zoibpcXFwiLCBcXFwi5Yqo5ryrXFxcIiwgXFxcIuiusOW9leeJh1xcXCJdLm1hcCgobmFtZSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigndGlpJywgJzAnKSA9PSBpID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3RpaScsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL3d3dy50YnNkeS5jb20vY2xhc3NpZnkuaHRtbD9wYWdlZD1cXFwiICsgTVlfUEFHRSArIFxcXCImY2F0ZWdvcnk9OTgyMVxcXCIgKyAoW1xcXCIwNVxcXCIsIFxcXCIxMFxcXCIsIFxcXCIxNVxcXCIsIFxcXCIyMFxcXCIsIFxcXCIyNVxcXCJdW2dldE15VmFyKCd0aWknLCAnMCcpXSkgKyBcXFwiJnNvcnRfdHlwZT0zXFxcIjtcXG4gICAgICAgICAgICAgICAgcGRmYShmZXRjaFBDKHVybCksIFxcXCIuY2xhc3NpZnlfbWFpbl9yZXNvdXJjZXMmJmFcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRpdiwgXFxcImltZyYmYWx0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLnVwZGF0ZV90aXAmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBwZGZoKGRpdiwgXFxcImltZyYmZGF0YS11cmxcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMnKS5ydWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkZmEoZmV0Y2hQQyh1cmwpLCBcXFwiLnZpZGVvX2Rvd25sb2FkX2xpbmtfaW5mbyYmYVtocmVmfj1xdWFyay5jbl1cXFwiKS5tYXAoZGl2ID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChkaXYsIFxcXCIudmlkZW9fZG93bmxvYWRfbGlua19uYW1lJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoZGl2LCBcXFwiLnZpZGVvX3NvdXJjZV9pbmZvJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIHBkZmgoZGl2LCBcXFwiYSYmaHJlZlxcXCIpICsgXFxcIiRcXFwiICsgcGRmaChkaXYsIFxcXCJhJiZwd2RcXFwiKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ2h0dHBzOi8vd3d3LnRic2R5LmNvbScgKyBwZGZoKGRpdiwgXFxcImEmJmhyZWZcXFwiKS5yZXBsYWNlKCcuaHRtbCcsICcvY2xvdWQuaHRtbD9uZXRkaXNrX3R5cGU9OTgzOTI1JnZpZXdfZmxhZz0xJykpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogZXh0cmEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfM19tYXJxdWVlJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuXFxuXFxuXFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5peg5rOV6I635Y+W5Y+R546w5o6l5Y+jXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhDb2xvcignfn5+5b2T5YmN572R57uc5byC5bi477yM6K+35Yi35paw6YeN6K+Vfn5+JykpKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ4NeaVsOaNrlwiLFwicGF0aFwiOlwieDUtZGF0YVwiLFwicnVsZVwiOlwidmFyIGRlZmF1bHRWYWx1ZSA9IFt7XFxuICAgICAgICBuYW1lOiBcXFwia2vlsI/nq5lcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9ra3h6LnZpcC9cXFwiXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICAgIG5hbWU6IFxcXCJra+i1hOa6kFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJodHRwczovL3d3dy5ra3BhbnMuY29tL2ZvcnVtLnBocD9mb3J1bWxpc3Q9MSZtb2JpbGU9MlxcXCJcXG4gICAgfSxcXG57XFxubmFtZTogXFxcIkFR6LWE5rqQ4pmzXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHA6Ly9zai55c3VwYW4uY29tL3RhaXJlbiMvcC8yMjA0NzQ0XFxcIlxcbn0sXFxue1xcbm5hbWU6IFxcXCJBUei1hOa6kOKZtCjph5HlsbHmlofmoaMpXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vcC5rZG9jcy5jbi9zL1VTVklHQkFBUVVcXFwiXFxufSxcXG4gICAge1xcbiAgICAgICAgbmFtZTogXFxcIlFR5paH5qGj4pmzIOaZmumjjuW9seinhlxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJodHRwczovL2RvY3MucXEuY29tL2RvYy9EVVU5RWNYZEpSM1ZLWTBKblxcXCJcXG4gICAgfSxcXG57XFxuICAgICAgICBuYW1lOiBcXFwiUVHmlofmoaPimbQg5pGG6JOd6LWE5rqQXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vZG9jcy5xcS5jb20vc2hlZXQvRFRHMU9lbVprUVVsMlMwOVBcXFwiXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICAgIG5hbWU6IFxcXCJRUeaWh+aho+KZtSDlpLjlhYvlsI/nq5lcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9kb2NzLnFxLmNvbS9zaGVldC9EUmtKR1MyNXJkMWhPVjFadFxcXCJcXG4gICAgfSxcXG57XFxuICAgICAgICBuYW1lOiBcXFwiUVHmlofmoaPimbYg6ZSm5oqA56S+XFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vZG9jcy5xcS5jb20vc2hlZXQvRFIwbFVlRVp5YUZkbmMzSlBcXFwiXFxuICAgIH0sXFxue1xcbiAgICAgICAgbmFtZTogXFxcIlFR5paH5qGj4pm3IHNz56yU6K6wXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vZG9jcy5xcS5jb20vc2hlZXQvRFZuWk5ZMnBpVDNkTlJXWjNcXFwiXFxuICAgIH0sXFxuXTtcXG4kLmV4cG9ydHMgPSB7XFxuICAgIGxvYWQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGExXFxcIiwgZGVmYXVsdFZhbHVlKS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcXG4gICAgfSxcXG4gICAgYWRkOiBmdW5jdGlvbihuYW1lLCB1cmwpIHtcXG4gICAgICAgIGxldCBkYXRhID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkZWZhdWx0VmFsdWUpO1xcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgZGF0YSkge1xcbiAgICAgICAgICAgIGlmIChpdC5uYW1lID09IG5hbWUpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogdXJsXFxuICAgICAgICB9KTtcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGExXFxcIiwgZGF0YSk7XFxuICAgIH0sXFxuICAgIGFkZEFsbDogZnVuY3Rpb24obGlzdCkge1xcbiAgICAgICAgbGV0IGRhdGEgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhMVxcXCIsIGRlZmF1bHRWYWx1ZSk7XFxuICAgICAgICBsZXQgbmFtZXMgPSBkYXRhLm1hcChpdCA9PiBpdC5uYW1lKTtcXG4gICAgICAgIGxldCBjb3VudCA9IDA7XFxuICAgICAgICBmb3IgKGxldCBpdCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgaWYgKCFuYW1lcy5pbmNsdWRlcyhpdC5uYW1lKSkge1xcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goaXQpO1xcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGExXFxcIiwgZGF0YSk7XFxuICAgICAgICByZXR1cm4gY291bnQ7XFxuICAgIH0sXFxuICAgIHJlbW92ZTogZnVuY3Rpb24obmFtZSkge1xcbiAgICAgICAgbGV0IGRhdGEgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhMVxcXCIsIGRlZmF1bHRWYWx1ZSk7XFxuICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXQgPT4gaXQubmFtZSAhPSBuYW1lKTtcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGExXFxcIiwgZGF0YSk7XFxuICAgIH0sXFxuICAgIHRvcDogZnVuY3Rpb24obmFtZSkge1xcbiAgICAgICAgbGV0IGRhdGEgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhMVxcXCIsIGRlZmF1bHRWYWx1ZSk7XFxuICAgICAgICBsZXQgaXQgPSBkYXRhLmZpbHRlcihpdCA9PiBpdC5uYW1lID09IG5hbWUpWzBdO1xcbiAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgIGQucHVzaChpdCk7XFxuICAgICAgICBmb3IgKGxldCBpaSBvZiBkYXRhKSB7XFxuICAgICAgICAgICAgaWYgKGlpLm5hbWUgIT0gbmFtZSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goaWkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGExXFxcIiwgZCk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ4NemhtemdolwiLFwicGF0aFwiOlwieDUtd2ViXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmxldCB7XFxuICAgIGxvYWRcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDUtZGF0YVxcXCIpO1xcbmxldCBhcnIgPSBsb2FkKCk7XFxuYXJyLnB1c2goe1xcbiAgICBuYW1lOiBcXFwi6YCA5Ye6eDUtd2ViXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9ob21lQHVja2vkupEnXFxufSwge1xcbiAgICBuYW1lOiBcXFwi5re75Yqg5a+85YWlXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2FkZCNub0hpc3RvcnkjXFxcIlxcbn0sIHtcXG4gICAgbmFtZTogXFxcIuWIhuS6q+aVsOaNrlxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCB7XFxuICAgICAgICAgICAgbG9hZFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3g1LWRhdGFcXFwiKTtcXG4gICAgICAgIGxldCBhcnIgPSBsb2FkKCk7XFxuICAgICAgICBpZiAoYXJyLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i/mOayoeacieaWsOWinui/h+W8leaTjuWTplxcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8v5LqR5Y+j5Luk77yM5aSN5Yi25pW05p2h5Y+j5Luk5omT5byA6L2v5Lu25Y2z5Y+v5a+85YWlXFxcXG5cXFwiICsgYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KGFycikpICsgXFxcIkBpbXBvcnQ9anM6J2hpa2VyOi8vcGFnZS9pbT9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZiPTEmYT0nK2lucHV0XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pO1xcblxcbmxldCB1cmwgPSBnZXRJdGVtKFxcXCJ1XFxcIiwgYXJyWzBdLnVybCk7XFxuaWYgKGFyci5maWx0ZXIoaXQgPT4gaXQudXJsID09IHVybCkubGVuZ3RoIDwgMSkge1xcbiAgICAvL+iiq+WIoOS6hlxcbiAgICB1cmwgPSBhcnJbMF0udXJsXFxufVxcblxcbmFyci5tYXAoaXQgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHVybCA9PSBpdC51cmwgPyBcXFwiPGI+4oCc4oCcXFxcIiArIGl0Lm5hbWUgKyBcXFwi4oCd4oCdPC9iPlxcXCIgOiBcXFwi4oCc4oCc4oCd4oCdPGI+XFxcIiArIGl0Lm5hbWUgKyBcXFwiPC9iPlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHVybCkgPT4ge1xcbiAgICAgICAgICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJ1XFxcIiwgdXJsKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9LCBpdC51cmwpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLnva7pobZcXFwiICsgaXQubmFtZSxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wXFxuICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UveDUtZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgdG9wKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgfSwgaXQubmFtZSlcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6ZmkXFxcIiArIGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVxcbiAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3g1LWRhdGFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIH0sIGl0Lm5hbWUpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIGRlc2M6IFxcXCJzY3JlZW4tOTAmJmZsb2F0XFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB1cmxJbnRlcmNlcHRvcjogJC50b1N0cmluZygocnVsZSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgvaHR0cHNcXFxcOlxcXFwvXFxcXC9wYW5cXFxcLnF1YXJrXFxcXC5jblxcXFwvc1xcXFwvLykpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGU6IHJ1bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfojrflj5botYTmupDmlofku7YnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9zZWFyY2g/cnVsZT11Y2tr5LqRJnVybD1oaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIHVybFxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICB9LCBydWxlLCBpbnB1dCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgTVlfUlVMRS50aXRsZSksXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi9hZC9cXFwiLCBcXFwiL2Fkcy9cXFwiLCBcXFwiZ29vZ2xlXFxcIiwgXFxcIi9zaC90by9cXFwiLCBcXFwiLmdpZlxcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIng15aSa5a+8XCIsXCJwYXRoXCI6XCJpbVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgYSA9IGdldFBhcmFtKFxcXCJhXFxcIiwgXFxcIlxcXCIpO1xcbmlmIChhICE9IFxcXCJcXFwiKSB7XFxuICAgIGEgPSBiYXNlNjREZWNvZGUoYSk7XFxufVxcbnNldFBhZ2VUaXRsZShNWV9SVUxFLnRpdGxlICsgXFxcIuaJuemHj+WvvOWFpVxcXCIpXFxucHV0TXlWYXIoXFxcImltXFxcIiwgYSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIlxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBhLFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJpbVxcXCIsIGlucHV0KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICBoZWlnaHQ6IDMsXFxuICAgICAgICBoaWdobGlnaHQ6IHRydWVcXG4gICAgfVxcbn0pO1xcblxcbmxldCBzYXZlID0gKCkgPT4ge1xcbiAgICBsZXQgYSA9IGdldE15VmFyKFxcXCJpbVxcXCIsIFxcXCJbXVxcXCIpO1xcbiAgICBpZiAoYSA9PSBcXFwiXFxcIiB8fCAhYS5zdGFydHNXaXRoKFxcXCJbXFxcIikpIHtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXmraPnoa7nmoTmoLzlvI9cXFwiXFxuICAgIH1cXG4gICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGEpO1xcbiAgICBsZXQge1xcbiAgICAgICAgYWRkQWxsXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS94NS1kYXRhXFxcIik7XFxuICAgIGxldCBjb3VudCA9IGFkZEFsbChsaXN0KTtcXG4gICAgYmFjayh0cnVlKTtcXG4gICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3sua3u+WKoFxcXCIgKyBjb3VudCArIFxcXCLmnaHlnLDlnYBcXFwiXFxufTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuWvvOWFpVxcXCIsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZShzYXZlKSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZGVzYzogXFxcIlxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiXFxufSk7XFxuXFxuaWYgKGdldFBhcmFtKFxcXCJiXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgY29uZmlybSh7XFxuICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICBjb250ZW50OiBcXFwi56Gu5a6a56uL5Y2z5a+85YWlXFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwi5pWw5o2u77yfXFxcIixcXG4gICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoc2F2ZSlcXG4gICAgfSk7XFxufVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIng15Y2V5a+8XCIsXCJwYXRoXCI6XCJhZGRcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcihcXFwibmFtZVxcXCIpO1xcbiAgICBjbGVhck15VmFyKFxcXCJ1cmxcXFwiKTtcXG59KSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIuivt+i+k+WFpee9keermeWQjeensFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIm5hbWVcXFwiLCBpbnB1dCk7XFxuICAgICAgICB9KSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiBcXFwiXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nlnLDlnYBcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICB9KSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5re75Yqg5L+d5a2YXFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCBuYW1lID0gZ2V0TXlWYXIoXFxcIm5hbWVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBsZXQgdXJsID0gZ2V0TXlWYXIoXFxcInVybFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGlmIChuYW1lID09IFxcXCJcXFwiIHx8IHVybCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXlrozmlbTkv6Hmga9cXFwiXFxuICAgICAgICB9XFxuICAgICAgICBsZXQge1xcbiAgICAgICAgICAgIGFkZFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3g1LWRhdGFcXFwiKTtcXG4gICAgICAgIGFkZChuYW1lLCB1cmwpO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Lmt7vliqBcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCJcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9XSIsImljb24iOiJodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA3LzI2LzcvMTEwXzE5ZDk4MjM4MTdhODMzNzA0ZDZlOWI0MGM3MWRhMDQyX2Nvbl8xMzB4MTMwLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment