94a241a5bba8f6f931366df5c77be694.json 24 KB

1
  1. {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue","mtime":1622804912272},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIkU6L2JvbWFuLWZyYW13b3JrL3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIjsKaW1wb3J0IF90eXBlb2YgZnJvbSAiRTovYm9tYW4tZnJhbXdvcmsvcnVveWktdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZiI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3BsaXQuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgeyBsaXN0SW5kZXgsIGdldFVzZXJQcm9maWxlLCBsaXN0SW5kZXh0d28sIGxpc3RJbmRleHRoZXJyLCBsaXN0SW5kZXhmb3UsIGxpc3RJbmRleHRhbmwsIGdldENvbmZpZywgZGVsQ29uZmlnLCBhZGRDb25maWcsIGFkZENvbmZpZ2luZGV4LCB1cGRhdGVDb25maWcsIGNsZWFyQ2FjaGUsIGRlbEluZGV4bmFiZCwgbGlzdEluZGV4YmVyIH0gZnJvbSAiQC9hcGkvc3lzdGVtL2NvbmZpZyI7CmltcG9ydCBFZGl0b3IgZnJvbSAnQC9jb21wb25lbnRzL0VkaXRvcic7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiaW5kZXgiLAogIGNvbXBvbmVudHM6IHsKICAgIEVkaXRvcjogRWRpdG9yCiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgLy8g54mI5pys5Y+3CiAgICAgIHZlcnNpb246ICIyLjUuMCIsCiAgICAgIGN1cnJlbnRQYWdlMzogMSwKICAgICAgdG90YWw6IDAsCiAgICAgIHRvdGFscHJvZmlsZTogMCwKICAgICAgdG90YWxhbGk6IDAsCiAgICAgIHBhZ2VTaXplOiA2LAogICAgICBhY3RpdmVOYW1lOiAnc2Vjb25kJywKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIG9wZW46IGZhbHNlLAogICAgICAvLyDlvLnlh7rlsYLmoIfpopgKICAgICAgdGl0bGU6ICIiLAogICAgICB2YWx1ZTogbmV3IERhdGUoKSwKICAgICAgZWRpdGFibGVUYWJzOiBbXSwKICAgICAgYXR0ZW5kYW5jZTogWyflvoXmiJHlrqHmibknLCAn5bey5Yqe55CGJywgJ+aIkeeahOa1geeoiycsICfpqbPlm57lrqHmibknXSwKICAgICAgZWRpdGFibGVUYWJzdGVvOiBbXSwKICAgICAgY29uZmlnTGlzdDogW10sCiAgICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgICAgdGFibGU6ICdzeXNfbm90aWNlJywKICAgICAgICBvcmRlckJ5OiAnY3JlYXRlX3RpbWUgZGVzYycsCiAgICAgICAgcGFnZU5vOiAxLAogICAgICAgIHBhZ2VTaXplOiAxMCwKICAgICAgICBmaXhlZERhdGE6IHsKICAgICAgICAgIGNvbmRpdGlvbjogewogICAgICAgICAgICBub3RpY2VfdHlwZTogMSwKICAgICAgICAgICAgc3RhdHVzOiAwCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBxdWVyeVBhcmFtc3RhYjogewogICAgICAgIHRhYmxlOiAnc3lzX25vdGljZScsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogNiwKICAgICAgICBjb25kaXRpb246IHsKICAgICAgICAgIG5vdGljZV90eXBlOiAxCiAgICAgICAgfQogICAgICB9LAogICAgICAvLyDlhazlj7jmpoLlhrUKICAgICAgcXVlcnlQYXJhbXN0YWJwcm9maWxlOiB7CiAgICAgICAgdGFibGU6ICdzeXNfaW5mbycsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogMSwKICAgICAgICBmaXhlZERhdGE6IHsKICAgICAgICAgIGNvbmRpdGlvbjogewogICAgICAgICAgICBpbmZvX3R5cGU6IDEKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIOaXpeWOhgogICAgICBxdWVyeVBhcmFtc2NhbGVuZGFyOiB7CiAgICAgICAgdGFibGU6ICdzeXNfc2NoZWR1bGUnLAogICAgICAgIG9yZGVyQnk6ICdjcmVhdGVfdGltZSBkZXNjJywKICAgICAgICBwYWdlTm86IDEsCiAgICAgICAgcGFnZVNpemU6IDEwLAogICAgICAgIGZpeGVkRGF0YTogewogICAgICAgICAgY29uZGl0aW9uOiB7CiAgICAgICAgICAgIGNyZWF0ZV9ieTogJycKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIOWkh+W/mOW9lQogICAgICBxdWVyeVBhcmFtc3RhYm1lbW9yYW5kdW06IHsKICAgICAgICB0YWJsZTogJ3N5c19tZW1vcmFuZHVtJywKICAgICAgICBvcmRlckJ5OiAnY3JlYXRlX3RpbWUgZGVzYycsCiAgICAgICAgcGFnZU5vOiAxLAogICAgICAgIHBhZ2VTaXplOiA2LAogICAgICAgIGZpeGVkRGF0YTogewogICAgICAgICAgY29uZGl0aW9uOiB7CiAgICAgICAgICAgIGNyZWF0ZV9ieTogJycKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIOmAmuiur+W9lQogICAgICBxdWVyeVBhcmFtc2FpbDogewogICAgICAgIHRhYmxlOiAnc3lzX2NvbnRhY3RzJywKICAgICAgICBvcmRlckJ5OiAnY3JlYXRlX3RpbWUgZGVzYycsCiAgICAgICAgcGFnZU5vOiAxLAogICAgICAgIHBhZ2VTaXplOiAzCiAgICAgIH0sCiAgICAgIHF1ZXJ5UGFyYW1zaWpldTogewogICAgICAgIHRhYmxlOiAnc3lzX2NvbnRhY3RzJwogICAgICB9LAogICAgICBudW06IDAsCiAgICAgIG51bWxpc3Q6IDAsCiAgICAgIG51bXByb2ZpbGU6IDAsCiAgICAgIGRpY3RUeXBlOiAnc3lzX25vdGljZV90eXBlJywKICAgICAgLy8g5YWs5Y+45qaC5Ya1CiAgICAgIGRpY3RUeXBldHdvOiAnc3lzX2Rlc2NyaWJlX3R5cGUnLAogICAgICBnZXR0YWJMaXN0OiBbXSwKICAgICAgZ2V0TGlzcHJvZmlsZW9uZTogW10sCiAgICAgIC8vIOWkh+W/mOW9lQogICAgICBnZXRtZW1vcmFuZHVtOiBbXSwKICAgICAgLy/pgJrorq/lvZXlj4LmlbAKICAgICAgYWxpZW1nOiB7CiAgICAgICAgdGFibGU6ICdzeXNfY29udGFjdHMnLAogICAgICAgIG9yZGVyQnk6ICdjcmVhdGVfdGltZSBkZXNjJywKICAgICAgICBwYWdlTm86IDEsCiAgICAgICAgcGFnZVNpemU6IDQKICAgICAgfSwKICAgICAgdGFibGVEYXRhYWxpZDogW10sCiAgICAgIGdldExpc2FpbGxpZTogW10sCiAgICAgIGFsZW5kYXJMaXN0OiBbXSwKICAgICAgY2FsZW5kYXJEYXRhOiBbXSwKICAgICAgYXJ5OiBbXSwKICAgICAgdGlla3U6ICcnLAogICAgICBjb21nOiAnJywKICAgICAgYWVrdGk6ICcnLAogICAgICAvLyDlvLnmoYbmlbDmja4KICAgICAgZm9ybToge30sCiAgICAgIC8vIOihqOWNleagoemqjAogICAgICBydWxlczoge30sCiAgICAgIC8v5pel5Y6G5by55qGGCiAgICAgIGNhbGVuZGFyYWRkOiB7CiAgICAgICAgdGFibGU6ICdzeXNfc2NoZWR1bGUnLAogICAgICAgIGlzVWk6IGZhbHNlLAogICAgICAgIGZpeGVkRGF0YTogewogICAgICAgICAgaWQ6IC0xCiAgICAgICAgfQogICAgICB9LAogICAgICAvL+Wkh+W/mOW9leW8ueahhgogICAgICBjYWxlbmRhcmFkZG1lcjogewogICAgICAgIHRhYmxlOiAnc3lzX21lbW9yYW5kdW0nLAogICAgICAgIGlzVWk6IGZhbHNlLAogICAgICAgIGZpeGVkRGF0YTogewogICAgICAgICAgaWQ6IC0xCiAgICAgICAgfQogICAgICB9LAogICAgICAvLyBpbnB1dAogICAgICBpbnB1dExpc3Q6IFtdLAogICAgICAvLyDml7bpl7QKICAgICAgZGF0YUxpc3Q6IFtdLAogICAgICAvL+WNlemAieahhgogICAgICByYWRpb2xpc3Q6IFtdLAogICAgICAvLyDlpI3pgInmoYYKICAgICAgY2hla2Jvc0xpc3Q6IFtdLAogICAgICAvL+S4i+aLieahhgogICAgICBzZWxlY3RMaXN0OiBbXSwKICAgICAgZWRpdG9yTGlzdDogW10sCiAgICAgIHF1ZXJ5RGF0YToge30sCiAgICAgIHF1ZXJ5RGF0YXR3bzoge30sCiAgICAgIHF1ZXJ5RGF0YXRocmU6IHt9LAogICAgICBudW1tZXI6IDAsCiAgICAgIC8vMCDmmK/ml6XljoYgIDEg5piv5aSH5b+Y5b2VCiAgICAgIGZvcm1lOiB7CiAgICAgICAgdGFibGU6ICcnLAogICAgICAgIG9iaklkOiAtMSwKICAgICAgICBmaXhlZERhdGE6IHt9CiAgICAgIH0sCiAgICAgIHJqdHU6IFtdLAogICAgICB0cnVldzogW10sCiAgICAgIGZhbGVzOiBbXSwKICAgICAgcG9zdExpc3Q6IHt9LAogICAgICBhcnI6ICcyLDIsMywzLDQsNCcsCiAgICAgIC8vIOWIoOmZpOWPguaVsAogICAgICBkZWxlZGxpZDogewogICAgICAgIHRhYmxlOiAnc3lzX21lbW9yYW5kdW0nLAogICAgICAgIGlkTGlzdDogW10sCiAgICAgICAgdXNlcjogewogICAgICAgICAgb2xkUGFzc3dvcmQ6IHVuZGVmaW5lZCwKICAgICAgICAgIG5ld1Bhc3N3b3JkOiB1bmRlZmluZWQsCiAgICAgICAgICBjb25maXJtUGFzc3dvcmQ6IHVuZGVmaW5lZAogICAgICAgIH0sCiAgICAgICAgc2hvd2VyOiB0cnVlIC8v5Yik5pat5Yig6Zmk5Zu+5qCH5piv5ZCm5pi+56S6CgogICAgICB9LAogICAgICB0aXRsZWVzOiAn6YCa55+l5YWs5ZGKJywKICAgICAgLy/pgJrnn6XlhazlkYrlvLnmoYYKICAgICAgb3BlbmV0eTogZmFsc2UsCiAgICAgIGFjdGluZ2s6IHt9CiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudXNlcikKICAgIHRoaXMudW5pcXVlKHRoaXMuYXJyKTsKICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgdGhpcy5nZXRMaXN0dGFiKCk7CiAgICB0aGlzLmdldExpc2VyKCk7CiAgICB0aGlzLmdldExpc3Byb2ZpbGUoKTsgLy8g55So5oi35L+h5oGvCgogICAgdGhpcy5nZXRVc2VyKCk7IC8vIHRoaXMuZ2V0TGlzbWVtb3JhbmR1bSgpICAvL+Wkh+W/mOW9lQoKICAgIHRoaXMuZ2V0TGlzYWlsKCk7IC8v6YCa6K6v5b2VCgogICAgdGhpcy5nZXRMaXNhaWx0d28oKTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICAvLyDml7bpl7Tpq5jkuq7nmoTmlbDnu4QKICAgIGJyaWdodERhdGU6IGZ1bmN0aW9uIGJyaWdodERhdGUoKSB7CiAgICAgIC8vIGxldCBhcnkgPSBbXQogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICBpZiAodGhhdC5jYWxlbmRhckRhdGEubGVuZ3RoICE9PSBudWxsKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGF0LmNhbGVuZGFyRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgdGhhdC5jYWxlbmRhckRhdGFbaV0ubG92ZSA9ICJ5dSI7CgogICAgICAgICAgaWYgKHRoYXQuY2FsZW5kYXJEYXRhW2ldLnJlbWluZF90aW1lICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgdGhhdC5hcnkucHVzaCh0aGF0LmNhbGVuZGFyRGF0YVtpXS5yZW1pbmRfdGltZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gdGhhdC5hcnk7CiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyBUb29sdGlwIOaWh+Wtl+aPkOekugogICAgY29udGVudDogZnVuY3Rpb24gY29udGVudChkYXRlKSB7CiAgICAgIHZhciBkYXRhID0gZGF0ZTsKICAgICAgdmFyIGRhdGFzZSA9IGRhdGU7CiAgICAgIHZhciBjb250ZW50ID0gJyc7CiAgICAgIHZhciBjb25lcnQgPSAnJzsKICAgICAgdmFyIGNvbmVydHJlID0gJyc7CiAgICAgIHZhciBudWp1ZSA9IDA7CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2FsZW5kYXJEYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudCA9IHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQucmVwbGFjZSgvPFwvP1tePl0qPi9nLCAnJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGF0YSA9PSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5yZW1pbmRfdGltZSkgewogICAgICAgICAgaWYgKGNvbnRlbnQgPT0gdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudCArICfjgIEnKSB7CiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQgKyB0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50ICsgJ+OAgSc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gY29udGVudDsKICAgIH0sCiAgICBtb2RlbEZuOiBmdW5jdGlvbiBtb2RlbEZuKG9iaiwgY29udCkgewogICAgICB0aGlzLiRzZXQodGhpcy5mb3JtLCBvYmosIGNvbnQpOwogICAgfSwKICAgIC8v5pWw5o2uICDnrKzkuIDpg6jliIbliJfooagKICAgIGdldExpc3Q6IGZ1bmN0aW9uIGdldExpc3QoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLmNvbmZpZ0xpc3QgPSBbXTsKICAgICAgbGlzdEluZGV4KHRoaXMucXVlcnlQYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEucm93cyAhPT0gbnVsbCkgewogICAgICAgICAgX3RoaXMuY29uZmlnTGlzdCA9IHJlc3BvbnNlLmRhdGEucm93czsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX3RoaXMuY29uZmlnTGlzdC5wdXNoKHsKICAgICAgICAgICAgbm90aWNlX3RpdGxlOiAi5pqC5peg5pWw5o2uIgogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBfdGhpcy50b3RhbCA9IHJlc3BvbnNlLmRhdGEudG90YWw7CiAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvL+aVsOaNriAg56ys5LqM6YOo5YiG5YiX6KGoCiAgICBnZXRMaXN0dGFib25lOiBmdW5jdGlvbiBnZXRMaXN0dGFib25lKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzMi5jb25maWdMaXN0ID0gcmVzcG9uc2UuZGF0YS5yb3dzOwogICAgICAgIF90aGlzMi50b3RhbCA9IHJlc3BvbnNlLmRhdGEudG90YWw7CiAgICAgICAgX3RoaXMyLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy/mlbDmja4gIOesrOS4iemDqOWIhuWIl+ihqAogICAgZ2V0TGlzcHJvZmlsZTogZnVuY3Rpb24gZ2V0TGlzcHJvZmlsZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICAvLyB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXhiZXIodGhpcy5xdWVyeVBhcmFtc3RhYnByb2ZpbGUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgX3RoaXMzLmdldExpc3Byb2ZpbGVvbmUgPSByZXNwb25zZS5kYXRhLnJvd3M7CgogICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEucm93cyAhPT0gbnVsbCkgewogICAgICAgICAgICBfdGhpczMudGlla3UgPSBfdGhpczMuZ2V0TGlzcHJvZmlsZW9uZVswXS5pbmZvX3RpdGxlOwogICAgICAgICAgICBfdGhpczMuY29tZyA9IF90aGlzMy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fY29udGVudDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF90aGlzMy50aWVrdSA9ICfmmoLml6DmlbDmja4nOwogICAgICAgICAgICBfdGhpczMuY29tZyA9ICfmmoLml6DmlbDmja4nOwogICAgICAgICAgfQoKICAgICAgICAgIF90aGlzMy50b3RhbHByb2ZpbGUgPSByZXNwb25zZS5kYXRhLnRvdGFsOwogICAgICAgIH0KCiAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy/mlbDmja4gIOaXpeWOhuaVsOaNruWIl+ihqAogICAgZ2V0TGlzYWxlbmRhcjogZnVuY3Rpb24gZ2V0TGlzYWxlbmRhcigpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zY2FsZW5kYXIuZml4ZWREYXRhLmNvbmRpdGlvbi5jcmVhdGVfYnkgPSB0aGlzLnVzZXIudXNlck5hbWU7CiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zY2FsZW5kYXIpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgX3RoaXM0LmNhbGVuZGFyRGF0YSA9IHJlc3BvbnNlLmRhdGEucm93czsKICAgICAgICB9CgogICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5pWw5o2uICDlpIflv5jlvZXmlbDmja7liJfooagKICAgIGdldExpc21lbW9yYW5kdW06IGZ1bmN0aW9uIGdldExpc21lbW9yYW5kdW0oKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgdGhpcy5nZXRtZW1vcmFuZHVtID0gW107CiAgICAgIHRoaXMucXVlcnlQYXJhbXN0YWJtZW1vcmFuZHVtLmZpeGVkRGF0YS5jb25kaXRpb24uY3JlYXRlX2J5ID0gdGhpcy51c2VyLnVzZXJOYW1lOwogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtc3RhYm1lbW9yYW5kdW0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEucm93cyAhPT0gbnVsbCkgewogICAgICAgICAgICBfdGhpczUuc2hvd2VyID0gdHJ1ZTsKICAgICAgICAgICAgX3RoaXM1LmdldG1lbW9yYW5kdW0gPSByZXNwb25zZS5kYXRhLnJvd3M7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpczUuc2hvd2VyID0gZmFsc2U7CgogICAgICAgICAgICBfdGhpczUuZ2V0bWVtb3JhbmR1bS5wdXNoKHsKICAgICAgICAgICAgICBtZW1vcmFuZHVtX3RpdGxlOiAn5pqC5peg5pWw5o2uJywKICAgICAgICAgICAgICBzaG93ZXI6IGZhbHNlCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgX3RoaXM1LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5pWw5o2u5YiX6KGoICAg6YCa6K6v5b2V5pWw5o2uCiAgICBnZXRMaXNhaWx0d286IGZ1bmN0aW9uIGdldExpc2FpbHR3bygpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtc2FpbCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBfdGhpczYuZ2V0TGlzYWlsbGllID0gcmVzcG9uc2UuZGF0YS5yb3dzOwogICAgICAgIH0KCiAgICAgICAgX3RoaXM2LnRvdGFsYWxpID0gcmVzcG9uc2UuZGF0YS50b3RhbDsKICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvL3RhYiDlhazlkYog5qCP5pWw5o2uCiAgICBnZXRMaXN0dGFiOiBmdW5jdGlvbiBnZXRMaXN0dGFiKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGxpc3RJbmRleHR3byh0aGlzLmRpY3RUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzNy5lZGl0YWJsZVRhYnMgPSByZXNwb25zZS5kYXRhOwogICAgICAgIF90aGlzNy5xdWVyeVBhcmFtcy5kaWN0VHlwZSA9IHJlc3BvbnNlLmRhdGFbMV0uZGljdFR5cGU7IC8vIHRoaXMudG90YWwgPSByZXNwb25zZS50b3RhbDsKCiAgICAgICAgX3RoaXM3LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5YWs5Y+45qaC5Ya1ICB0YWIKICAgIGdldExpc2VyOiBmdW5jdGlvbiBnZXRMaXNlcigpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXh0aGVycih0aGlzLmRpY3RUeXBldHdvKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzOC5lZGl0YWJsZVRhYnN0ZW8gPSByZXNwb25zZS5kYXRhOyAvLyB0aGlzLnRvdGFsID0gcmVzcG9uc2UudG90YWw7CgogICAgICAgIF90aGlzOC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOmAmuiur+W9leihqOWktAogICAgZ2V0TGlzYWlsOiBmdW5jdGlvbiBnZXRMaXNhaWwoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgbGlzdEluZGV4Zm91KHRoaXMucXVlcnlQYXJhbXNhaWwpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgX3RoaXM5LnRhYmxlRGF0YWFsaWQgPSByZXNwb25zZS5kYXRhLnRhYmxlSGVhZExpc3Q7CiAgICAgICAgICBfdGhpczkucG9zdExpc3QgPSByZXNwb25zZS5kYXRhOwoKICAgICAgICAgIF90aGlzOS5wb3N0TGlzdC5yb3dzLmZpbHRlcihmdW5jdGlvbiAocm91dGUpIHsKICAgICAgICAgICAgLy8gcm91dGUuZGVwdF9pZCA9IHJvdXRlLmRlcHRfaWQudmFsdWUKICAgICAgICAgICAgZm9yICh2YXIgaXRlbSBpbiByb3V0ZSkgewogICAgICAgICAgICAgIGlmIChfdHlwZW9mKHJvdXRlW2l0ZW1dKSA9PSAnb2JqZWN0JykgewogICAgICAgICAgICAgICAgcm91dGVbaXRlbV0gPSByb3V0ZVtpdGVtXS52YWx1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwoKICAgICAgICAgIF90aGlzOS50b3RhbGFsaSA9IHJlc3BvbnNlLmRhdGEudG90YWw7CiAgICAgICAgfQoKICAgICAgICBfdGhpczkubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvL+aXpeWOhuaWsOWinuW8ueahhuaVsOaNrgogICAgZ2V0TGlzYWxlbmRhcmFkZGQ6IGZ1bmN0aW9uIGdldExpc2FsZW5kYXJhZGRkKCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLnF1ZXJ5RGF0YSA9IFtdOwogICAgICBsaXN0SW5kZXh0YW5sKHRoaXMuY2FsZW5kYXJhZGQpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgX3RoaXMxMC5xdWVyeURhdGEgPSByZXNwb25zZS5kYXRhOwogICAgICAgIH0KCiAgICAgICAgX3RoaXMxMC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5aSH5b+Y5b2V5paw5aKe5by55qGG5pWw5o2uCiAgICBnZXRMaXNhbGVuZGFyYWRkZG1lcjogZnVuY3Rpb24gZ2V0TGlzYWxlbmRhcmFkZGRtZXIoKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHRoaXMucXVlcnlEYXRhID0gW107CiAgICAgIGxpc3RJbmRleHRhbmwodGhpcy5jYWxlbmRhcmFkZG1lcikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBfdGhpczExLnF1ZXJ5RGF0YSA9IHJlc3BvbnNlLmRhdGE7CiAgICAgICAgfQoKICAgICAgICBfdGhpczExLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgZ29UYXJnZXQ6IGZ1bmN0aW9uIGdvVGFyZ2V0KGhyZWYpIHsKICAgICAgd2luZG93Lm9wZW4oaHJlZiwgIl9ibGFuayIpOwogICAgfSwKICAgIGhhbmRsZVNpemVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNpemVDaGFuZ2UodmFsKSB7fSwKICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUN1cnJlbnRDaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZU5vID0gdmFsOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDlhazlj7jmpoLlhrUKICAgIGhhbmRsZVNpemVDaGFuZ2Vwcm9maWxlOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlcHJvZmlsZSh2YWwpIHt9LAogICAgaGFuZGxlQ3VycmVudENoYW5nZXByb2ZpbGU6IGZ1bmN0aW9uIGhhbmRsZUN1cnJlbnRDaGFuZ2Vwcm9maWxlKHZhbCkgewogICAgICB0aGlzLnF1ZXJ5UGFyYW1zdGFicHJvZmlsZS5wYWdlTm8gPSB2YWw7CiAgICAgIHRoaXMuZ2V0TGlzcHJvZmlsZSgpOwogICAgfSwKICAgIC8vIOmAmuiur+W9lQogICAgaGFuZGxlU2l6ZUNoYW5nZWFsaTogZnVuY3Rpb24gaGFuZGxlU2l6ZUNoYW5nZWFsaSh2YWwpIHt9LAogICAgaGFuZGxlQ3VycmVudENoYW5nZWFsaTogZnVuY3Rpb24gaGFuZGxlQ3VycmVudENoYW5nZWFsaSh2YWwpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtc2FpbC5wYWdlTm8gPSB2YWw7CiAgICAgIHRoaXMuZ2V0TGlzYWlsKCk7CiAgICB9LAogICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKHRhYiwgZXZlbnQpIHt9LAogICAgLy8g56ys5LiA6YOo5YiGdGFi54K55Ye7CiAgICB0YWJTYnU6IGZ1bmN0aW9uIHRhYlNidShpbmRleCkgewogICAgICB0aGlzLm51bSA9IGluZGV4IC0gMTsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5maXhlZERhdGEuY29uZGl0aW9uLm5vdGljZV90eXBlID0gaW5kZXg7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOesrOS6jOmDqOWIhnRhYueCueWHu251bWxpc3QKICAgIHRhYkxpc3Q6IGZ1bmN0aW9uIHRhYkxpc3QoaW5kZXgpIHsKICAgICAgdGhpcy5udW1saXN0ID0gaW5kZXg7CiAgICB9LAogICAgLy8g56ys5LiJ6YOo5YiGdGFi54K55Ye7CiAgICB0YWJTYnVwcm9maWxlOiBmdW5jdGlvbiB0YWJTYnVwcm9maWxlKGluZGV4KSB7CiAgICAgIHRoaXMubnVtcHJvZmlsZSA9IGluZGV4IC0gMTsKICAgICAgdGhpcy5xdWVyeVBhcmFtc3RhYnByb2ZpbGUuZml4ZWREYXRhLmNvbmRpdGlvbi5pbmZvX3R5cGUgPSBpbmRleDsKICAgICAgdGhpcy5nZXRMaXNwcm9maWxlKCk7CiAgICB9LAogICAgLy8g6KGo5Y2V6YeN572uCiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7CiAgICAgIHRoaXMuZm9ybSA9IHt9LCB0aGlzLnJlc2V0Rm9ybSgiZm9ybSIpOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSrgogICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7CiAgICAgIHRoaXMub3BlbiA9IGZhbHNlOwogICAgICB0aGlzLm9wZW5ldHkgPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVBZGQ6IGZ1bmN0aW9uIGhhbmRsZUFkZCgpIHsKICAgICAgdGhpcy5udW1tZXIgPSAwOwogICAgICB0aGlzLnJlc2V0KCk7CiAgICAgIHRoaXMuZm9ybSA9IHt9OwogICAgICB0aGlzLmdldExpc2FsZW5kYXJhZGRkKCk7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg5pel56iLIjsKICAgIH0sCgogICAgLyoqIOaPkOS6pOaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5KCkgewogICAgICB2YXIgX3RoaXMxMiA9IHRoaXM7CgogICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5xdWVyeURhdGEuc2hvd0RhdGEpLAogICAgICAgICAgX3N0ZXA7CgogICAgICB0cnkgewogICAgICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgaXRlbSA9IF9zdGVwLnZhbHVlOwoKICAgICAgICAgIGlmIChpdGVtLmh0bWxUeXBlID09ICdjaGVja2JveCcgfHwgaXRlbS5odG1sVHlwZSA9PSAnaW1hZ2VVcGxvYWQnIHx8IGl0ZW0uaHRtbFR5cGUgPT0gJ2ZpbGVVcGxvYWQnKSB7CiAgICAgICAgICAgIHRoaXMuZm9ybVtpdGVtLmNvbHVtbk5hbWVdID0gdGhpcy4kcmVmc1tpdGVtLmNvbHVtbk5hbWVdWzBdLmNvbmZpZzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuZm9ybVtpdGVtLmNvbHVtbk5hbWVdID0gdGhpcy4kcmVmc1tpdGVtLmNvbHVtbk5hbWVdWzBdLmNvbmZpZ1tpdGVtLmNvbHVtbk5hbWVdOwogICAgICAgICAgfQogICAgICAgIH0gLy8gdGhpcy5mb3JtZSA9IHRoaXMuZm9ybQoKICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgX2l0ZXJhdG9yLmUoZXJyKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBfaXRlcmF0b3IuZigpOwogICAgICB9CgogICAgICBpZiAodGhpcy5udW1tZXIgPT0gMCkgewogICAgICAgIHRoaXMuZm9ybWUudGFibGUgPSAnc3lzX3NjaGVkdWxlJzsKICAgICAgICB0aGlzLmZvcm1lLm9iaklkID0gLTE7CiAgICAgICAgdGhpcy5mb3JtZS5maXhlZERhdGEgPSB0aGlzLmZvcm07IC8vIGlmKHRoaXMuZm9ybWUuZml4ZWREYXRhLnJlbWluZF90eXBlICE9PSB1bmRlZmluZWQpewogICAgICAgIC8vICAgdGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUgPSB0aGlzLmZvcm1lLmZpeGVkRGF0YS5yZW1pbmRfdHlwZS5qb2luKCcsJyk7CiAgICAgICAgLy8gfQogICAgICAgIC8v5pel5Y6GCgogICAgICAgIGFkZENvbmZpZ2luZGV4KHRoaXMuZm9ybWUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBfdGhpczEyLm1zZ1N1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOyAvLyB0aGlzLm9wZW4gPSBmYWxzZTsKCgogICAgICAgICAgX3RoaXMxMi5nZXRMaXNhbGVuZGFyKCk7CgogICAgICAgICAgX3RoaXMxMi5jYW5jZWwoKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmICh0aGlzLm51bW1lciA9PSAxKSB7CiAgICAgICAgLy8gdGhpcy5mb3JtLnRhYmxlID0gJ3N5c19tZW1vcmFuZHVtJwogICAgICAgIHRoaXMuZm9ybWUudGFibGUgPSAnc3lzX21lbW9yYW5kdW0nOwogICAgICAgIHRoaXMuZm9ybWUub2JqSWQgPSAtMTsKICAgICAgICB0aGlzLmZvcm1lLmZpeGVkRGF0YSA9IHRoaXMuZm9ybTsgLy/lpIflv5jlvZUKCiAgICAgICAgYWRkQ29uZmlnaW5kZXgodGhpcy5mb3JtZSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgIF90aGlzMTIubXNnU3VjY2Vzcygi5paw5aKe5oiQ5YqfIik7IC8vIHRoaXMub3BlbiA9IGZhbHNlOwoKCiAgICAgICAgICBfdGhpczEyLmdldExpc21lbW9yYW5kdW0oKTsKCiAgICAgICAgICBfdGhpczEyLmNhbmNlbCgpOwogICAgICAgIH0pOwogICAgICB9IC8vIHRoaXMuZ2V0TGlzdCgpOwoKICAgIH0sCiAgICAvLyDlvLnmoYYKICAgIGNoYW5nZUZuOiBmdW5jdGlvbiBjaGFuZ2VGbihvYmopIHsKICAgICAgY29uc29sZS5sb2cob2JqKTsKCiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgICB0aGlzLmZvcm0uZml4ZWREYXRhW2tleV0gPSBvYmpba2V5XTsKICAgICAgfQogICAgfSwKICAgIC8vIOaWsOWinuWkh+W/mOW9lQogICAgbWVtb2VyZTogZnVuY3Rpb24gbWVtb2VyZSgpIHsKICAgICAgdGhpcy5udW1tZXIgPSAxOwogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIua3u+WKoOWkh+W/mOW9lSI7CiAgICAgIHRoaXMuZ2V0TGlzYWxlbmRhcmFkZGRtZXIoKTsKICAgIH0sCiAgICAvLyDlpIflv5jlvZXliKDpmaQKICAgIGluZGV4X2RlbGVkZXRmZTogZnVuY3Rpb24gaW5kZXhfZGVsZWRldGZlKGlkKSB7CiAgICAgIHZhciBfdGhpczEzID0gdGhpczsKCiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgdGhhdC5kZWxlZGxpZC5pZExpc3QgPSBbXTsKICAgICAgdGhhdC5kZWxlZGxpZC5pZExpc3QucHVzaChpZCk7CiAgICAgIHRoaXMuJGNvbmZpcm0oJ+aYr+WQpuehruiupOWIoOmZpCcsICLorablkYoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gZGVsSW5kZXhuYWJkKHRoYXQuZGVsZWRsaWQpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczEzLmdldExpc21lbW9yYW5kdW0oKTsKCiAgICAgICAgX3RoaXMxMy5tc2dTdWNjZXNzKCLliKDpmaTmiJDlip8iKTsgLy8gdGhpcy4kcm91dGVyLmdvKC0xKQoKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UoKSB7fSwKICAgIC8vIOWtl+espuS4suWOu+mHjQogICAgdW5pcXVlOiBmdW5jdGlvbiB1bmlxdWUoYXJyKSB7CiAgICAgIHZhciBhcmZlID0gW107CiAgICAgIHZhciBzZXJmZ3QgPSBbXTsKICAgICAgYXJmZSA9IGFyci5zcGxpdCgnLCcpOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmZlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHNlcmZndC5pbmRleE9mKGFyZmVbaV0pID09PSAtMSkgewogICAgICAgICAgc2VyZmd0LnB1c2goYXJmZVtpXSk7CiAgICAgICAgfQogICAgICB9IC8vIGNvbnN0IHJlcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gcmV0dXJuIGFyci5maWx0ZXIoKGFycikgPT4gIXJlcy5oYXMoYXJyLmlkKSAmJiByZXMuc2V0KGFyci5pZCwgMSkpOwoKICAgIH0sCiAgICBnZXRVc2VyOiBmdW5jdGlvbiBnZXRVc2VyKCkgewogICAgICB2YXIgX3RoaXMxNCA9IHRoaXM7CgogICAgICBnZXRVc2VyUHJvZmlsZSgpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgX3RoaXMxNC51c2VyID0gcmVzcG9uc2UuZGF0YTsKCiAgICAgICAgX3RoaXMxNC5nZXRMaXNhbGVuZGFyKCk7CgogICAgICAgIF90aGlzMTQuZ2V0TGlzbWVtb3JhbmR1bSgpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDpgJrnn6XlhazlkYrlvLnnqpcKICAgIGhlYWRlckNsZDogZnVuY3Rpb24gaGVhZGVyQ2xkKGluZGV4KSB7CiAgICAgIHRoaXMudGl0bGUgPSAn6YCa55+l5YWs5ZGKJzsKICAgICAgdGhpcy5vcGVuZXR5ID0gdHJ1ZSwgdGhpcy5hY3RpbmdrID0gaW5kZXg7CiAgICB9CiAgfQp9Ow=="},null]}