Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥筛选@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCIubW9kdWxlLXBsYXktbGlzdC1jb250ZW50JiZhLC0xJiZUZXh0LmpzOifmm7TmlrDoh7PvvJonK2lucHV0XCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliqjmgIHliIbnsbtcIixcInBhdGhcIjpcImR0XCIsXCJydWxlXCI6XCJjb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbnRyeSB7XFxuICAgIHZhciBjYXRlZ29yaWVzID0gcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpXFxufSBjYXRjaCAoZSkge1xcbiAgICB2YXIgY2F0ZWdvcmllcyA9IHBkZmEoaHRtbCwg5aSn57G75a6a5L2NKVxcbn1cXG5cXG5sZXQgaW5pdF9jYXRlID0gW11cXG5cXG5mb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbn1cXG5cXG5jb25zdCBmb2xkID0gZ2V0TXlWYXIoJ2hlYWRlci5ncm91cCcsIFxcXCIwXFxcIilcXG5jb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldE15VmFyKCdoZWFkZXIuY2F0ZWdvcnknLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3M9JytpbnB1dCsnJnJ1bGU96JOd6I6T44Gu5b2x6KeG4pmUJ1xcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBkZXNjOiBcXFwi5pCc57Si5L2g5oOz6KaB55qE5b2x6KeG44CB5Yqo5ryr44CB57u86Im6562JLi4uXFxcIixcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZm9sZCA9PT0gJzEnID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogI0ZGMDAwMFxcXCI+8J+TrDwvc3Bhbj48L2I+JyA6ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMxYWFkMTlcXFwiPvCfk6o8L3NwYW4+PC9iPicsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGZvbGQpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignaGVhZGVyLmdyb3VwJywgZm9sZCA9PT0gJzEnID8gJzAnIDogJzEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgZm9sZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICB9KVxcblxcblxcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NKTtcXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGQoaXRlbSwg5YiG57G76ZO+5o6lKSArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdoZWFkZXIuY2F0ZWdvcnknLCBKU09OLnN0cmluZ2lmeShuZXdfY2F0ZSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci51cmwnLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gJzEnKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogJyArIOWIhuexu+minOiJsiArICdcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwZChpdGVtLCDliIbnsbvpk77mjqUpICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdoZWFkZXIuY2F0ZWdvcnknLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaGVhZGVyLnVybCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop6PmnpDpobXpnaJcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKE1ZX0hPTUUpID0+IHtcXG4gICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgIGV2YWwocmVxdWVzdChNWV9IT01FICsgJy9zdGF0aWMvanMvcGxheWVyY29uZmlnLmpzJykpO1xcbiAgICB2YXIganggPSBNYWNQbGF5ZXJDb25maWcucGxheWVyX2xpc3RbaHRtbC5mcm9tXS5wYXJzZTtcXG4gICAgaWYgKGp4ID09ICcnKSB7XFxuICAgICAgICBqeCA9IE1hY1BsYXllckNvbmZpZy5wYXJzZVxcbiAgICB9XFxuICAgIGlmIChodG1sLmZyb20gPT0gJzE5MjBsJykge1xcbiAgICAgICAganggPSBNWV9IT01FKycvbGdwbGF5Lz91cmw9J1xcbiAgICB9XFxuICAgIGxvZyhqeClcXG4gICAgaWYgKC9tM3U4fG1wNC8udGVzdChodG1sLnVybCkpIHtcXG4gICAgICAgIHZhciBwbGF5ID0gaHRtbC51cmxcXG4gICAgfSBlbHNlIGlmICgvcGxheS8udGVzdChqeCkpIHtcXG4gICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb25cXFwiKSk7XFxuICAgICAgICBldmFsKGZldGNoKGNvbmZpZy5jaikpXFxuICAgICAgICB2YXIgcGxheSA9IFBhcnNlUy5tYW9zcyhqeCArIGh0bWwudXJsLCBmYWxzZSwgJ0E0MkVBQzBDMkI0MDg0NzInKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHBsYXkgPSByZXF1ZXN0KGp4ICsgaHRtbC51cmwpLm1hdGNoKC91cmxcXFwiOi4qXFxcIiguKj8pXFxcIi8pWzFdXFxuICAgIH1cXG4gICAgaWYgKC9tZ3R2Ly50ZXN0KGh0bWwudXJsKSkge1xcbiAgICAgICAgcGxheSArPSAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjApfSdcXG5cXG4gICAgfSBlbHNlIGlmICgvYmlsaS8udGVzdChodG1sLnVybCkpIHtcXG4gICAgICAgIHBsYXkgKz0gJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCYmUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vfSdcXG4gICAgfVxcbiAgICByZXR1cm4gcGxheVxcbn0sIE1ZX0hPTUUpO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qn6aG16Z2iXCIsXCJwYXRoXCI6XCJlalwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5cXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xhenknKSkucnVsZSk7XFxuLy/nur/ot6/lkI3liJfooajnmoTlrprkvY1cXG52YXIgYXJ0cyA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgJ2JvZHkmJi5tb2R1bGUtdGFiLWl0ZW0nKTtcXG5cXG4vL+e6v+i3r+WQjeWIl+ihqOWQjeensOeahOWumuS9jVxcbnZhciB0YWJzID0gW107XFxuZm9yICh2YXIgaSBpbiBhcnRzKSB7XFxuICAgIHRhYnMucHVzaChwYXJzZURvbUZvckh0bWwoYXJ0c1tpXSwgJ3NwYW4mJlRleHQnKSlcXG59XFxuXFxuLy/mkq3mlL7liJfooajnmoTliJfooajnmoTlrprkvY1cXG52YXIgY29udHMgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICdib2R5JiYubW9kdWxlLXBsYXktbGlzdC1jb250ZW50Jyk7XFxudmFyIGxpc3RzID0gW107XFxuZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICBsaXN0cy5wdXNoKHBhcnNlRG9tRm9yQXJyYXkoY29udHNbaV0sICdib2R5JiZhJykpXFxufVxcblxcbnZhciDlr7zmvJQgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5tb2R1bGUtaW5mby10YWcmJlRleHQnKS5yZXBsYWNlKC9cXFxcLy9nLCcgJykucmVwbGFjZSgnICAnLCcnKTtcXG5cXG52YXIg5Li75ryUID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcubW9kdWxlLWluZm8taXRlbSwxJiZUZXh0JykucmVwbGFjZSgvXFxcXC8vZywnICcpLnJlcGxhY2UoJyAgJywnJyk7XFxuXFxudmFyIOabtOaWsCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW0sNCYmVGV4dCcpO1xcblxcbnZhciDnirbmgIEgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLDMmJlRleHQnKTtcXG5cXG52YXIg5Zu+54mHID0gcGFyc2VEb20oaHRtbCwgJy5sYXp5JiZkYXRhLW9yaWdpbmFsJyk7XFxuXFxudmFyIOeugOS7iyA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JykucmVwbGFjZSgnW+aUtui1t+mDqOWIhl0nLCcnKTtcXG5cXG52YXIgQ29sb3IgPSBcXFwiI2YxM2I2NmFcXFwiO1xcbnZhciBDb2xvcjEgPSBcXFwiIzA5OEFDMVxcXCI7XFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcbmxldCBsaW5lX21vZGVsID0gODtcXG5sZXQgbGluZV90eXBlX21vZGVsID0gJ2JsYW5rX2Jsb2NrJztcXG5kLnB1c2goe1xcbiAgICB0aXRsZTog5a+85ryUICsgJ1xcXFxuJyArIOS4u+a8lCxcXG4gICAgZGVzYzog5pu05pawICsgJ1xcXFxuJyArIOeKtuaAgSxcXG4gICAgcGljX3VybDog5Zu+54mHLFxcbiAgICB1cmw6TVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcbiAgICBleHRyYTp7Z3JhZGllbnQ6IHRydWV9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9XFxcIiNmZjE0OGU4ZVxcXCI+566A5LuL77yaJyArIOeugOS7iy5zdWJzdHIoMCwgNTUpICsgJy4uLjwvZm9udD48c21hbGw+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+6K+m5oOFPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyAnXFxcXG4nICsg566A5LuLICsgYEBydWxlPWpzOnZhciByZXMgPSB7fTsgdmFyIGQgPSBbXTtkLnB1c2goe3RpdGxlOiflvbHniYfnroDku4vvvJonKyBNWV9VUkwuc3BsaXQoJ2hpa2VyOi8vZW1wdHkjJylbMV0sY29sX3R5cGU6ICdsb25nX3RleHQnfSk7cmVzLmRhdGEgPSBkOyBzZXRIb21lUmVzdWx0KHJlcyk7YCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxufSk7XFxuXFxuXFxuZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lX21vZGVsOyBpKyspIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBsaW5lX3R5cGVfbW9kZWxcXG4gICAgfSlcXG59XFxuZnVuY3Rpb24gc2V0VGFicyh0YWJzLCB2YXJpKSB7XFxuICAgIGZvciAodmFyIGkgaW4gdGFicykge1xcbiAgICAgICAgdmFyIHVybCA9IFxcXCIjbm9Mb2FkaW5nI0BsYXp5UnVsZT0uanM6cHV0VmFyKCdcXFwiICsgdmFyaSArIFxcXCInLCAnXFxcIiArIGkgKyBcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0VmFyKHZhcmksICcwJykgPT0gaSA/IGdldEhlYWQodGFic1tpXSkgOiB0YWJzW2ldLFxcbiAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgXFxufVxcbmZ1bmN0aW9uIHNldExpc3RzKGxpc3RzLCBpbmRleCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9KVxcbn1cXG5pZiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpIHtcXG4gICAgdmFyIHN4ID0gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCIjNjYzOWE2XFxcIj7mjpLluo88L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cXFwiI2Y2NDE2Y1xcXCI+4oaRPC9mb250Pjwvc21hbGw+JyArICc8c21hbGw+PGZvbnQgY29sb3I9XFxcIiMyYjJlNGFcXFwiPuKGkzwvZm9udD48L3NtYWxsPic7XFxufSBlbHNlIHtcXG4gICAgdmFyIHN4ID0gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCIjMGFhMzQ0XFxcIj7mjpLluo88L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cXFwiIzJiMmU0YVxcXCI+4oaRPC9mb250Pjwvc21hbGw+JyArICc8c21hbGw+PGZvbnQgY29sb3I9XFxcIiNmNjQxNmNcXFwiPuKGkzwvZm9udD48L3NtYWxsPic7XFxufVxcblxcbnZhciBDb2xvciA9IFxcXCIjMzQ5MGRlXFxcIjtcXG52YXIgQ29sb3IxID0gXFxcIiNlYTU0NTVcXFwiO1xcblxcbmZ1bmN0aW9uIHNldExpc3RzKGxpc3RzLCBpbmRleCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6JyArIENvbG9yMSArICdcXFwiPjxzbWFsbD7pgInpm4bliJfooag8L3NtYWxsPicgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdDxzcGFuIHN0eWxlPVxcXCJmbG9hdDpyaWdodFxcXCI+JyArICc8c21hbGw+JyArIHN4ICsgJzwvc21hbGw+JyxcXG4gICAgICAgIHVybDogYCNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpsZXQgY29uZiA9IGdldFZhcignc2hzb3J0Jyk7aWYoY29uZj09JzEnKXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzAnfSk7fWVsc2V7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicxJ30pfTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaOkuW6j+aIkOWKnyc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdgLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KVxcbiAgICB2YXIgbGlzdCA9IGxpc3RzW2luZGV4XTtcXG5cXG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBsaXN0Lmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JykucmVwbGFjZSgv56ysfOmbhnzor5185pyfL2csICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDpwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpK2xhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmsqHmnInpgInpm4blk5/vvIzkuI3kv6Hngrnlm77niYfljrvnnIvnnIvwn5GAJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJlRleHQnKS5yZXBsYWNlKC/nrKx86ZuGfOivnXzmnJ8vZywgJycpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOnBhcnNlRG9tKGxpc3Rbal0sICdhJiZocmVmJykgK2xhenksZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrUnVsZXM6IFsnLmNzcycsICcuZ2lmJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuaWNvJywgJy5zdmcnLCAnLm0zdTgnLCAnLm1wNCddXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmsqHmnInpgInpm4blk5/vvIzkuI3kv6Hngrnlm77niYfljrvnnIvnnIvwn5GAJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVxcbnNldFRhYnModGFicywgTVlfVVJMKTtcXG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICc8YnI+JyxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5a+86Iiq6aG16Z2iXCIsXCJwYXRoXCI6XCJjYXRlZ29yeVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5jb25zdCBiYXNlX3VybCA9ICdodHRwczovL3d3dy5jeWJmdW4udG9wL3ZvZHNob3cvMi0tLS0tLS0tMi0tLS5odG1sJztcXG52YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHvCoMKgwqDCoMKgwqDCoFxcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7wqDCoMKgwqDCoFxcbn1cXG5jb25zdCDliIbnsbvpopzoibIgPSBnZXRSYW5nZUNvbG9ycygpXFxuY29uc3Qg5aSn57G75a6a5L2NID0gJ2JvZHkmJi5uYXZiYXItaXRlbXMnXFxuY29uc3Qg5bCP57G75a6a5L2NID0gJ2JvZHkmJmE6bm90KDptYXRjaGVzKOmmlnxBUFApKSdcXG5jb25zdCDmi7zmjqXliIbnsbsgPSAnYm9keSYmLm1vZHVsZS1jbGFzcy1pdGVtcydcXG5jb25zdCDmi7zmjqXliIbnsbsyID0gJ2JvZHkmJi5uYXYnXFxuY29uc3Qg5ou85o6l5a6a5L2NID0gJ2JvZHkmJmEnXFxuY29uc3Qg5YiG57G75qCH6aKYID0gJ2EmJlRleHQnXFxuY29uc3Qg5YiG57G76ZO+5o6lID0gJ2EmJmhyZWYnXFxuTVlfVVJMPWJhc2VfdXJsO1xcbmxldCB0cnVlX3VybCA9IGdldE15VmFyKCdoZWFkZXIudXJsJywgTVlfVVJMKTtcXG5jb25zdCBwYWdlID0gTVlfUEFHRTtcXG5pZihnZXRNeVZhcignaGVhZGVyLnVybCcpKXtcXG50cnVlX3VybCA9IHRydWVfdXJsLnJlcGxhY2UoL3R5cGVcXFxcLyhcXFxcZCspXFxcXC5odG1sLywgJ3Nob3cvJDEtLS0tLS0tLS0tLS5odG1sJykucmVwbGFjZSgvLS0tKFxcXFxkKilcXFxcLmh0bWwvLCArcGFnZSArICctLS0uaHRtbCcpfTtcXG5cXG5cXG4vL2xvZyh0cnVlX3VybCk7XFxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICAnVXNlci1BZ2VudCc6IE1PQklMRV9VQVxcbiAgICB9XFxufSk7XFxuLy9sb2coaHRtbCk7XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9kdCcpKS5ydWxlKTtcXG5jb25zdCBsaXN0ID0gcGRmYShodG1sLCAnLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1pdGVtJylcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7ICBcXG52YXIgdXJsbCA9cGQoaXRlbSwgJ2EmJmhyZWYnKSArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sICdhJiZ0aXRsZScpLFxcbiAgICAgICAgZGVzYzogcGRmaChpdGVtLCAnLm1vZHVsZS1pdGVtLXRleHR8fC5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0JyksXFxuICAgICAgICBpbWc6IHBkKGl0ZW0sICdpbWd8fC5sYXp5JiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcpICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZWojbm9IaXN0b3J5IyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICB1cmw6IHVybGwsXFxuICAgICAgICB9LFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLFxcbiAgICB9KVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG16Z2iXCIsXCJwYXRoXCI6XCJzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5NWV9VUkwgPSBNWV9VUkwuc3BsaXQoJyMjJyk7XFxuY29uc3QgaG9zdCA9IE1ZX1VSTFsxXTtcXG52YXIgaHRtbCA9IGZldGNoKGhvc3QsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUFcXG4gICAgfVxcbn0pO1xcblxcbnZhciBJY29uX3ByZWZpeCA9ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8nO1xcblxcbmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfov5Tlm54nLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgICAgIFxcbiAgICAgICAgICAgICAgICBiYWNrKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i/lOWbnuinhOWImemmlumhtVxcXCIgIFxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIHBpY191cmw6IEljb25fcHJlZml4ICsgJzQ3LnBuZycrIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF8zXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgfSk7XFxuXFxuXFxuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+etm+mAiScsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2NhdGVnb3J5P3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICAgICAgICAgIHBpY191cmw6IEljb25fcHJlZml4ICsgJzIxMy5wbmcnICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzNcXFwiXFxuICAgICAgICB9KTtcXG5cXG5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y6G5Y+yJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2hpc3RvcnknLFxcbiAgICAgICAgICAgIHBpY191cmw6IEljb25fcHJlZml4ICsgJzE5Mi5wbmcnICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzNcXFwiXFxuICAgICAgICB9KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cz0nK2lucHV0KycmcnVsZT3mrKHlhYPliqjmvKvimZQnXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLmkJzntKLkvaDmg7PopoHnmoTlvbHop4bjgIHliqjmvKvjgIHnu7zoibrnrYkuLi5cXFwiLFxcbn0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNjYwMFxcXCI+PGI+XFxcXHTng63mkJzmppxcXFxcdFxcXFx0XFxcXHQ8L2I+PC9zcGFuPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL3NzMS5iYWlkdS5jb20vNk9OWHNqaXAwUUlaOHR5aG5xL2l0L3U9Mzc3OTk5MDMyOCwxNDE2NTUzMjQxJmZtPTE3OSZhcHA9MzUmZj1QTkc/dz02MCZoPTcwJnM9RTc5NTFCNjJBNDYzOUQxNTMyOTNBNEU5MDMwMDQwMUInLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzMnXFxuICAgIH0pO1xcbnZhciB1cmxsID0naHR0cHM6Ly93d3cuY3liZnVuLnRvcC92b2RkZXRhaWwvMjg4OS5odG1sJytwZGZoKCdhJiZocmVmJykgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojZmYzMzAwXFxcIj4xPC9zcGFuPlxcdCAgIOS9nOS4uuaBtuW9ueWkp+Wwj+WnkOWwseivpeWFu+mtlOeOiycsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZWojbm9IaXN0b3J5IyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgZXh0cmE6IHt1cmw6IHVybGx9LFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICB9KTtcXG52YXIgdXJsbCA9J2h0dHBzOi8vd3d3LmN5YmZ1bi50b3Avdm9kZGV0YWlsLzQyMTkuaHRtbCcrcGRmaCgnYSYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNDQwMFxcXCI+Mjwvc3Bhbj5cXHQgICDooqvli4fogIXpmJ/kvI3lvIDpmaTnmoTpqa/lhb3luIjvvIzpgoLpgIXmnIDlvLrnp43njKvogLPlsJHlpbMnLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2VqI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIGV4dHJhOiB7dXJsOiB1cmxsfSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgfSk7XFxuXFxuc2V0UmVzdWx0KGQpO1wifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuasoeWFg+WKqOa8q+KZlFwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS9jYXRlZ29yeT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmNvbnN0IGJhc2VfdXJsID0gJ2h0dHBzOi8vd3d3LmN5YmZ1bi50b3Avdm9kc2hvdy8yLS0tLS0tLS0yLS0tLmh0bWwnO1xcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge8KgwqDCoMKgwqDCoMKgXFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTvCoMKgwqDCoMKgXFxufVxcbmNvbnN0IOWIhuexu+minOiJsiA9IGdldFJhbmdlQ29sb3JzKClcXG5jb25zdCDlpKfnsbvlrprkvY0gPSAnYm9keSYmLm5hdmJhci1pdGVtcydcXG5jb25zdCDlsI/nsbvlrprkvY0gPSAnYm9keSYmYTpub3QoOm1hdGNoZXMo6aaWfEFQUCkpJ1xcbmNvbnN0IOaLvOaOpeWIhuexuyA9ICdib2R5JiYubW9kdWxlLWNsYXNzLWl0ZW1zJ1xcbmNvbnN0IOaLvOaOpeWIhuexuzIgPSAnYm9keSYmLm5hdidcXG5jb25zdCDmi7zmjqXlrprkvY0gPSAnYm9keSYmYSdcXG5jb25zdCDliIbnsbvmoIfpopggPSAnYSYmVGV4dCdcXG5jb25zdCDliIbnsbvpk77mjqUgPSAnYSYmaHJlZidcXG5NWV9VUkw9YmFzZV91cmw7XFxubGV0IHRydWVfdXJsID0gZ2V0TXlWYXIoJ2hlYWRlci51cmwnLCBNWV9VUkwpO1xcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xcbmlmKGdldE15VmFyKCdoZWFkZXIudXJsJykpe1xcbnRydWVfdXJsID0gdHJ1ZV91cmwucmVwbGFjZSgvdHlwZVxcXFwvKFxcXFxkKylcXFxcLmh0bWwvLCAnc2hvdy8kMS0tLS0tLS0tLS0tLmh0bWwnKS5yZXBsYWNlKC8tLS0oXFxcXGQqKVxcXFwuaHRtbC8sICtwYWdlICsgJy0tLS5odG1sJyl9O1xcblxcblxcbi8vbG9nKHRydWVfdXJsKTtcXG52YXIgaHRtbCA9IGZldGNoKHRydWVfdXJsLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBXFxuICAgIH1cXG59KTtcXG4vL2xvZyhodG1sKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2R0JykpLnJ1bGUpO1xcbmNvbnN0IGxpc3QgPSBwZGZhKGh0bWwsICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLWl0ZW0nKVxcbmxpc3QuZm9yRWFjaChpdGVtID0+IHsgIFxcbnZhciB1cmxsID1wZChpdGVtLCAnYSYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgJ2EmJnRpdGxlJyksXFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sICcubW9kdWxlLWl0ZW0tdGV4dHx8Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQnKSxcXG4gICAgICAgIGltZzogcGQoaXRlbSwgJ2ltZ3x8LmxhenkmJmRhdGEtc3JjfHxkYXRhLW9yaWdpbmFsJykgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9laiNub0hpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHVybDogdXJsbCxcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsXFxuICAgIH0pXFxufSlcXG5zZXRSZXN1bHQoZCk7XCIsXCJncm91cFwiOlwi8J+OkCDlpKJcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLliqjmgIHliIbnsbtcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZHRcXFwiLFxcXCJydWxlXFxcIjpcXFwiY29uc3QgZW1wdHkgPSBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuXFxcXG50cnkge1xcXFxuICAgIHZhciBjYXRlZ29yaWVzID0gcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpXFxcXG59IGNhdGNoIChlKSB7XFxcXG4gICAgdmFyIGNhdGVnb3JpZXMgPSBwZGZhKGh0bWwsIOWkp+exu+WumuS9jSlcXFxcbn1cXFxcblxcXFxubGV0IGluaXRfY2F0ZSA9IFtdXFxcXG5cXFxcbmZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcXFxuICAgIGluaXRfY2F0ZS5wdXNoKFxcXFxcXFwiMFxcXFxcXFwiKVxcXFxufVxcXFxuXFxcXG5jb25zdCBmb2xkID0gZ2V0TXlWYXIoJ2hlYWRlci5ncm91cCcsIFxcXFxcXFwiMFxcXFxcXFwiKVxcXFxuY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRNeVZhcignaGVhZGVyLmNhdGVnb3J5JywgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXFxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxcXG5cXFxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIvCflI1cXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiJ2hpa2VyOi8vc2VhcmNoP3M9JytpbnB1dCsnJnJ1bGU96JOd6I6T44Gu5b2x6KeG4pmUJ1xcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCLmkJzntKLkvaDmg7PopoHnmoTlvbHop4bjgIHliqjmvKvjgIHnu7zoibrnrYkuLi5cXFxcXFxcIixcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBmb2xkID09PSAnMScgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogI0ZGMDAwMFxcXFxcXFwiPvCfk6w8L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzFhYWQxOVxcXFxcXFwiPvCfk6o8L3NwYW4+PC9iPicsXFxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoZm9sZCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci5ncm91cCcsIGZvbGQgPT09ICcxJyA/ICcwJyA6ICcxJyk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgfSwgZm9sZCksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG4gICAgfSlcXFxcblxcXFxuXFxcXG4gICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXFxcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NKTtcXFxcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XFxcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogJyArIOWIhuexu+minOiJsiArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwZChpdGVtLCDliIbnsbvpk77mjqUpICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW11cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY2F0ZS5wdXNoKGluZGV4ID09PSAwID8gcGFyYW1zLmtleS50b1N0cmluZygpIDogXFxcXFxcXCIwXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci5jYXRlZ29yeScsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdoZWFkZXIudXJsJywgaW5wdXQpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZCA9PT0gJzEnKSB7XFxcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogJyArIOWIhuexu+minOiJsiArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwZChpdGVtLCDliIbnsbvpk77mjqUpICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdoZWFkZXIuY2F0ZWdvcnknLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdoZWFkZXIudXJsJywgaW5wdXQpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuino+aekOmhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJsYXp5XFxcIixcXFwicnVsZVxcXCI6XFxcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKE1ZX0hPTUUpID0+IHtcXFxcbiAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSlcXFxcbiAgICBldmFsKHJlcXVlc3QoTVlfSE9NRSArICcvc3RhdGljL2pzL3BsYXllcmNvbmZpZy5qcycpKTtcXFxcbiAgICB2YXIganggPSBNYWNQbGF5ZXJDb25maWcucGxheWVyX2xpc3RbaHRtbC5mcm9tXS5wYXJzZTtcXFxcbiAgICBpZiAoanggPT0gJycpIHtcXFxcbiAgICAgICAganggPSBNYWNQbGF5ZXJDb25maWcucGFyc2VcXFxcbiAgICB9XFxcXG4gICAgaWYgKGh0bWwuZnJvbSA9PSAnMTkyMGwnKSB7XFxcXG4gICAgICAgIGp4ID0gTVlfSE9NRSsnL2xncGxheS8/dXJsPSdcXFxcbiAgICB9XFxcXG4gICAgbG9nKGp4KVxcXFxuICAgIGlmICgvbTN1OHxtcDQvLnRlc3QoaHRtbC51cmwpKSB7XFxcXG4gICAgICAgIHZhciBwbGF5ID0gaHRtbC51cmxcXFxcbiAgICB9IGVsc2UgaWYgKC9wbGF5Ly50ZXN0KGp4KSkge1xcXFxuICAgICAgICBldmFsKFxcXFxcXFwidmFyIGNvbmZpZyA9XFxcXFxcXCIgKyBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgZXZhbChmZXRjaChjb25maWcuY2opKVxcXFxuICAgICAgICB2YXIgcGxheSA9IFBhcnNlUy5tYW9zcyhqeCArIGh0bWwudXJsLCBmYWxzZSwgJ0E0MkVBQzBDMkI0MDg0NzInKVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHZhciBwbGF5ID0gcmVxdWVzdChqeCArIGh0bWwudXJsKS5tYXRjaCgvdXJsXFxcXFxcXCI6LipcXFxcXFxcIiguKj8pXFxcXFxcXCIvKVsxXVxcXFxuICAgIH1cXFxcbiAgICBpZiAoL21ndHYvLnRlc3QoaHRtbC51cmwpKSB7XFxcXG4gICAgICAgIHBsYXkgKz0gJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKX0nXFxcXG5cXFxcbiAgICB9IGVsc2UgaWYgKC9iaWxpLy50ZXN0KGh0bWwudXJsKSkge1xcXFxuICAgICAgICBwbGF5ICs9ICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAmJlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL30nXFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBwbGF5XFxcXG59LCBNWV9IT01FKTtcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS6jOe6p+mhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJlalxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXFxcblxcXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sYXp5JykpLnJ1bGUpO1xcXFxuLy/nur/ot6/lkI3liJfooajnmoTlrprkvY1cXFxcbnZhciBhcnRzID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLm1vZHVsZS10YWItaXRlbScpO1xcXFxuXFxcXG4vL+e6v+i3r+WQjeWIl+ihqOWQjeensOeahOWumuS9jVxcXFxudmFyIHRhYnMgPSBbXTtcXFxcbmZvciAodmFyIGkgaW4gYXJ0cykge1xcXFxuICAgIHRhYnMucHVzaChwYXJzZURvbUZvckh0bWwoYXJ0c1tpXSwgJ3NwYW4mJlRleHQnKSlcXFxcbn1cXFxcblxcXFxuLy/mkq3mlL7liJfooajnmoTliJfooajnmoTlrprkvY1cXFxcbnZhciBjb250cyA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgJ2JvZHkmJi5tb2R1bGUtcGxheS1saXN0LWNvbnRlbnQnKTtcXFxcbnZhciBsaXN0cyA9IFtdO1xcXFxuZm9yICh2YXIgaSBpbiBjb250cykge1xcXFxuICAgIGxpc3RzLnB1c2gocGFyc2VEb21Gb3JBcnJheShjb250c1tpXSwgJ2JvZHkmJmEnKSlcXFxcbn1cXFxcblxcXFxudmFyIOWvvOa8lCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLXRhZyYmVGV4dCcpLnJlcGxhY2UoL1xcXFxcXFxcLy9nLCcgJykucmVwbGFjZSgnICAnLCcnKTtcXFxcblxcXFxudmFyIOS4u+a8lCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW0sMSYmVGV4dCcpLnJlcGxhY2UoL1xcXFxcXFxcLy9nLCcgJykucmVwbGFjZSgnICAnLCcnKTtcXFxcblxcXFxudmFyIOabtOaWsCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW0sNCYmVGV4dCcpO1xcXFxuXFxcXG52YXIg54q25oCBID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcubW9kdWxlLWluZm8taXRlbSwzJiZUZXh0Jyk7XFxcXG5cXFxcbnZhciDlm77niYcgPSBwYXJzZURvbShodG1sLCAnLmxhenkmJmRhdGEtb3JpZ2luYWwnKTtcXFxcblxcXFxudmFyIOeugOS7iyA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JykucmVwbGFjZSgnW+aUtui1t+mDqOWIhl0nLCcnKTtcXFxcblxcXFxudmFyIENvbG9yID0gXFxcXFxcXCIjZjEzYjY2YVxcXFxcXFwiO1xcXFxudmFyIENvbG9yMSA9IFxcXFxcXFwiIzA5OEFDMVxcXFxcXFwiO1xcXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcXFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxubGV0IGxpbmVfbW9kZWwgPSA4O1xcXFxubGV0IGxpbmVfdHlwZV9tb2RlbCA9ICdibGFua19ibG9jayc7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiDlr7zmvJQgKyAnXFxcXFxcXFxuJyArIOS4u+a8lCxcXFxcbiAgICBkZXNjOiDmm7TmlrAgKyAnXFxcXFxcXFxuJyArIOeKtuaAgSxcXFxcbiAgICBwaWNfdXJsOiDlm77niYcsXFxcXG4gICAgdXJsOk1ZX1VSTCxcXFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcXFxuICAgIGV4dHJhOntncmFkaWVudDogdHJ1ZX1cXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcIiNmZjE0OGU4ZVxcXFxcXFwiPueugOS7i++8micgKyDnroDku4suc3Vic3RyKDAsIDU1KSArICcuLi48L2ZvbnQ+PHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwicmVkXFxcXFxcXCI+6K+m5oOFPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArICdcXFxcXFxcXG4nICsg566A5LuLICsgYEBydWxlPWpzOnZhciByZXMgPSB7fTsgdmFyIGQgPSBbXTtkLnB1c2goe3RpdGxlOiflvbHniYfnroDku4vvvJonKyBNWV9VUkwuc3BsaXQoJ2hpa2VyOi8vZW1wdHkjJylbMV0sY29sX3R5cGU6ICdsb25nX3RleHQnfSk7cmVzLmRhdGEgPSBkOyBzZXRIb21lUmVzdWx0KHJlcyk7YCxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbn0pO1xcXFxuXFxcXG5cXFxcbmZvciAobGV0IGkgPSAwOyBpIDwgbGluZV9tb2RlbDsgaSsrKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6IGxpbmVfdHlwZV9tb2RlbFxcXFxuICAgIH0pXFxcXG59XFxcXG5mdW5jdGlvbiBzZXRUYWJzKHRhYnMsIHZhcmkpIHtcXFxcbiAgICBmb3IgKHZhciBpIGluIHRhYnMpIHtcXFxcbiAgICAgICAgdmFyIHVybCA9IFxcXFxcXFwiI25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOnB1dFZhcignXFxcXFxcXCIgKyB2YXJpICsgXFxcXFxcXCInLCAnXFxcXFxcXCIgKyBpICsgXFxcXFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5Yqf77yBJzsnI25vSGlzdG9yeSNoaWtlcjovL2VtcHR5J1xcXFxcXFwiO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGdldFZhcih2YXJpLCAnMCcpID09IGkgPyBnZXRIZWFkKHRhYnNbaV0pIDogdGFic1tpXSxcXFxcbiAgICAgICAgICAgIHVybDogdXJsLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbiAgICBcXFxcbn1cXFxcbmZ1bmN0aW9uIHNldExpc3RzKGxpc3RzLCBpbmRleCkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICB9KVxcXFxufVxcXFxuaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxcXG4gICAgdmFyIHN4ID0gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXFxcXFwiIzY2MzlhNlxcXFxcXFwiPuaOkuW6jzwvZm9udD48L3NtYWxsPicgKyAnPHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiI2Y2NDE2Y1xcXFxcXFwiPuKGkTwvZm9udD48L3NtYWxsPicgKyAnPHNtYWxsPjxmb250IGNvbG9yPVxcXFxcXFwiIzJiMmU0YVxcXFxcXFwiPuKGkzwvZm9udD48L3NtYWxsPic7XFxcXG59IGVsc2Uge1xcXFxuICAgIHZhciBzeCA9ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFxcXFxcIiMwYWEzNDRcXFxcXFxcIj7mjpLluo88L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcIiMyYjJlNGFcXFxcXFxcIj7ihpE8L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cXFxcXFxcIiNmNjQxNmNcXFxcXFxcIj7ihpM8L2ZvbnQ+PC9zbWFsbD4nO1xcXFxufVxcXFxuXFxcXG52YXIgQ29sb3IgPSBcXFxcXFxcIiMzNDkwZGVcXFxcXFxcIjtcXFxcbnZhciBDb2xvcjEgPSBcXFxcXFxcIiNlYTU0NTVcXFxcXFxcIjtcXFxcblxcXFxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOicgKyBDb2xvcjEgKyAnXFxcXFxcXCI+PHNtYWxsPumAiembhuWIl+ihqDwvc21hbGw+JyArICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQ8c3BhbiBzdHlsZT1cXFxcXFxcImZsb2F0OnJpZ2h0XFxcXFxcXCI+JyArICc8c21hbGw+JyArIHN4ICsgJzwvc21hbGw+JyxcXFxcbiAgICAgICAgdXJsOiBgI25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOmxldCBjb25mID0gZ2V0VmFyKCdzaHNvcnQnKTtpZihjb25mPT0nMScpe3B1dFZhcih7a2V5OidzaHNvcnQnLCB2YWx1ZTonMCd9KTt9ZWxzZXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzEnfSl9O3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5o6S5bqP5oiQ5YqfJzsnI25vSGlzdG9yeSNoaWtlcjovL2VtcHR5J2AsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICB9KVxcXFxuICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdO1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gbGlzdC5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJlRleHQnKS5yZXBsYWNlKC/nrKx86ZuGfOivnXzmnJ8vZywgJycpLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6cGFyc2VEb20obGlzdFtqXSwgJ2EmJmhyZWYnKStsYXp5LFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5rKh5pyJ6YCJ6ZuG5ZOf77yM5LiN5L+h54K55Zu+54mH5Y6755yL55yL8J+RgCcsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmVGV4dCcpLnJlcGxhY2UoL+esrHzpm4Z86K+dfOacny9nLCAnJyksXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDpwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpICtsYXp5LGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrUnVsZXM6IFsnLmNzcycsICcuZ2lmJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuaWNvJywgJy5zdmcnLCAnLm0zdTgnLCAnLm1wNCddXFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ayoeaciemAiembhuWTn++8jOS4jeS/oeeCueWbvueJh+WOu+eci+eci/CfkYAnLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICB9XFxcXG59XFxcXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XFxcXG5zZXRMaXN0cyhsaXN0cywgZ2V0VmFyKE1ZX1VSTCwgJzAnKSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAnPGJyPicsXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlr7zoiKrpobXpnaJcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY2F0ZWdvcnlcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuY29uc3QgYmFzZV91cmwgPSAnaHR0cHM6Ly93d3cuY3liZnVuLnRvcC92b2RzaG93LzItLS0tLS0tLTItLS0uaHRtbCc7XFxcXG52YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHvCoMKgwqDCoMKgwqDCoFxcXFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTvCoMKgwqDCoMKgXFxcXG59XFxcXG5jb25zdCDliIbnsbvpopzoibIgPSBnZXRSYW5nZUNvbG9ycygpXFxcXG5jb25zdCDlpKfnsbvlrprkvY0gPSAnYm9keSYmLm5hdmJhci1pdGVtcydcXFxcbmNvbnN0IOWwj+exu+WumuS9jSA9ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjpppZ8QVBQKSknXFxcXG5jb25zdCDmi7zmjqXliIbnsbsgPSAnYm9keSYmLm1vZHVsZS1jbGFzcy1pdGVtcydcXFxcbmNvbnN0IOaLvOaOpeWIhuexuzIgPSAnYm9keSYmLm5hdidcXFxcbmNvbnN0IOaLvOaOpeWumuS9jSA9ICdib2R5JiZhJ1xcXFxuY29uc3Qg5YiG57G75qCH6aKYID0gJ2EmJlRleHQnXFxcXG5jb25zdCDliIbnsbvpk77mjqUgPSAnYSYmaHJlZidcXFxcbk1ZX1VSTD1iYXNlX3VybDtcXFxcbmxldCB0cnVlX3VybCA9IGdldE15VmFyKCdoZWFkZXIudXJsJywgTVlfVVJMKTtcXFxcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xcXFxuaWYoZ2V0TXlWYXIoJ2hlYWRlci51cmwnKSl7XFxcXG50cnVlX3VybCA9IHRydWVfdXJsLnJlcGxhY2UoL3R5cGVcXFxcXFxcXC8oXFxcXFxcXFxkKylcXFxcXFxcXC5odG1sLywgJ3Nob3cvJDEtLS0tLS0tLS0tLS5odG1sJykucmVwbGFjZSgvLS0tKFxcXFxcXFxcZCopXFxcXFxcXFwuaHRtbC8sICtwYWdlICsgJy0tLS5odG1sJyl9O1xcXFxuXFxcXG5cXFxcbi8vbG9nKHRydWVfdXJsKTtcXFxcbnZhciBodG1sID0gZmV0Y2godHJ1ZV91cmwsIHtcXFxcbiAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBXFxcXG4gICAgfVxcXFxufSk7XFxcXG4vL2xvZyhodG1sKTtcXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZHQnKSkucnVsZSk7XFxcXG5jb25zdCBsaXN0ID0gcGRmYShodG1sLCAnLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1pdGVtJylcXFxcbmxpc3QuZm9yRWFjaChpdGVtID0+IHsgIFxcXFxudmFyIHVybGwgPXBkKGl0ZW0sICdhJiZocmVmJykgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgJ2EmJnRpdGxlJyksXFxcXG4gICAgICAgIGRlc2M6IHBkZmgoaXRlbSwgJy5tb2R1bGUtaXRlbS10ZXh0fHwubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dCcpLFxcXFxuICAgICAgICBpbWc6IHBkKGl0ZW0sICdpbWd8fC5sYXp5JiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcpICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2VqI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIHVybDogdXJsbCxcXFxcbiAgICAgICAgfSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLFxcXFxuICAgIH0pXFxcXG59KVxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaQnOe0oumhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJzc1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5NWV9VUkwgPSBNWV9VUkwuc3BsaXQoJyMjJyk7XFxcXG5jb25zdCBob3N0ID0gTVlfVVJMWzFdO1xcXFxudmFyIGh0bWwgPSBmZXRjaChob3N0LCB7XFxcXG4gICAgaGVhZGVyczoge1xcXFxuICAgICAgICAnVXNlci1BZ2VudCc6IE1PQklMRV9VQVxcXFxuICAgIH1cXFxcbn0pO1xcXFxuXFxcXG52YXIgSWNvbl9wcmVmaXggPSAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvJztcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6L+U5ZueJyxcXFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpOyAgICAgXFxcXG4gICAgICAgICAgICAgICAgYmFjayhmYWxzZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ov5Tlm57op4TliJnpppbpobVcXFxcXFxcIiAgXFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IEljb25fcHJlZml4ICsgJzQ3LnBuZycrIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzNcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+etm+mAiScsXFxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvY2F0ZWdvcnk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IycsXFxcXG4gICAgICAgICAgICBwaWNfdXJsOiBJY29uX3ByZWZpeCArICcyMTMucG5nJyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzNcXFxcXFxcIlxcXFxuICAgICAgICB9KTtcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn5Y6G5Y+yJyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vaGlzdG9yeScsXFxcXG4gICAgICAgICAgICBwaWNfdXJsOiBJY29uX3ByZWZpeCArICcxOTIucG5nJyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uX3NtYWxsXzNcXFxcXFxcIlxcXFxuICAgICAgICB9KTtcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLwn5SNXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcIidoaWtlcjovL3NlYXJjaD9zPScraW5wdXQrJyZydWxlPeasoeWFg+WKqOa8q+KZlCdcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi5pCc57Si5L2g5oOz6KaB55qE5b2x6KeG44CB5Yqo5ryr44CB57u86Im6562JLi4uXFxcXFxcXCIsXFxcXG59KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6I2ZmNjYwMFxcXFxcXFwiPjxiPlxcXFxcXFxcdOeDreaQnOamnFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdDwvYj48L3NwYW4+JyxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vc3MxLmJhaWR1LmNvbS82T05Yc2ppcDBRSVo4dHlobnEvaXQvdT0zNzc5OTkwMzI4LDE0MTY1NTMyNDEmZm09MTc5JmFwcD0zNSZmPVBORz93PTYwJmg9NzAmcz1FNzk1MUI2MkE0NjM5RDE1MzI5M0E0RTkwMzAwNDAxQicsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF8zJ1xcXFxuICAgIH0pO1xcXFxudmFyIHVybGwgPSdodHRwczovL3d3dy5jeWJmdW4udG9wL3ZvZGRldGFpbC8yODg5Lmh0bWwnK3BkZmgoJ2EmJmhyZWYnKSArICcjaW1tZXJzaXZlVGhlbWUjJztcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6I2ZmMzMwMFxcXFxcXFwiPjE8L3NwYW4+XFxcXHQgICDkvZzkuLrmgbblvbnlpKflsI/lp5DlsLHor6XlhbvprZTnjosnLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZWojbm9IaXN0b3J5IyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICBleHRyYToge3VybDogdXJsbH0sXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXFxcbiAgICB9KTtcXFxcbnZhciB1cmxsID0naHR0cHM6Ly93d3cuY3liZnVuLnRvcC92b2RkZXRhaWwvNDIxOS5odG1sJytwZGZoKCdhJiZocmVmJykgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiNmZjQ0MDBcXFxcXFxcIj4yPC9zcGFuPlxcXFx0ICAg6KKr5YuH6ICF6Zif5LyN5byA6Zmk55qE6amv5YW95biI77yM6YKC6YCF5pyA5by656eN54yr6ICz5bCR5aWzJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2VqI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgZXh0cmE6IHt1cmw6IHVybGx9LFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXG4gICAgfSk7XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJ0aXRsZSI6Iuetm+mAiSJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement