{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\MineMap\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\components\\MineMap\\index.vue","mtime":1742501335225},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KDQppbXBvcnQgcGF0cm9JY29uIGZyb20gJ0Avdmlld3MvYmlnU2NyZWVuL3BhdHJvbFJlc2N1ZS9pbWFnZS9wYXRyb2wtaWNvbi5wbmcnDQppbXBvcnQgcmVzY3VlSWNvbiBmcm9tICdAL3ZpZXdzL2JpZ1NjcmVlbi9wYXRyb2xSZXNjdWUvaW1hZ2UvcmVzY3VlLWljb24ucG5nJw0KaW1wb3J0IGVtZXJnZXJFdmVudEljb24gZnJvbSAnQC92aWV3cy9iaWdTY3JlZW4vcGF0cm9sUmVzY3VlL2ltYWdlL2VtZXJnZXItZXZlbnQtaWNvbi5wbmcnDQppbXBvcnQgcmVzY3VlRXZlbnRJY29uIGZyb20gJ0Avdmlld3MvYmlnU2NyZWVuL3BhdHJvbFJlc2N1ZS9pbWFnZS9yZXNjdWUtZXZlbnQtaWNvbi5wbmcnDQppbXBvcnQgcm9hZEljb24gZnJvbSAnQC92aWV3cy9iaWdTY3JlZW4vcGF0cm9sUmVzY3VlL2ltYWdlL2NhcmRScm9hZC5wbmcnDQppbXBvcnQgcGlja3VwSWNvbiBmcm9tICdAL3ZpZXdzL2JpZ1NjcmVlbi9wYXRyb2xSZXNjdWUvaW1hZ2UvcGlja3VwLnBuZycNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ01pbmVNYXAnLCAvLyBNYWluDQogIHByb3BzOiB7DQogICAgLy8g6buY6K6k5Zyw5Zu+5Yqg6L296YWN572uDQogICAgZGVmYXVsdE9wdGlvbnM6IHsNCiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSksDQogICAgICB0eXBlOiBPYmplY3QsDQogICAgICByZXF1aXJlZDogZmFsc2UsDQogICAgfSwNCiAgICAvLyDoh6rlrprkuYnnsbvlkI0NCiAgICBjdXN0b21DbGFzczogew0KICAgICAgZGVmYXVsdDogJycsDQogICAgICB0eXBlOiBTdHJpbmcsDQogICAgICByZXF1aXJlZDogZmFsc2UsDQogICAgfSwNCiAgICAvLyDoh6rlrprkuYnngrnkvY3pm4blkIgNCiAgICBtYXJrZXJzOiB7DQogICAgICBkZWZhdWx0OiAoKSA9PiBbXSwNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgcmVxdWlyZWQ6IGZhbHNlLA0KICAgIH0sDQogICAgLy8g6Ieq5a6a5LmJ57q/6ZuG5ZCIDQogICAgbGluZXM6IHsNCiAgICAgIGRlZmF1bHQ6ICgpID0+IFtdLA0KICAgICAgdHlwZTogQXJyYXksDQogICAgICByZXF1aXJlZDogZmFsc2UsDQogICAgfSwNCiAgICAvLyDoh6rlrprkuYnpnaLpm4blkIgNCiAgICBwb2x5Z29uczogew0KICAgICAgZGVmYXVsdDogKCkgPT4gW10sDQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIHJlcXVpcmVkOiBmYWxzZSwNCiAgICB9LA0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBtYXBPcHRpb25zOiB7DQogICAgICAgIC8vIHN0eWxlOiAnaHR0cHM6Ly9zZXJ2aWNlLm1pbmVkYXRhLmNuL21hcC9zb2x1L3N0eWxlLzExMDAxJyAvKiDlupXlm77moLflvI8gKi8sDQogICAgICAgIC8vIHN0eWxlOiAnbWluaU1hcC9zZXJ2aWNlL3NvbHUvc3R5bGUvaWQvMTY5MzInIC8qIOW6leWbvuagt+W8jyAqLywNCiAgICAgICAgc3R5bGU6DQogICAgICAgICAgJ2h0dHBzOi8vbWFwLmhvcGUuY21ldDE5NjUuY29tOjU4MDAwL3NlcnZpY2Uvc29sdS9zdHlsZS9pZC8xNjkzMicgLyog5bqV5Zu+5qC35byPICovLA0KICAgICAgICBjZW50ZXI6IFsxMDcuODU1ODUsIDI4LjQ2NTkwOF0gLyrlnLDlm77kuK3lv4PngrkqLywNCiAgICAgICAgem9vbTogNiAvKuWcsOWbvum7mOiupOe8qeaUvuetiee6pyovLA0KICAgICAgICBwaXRjaDogMCAvKuWcsOWbvuS/r+S7sOinkuW6piovLA0KICAgICAgICBtYXhab29tOiAyMCAvKuWcsOWbvuacgOWkp+e8qeaUvuetiee6pyovLA0KICAgICAgICBtaW5ab29tOiAzIC8q5Zyw5Zu+5pyA5bCP57yp5pS+562J57qnKi8sDQogICAgICB9LA0KICAgICAgbWluZU1hcDogT2JqZWN0LmZyZWV6ZShtaW5lbWFwKSwgLy8gbWluZU1hcOaPkuS7tg0KICAgICAgbWFwOiBudWxsLCAvLyDlnLDlm77lrp7kvovlr7nosaENCiAgICAgIG1hcExvYWRlZDogZmFsc2UsDQogICAgICBib3VuZGFyeUxpbmVGYWNlOiBbDQogICAgICAgIHsNCiAgICAgICAgICAvLyDlnLDlm77nnIHku73ovrnnlYwgIGxheWVySWRs6L6555WM57q/IGxheWVySWRmIOi+ueeVjOmdog0KICAgICAgICAgIGNvZGU6ICdTQycsDQogICAgICAgICAgbGF5ZXJJZGw6ICcyMDE4N2FjNzM2N2UxNDAzNGI4YzE5YTQwYTMzZmUzMCcsDQogICAgICAgICAgbGF5ZXJJZGY6ICc0Mzk0ODc2NDYwZjZjM2JkMzRkMDYxNWJmMDRjZmY0NycsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBjb2RlOiAnQUgnLA0KICAgICAgICAgIGxheWVySWRsOiAnZWYwMWEwMTY5YWFlYzgxZTc3ZTlmMDA0OGNlYjk3MTMnLA0KICAgICAgICAgIGxheWVySWRmOiAnM2RkZTUxMGM0NDYyMzBjYmQ0ZmRkMTVjNWZiODU0MTYnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgY29kZTogJ1lOJywNCiAgICAgICAgICBsYXllcklkbDogJzA2ZmMwMjMwZGFkNDM3ZTg1ZDI0NjAwZTA2NTE2NTg3JywNCiAgICAgICAgICBsYXllcklkZjogJzAzMWU1ZTYxZGY3Mzc3OGJjZTJjMmQ4MmE0ZmMwYTFjJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGNvZGU6ICdHWicsDQogICAgICAgICAgbGF5ZXJJZGw6ICc2YzY2Y2RiYWRkYmNmODM5YTUyOWIwM2JjZWUyMzI2NicsDQogICAgICAgICAgbGF5ZXJJZGY6ICdkOTYwY2U0ZjBmZTNlYWZlZWJmMDJhOTA4ZTI1OTEwYicsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBjb2RlOiAnQ1EnLA0KICAgICAgICAgIGxheWVySWRsOiAnZGZjOTc3OWE1MWRlNzliMmViNDA3OTBmNjEzOTY0ZTInLA0KICAgICAgICAgIGxheWVySWRmOiAnYjM3NTczZDVkNzNmMjIzYWE1Y2Y0MjkzZWZlZGEzYzAnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgY29kZTogJ1hKJywNCiAgICAgICAgICBsYXllcklkbDogJ2I2ZjhjNzNiMmQzMTRiZDZlMDkxMDEyZmQ3Njk4ZTk0JywNCiAgICAgICAgICBsYXllcklkZjogJzIzOGE1ZTlkZTU2ZmFhNzM4NTg3M2FhYWRmM2FkNjdkJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGNvZGU6ICdITicsDQogICAgICAgICAgbGF5ZXJJZGw6ICc0ZWRiZTk1ZTNlYzg3ODYyNzZiYjM5Y2U3YzQyNDUzZicsDQogICAgICAgICAgbGF5ZXJJZGY6ICdjMWM1YzA0MDI1NzMyNjM1MmQ2OTQ1MjhiN2UzM2ZhYycsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgLy8g6YeN5bqGIDE3NjYwMTc0NzI2OTc0NzUwNzINCiAgICAgIC8v5LqR5Y2XICAgMTc2NjAxNzk3NjIwMjY5ODc1Mg0KICAgICAgLy/lm5vlt50gMTc2NjAxOTMyMjg5NzI0NDE2MA0KICAgICAgcHJvdmluY2VNYXJrZXI6IFsNCiAgICAgICAgew0KICAgICAgICAgIHpiOiBbMTA3LjU2OTg1NSwgMzAuMzY3MDk1XSwNCiAgICAgICAgICBpZDogJzE0MzAwNDk1NTA1Mzc3MjM5MDQnLCAvL+mHjeW6hg0KICAgICAgICAgIHpvb206IDYuOCwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHpiOiBbMTAyLjkyODk5NSwgMzAuNTI0ODddLA0KICAgICAgICAgIGlkOiAnIjE1NTE5NzM2MzQ1NjU3ODc2MzciJywNCiAgICAgICAgICB6b29tOiA1LjgsIC8v5Zub5bedDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB6YjogWzEwMS41OTMxMDMsIDI1LjM1MzM3NV0sDQogICAgICAgICAgaWQ6ICcxNTUxOTczNjMwMTAyMDgxNTM2JywgLy/kupHljZcNCiAgICAgICAgICB6b29tOiA2LA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgemI6IFsxMDYuNjQxMjQzLCAyNy4xMDc5N10sDQogICAgICAgICAgaWQ6ICdHWicsDQogICAgICAgICAgem9vbTogNi41LA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgemI6IFsxMTcuMjI5OTI5LCAzMi4zMjUzOThdLA0KICAgICAgICAgIGlkOiAnQUgnLA0KICAgICAgICAgIHpvb206IDYuNSwNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICBpbnRlcnZhbElkOiBudWxsLA0KICAgICAgc3RhcnRSZXNjdWVpbnRlcnZhbElkOiBudWxsLA0KICAgICAgcmVzY3VlQmxpbmtJbnRlcnZhbHM6IFtdLA0KICAgICAgaWRMaXN0OiBbXSwNCiAgICAgIHNvdXJjZUlkTGlzdDogW10sDQogICAgICByZXNjdWVJZExpc3Q6IFtdLA0KICAgICAgcmVzY3VlU291cmNlSWRMaXN0OiBbXSwgLy/lm77lsYLotYTmupBpZA0KICAgICAgbWFya2Vyc1Jlc2N1ZTogW10sDQogICAgICBtYXJrZXJSZXNjdWVFdmVudDogW10sDQogICAgICBtYXJrZXJFbWVyZ2VuY2llczogW10sDQogICAgICBtYXJrZXJPbmxpbmVDYXI6IFtdLA0KICAgICAgbWFya2VyT25seUNhcjogW10sDQogICAgICBvbmxpbmVDYXJDbGljazogZmFsc2UsDQogICAgICBjb3VudDogMCwNCiAgICAgIHBhdHJvbENsaWNrOiBmYWxzZSwNCiAgICAgIHJlc2N1ZUNsaWNrOiBmYWxzZSwNCiAgICAgIGVtZXJnZW5jaWVzQ2xpY2s6IGZhbHNlLA0KICAgICAgcmVzY3VlRXZlbnRDbGljazogZmFsc2UsDQogICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgIGV2ZW50TWFya2VyczogW10sIC8vIOS6i+S7tumpu+eCuQ0KICAgICAgdGFza01hcmtlcnM6IFtdLCAvLyDku7vliqHpqbvngrkNCiAgICAgIGp5UGxhY2VNYXJrZXJzOiBbXSwgLy8g5beh5p+l6am754K5DQogICAgICB4Y1BsYWNlTWFya2VyczogW10sIC8vIOaVkeaPtOmpu+eCuQ0KICAgIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICAvLyDphY3nva4ga2V544CBc29sdXRpb24NCiAgICB0aGlzLm1pbmVNYXAua2V5ID0gJzMwYmU3ODMxY2FmODQ2ODViOTRlNzg3MjdlNGNlMjVmJw0KICAgIHRoaXMubWluZU1hcC5zb2x1dGlvbiA9IDE2OTMyDQogICAgdGhpcy5taW5lTWFwLmRvbWFpblVybCA9DQogICAgICAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAnIC8qIE1pbmVNYXDmoLnln5/lkI3lnLDlnYAgKi8NCiAgICAvKiBNaW5lTWFw55+i6YeP5pWw5o2u5pyN5Yqh5qC55Z+f5ZCN5Zyw5Z2AICovDQogICAgdGhpcy5taW5lTWFwLmRhdGFEb21haW5VcmwgPSAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAnDQogICAgLyogTWluZU1hcOefoumHj+aVsOaNruacjeWKoeaWsOinhOiMg+agueWfn+WQjeWcsOWdgCAqLw0KICAgIHRoaXMubWluZU1hcC5zZXJ2ZXJEb21haW5VcmwgPSAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAnDQogICAgLyogTWluZU1hcOW6leWbvumbqueip+WbvuWcsOWdgCAqLw0KICAgIHRoaXMubWluZU1hcC5zcHJpdGVVcmwgPSBbDQogICAgICAnaHR0cHM6Ly9tYXAuaG9wZS5jbWV0MTk2NS5jb206NTgwMDAvbWluZW1hcGFwaS96c3h6L3pzeHonLA0KICAgIF0gLy8gIi4vbWFwcmVzb3VyY2Uvc3ByaXRlL3Nwcml0ZSIsDQogICAgLyogTWluZU1hcOWQjuWPsOacjeWKoeagueWcsOWdgCAqLw0KICAgIHRoaXMubWluZU1hcC5zZXJ2aWNlVXJsID0gJ2h0dHBzOi8vbWFwLmhvcGUuY21ldDE5NjUuY29tOjU4MDAwL3NlcnZpY2UvJw0KDQogICAgLy8g5ZCI5bm26KaG55uW6buY6K6k6YWN572u6aG5DQogICAgdGhpcy5tYXBPcHRpb25zID0gew0KICAgICAgLi4udGhpcy5tYXBPcHRpb25zLA0KICAgICAgLi4udGhpcy5kZWZhdWx0T3B0aW9ucywNCiAgICB9DQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy5pbml0TWluZU1hcCgpDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvLyDliqDovb1taW5lTWFwMkTlnLDlm74NCiAgICBpbml0TWluZU1hcCgpIHsNCiAgICAgIC8vIOWIneWni+WMluWcsOWbvuWunuS+iw0KICAgICAgdGhpcy5tYXAgPSBuZXcgdGhpcy5taW5lTWFwLk1hcCh7DQogICAgICAgIGNvbnRhaW5lcjogdGhpcy4kcmVmcy5tYXAsDQogICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucywNCiAgICAgIH0pDQogICAgICAgIC5vbignbG9hZCcsIChfKSA9PiB7DQogICAgICAgICAgdGhpcy5zZXRIaW5pZ2h0KCkgLy8g56Gu5L+d5Zyo5Zyw5Zu+5Yqg6L295a6M5oiQ5ZCO6LCD55SoIHNldEhpbmlnaHQNCiAgICAgICAgICB0aGlzLm1hcExvYWRlZCA9IHRydWUgLy8g5b2T5Zyw5Zu+5Yqg6L295a6M5oiQ5pe277yM6K6+572u5qCH5b+X5Li6IHRydWUNCiAgICAgICAgfSkNCiAgICAgICAgLm9uKCdlcnJvcicsIChlcnJvcikgPT4gdGhpcy4kZW1pdCgnb25FcnJvcicsIGVycm9yKSkNCiAgICB9LA0KICAgIC8v6K6+572u6auY5Lqu5Yy65Z+fDQogICAgc2V0SGluaWdodCgpIHsNCiAgICAgIGlmICh0aGlzLm1hcCkgew0KICAgICAgICB0aGlzLmJvdW5kYXJ5TGluZUZhY2UuZm9yRWFjaCgoZWwpID0+IHsNCiAgICAgICAgICB0aGlzLm1hcC5zZXRMYXlvdXRQcm9wZXJ0eShlbC5sYXllcklkbCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpDQogICAgICAgICAgdGhpcy5tYXAuc2V0TGF5b3V0UHJvcGVydHkoZWwubGF5ZXJJZGYsICd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKQ0KICAgICAgICB9KQ0KICAgICAgICB0aGlzLiRlbWl0KCdvbkxvYWQnLCB0aGlzLm1hcCkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8v5Zyw5Zu+5Lit5b+D54K55YiH5o2iLXRlc3QNCiAgICBjaGFuZ2VNYXBDZW50ZXIodmFsKSB7DQogICAgICB0aGlzLnByb3ZpbmNlTWFya2VyLmZvckVhY2goKGVsKSA9PiB7DQogICAgICAgIGlmICh2YWwgPT09IGVsLmlkKSB7DQogICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICAgICAgdGhpcy5tYXAuZmx5VG8oew0KICAgICAgICAgICAgICBjZW50ZXI6IGVsLnpiLA0KICAgICAgICAgICAgICB6b29tOiBlbC56b29tLA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g6YeN5paw5Yqg6L295Zyw5Zu+DQogICAgcmVzZXRNYXAoY2FsbGJhY2spIHsNCiAgICAgIGlmICh0aGlzLm1hcCAmJiB0aGlzLm1hcExvYWRlZCkgew0KICAgICAgICAvLyDnp7vpmaTmiYDmnInliqjmgIHmt7vliqDnmoTmoIforrDjgIHnur/lkozpnaINCiAgICAgICAgdGhpcy5tYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnJlbW92ZSgpKQ0KICAgICAgICB0aGlzLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHRoaXMubWFwLnJlbW92ZUxheWVyKGxpbmUuaWQpKQ0KICAgICAgICB0aGlzLnBvbHlnb25zLmZvckVhY2goKHBvbHlnb24pID0+IHRoaXMubWFwLnJlbW92ZUxheWVyKHBvbHlnb24uaWQpKQ0KDQogICAgICAgIC8vIOa4heepuuWtmOWCqOeahOWbvuWxguW8leeUqA0KICAgICAgICB0aGlzLm1hcmtlcnMubGVuZ3RoID0gMA0KICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9IDANCiAgICAgICAgdGhpcy5wb2x5Z29ucy5sZW5ndGggPSAwDQoNCiAgICAgICAgLy8g6YeN5paw5bqU55So5bqV5Zu+5qC35byPDQogICAgICAgIGNvbnN0IHtjZW50ZXIsIHpvb219ID0gdGhpcy5tYXBPcHRpb25zDQogICAgICAgIHRoaXMubWFwLnNldENlbnRlcihjZW50ZXIpDQogICAgICAgIHRoaXMubWFwLnNldFpvb20oem9vbSkNCiAgICAgIH0NCiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHRoaXMubWFwKQ0KICAgIH0sDQoNCiAgICAvL+a4hemZpOW3oeafpempu+eCueWbvuWxguagh+iusA0KICAgIGNsZWFyTGF5TWFya2VyKCkgew0KICAgICAgdGhpcy5tYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnJlbW92ZSgpKQ0KICAgICAgdGhpcy5tYXJrZXJzLmxlbmd0aCA9IDAgLy8g5riF56m65qCH6K6w5pWw57uEDQogICAgICAvL+enu+mZpOaVsOaNrua6kA0KICAgICAgdGhpcy5zb3VyY2VJZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICB0aGlzLm1hcC5yZW1vdmVTb3VyY2UoaXRlbSkNCiAgICAgIH0pDQogICAgICB0aGlzLnNvdXJjZUlkTGlzdC5sZW5ndGggPSAwDQogICAgICAvLyDnp7vpmaTot6/mrrXlm77lsYINCiAgICAgIHRoaXMuaWRMaXN0LmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgaWYgKHRoaXMubWFwLmdldExheWVyKGl0ZW0pKSB7DQogICAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoaXRlbSkNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICAgIHRoaXMuaWRMaXN0Lmxlbmd0aCA9IDANCiAgICAgIC8vIHRoaXMuc3RvcEJsaW5rKCkNCiAgICAgIC8vIHRoaXMuc3RvcEJsaW5raW5nKCkNCiAgICB9LA0KICAgIC8v5riF6Zmk5pWR5o+06am754K55Zu+5bGC5qCH6K6wDQogICAgY2xlYXJMYXlSZXNjdWVNYWtlcigpIHsNCiAgICAgIHRoaXMubWFya2Vyc1Jlc2N1ZS5mb3JFYWNoKChtYXJrZXIpID0+IG1hcmtlci5yZW1vdmUoKSkNCiAgICAgIHRoaXMubWFya2Vyc1Jlc2N1ZS5sZW5ndGggPSAwIC8vIOa4heepuuagh+iusOaVsOe7hA0KICAgICAgLy/np7vpmaTmlbDmja7mupANCiAgICAgIHRoaXMucmVzY3VlU291cmNlSWRMaXN0LmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgdGhpcy5tYXAucmVtb3ZlU291cmNlKGl0ZW0pDQogICAgICB9KQ0KICAgICAgdGhpcy5yZXNjdWVTb3VyY2VJZExpc3QubGVuZ3RoID0gMA0KICAgICAgLy8g56e76Zmk6Lev5q615Zu+5bGCDQogICAgICB0aGlzLnJlc2N1ZUlkTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgIGlmICh0aGlzLm1hcC5nZXRMYXllcihpdGVtKSkgew0KICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGl0ZW0pDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgICB0aGlzLnJlc2N1ZUlkTGlzdC5sZW5ndGggPSAwDQogICAgICB0aGlzLnN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCkNCiAgICB9LA0KICAgIC8v5riF6Zmk6L2m6L6G5qOA5rWL5qCH6K6wDQogICAgY2xlYXJDYXJNYXJrZXIoKSB7DQogICAgICB0aGlzLm1hcmtlck9ubGluZUNhci5mb3JFYWNoKChtYXJrZXIpID0+IHsNCiAgICAgICAgbWFya2VyLnJlbW92ZSgpDQogICAgICB9KQ0KICAgICAgdGhpcy5tYXJrZXJPbmxpbmVDYXIubGVuZ3RoID0gMA0KICAgICAgdGhpcy5tYXJrZXJPbmx5Q2FyLmZvckVhY2goKG1hcmtlcikgPT4gew0KICAgICAgICBtYXJrZXIucmVtb3ZlKCkNCiAgICAgIH0pDQoNCiAgICAgIHRoaXMubWFya2VyT25seUNhci5sZW5ndGggPSAwDQogICAgfSwNCg0KICAgIC8v5pS55Y+Y5Zyw5Zu+5Lit5b+D54K5DQogICAgY2hhbmdlQ2VudGVyKHZhbCkgew0KICAgICAgaWYgKHRoaXMubWFwKSB7DQogICAgICAgIC8vIHRoaXMubWFwIC8vIOWQjOaXtuS8oOWFpee8qeaUvue6p+WIq+WSjOS4reW/g+eCuee7j+e6rOW6pg0KICAgICAgICAvLyAgIC5zZXRab29tQW5kQ2VudGVyKDgsIHZhbCkgLy/orr7nva7lnLDlm77lsYLnuqcNCiAgICAgICAgdGhpcy5tYXAuZmx5VG8oew0KICAgICAgICAgIGNlbnRlcjogdmFsLA0KICAgICAgICAgIHpvb206IDYuNSwNCiAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOg0KICAgICAqIEBwYXJhbSB7Kn0gdHlwZSDnsbvlnosNCiAgICAgKiBAcmV0dXJuIHsqfQ0KICAgICAqLw0KICAgIHJlbW92ZU1hcmtlcih0eXBlKSB7DQogICAgICB0aGlzW2Ake3R5cGV9TWFya2Vyc2BdLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnJlbW92ZSgpKQ0KICAgIH0sDQoNCiAgICByZW1vdmVBbGxNYXJrZXIoKSB7DQogICAgICB0aGlzLmV2ZW50TWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IG1hcmtlci5yZW1vdmUoKSkNCiAgICAgIHRoaXMudGFza01hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiBtYXJrZXIucmVtb3ZlKCkpDQogICAgICB0aGlzLmp5UGxhY2VNYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnJlbW92ZSgpKQ0KICAgICAgdGhpcy54Y1BsYWNlTWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IG1hcmtlci5yZW1vdmUoKSkNCiAgICB9LA0KDQogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOg0KICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hcmtlcnMg54K55L2N6ZuG5ZCIDQogICAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUg57G75Z6LDQogICAgICogQHJldHVybiB7IHZvaWQgfQ0KICAgICAqLw0KICAgIC8vIOWcsOWbvuaJk+eCuQ0KICAgIG1pbmVtYXBNYXJrZXIobWFya2VycywgdHlwZSkgew0KICAgICAgbWFya2Vycy5mb3JFYWNoKChpdGVtKSA9PiB7DQogICAgICAgIGlmIChpdGVtLmxuZyAmJiBpdGVtLmxhdCkgew0KICAgICAgICAgIGl0ZW0ubG5nbGF0ID0gW2l0ZW0ubG5nLCBpdGVtLmxhdF0NCiAgICAgICAgICAvLyDliJvlu7pkaXbkvZzkuLrmoIforrDngrkNCiAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIGVsLmNsYXNzTmFtZSA9ICdtYXAtcG9pbnQnDQoNCiAgICAgICAgICAvLyBsZXQgcDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIC8vIHAxLmNsYXNzTmFtZSA9ICd0ZXh0LWJveCB0ZXh0LWJveC1iZy0nICsgaXRlbS5zdGF0ZQ0KICAgICAgICAgIC8vIHAxLmlubmVySFRNTCA9IGl0ZW0uYnJpZGdlTmFtZQ0KDQogICAgICAgICAgbGV0IHAyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykNCiAgICAgICAgICBwMi5jbGFzc05hbWUgPSAnaWNvbi1ib3ggaWNvbi1wb2ludC0nICsgdHlwZSArICdQb2ludCcNCg0KICAgICAgICAgIC8vIGxldCBwMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogICAgICAgICAgLy8gcDMuY2xhc3NOYW1lID0gJ2ljb24tYnJpZGdlIGljb24tYnJpZGdlLScgKyBpdGVtLnR5cGUNCg0KICAgICAgICAgIC8vIHAyLmFwcGVuZENoaWxkKHAzKQ0KICAgICAgICAgIC8vIGVsLmFwcGVuZENoaWxkKHAxKQ0KICAgICAgICAgIGVsLmFwcGVuZENoaWxkKHAyKQ0KDQogICAgICAgICAgLy8g5qCH6K6w54K55L2NDQogICAgICAgICAgbGV0IG1hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihlbCwge29mZnNldDogWy0zMywgLTMwXX0pDQogICAgICAgICAgICAuc2V0TG5nTGF0KGl0ZW0ubG5nbGF0KQ0KICAgICAgICAgICAgLmFkZFRvKHRoaXMubWFwKQ0KICAgICAgICAgIHRoaXNbYCR7dHlwZX1NYXJrZXJzYF0ucHVzaChtYXJrZXIpDQogICAgICAgICAgLy/mt7vliqDngrnlh7vkuovku7YNCiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ21hcmtlckNsaWNrJywgew0KICAgICAgICAgICAgICBkYXRhOiB7Li4uaXRlbX0sDQogICAgICAgICAgICAgIHR5cGU6IHR5cGUsDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLy8gdGhpcy4kcmVmcy5pbmZvRGlhbG9nLm9wZW4oaXRlbSkNCiAgICAgICAgICB9KQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGNvbnNvbGUubG9nKCfor6XngrnkvY3ml6DlrprkvY3mlbDmja4nLCBpdGVtKQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgYWJjKCkgew0KICAgICAgY29uc29sZS5sb2coMTIzLCAn6LCD55So5Zyw5Zu+5pa55rOVLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQ0KICAgIH0sDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgICAvL+a7muWKqOe7hOS7tui9pui9veW4g+aOp+eQgw0KICAgIGFkZENhclZpZGVvTWFya2VyKHZhbCkgew0KICAgICAgdGhpcy5jbGVhckNhck1hcmtlcigpDQogICAgICBpZiAodGhpcy5tYXApIHsNCiAgICAgICAgbGV0IGNvb3JkaW5hdGVPYmplY3RzID0gW10NCiAgICAgICAgaWYgKCF2YWwpIHsNCiAgICAgICAgICBjb29yZGluYXRlT2JqZWN0cyA9IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgbG5nOiAxMDYuMDgsDQogICAgICAgICAgICAgIGxhdDogMjkuODgsDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGxuZzogMTA2LjEsDQogICAgICAgICAgICAgIGxhdDogMjkuODYsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBsbmc6IDEwNS43MTkwMTcsDQogICAgICAgICAgICAgIGxhdDogMzAuMjUzMDQsDQogICAgICAgICAgICB9LA0KICAgICAgICAgIF0NCiAgICAgICAgICB0aGlzLmNvdW50KysNCiAgICAgICAgICB0aGlzLmNoYW5nZUNlbnRlcihbMTA2LjA4LCAyOS44OF0pDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY29vcmRpbmF0ZU9iamVjdHMucHVzaCh7bG5nOiAxMDYuMDgsIGxhdDogMjkuODh9KQ0KICAgICAgICAgIHRoaXMuY2hhbmdlQ2VudGVyKFsxMDYuMDgsIDI5Ljg4XSkNCiAgICAgICAgICB0aGlzLmNvdW50ID0gMA0KICAgICAgICAgIHRoaXMuY2xlYXJDYXJNYXJrZXIoKQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKHRoaXMuY291bnQgIT09IDAgJiYgdGhpcy5jb3VudCAlIDIgPT0gMCkgew0KICAgICAgICAgIHRoaXMuY2xlYXJDYXJNYXJrZXIoKQ0KICAgICAgICAgIHJldHVybg0KICAgICAgICB9DQogICAgICAgIC8vIOmBjeWOhuWdkOagh+WvueixoeaVsOe7hO+8jOS4uuavj+S4quWdkOagh+WIm+W7uuS4gOS4quagh+azqA0KICAgICAgICBjb29yZGluYXRlT2JqZWN0cy5mb3JFYWNoKChjb29yZGluYXRlT2JqLCBpbmRleCkgPT4gew0KICAgICAgICAgIGxldCBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIGJveC5zdHlsZVsncG9zaXRpb24nXSA9ICdyZWxhdGl2ZScNCiAgICAgICAgICBib3guc3R5bGUud2lkdGggPSAnNzVweCcNCiAgICAgICAgICBib3guc3R5bGUud2lkdGggPSAnMTI4cHgnDQogICAgICAgICAgLy8g5Yib5bu65qCH5rOo5YWD57SgDQogICAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykNCiAgICAgICAgICBsZXQgY2FyTWFrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIGxldCBjYXJOdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIGxldCBzbWFsbGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogICAgICAgICAgZWwuaWQgPSAnbWFya2VyJw0KICAgICAgICAgIGNhck1ha2VyLnN0eWxlLndpZHRoID0gJzNweCcNCiAgICAgICAgICBjYXJNYWtlci5zdHlsZS5oZWlnaHQgPSAnNDZweCcNCiAgICAgICAgICBjYXJNYWtlci5zdHlsZS5iYWNrZ3JvdW5kID0NCiAgICAgICAgICAgICdsaW5lYXItZ3JhZGllbnQoIDE4MGRlZywgIzFBQjNGRiA0NCUsIHJnYmEoMjYsMTc5LDI1NSwwKSAxMDAlKScNCiAgICAgICAgICBjYXJNYWtlci5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnMCAwIDJweCAycHgnDQogICAgICAgICAgY2FyTnVtYmVyLnRleHRDb250ZW50ID0gJ+a4nUFZWDI4NicNCiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGUud2lkdGggPSAnNzVweCcNCiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGUuaGVpZ2h0ID0gJzIycHgnDQogICAgICAgICAgY2FyTnVtYmVyLnN0eWxlLmJhY2tncm91bmQgPSAnIzFhYjNmZicNCiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGVbJ2JvcmRlciddID0gJzFweCBzb2xpZCAjZmZmJw0KICAgICAgICAgIGNhck51bWJlci5zdHlsZVsnZm9udC1zaXplJ10gPSAnMTJweCcNCiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGUuY29sb3IgPSAnI2ZmZicNCiAgICAgICAgICBjYXJOdW1iZXIuc3R5bGVbJ2JveC1zaGFkb3cnXSA9ICdpbnNldCAwIDAgNHB4IDAnDQogICAgICAgICAgY2FyTnVtYmVyLnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInDQogICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtaW1hZ2UnXSA9IGB1cmwoJHtwaWNrdXBJY29ufSlgDQogICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtc2l6ZSddID0gJ2NvdmVyJw0KICAgICAgICAgIGVsLnN0eWxlLndpZHRoID0gJzYwcHgnDQogICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gJzYwcHgnDQogICAgICAgICAgZWwuc3R5bGVbJ2JvcmRlci1yYWRpdXMnXSA9ICcyMCUnDQogICAgICAgICAgc21hbGxib3guc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnDQogICAgICAgICAgc21hbGxib3guc3R5bGUudG9wID0gJy0zMnB4Jw0KICAgICAgICAgIHNtYWxsYm94LnN0eWxlLmxlZnQgPSAnMjhweCcNCiAgICAgICAgICBzbWFsbGJveC5hcHBlbmRDaGlsZChjYXJOdW1iZXIpDQogICAgICAgICAgc21hbGxib3guYXBwZW5kQ2hpbGQoY2FyTWFrZXIpDQogICAgICAgICAgYm94LmFwcGVuZENoaWxkKHNtYWxsYm94KQ0KICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChlbCkNCg0KICAgICAgICAgIGlmICghdmFsKSB7DQogICAgICAgICAgICB2YXIgX21hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihib3gsIHtvZmZzZXQ6IFswLCAwXX0pDQogICAgICAgICAgICAgIC5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApw0KICAgICAgICAgICAgICAuYWRkVG8odGhpcy5tYXApDQogICAgICAgICAgICB0aGlzLm1hcmtlck9ubGluZUNhci5wdXNoKF9tYXJrZXIpDQogICAgICAgICAgICBib3guYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ29wZW5WaWRlb0RpYWxvZycsIGNvb3JkaW5hdGVPYmopDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvL+i9pui9veinhumikeaYvuekug0KICAgICAgICAgICAgdmFyIF9tYXJrZXIgPSBuZXcgbWluZW1hcC5NYXJrZXIoYm94LCB7b2Zmc2V0OiBbMCwgMF19KQ0KICAgICAgICAgICAgICAuc2V0TG5nTGF0KGNvb3JkaW5hdGVPYmopIC8vIOS9v+eUqOWvueixoeeahCBsbmcg5ZKMIGxhdCDlsZ7mgKcNCiAgICAgICAgICAgICAgLmFkZFRvKHRoaXMubWFwKQ0KICAgICAgICAgICAgdGhpcy5tYXJrZXJPbmx5Q2FyLnB1c2goX21hcmtlcikNCiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ29wZW5WaWRlb0RpYWxvZycsIGNvb3JkaW5hdGVPYmopDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/ot6/nur/lm77lsYINCiAgICBhZGRDdXN0b21lck1hcmtlcih2YWwpIHsNCiAgICAgIGlmICh0aGlzLm1hcCkgew0KICAgICAgICAvLyB0aGlzLmNsZWFyTGF5TWFya2VyKCkNCiAgICAgICAgdmFyIGNvb3JkaW5hdGVPYmplY3RzID0gWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGxuZzogMTA1Ljg5LA0KICAgICAgICAgICAgbGF0OiAzMC4wNywNCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAn55Kn5bGx5YyX5pS26LS556uZJywNCiAgICAgICAgICAgIGlkOiAxLA0KICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFsNCiAgICAgICAgICAgICAgWzEwNS45NiwgMjkuOTddLA0KICAgICAgICAgICAgICBbMTA1Ljg5LCAzMC4wN10sDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgU2VjdGlvbnM6ICfmuJ3pgYInLA0KICAgICAgICAgICAgU3RhdGlvbjogWzM5MCwgMF0sDQogICAgICAgICAgICB0eXBlOiAn5pS26LS556uZJywNCiAgICAgICAgICAgIG1hbmFnZW1lbnRDb21wYW55OiAn6YeN5bqG54+R6ZKf5pWR5o+05pyN5Yqh5pyJ6ZmQ5YWs5Y+4JywNCiAgICAgICAgICAgIHRyYWlsZXJOdW06IDMsIC8v5ouW6L2mDQogICAgICAgICAgICBjcmFuZTogMiwgLy/lkIrovaYNCiAgICAgICAgICAgIGxlYWRlcjogJ+ays+S4nCcsDQogICAgICAgICAgICBsZWFkZXJQaG9uZTogJzE1ODI1OTIyNzE2JywNCiAgICAgICAgICAgIHBpY2t1cDogMiwgLy/nmq7ljaENCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGxuZzogMTA2LjEsDQogICAgICAgICAgICBsYXQ6IDI5Ljg2LA0KICAgICAgICAgICAgZGVzY3JpcHRpb246ICfpk5zmooHljJfmlLbotLnnq5knLA0KICAgICAgICAgICAgaWQ6IDIsDQogICAgICAgICAgICBjb29yZGluYXRlczogWw0KICAgICAgICAgICAgICBbMTA2LjEsIDI5Ljg2XSwNCiAgICAgICAgICAgICAgWzEwNi4xMSwgMjkuODVdLA0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFNlY3Rpb25zOiAn5rid6YGCJywNCiAgICAgICAgICAgIFN0YXRpb246IFszNjMsIDBdLA0KICAgICAgICAgICAgdHlwZTogJ+aUtui0ueermScsDQogICAgICAgICAgICBtYW5hZ2VtZW50Q29tcGFueTogJ+mHjeW6huePkemSn+aVkeaPtOacjeWKoeaciemZkOWFrOWPuCcsDQogICAgICAgICAgICB0cmFpbGVyTnVtOiAzLCAvL+aLlui9pg0KICAgICAgICAgICAgY3JhbmU6IDIsIC8v5ZCK6L2mDQogICAgICAgICAgICBsZWFkZXI6ICfmsrPkuJwnLA0KICAgICAgICAgICAgbGVhZGVyUGhvbmU6ICcxNTgyNTkyMjcxNicsDQogICAgICAgICAgICBwaWNrdXA6IDMsIC8v55qu5Y2hDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBsbmc6IDEwNS43MTkwMTcsDQogICAgICAgICAgICBsYXQ6IDMwLjI1MzA0LA0KICAgICAgICAgICAgZGVzY3JpcHRpb246ICfpk5zmooHkuJzmlLbotLnnq5knLA0KICAgICAgICAgICAgaWQ6IDMsDQogICAgICAgICAgICBjb29yZGluYXRlczogWw0KICAgICAgICAgICAgICBbMTA1LjcxOTAxNywgMzAuMjUzMDRdLA0KICAgICAgICAgICAgICBbMTA1LjcyMTM2NywgMzAuMjQ2NDAxXSwNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBTZWN0aW9uczogJ+a4nemBgicsDQogICAgICAgICAgICBTdGF0aW9uOiBbMzcyLCAwXSwNCiAgICAgICAgICAgIHR5cGU6ICfmlLbotLnnq5knLA0KICAgICAgICAgICAgbWFuYWdlbWVudENvbXBhbnk6ICfph43luobnj5Hpkp/mlZHmj7TmnI3liqHmnInpmZDlhazlj7gnLA0KICAgICAgICAgICAgdHJhaWxlck51bTogMywgLy/mi5bovaYNCiAgICAgICAgICAgIGNyYW5lOiAyLCAvL+WQiui9pg0KICAgICAgICAgICAgbGVhZGVyOiAn5rKz5LicJywNCiAgICAgICAgICAgIGxlYWRlclBob25lOiAnMTU4MjU5MjI3MTYnLA0KICAgICAgICAgICAgcGlja3VwOiA1LCAvL+earuWNoQ0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgbG5nOiAxMDUuOTgsDQogICAgICAgICAgICBsYXQ6IDI5Ljk1LA0KICAgICAgICAgICAgZGVzY3JpcHRpb246ICfnlLDlrrbmlLbotLnnq5knLA0KICAgICAgICAgICAgaWQ6IDQsDQogICAgICAgICAgICBjb29yZGluYXRlczogWw0KICAgICAgICAgICAgICBbMTA1Ljk4LCAyOS45NV0sDQogICAgICAgICAgICAgIFsxMDYuMDEsIDI5LjkzXSwNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBTZWN0aW9uczogJ+a4nemBgicsDQogICAgICAgICAgICBTdGF0aW9uOiBbMzMwLCAwXSwNCiAgICAgICAgICAgIHR5cGU6ICfmlLbotLnnq5knLA0KICAgICAgICAgICAgbWFuYWdlbWVudENvbXBhbnk6ICfph43luobnj5Hpkp/mlZHmj7TmnI3liqHmnInpmZDlhazlj7gnLA0KICAgICAgICAgICAgdHJhaWxlck51bTogMywgLy/mi5bovaYNCiAgICAgICAgICAgIGNyYW5lOiAyLCAvL+WQiui9pg0KICAgICAgICAgICAgbGVhZGVyOiAn5rKz5LicJywNCiAgICAgICAgICAgIGxlYWRlclBob25lOiAnMTU4MjU5MjI3MTYnLA0KICAgICAgICAgICAgcGlja3VwOiAyLCAvL+earuWNoQ0KICAgICAgICAgIH0sDQogICAgICAgIF0NCiAgICAgICAgdGhpcy5jaGFuZ2VDZW50ZXIoWzEwNi4wOCwgMjkuODhdKQ0KICAgICAgICAvL+WIpOaWreaYr+WQpua4hemZpOagh+iusA0KICAgICAgICBpZiAodmFsID09ICdwYXRyb2wnKSB7DQogICAgICAgICAgdGhpcy5wYXRyb2xDbGljayA9ICF0aGlzLnBhdHJvbENsaWNrDQogICAgICAgICAgaWYgKCF0aGlzLnBhdHJvbENsaWNrKSB7DQogICAgICAgICAgICB0aGlzLmNsZWFyTGF5TWFya2VyKCkNCiAgICAgICAgICAgIHJldHVybg0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAodmFsID09ICdyZXNjdWUnKSB7DQogICAgICAgICAgdGhpcy5yZXNjdWVDbGljayA9ICF0aGlzLnJlc2N1ZUNsaWNrDQogICAgICAgICAgaWYgKCF0aGlzLnJlc2N1ZUNsaWNrKSB7DQogICAgICAgICAgICB0aGlzLmNsZWFyTGF5UmVzY3VlTWFrZXIoKQ0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICh2YWwgPT0gJ0VtZXJnZW5jaWVzJykgew0KICAgICAgICAgIHRoaXMuZW1lcmdlbmNpZXNDbGljayA9ICF0aGlzLmVtZXJnZW5jaWVzQ2xpY2sNCiAgICAgICAgICBpZiAoIXRoaXMuZW1lcmdlbmNpZXNDbGljaykgew0KICAgICAgICAgICAgdGhpcy5tYXJrZXJFbWVyZ2VuY2llcy5mb3JFYWNoKChtYXJrZXIpID0+IG1hcmtlci5yZW1vdmUoKSkNCiAgICAgICAgICAgIHRoaXMubWFya2VyRW1lcmdlbmNpZXMubGVuZ3RoID0gMA0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICh2YWwgPT0gJ3Jlc2N1ZUV2ZW50Jykgew0KICAgICAgICAgIHRoaXMucmVzY3VlRXZlbnRDbGljayA9ICF0aGlzLnJlc2N1ZUV2ZW50Q2xpY2sNCiAgICAgICAgICBpZiAoIXRoaXMucmVzY3VlRXZlbnRDbGljaykgew0KICAgICAgICAgICAgdGhpcy5tYXJrZXJSZXNjdWVFdmVudC5mb3JFYWNoKChtYXJrZXIpID0+IG1hcmtlci5yZW1vdmUoKSkNCiAgICAgICAgICAgIHRoaXMubWFya2VyUmVzY3VlRXZlbnQubGVuZ3RoID0gMA0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vIOmBjeWOhuWdkOagh+WvueixoeaVsOe7hO+8jOS4uuavj+S4quWdkOagh+WIm+W7uuS4gOS4quagh+azqA0KICAgICAgICBjb29yZGluYXRlT2JqZWN0cy5mb3JFYWNoKChjb29yZGluYXRlT2JqLCBpbmRleCkgPT4gew0KICAgICAgICAgIC8v5YWs5YWx5a655ZmoDQogICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQ0KICAgICAgICAgIC8vIOWIm+W7uuagh+azqOWFg+e0oA0KICAgICAgICAgIGxldCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogICAgICAgICAgbGV0IHRleHRFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogICAgICAgICAgZWwuaWQgPSAnbWFya2VyJw0KDQogICAgICAgICAgLy/lt6Hmn6XpqbvngrkNCiAgICAgICAgICBpZiAodmFsID09ICdwYXRyb2wnKSB7DQogICAgICAgICAgICBlbC5zdHlsZVsnYmFja2dyb3VuZC1pbWFnZSddID0gYHVybCgke3BhdHJvSWNvbn0pYA0KICAgICAgICAgICAgdGV4dEVsLnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgIzUxZmQ4YScNCiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzFlYTY0YicgLy8g5Y+v5Lul6K6+572u6IOM5pmv6ImyDQogICAgICAgICAgfQ0KICAgICAgICAgIC8v5pWR5o+06am754K5DQogICAgICAgICAgaWYgKHZhbCA9PSAncmVzY3VlJykgew0KICAgICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtaW1hZ2UnXSA9IGB1cmwoJHtyZXNjdWVJY29ufSlgDQogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM0M2FkYWQnDQogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjMDRmYmZiJw0KICAgICAgICAgIH0NCiAgICAgICAgICAvL+eqgeWPkeS6i+S7tg0KICAgICAgICAgIGlmICh2YWwgPT0gJ0VtZXJnZW5jaWVzJykgew0KICAgICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtaW1hZ2UnXSA9IGB1cmwoJHtlbWVyZ2VyRXZlbnRJY29ufSlgDQogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM3ODUwMDAnDQogICAgICAgICAgICB0ZXh0RWwuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjZmZjOTVhJw0KICAgICAgICAgIH0NCiAgICAgICAgICAvL+aVkeaPtOS6i+S7tg0KICAgICAgICAgIGlmICh2YWwgPT0gJ3Jlc2N1ZUV2ZW50Jykgew0KICAgICAgICAgICAgZWwuc3R5bGVbJ2JhY2tncm91bmQtaW1hZ2UnXSA9IGB1cmwoJHtyZXNjdWVFdmVudEljb259KWANCiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzdjMGQyZCcNCiAgICAgICAgICAgIHRleHRFbC5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkICNiZDQ0NjcnDQogICAgICAgICAgfQ0KICAgICAgICAgIGVsLnN0eWxlWydiYWNrZ3JvdW5kLXNpemUnXSA9ICdjb3ZlcicNCiAgICAgICAgICBlbC5zdHlsZS53aWR0aCA9ICc0MHB4Jw0KICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICc0MHB4Jw0KICAgICAgICAgIGVsLnN0eWxlWydib3JkZXItcmFkaXVzJ10gPSAnMjAlJw0KICAgICAgICAgIC8vIOWIm+W7uuaWh+Wtl+aPj+i/sOWFg+e0oA0KICAgICAgICAgIHRleHRFbC50ZXh0Q29udGVudCA9IGNvb3JkaW5hdGVPYmouZGVzY3JpcHRpb24gLy8g6K6+572u5o+P6L+w5paH5pysDQogICAgICAgICAgdGV4dEVsLnN0eWxlLnBhZGRpbmcgPSAnMnB4IDVweCcgLy8g5YaF6L656LedDQogICAgICAgICAgdGV4dEVsLnN0eWxlLmJvcmRlclJhZGl1cyA9ICczcHgnIC8vIOWchuinkg0KICAgICAgICAgIHRleHRFbC5zdHlsZS5mb250U2l6ZSA9ICcxMnB4JyAvLyDlrZfkvZPlpKflsI8NCiAgICAgICAgICB0ZXh0RWwuc3R5bGUuY29sb3IgPSAnd2hpdGUnDQogICAgICAgICAgdGV4dEVsLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJyAvLyDpmLLmraLmlofmnKzmjaLooYwNCiAgICAgICAgICBwLmFwcGVuZENoaWxkKHRleHRFbCkNCiAgICAgICAgICBwLmFwcGVuZENoaWxkKGVsKQ0KICAgICAgICAgIHAuc3R5bGUuZGlzcGxheSA9ICdmbGV4Jw0KICAgICAgICAgIHAuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nDQogICAgICAgICAgcC5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInDQogICAgICAgICAgcC5zdHlsZS5hbGlnbkl0ZW1zID0gJ2NlbnRlcicNCiAgICAgICAgICAvLyDliJvlu7rkuIDkuKrmlrDnmoTmoIfms6jlrp7kvovvvIzlubborr7nva7lgY/np7vph48NCiAgICAgICAgICBpZiAodmFsID09ICdwYXRyb2wnKSB7DQogICAgICAgICAgICB2YXIgX21hcmtlciA9IG5ldyBtaW5lbWFwLk1hcmtlcihwLCB7b2Zmc2V0OiBbMCwgMF19KQ0KICAgICAgICAgICAgICAuc2V0TG5nTGF0KGNvb3JkaW5hdGVPYmopIC8vIOS9v+eUqOWvueixoeeahCBsbmcg5ZKMIGxhdCDlsZ7mgKcNCiAgICAgICAgICAgICAgLmFkZFRvKHRoaXMubWFwKQ0KICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2goX21hcmtlcikNCiAgICAgICAgICAgIHRoaXMuYWRkU291cmNlcyhjb29yZGluYXRlT2JqLmNvb3JkaW5hdGVzLCBjb29yZGluYXRlT2JqLmlkKQ0KICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoY29vcmRpbmF0ZU9iai5pZCkNCiAgICAgICAgICAgIHRoaXMuaWRMaXN0LnB1c2goYGxpbmVMYXllci0ke2Nvb3JkaW5hdGVPYmouaWR9YCkNCiAgICAgICAgICAgIHRoaXMuc291cmNlSWRMaXN0LnB1c2goYGxpbmVTb3VyY2UtJHtjb29yZGluYXRlT2JqLmlkfWApDQogICAgICAgICAgICBpZiAodGhpcy5yZXNjdWVJZExpc3QubGVuZ3RoKSB7DQogICAgICAgICAgICAgIHRoaXMuc3RvcFJlc2N1ZVN0YXJ0QmxpbmtpbmcoKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsNCiAgICAgICAgICAgICAgdGhpcy4kZW1pdCgncGF0cm9sU3RhdGlvbkxpc3QnLCBjb29yZGluYXRlT2JqKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKHZhbCA9PSAncmVzY3VlJykgew0KICAgICAgICAgICAgdmFyIF9tYXJrZXIgPSBuZXcgbWluZW1hcC5NYXJrZXIocCwge29mZnNldDogWzAsIDBdfSkNCiAgICAgICAgICAgICAgLnNldExuZ0xhdChjb29yZGluYXRlT2JqKSAvLyDkvb/nlKjlr7nosaHnmoQgbG5nIOWSjCBsYXQg5bGe5oCnDQogICAgICAgICAgICAgIC5hZGRUbyh0aGlzLm1hcCkNCiAgICAgICAgICAgIHRoaXMubWFya2Vyc1Jlc2N1ZS5wdXNoKF9tYXJrZXIpDQogICAgICAgICAgICB0aGlzLmFkZFJlc2N1ZVNvdXJjZXMoY29vcmRpbmF0ZU9iai5jb29yZGluYXRlcywgY29vcmRpbmF0ZU9iai5pZCkNCiAgICAgICAgICAgIHRoaXMuYWRkUmVzY3VlTGF5ZXJzKGNvb3JkaW5hdGVPYmouaWQpDQogICAgICAgICAgICB0aGlzLnJlc2N1ZUlkTGlzdC5wdXNoKGBsaW5lUmVzY3VlTGF5ZXItJHtjb29yZGluYXRlT2JqLmlkfWApDQogICAgICAgICAgICB0aGlzLnJlc2N1ZVNvdXJjZUlkTGlzdC5wdXNoKGBsaW5lUmVzY3VlU291cmNlLSR7Y29vcmRpbmF0ZU9iai5pZH1gKQ0KDQogICAgICAgICAgICBwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gew0KICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdzdGF0aW9uTGlzdCcsIGNvb3JkaW5hdGVPYmopDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAodmFsID09ICdFbWVyZ2VuY2llcycpIHsNCiAgICAgICAgICAgIHZhciBfbWFya2VyID0gbmV3IG1pbmVtYXAuTWFya2VyKHAsIHtvZmZzZXQ6IFswLCAwXX0pDQogICAgICAgICAgICAgIC5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApw0KICAgICAgICAgICAgICAuYWRkVG8odGhpcy5tYXApDQogICAgICAgICAgICB0aGlzLm1hcmtlckVtZXJnZW5jaWVzLnB1c2goX21hcmtlcikNCiAgICAgICAgICAgIC8vIGlmICh0aGlzLmlkTGlzdC5sZW5ndGgpIHsNCiAgICAgICAgICAgIC8vICAgdGhpcy5zdG9wQmxpbmsoKQ0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgaWYgKHRoaXMucmVzY3VlSWRMaXN0Lmxlbmd0aCkgew0KICAgICAgICAgICAgICB0aGlzLnN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ29wZW5FdmVudERpYWxvZycsIGNvb3JkaW5hdGVPYmopDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAodmFsID09ICdyZXNjdWVFdmVudCcpIHsNCiAgICAgICAgICAgIHZhciBfbWFya2VyID0gbmV3IG1pbmVtYXAuTWFya2VyKHAsIHtvZmZzZXQ6IFswLCAwXX0pDQogICAgICAgICAgICAgIC5zZXRMbmdMYXQoY29vcmRpbmF0ZU9iaikgLy8g5L2/55So5a+56LGh55qEIGxuZyDlkowgbGF0IOWxnuaApw0KICAgICAgICAgICAgICAuYWRkVG8odGhpcy5tYXApDQogICAgICAgICAgICB0aGlzLm1hcmtlclJlc2N1ZUV2ZW50LnB1c2goX21hcmtlcikNCiAgICAgICAgICAgIC8vIGlmICh0aGlzLmlkTGlzdC5sZW5ndGgpIHsNCiAgICAgICAgICAgIC8vICAgdGhpcy5zdG9wQmxpbmsoKQ0KICAgICAgICAgICAgLy8gfQ0KICAgICAgICAgICAgaWYgKHRoaXMucmVzY3VlSWRMaXN0Lmxlbmd0aCkgew0KICAgICAgICAgICAgICB0aGlzLnN0b3BSZXNjdWVTdGFydEJsaW5raW5nKCkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ29wZW5FdmVudERpYWxvZycsIGNvb3JkaW5hdGVPYmopDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICAgIGlmICh0aGlzLnJlc2N1ZUlkTGlzdC5sZW5ndGggJiYgdmFsID09ICdyZXNjdWUnKSB7DQogICAgICAgICAgdGhpcy5zdGFydFJlc2N1ZVN0YXJ0QmxpbmtpbmcoKQ0KICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gew0KICAgICAgICAgICAgdGhpcy5zdG9wUmVzY3VlU3RhcnRCbGlua2luZygpDQogICAgICAgICAgfSwgODAwMCkNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQoNCiAgICAvLyDkuLrmr4/kuKrmoIfms6jngrnorr7orqHmupAtLeW3oeafpempu+eCuQ0KICAgIGFkZFNvdXJjZXMoY29vcmRpbmF0ZXMsIGlkKSB7DQogICAgICB2YXIganNvbkRhdGEgPSB7DQogICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsDQogICAgICAgIGZlYXR1cmVzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLA0KICAgICAgICAgICAgZ2VvbWV0cnk6IHsNCiAgICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLA0KICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRpbmF0ZXMsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgcHJvcGVydGllczogew0KICAgICAgICAgICAgICB0aXRsZTogJ+i3r+e6v+S4gCcsDQogICAgICAgICAgICAgIGtpbmQ6IDEsDQogICAgICAgICAgICB9LA0KICAgICAgICAgIH0sDQogICAgICAgIF0sDQogICAgICB9DQogICAgICB0aGlzLm1hcC5hZGRTb3VyY2UoYGxpbmVTb3VyY2UtJHtpZH1gLCB7DQogICAgICAgIHR5cGU6ICdnZW9qc29uJywNCiAgICAgICAgZGF0YToganNvbkRhdGEsDQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g5Li65q+P5Liq5qCH5rOo54K55re75Yqg5Zu+5bGCLS3lt6Hmn6XpqbvngrkNCiAgICBhZGRMYXllcnMoaWQpIHsNCiAgICAgIHRoaXMubWFwLmFkZExheWVyKHsNCiAgICAgICAgaWQ6IGBsaW5lTGF5ZXItJHtpZH1gLA0KICAgICAgICB0eXBlOiAnbGluZScsDQogICAgICAgIHNvdXJjZTogYGxpbmVTb3VyY2UtJHtpZH1gLA0KICAgICAgICBsYXlvdXQ6IHsNCiAgICAgICAgICAnbGluZS1qb2luJzogJ3JvdW5kJywNCiAgICAgICAgICAnbGluZS1jYXAnOiAncm91bmQnLA0KICAgICAgICAgICdib3JkZXItdmlzaWJpbGl0eSc6ICd2aXNpYmxlJywgLy/mmK/lkKblvIDlkK/nur/ovrnmoYYNCiAgICAgICAgfSwNCiAgICAgICAgcGFpbnQ6IHsNCiAgICAgICAgICAnbGluZS13aWR0aCc6IDgsDQogICAgICAgICAgJ2xpbmUtY29sb3InOiB7DQogICAgICAgICAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLA0KICAgICAgICAgICAgcHJvcGVydHk6ICdraW5kJywNCiAgICAgICAgICAgIHN0b3BzOiBbDQogICAgICAgICAgICAgIFsxLCAnI0ZGRDQ4QSAnXSwNCiAgICAgICAgICAgICAgWzIsICcjRkZENDhBICddLA0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIGRlZmF1bHQ6ICcjZmYwMDAwJywNCiAgICAgICAgICB9LA0KICAgICAgICAgICdsaW5lLWJvcmRlci13aWR0aCc6IDIsIC8v6K6+572u57q/6L655qGG5a695bqmDQogICAgICAgICAgJ2xpbmUtYm9yZGVyLW9wYWNpdHknOiAxLCAvL+iuvue9rue6v+i+ueahhumAj+aYjuW6pg0KICAgICAgICAgICdsaW5lLWJvcmRlci1jb2xvcic6IHsNCiAgICAgICAgICAgIHN0b3BzOiBbDQogICAgICAgICAgICAgIFsxLCAnIzAwRkZGRiddLA0KICAgICAgICAgICAgICBbMiwgJyAjRkZGRkZGJ10sDQogICAgICAgICAgICBdLA0KICAgICAgICAgIH0sIC8v6K6+572u57q/6L655qGG6aKc6ImyDQogICAgICAgIH0sDQogICAgICAgIG1pbnpvb206IDcsDQogICAgICAgIG1heHpvb206IDE3LjUsDQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g5Li65q+P5Liq5qCH5rOo54K56K6+6K6h5rqQLS3mlZHmj7TpqbvngrkNCiAgICBhZGRSZXNjdWVTb3VyY2VzKGNvb3JkaW5hdGVzLCBpZCkgew0KICAgICAgdmFyIGpzb25EYXRhID0gew0KICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLA0KICAgICAgICBmZWF0dXJlczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJywNCiAgICAgICAgICAgIGdlb21ldHJ5OiB7DQogICAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywNCiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsNCiAgICAgICAgICAgICAgdGl0bGU6ICfot6/nur/kuIAnLA0KICAgICAgICAgICAgICBraW5kOiAxLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICB9LA0KICAgICAgICBdLA0KICAgICAgfQ0KICAgICAgdGhpcy5tYXAuYWRkU291cmNlKGBsaW5lUmVzY3VlU291cmNlLSR7aWR9YCwgew0KICAgICAgICB0eXBlOiAnZ2VvanNvbicsDQogICAgICAgIGRhdGE6IGpzb25EYXRhLA0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIOS4uuavj+S4quagh+azqOeCuea3u+WKoOWbvuWxgi0t5pWR5o+06am754K5DQogICAgYWRkUmVzY3VlTGF5ZXJzKGlkKSB7DQogICAgICB0aGlzLm1hcC5hZGRMYXllcih7DQogICAgICAgIGlkOiBgbGluZVJlc2N1ZUxheWVyLSR7aWR9YCwNCiAgICAgICAgdHlwZTogJ2xpbmUnLA0KICAgICAgICBzb3VyY2U6IGBsaW5lUmVzY3VlU291cmNlLSR7aWR9YCwNCiAgICAgICAgbGF5b3V0OiB7DQogICAgICAgICAgJ2xpbmUtam9pbic6ICdyb3VuZCcsDQogICAgICAgICAgJ2xpbmUtY2FwJzogJ3JvdW5kJywNCiAgICAgICAgICAnYm9yZGVyLXZpc2liaWxpdHknOiAndmlzaWJsZScsIC8v5piv5ZCm5byA5ZCv57q/6L655qGGDQogICAgICAgIH0sDQogICAgICAgIHBhaW50OiB7DQogICAgICAgICAgJ2xpbmUtd2lkdGgnOiA4LA0KICAgICAgICAgICdsaW5lLWNvbG9yJzogew0KICAgICAgICAgICAgdHlwZTogJ2NhdGVnb3JpY2FsJywNCiAgICAgICAgICAgIHByb3BlcnR5OiAna2luZCcsDQogICAgICAgICAgICBzdG9wczogWw0KICAgICAgICAgICAgICBbMSwgJyNGRkQ0OEEgJ10sDQogICAgICAgICAgICAgIFsyLCAnI0ZGRDQ4QSAnXSwNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBkZWZhdWx0OiAnI2ZmMDAwMCcsDQogICAgICAgICAgfSwNCiAgICAgICAgICAnbGluZS1ib3JkZXItd2lkdGgnOiAyLCAvL+iuvue9rue6v+i+ueahhuWuveW6pg0KICAgICAgICAgICdsaW5lLWJvcmRlci1vcGFjaXR5JzogMSwgLy/orr7nva7nur/ovrnmoYbpgI/mmI7luqYNCiAgICAgICAgICAnbGluZS1ib3JkZXItY29sb3InOiB7DQogICAgICAgICAgICBzdG9wczogWw0KICAgICAgICAgICAgICBbMSwgJyMwMEZGRkYnXSwNCiAgICAgICAgICAgICAgWzIsICcgI0ZGRkZGRiddLA0KICAgICAgICAgICAgXSwNCiAgICAgICAgICB9LCAvL+iuvue9rue6v+i+ueahhuminOiJsg0KICAgICAgICB9LA0KICAgICAgICBtaW56b29tOiA3LA0KICAgICAgICBtYXh6b29tOiAxNy41LA0KICAgICAgfSkNCiAgICB9LA0KICAgIC8vIC8v5beh5p+l6am754K56Zeq54OBDQogICAgLy8gc3RhcnRCbGlua2luZygpIHsNCiAgICAvLyAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHsNCiAgICAvLyAgICAgdGhpcy5pZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgIC8vICAgICAgIC8vIHRoaXMubWFwLnNldFBhaW50UHJvcGVydHkoaXRlbSwgJ2xpbmUtb3BhY2l0eScsIDApDQogICAgLy8gICAgICAgaWYgKHRoaXMubWFwLmdldExheWVyKSB7DQogICAgLy8gICAgICAgICB0aGlzLm1hcC5zZXRQYWludFByb3BlcnR5KA0KICAgIC8vICAgICAgICAgICBpdGVtLA0KICAgIC8vICAgICAgICAgICAnbGluZS1vcGFjaXR5JywNCiAgICAvLyAgICAgICAgICAgdGhpcy5tYXAuZ2V0UGFpbnRQcm9wZXJ0eShpdGVtLCAnbGluZS1vcGFjaXR5JykgPT0gMCA/IDEgOiAwDQogICAgLy8gICAgICAgICApDQogICAgLy8gICAgICAgfQ0KICAgIC8vICAgICB9KQ0KICAgIC8vICAgfSwgMTAwMCkNCiAgICAvLyB9LA0KICAgIC8vIC8v5YWz6Zet5beh5p+l6am754K56Zeq54OBDQogICAgLy8gc3RvcEJsaW5rKCkgew0KICAgIC8vICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkgew0KICAgIC8vICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCkNCiAgICAvLyAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbCAvLyDmuIXpmaTlvJXnlKjvvIzpgb/lhY3lhoXlrZjms4TmvI8NCiAgICAvLyAgICAgdGhpcy5pZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgIC8vICAgICAgIHRoaXMubWFwLnNldFBhaW50UHJvcGVydHkoaXRlbSwgJ2xpbmUtb3BhY2l0eScsIDEpDQogICAgLy8gICAgIH0pDQogICAgLy8gICB9DQogICAgLy8gfSwNCg0KICAgIC8v5byA5ZCv5pWR5o+06am754K56Zeq54OBDQogICAgc3RhcnRSZXNjdWVTdGFydEJsaW5raW5nKCkgew0KICAgICAgdGhpcy5zdGFydFJlc2N1ZWludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7DQogICAgICAgIHRoaXMucmVzY3VlSWRMaXN0LmZvckVhY2goKGl0ZW0pID0+IHsNCiAgICAgICAgICBpZiAodGhpcy5tYXAuZ2V0TGF5ZXIpIHsNCiAgICAgICAgICAgIHRoaXMubWFwLnNldFBhaW50UHJvcGVydHkoDQogICAgICAgICAgICAgIGl0ZW0sDQogICAgICAgICAgICAgICdsaW5lLW9wYWNpdHknLA0KICAgICAgICAgICAgICB0aGlzLm1hcC5nZXRQYWludFByb3BlcnR5KGl0ZW0sICdsaW5lLW9wYWNpdHknKSA9PSAwID8gMSA6IDANCiAgICAgICAgICAgICkNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICB9LCAxMDAwKQ0KICAgIH0sDQogICAgLy/lhbPpl63lt6Hmn6XmlZHmj7Tpl6rng4ENCiAgICBzdG9wUmVzY3VlU3RhcnRCbGlua2luZygpIHsNCiAgICAgIGlmICh0aGlzLnN0YXJ0UmVzY3VlaW50ZXJ2YWxJZCkgew0KICAgICAgICBjbGVhckludGVydmFsKHRoaXMuc3RhcnRSZXNjdWVpbnRlcnZhbElkKQ0KICAgICAgICB0aGlzLnN0YXJ0UmVzY3VlaW50ZXJ2YWxJZCA9IG51bGwNCiAgICAgICAgdGhpcy5yZXNjdWVJZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIHRoaXMubWFwLnNldFBhaW50UHJvcGVydHkoaXRlbSwgJ2xpbmUtb3BhY2l0eScsIDEpDQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCiAgfSwNCiAgYmVmb3JlRGVzdHJveSgpIHsNCiAgICAvLyDms6jplIDlnLDlm77lrp7kvoss56e76Zmk5Zyw5Zu+DQogICAgaWYgKHRoaXMubWFwKSB7DQogICAgICB0aGlzLm1hcC5yZW1vdmUoKQ0KICAgIH0NCiAgfSwNCn0NCg=="},null]}