@phenixrts/sdk 2024.2.0-beta.286 → 2024.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/channels/debug/channels.js +2 -2
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +2 -2
- package/channels/debug.private/package.json +1 -1
- package/channels/es5.debug.private/channels.js +2 -2
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +2 -2
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +2 -2
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +2 -2
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +2 -2
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
|
@@ -9945,7 +9945,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
9945
9945
|
key: "sdkVersion",
|
|
9946
9946
|
get: function get() {
|
|
9947
9947
|
try {
|
|
9948
|
-
return "2024-08-
|
|
9948
|
+
return "2024-08-14T17:46:25.349Z (2024.2.0)";
|
|
9949
9949
|
} catch (e) {
|
|
9950
9950
|
return this._defaultVersion;
|
|
9951
9951
|
}
|
|
@@ -11700,4 +11700,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11700
11700
|
/******/ })()
|
|
11701
11701
|
;
|
|
11702
11702
|
});
|
|
11703
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUN4SyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDNUQ7RUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFBRTtFQUN4TGxCLEdBQUcsRUFBRSxJQUFJa0IsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFH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O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7Ozs7V0N6QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOzs7OztXQ0pBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7V0NOQTs7Ozs7V0NBQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7O0FBRXlCO0FBQ21CO0FBQ1E7QUFDTDtBQUNRO0FBT3ZDO0FBR2hCLCtEQUFlO0VBQ2JwcUMsR0FBRyxFQUFIQSw0Q0FBRztFQUNIdXhCLFFBQVEsRUFBUkEsMERBQVE7RUFDUm5NLFlBQVksRUFBWkEsOERBQVk7RUFDWjRXLFVBQVUsRUFBVkEsMkRBQVU7RUFDVnhCLGNBQWMsRUFBZEEsK0RBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZUhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlTW9kZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZVN0YXRlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRW5kUG9pbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1JlYWxUaW1lUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vRGltZW5zaW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9WaWRlb1RlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Z1bGwvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcblxuY29uc3QgZGVmYXVsdERvY3VtZW50Rm9jdXNJbnRlcnZhbFRpbWVvdXQgPSAzMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnRGb2N1c0ludGVydmFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5kZXRlY3RUYWJGb2N1c0NoYW5nZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RUYWJGb2N1c0NoYW5nZSgpOiB2b2lkIHtcbiAgICBsZXQgaGlkZGVuO1xuICAgIGxldCB2aXNpYmlsaXR5Q2hhbmdlO1xuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGEgZGVmaW5pdGlvbiBmb3IgJ21zSGlkZGVuJyBvciAnd2Via2l0SGlkZGVuJyB0eXBlc1xuICAgIC8vIFJlcXVpcmVkIHRvIEB0cy1pZ25vcmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50Lm1zSGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaGlkZGVuID0gJ21zSGlkZGVuJztcbiAgICAgIHZpc2liaWxpdHlDaGFuZ2UgPSAnbXN2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudC53ZWJraXRIaWRkZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBoaWRkZW4gPSAnd2Via2l0SGlkZGVuJztcbiAgICAgIHZpc2liaWxpdHlDaGFuZ2UgPSAnd2Via2l0dmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuaGlkZGVuICE9PSAndW5kZWZpbmVkJykgeyAvLyBPcGVyYSAxMi4xMCBhbmQgRmlyZWZveCAxOCBhbmQgbGF0ZXIgc3VwcG9ydFxuICAgICAgaGlkZGVuID0gJ2hpZGRlbic7XG4gICAgICB2aXNpYmlsaXR5Q2hhbmdlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuXG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGlzRm9yZWdyb3VuZCA9ICFkb2N1bWVudFtoaWRkZW5dO1xuXG4gICAgICB0aGlzLnNldEZvY3VzU3RhdGUoaXNGb3JlZ3JvdW5kKTtcbiAgICB9O1xuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnRbaGlkZGVuXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZSwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2UsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0ZW5Gb3JEb2N1bWVudEZvY3VzLmNhbGwodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JEb2N1bWVudEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBpc0ZvcmVncm91bmQgPSBkb2N1bWVudC5oYXNGb2N1cygpO1xuXG4gICAgICB0aGlzLnNldEZvY3VzU3RhdGUoaXNGb3JlZ3JvdW5kKTtcbiAgICB9LCBkZWZhdWx0RG9jdW1lbnRGb2N1c0ludGVydmFsVGltZW91dCk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCA9IG51bGw7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c1N0YXRlKGlzRm9yZWdyb3VuZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0ZvcmVncm91bmQgPT09IGlzRm9yZWdyb3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzRm9yZWdyb3VuZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoaXMgZmlsZSBpcyB1c2VkIG9ubHkgZm9yIHRoZSBzaWxlbnQgYnVpbGQgdG8gbW9jayBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGNsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIGdldEJvb2xlYW5WYWx1ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVmYXVsdFN0cmluZ1ZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BoZW5peC1tZXRyaWNzLWxldmVsJzogVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKSxcbiAgICAgICdwaGVuaXgtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY29uc29sZS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtdGVsZW1ldHJ5LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNoYW5uZWwtdG9rZW4nOiAnJyxcbiAgICAgICdwaGVuaXgtdXJpJzogJycsXG4gICAgICAncGhlbml4LWJhc2UtdXJpJzogJydcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnR0OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCh1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCh1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QodW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpO1xuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICB9XG5cbiAgZ2V0IGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgfVxuXG4gIGdldCBydHQoKTogU3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcnR0O1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVR5cGUoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZWZmZWN0aXZlVHlwZTtcbiAgfVxuXG4gIGdldCBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5kb3dubGluayB8fCBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5kb3dubGlua01heDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuICdVbmtub3duJztcbiAgICB9XG5cbiAgICByZXR1cm4gbmF2aWdhdG9yWydjb25uZWN0aW9uJ10uZWZmZWN0aXZlVHlwZSB8fCBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS50eXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLnJ0dDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gICAgfTtcblxuICAgIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQsIHN0cmVhbUlkKTtcbiAgfVxuXG4gIGZhaWwoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRTdHJlYW1NZXRyaWMobWV0cmljVHlwZTogTWV0cmljc1R5cGUsIHN0cmVhbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21ldHJpY1N1Ym1pdHRlZCkge1xuICAgICAgcmV0dXJuIDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNTdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXR1cFRpbWUgPSBub3cgLSB0aGlzLl9zdGFydFRpbWU7XG4gICAgY29uc3QgbWV0cmljTmFtZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpY1R5cGUpLmdldE5hbWUoKTtcblxuICAgIHRoaXMubWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHNldHVwVGltZX0sXG4gICAgICBzdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFN0cmVhbSBtZXRyaWMgWyVzXSBpbiBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgbmV3IER1cmF0aW9ucyhzZXR1cFRpbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIGRvY3VtZW50Py5jcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCB7SUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXJ9IGZyb20gJy4uL2RvbS9JQ29uZmlndXJhdGlvblBhcmFtYXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcjogSUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgPSBuZXcgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcigpO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCk7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuOlxuICAgICAgICByZXR1cm4gJ1dhcm4nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHJldHVybiAnRXJyb3InO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRmF0YWw6XG4gICAgICAgIHJldHVybiAnRmF0YWwnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKGxvZ2dpbmdMZXZlbFR5cGU6IExvZ2dpbmdMZXZlbFR5cGUpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5PZmY7XG4gICAgICBjYXNlICdUcmFjZSc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuVHJhY2U7XG4gICAgICBjYXNlICdEZWJ1Zyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRGVidWc7XG4gICAgICBjYXNlICdJbmZvJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgICAgY2FzZSAnV2Fybic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuV2FybjtcbiAgICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5FcnJvcjtcbiAgICAgIGNhc2UgJ0ZhdGFsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5GYXRhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBVUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlOiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU6IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gbG9jYXRpb24uaG9zdG5hbWU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBQcm9taXNlSGFuZGxlciBmcm9tICcuL1Byb21pc2VIYW5kbGVyJztcblxuY2xhc3MgUHJvbWlzZSB7XG4gIF9zdGF0ZTogbnVtYmVyO1xuICBfaGFuZGxlZDogYm9vbGVhbjtcbiAgX3ZhbHVlOiBQcm9taXNlO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjaykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSA9IDA7XG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICByZWFzb24gPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogUHJvbWlzZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZShkZWZlcnJlZDogUHJvbWlzZUhhbmRsZXIpOiB2b2lkIHtcbiAgICBsZXQgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTtcblxuICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlO1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPik6IFByb21pc2Uge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpLCB2YWx1ZSk6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBjb25zdCB0aGVuID0gdmFsdWUudGhlbjtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWUpOiBQcm9taXNlIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWUpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U+KTogUHJvbWlzZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3IpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOicsIGVycm9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59XG5cblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKCgpID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uKGNhbGxiYWNrOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkIHtcbiAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgdmFsdWUgPT4gY29uc3RydWN0b3IucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlKSxcbiAgICByZWFzb24gPT4gY29uc3RydWN0b3IucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IGNvbnN0cnVjdG9yLnJlamVjdChyZWFzb24pKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyIHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uO1xuICBvblJlamVjdGVkOiBGdW5jdGlvbjtcbiAgcHJvbWlzZTogUHJvbWlzZTtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkge1xuICAgIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7XG4gICAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVlckNvbm5lY3Rpb25PZmZlckluaXQge1xuICBhdWRpb1RyYW5zY2VpdmVyPzogUlRDUnRwVHJhbnNjZWl2ZXI7XG4gIHZpZGVvVHJhbnNjZWl2ZXI/OiBSVENSdHBUcmFuc2NlaXZlcjtcbiAgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbjtcbiAgbG9jYWxPZmZlcjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfTtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gZmFsc2UpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiAhZW5jb2RlZEluc2VydGFibGVTdHJlYW1zKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgbGV0IHZpZGVvVHJhbnNjZWl2ZXIsIGF1ZGlvVHJhbnNjZWl2ZXI7XG5cbiAgICAgICAgaWYgKHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywge2RpcmVjdGlvbn0pO1xuICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigndmlkZW8nLCB7ZGlyZWN0aW9ufSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcixcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXJlY3Rpb24gPT09ICdyZWN2b25seScgPyB7XG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgIH0gOiB7fTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5QZWVyQ29ubmVjdGlvblNlcnZpY2UuaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuL1NkcFBhcnNlcic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y01vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1N0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWUpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF90cmFja3NUb01vbml0b3I6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICB0aGlzLl90cmFja3NUb01vbml0b3IgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5tYXAodHJhY2sgPT4gdHJhY2sua2luZCkgfHwgW107XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+IHtcbiAgICByZXR1cm4gdGhpcy5fcnRjU3RhdGlzdGljO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc01vbml0b3JSdW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5nZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy51cGRhdGVTdGF0aXN0aWNMZWdhY3koKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW0pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhudWxsKVxuICAgICAgLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuXG4gICAgICAgIGlmIChzdGF0cykge1xuICAgICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgICBsZXQgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgICB0aW1lRGVsdGEgKiAxMDAwKSA6IDA7XG5cbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGtpbmQsXG4gICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgICAgYnl0ZXNSZWNlaXZlZDogcmVwb3J0LmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzTG9zdDogcmVwb3J0LnBhY2tldHNMb3N0LFxuICAgICAgICAgICAgICAgICAgcGFja2V0c1JlY2VpdmVkOiByZXBvcnQucGFja2V0c1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgY29kZWM6IGNvZGVjIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUoa2luZCksXG4gICAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRGVjb2RlZDtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3Nba2luZF0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0c0xlZ2FjeSgpLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgICAgc3RhdHMucmVzdWx0KCkuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICByZXBvcnQubmFtZXMoKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIGlmIChuYW1lID09PSAnZ29vZ1JUVCcpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ3NzcmMnKSB7XG4gICAgICAgICAgY29uc3QgbWVkaWFUeXBlID0gcmVwb3J0LnN0YXQoJ21lZGlhVHlwZScpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0gPSB7dGltZXN0YW1wOiBEYXRlLm5vdygpfTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3NzcmMnXSA9IHJlcG9ydC5zdGF0KCdzc3JjJykudG9TdHJpbmcoKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ21lZGlhVHlwZSddID0gbWVkaWFUeXBlO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnYnl0ZXNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ2J5dGVzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNMb3N0J10gPSByZXBvcnQuc3RhdCgncGFja2V0c0xvc3QnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNSZWNlaXZlZCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnY29kZWMnXSA9IHJlcG9ydC5zdGF0KCdnb29nQ29kZWNOYW1lJykudG9TdHJpbmcoKSB8fCB0aGlzLmdldENvZGVjQnlUeXBlKG1lZGlhVHlwZSk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydyb3VuZFRyaXBUaW1lJ10gPSByb3VuZFRyaXBUaW1lO1xuXG4gICAgICAgICAgaWYgKG1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5zdGF0KCdmcmFtZXNEZWNvZGVkJyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZwcyddID0gKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAxMDAwIHx8IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWUpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9hdmFpbGFibGVUcmFja3M6IHtcbiAgICBhdWRpbzogYm9vbGVhbjtcbiAgICB2aWRlbzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIGVzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW0pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhudWxsKVxuICAgICAgLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3Nba2luZF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzU2VudCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1NlbnQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgICAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudDogcmVwb3J0LnJldHJhbnNtaXR0ZWRCeXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmaXJDb3VudCddID0gcmVwb3J0LmZpckNvdW50O1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRW5jb2RlZCddID0gcmVwb3J0LmZyYW1lc0VuY29kZWQ7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2h1Z2VGcmFtZXNTZW50J10gPSByZXBvcnQuaHVnZUZyYW1lc1NlbnQ7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlVGltZSddID0gcmVwb3J0LnRvdGFsRW5jb2RlVGltZTtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRW5jb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNFbmNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtzZHBTcGxpdEJ5TGluZXMuZmluZChpID0+IGkuaW5jbHVkZXMoYG09JHt0eXBlfWApKS5zcGxpdCgnICcpWzNdfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lLnNwbGl0KCcgJylbMV07XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uLCB7UGVlckNvbm5lY3Rpb25FdmVudHN9IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY29ubmVjdGlvblN0YXRlO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGU7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZTogUGVlckNvbm5lY3Rpb25FdmVudHMsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGU6IFBlZXJDb25uZWN0aW9uRXZlbnRzLCBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdCwgb3B0aW9ucz86IGJvb2xlYW4gfCBFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6IChUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogQXJyYXk8VD4sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6IEFycmF5PChUKSA9PiB2b2lkPjtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6IChUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPChUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IFVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IHtJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcn0gZnJvbSAnLi4vZG9tL0lDb25maWd1cmF0aW9uUGFyYW1hdGVyUmVhZGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlLCBTaGFrYVR5cGUsIFdlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL1N0cmVhbVR5cGVzJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IHdpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB3aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ10gfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86IChwbGF5ZXI6IFNoYWthVHlwZSkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyOiBJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciA9IG5ldyBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyKCk7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6IChXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAoU2hha2FUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6IChIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJyk7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmXG4gICAgICAgIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gIFNESy5kaXNwb3NlKCk7XG59KTtcblxuU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuaW5pdCgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBVUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi8uLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi8uLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBTdHJlYW1GYWN0b3J5IGZyb20gJy4uL3N0cmVhbWluZy9TdHJlYW1GYWN0b3J5JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWwgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdDaGFubmVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlWaWRlb0VsZW1lbnQ6IFJlYWRPbmx5U3ViamVjdDxIVE1MVmlkZW9FbGVtZW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbjogUmVhZE9ubHlTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5Qml0cmF0ZUxpbWl0OiBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVzb2x1dGlvbjogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG9wdGlvbnM/OiBDaGFubmVsT3B0aW9ucykge1xuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pO1xuICAgIGNvbnN0IGNoYW5uZWxDb250ZXh0T3B0aW9uczogQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge3RhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnfTtcbiAgICBjb25zdCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICBoYXNJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8uYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gbmV3IENoYW5uZWxDb250ZXh0KGNoYW5uZWxDb250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBuZXcgU3RyZWFtVHJhbnNmb3JtQ29udGV4dChzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9jaGFubmVsU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9yZWFkT25seVZpZGVvRWxlbWVudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD4odGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50KTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbik7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhdGUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50Pih0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludCk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbSk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcbiAgICB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5ID0gbmV3IFNlc3Npb25UZWxlbWV0cnkoU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG4gICAgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyID0gdGhpcy5oYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gdmlkZW9FbGVtZW50O1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0uc3Vic2NyaWJlKHN0cmVhbSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5kaXNwb3NlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMudmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5ID0gbmV3IFZpZGVvVGVsZW1ldHJ5KHRoaXMuc3RyZWFtSWQsIFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5zZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lKHRoaXMudmlkZW9FbGVtZW50KTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5zZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmcodGhpcy52aWRlb0VsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuU3RvcHBlZCkge1xuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMucmVzdGFydEFmdGVyU3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlICE9PSBDaGFubmVsU3RhdGUuUGxheWluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB2aWRlb0VsZW1lbnQoKTogSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldCB2aWRlb0VsZW1lbnQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHV0aW9uLnZhbHVlLndpZHRoICE9PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCB8fCB0aGlzLnJlc29sdXRpb24udmFsdWUuaGVpZ2h0ICE9PSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IG5ldyBEaW1lbnNpb24odmlkZW9FbGVtZW50LnZpZGVvV2lkdGgsIHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBEaW1lbnNpb24uZW1wdHk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgYXV0b011dGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkO1xuICB9XG5cbiAgZ2V0IGF1dG9QYXVzZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwbGF5aW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGxheWluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCB0YXJnZXRMYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnO1xuICB9XG5cbiAgZ2V0IGxhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMYWc7XG4gIH1cblxuICBnZXQgYml0cmF0ZUxpbWl0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlc29sdXRpb247XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHNldEJpdHJhdGVMaW1pdChiaXRyYXRlTGltaXQ6IEJpdHNQZXJTZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSBiaXRyYXRlTGltaXQ7XG4gIH1cblxuICBjbGVhckJpdHJhdGVMaW1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kID0gMDtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgQml0cmF0ZU1vZGUuUmVzZXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXJnZXRMYWcobGFnOiBNaWxsaXNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZy52YWx1ZSA9IGxhZztcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBtdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5tdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygnYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlICYmIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggaW5zZXJ0YWJsZS1zdHJlYW1zIGFuZCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBhcmUgZW5hYmxlZCwgb25seSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGhhc0VuY29kZWRTdHJlYW1TaW5rID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrICYmIGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBjYWxsYmFjayBhbmQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHNpbmsgZnVuY3Rpb24gZm91bmQsIG9ubHkgdXNlIG9uZSB0eXBlIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgTWVkaWEgU3RyZWFtIFRyYWNrIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIShGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpzdGFydCcpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUGxheWVyID0gU3RyZWFtRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayk7XG5cbiAgICBpZiAoIXN0cmVhbVBsYXllcikge1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW1QbGF5ZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAsXG4gICAgICB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50LmJpbmQodGhpcykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBjaGFubmVsJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdGFydEFmdGVyU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5lbnVtIENoYW5uZWxTdGF0ZSB7XG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyxcbiAgUGF1c2VkLFxuICBQbGF5aW5nLFxuICBSZWNvdmVyaW5nLFxuICBSZWNvbm5lY3RpbmcsXG4gIFN0YW5kQnksXG4gIFN0b3BwZWQsXG4gIFVuYXV0aG9yaXplZCxcbiAgR2VvUmVzdHJpY3RlZCxcbiAgR2VvQmxvY2tlZCxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlLFxuICBDb25maWd1cmF0aW9uRXJyb3IsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBDbGllbnRTdGFydEVycm9yLFxuICBFcnJvclxufVxuXG5leHBvcnQgZGVmYXVsdCBDaGFubmVsU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG50eXBlIENyZWF0ZUNoYW5uZWxPcHRpb25zID0ge1xuICB2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVscyB7XG4gIHN0YXRpYyBjcmVhdGVDaGFubmVsKG9wdGlvbnM6IENyZWF0ZUNoYW5uZWxPcHRpb25zKTogQ2hhbm5lbCB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbm5lbE9wdGlvbnM6IENoYW5uZWxPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zLnRhcmdldExhZyxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWwob3B0aW9ucy52aWRlb0VsZW1lbnQsIG9wdGlvbnMudG9rZW4sIGNoYW5uZWxPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVscyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbSwgU3Vic2NyaWJlU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD47XG4gIHN0YXRlOiBTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIGF1dG9NdXRlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0b1BhdXNlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwbGF5aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICB0YXJnZXRMYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBsYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBiaXRyYXRlTGltaXQ6IFN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHJlc29sdXRpb246IFN1YmplY3Q8RGltZW5zaW9uPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50PjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPjtcbiAgdmlkZW9UZWxlbWV0cnk6IFZpZGVvVGVsZW1ldHJ5O1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYztcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWM7XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDaGFubmVsQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnJlbmRlcmVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSBuZXcgU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50PihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuU3RhcnRpbmcpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4oMCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4obnVsbCk7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1mYWxsdGhyb3VnaFxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQudmFsdWUgJiYgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhbmRCeTtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbT47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0luc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luaztcbiAgICB0aGlzLmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbms7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJpID0gbmV3IFVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KVxuICAgICAgKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBVUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVJlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU3Vic2NyaWJlU3RhdHVzO1xuICBzdHJlYW0/OiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogUHVibGlzaFN0YXR1cztcbiAgc3RyZWFtPzogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpXG4gICAgICApXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElTdWJzY3JpYmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIG5ldyBFcnJvcihgQWRkIGljZSBjYW5kaWRhdGVzIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgc3RyZWFtJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3I/LnNlbmRCZWFjb24pIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBuYXZpZ2F0b3Iuc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDY6XG4gICAgICAgIHJldHVybiAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU3Vic2NyaWJlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU3Vic2NyaWJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlUmVzcG9uc2U7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVSZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBzdWJzY3JpYmVSZXNwb25zZS5zdHJlYW0gPSB7XG4gICAgICB0ZW5hbmN5LFxuICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgfTtcblxuICAgIHN1YnNjcmliZVJlc3BvbnNlLmxhZyA9IGRhdGEubGFnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElQdWJsaXNoUmVzcG9uc2U7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlOiBJUHVibGlzaFJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHB1Ymxpc2hSZXNwb25zZS5zdHJlYW0gPSB7XG4gICAgICB0ZW5hbmN5LFxuICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IHtpY2VTZXJ2ZXJzOiBbXX07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgICB1cmxzOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJscyxcbiAgICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPSBjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSURlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgUmVhbFRpbWVQdWJsaXNoZXIgZnJvbSAnLi9SZWFsVGltZVB1Ymxpc2hlcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3Qgb25lSG91ckluTWlsbGlzZWNvbmRzID0gMzYwMCAqIDEwMDA7XG5jb25zdCBtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAyICogb25lSG91ckluTWlsbGlzZWNvbmRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlclN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVB1Ymxpc2hpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBuZXcgUHVibGlzaGVyQ29udGV4dChuYW1lKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbT4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwdWJsaXNoaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgc2V0TWVkaWFTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKG1lZGlhVHJhY2sgPT4ge1xuICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuZ2V0U2VuZGVycygpLmZvckVhY2goc2VuZGVyID0+IHtcbiAgICAgICAgICBpZiAobWVkaWFUcmFjay5raW5kID09PSBzZW5kZXI/LnRyYWNrPy5raW5kICYmIG1lZGlhVHJhY2suaWQgIT09IHNlbmRlci50cmFjay5pZCkge1xuICAgICAgICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayhtZWRpYVRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUHVibGlzaGVyID0gbmV3IFJlYWxUaW1lUHVibGlzaGVyKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIHJldHVybiBzdHJlYW1QdWJsaXNoZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgcHVibGlzaGluZycsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSAwO1xuXG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gRGF0ZS5ub3coKSAtIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcztcblxuICAgICAgICBpZiAobWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIDw9IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdIFslc10gYWZ0ZXIgZXhjZWVkaW5nIHRpbWVvdXQnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgcHVibGlzaGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjaGFubmVsIG5vdCBmb3VuZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7UHVibGlzaFN0YXR1c30gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJDb250ZXh0IHtcbiAgcHVibGlzaGVySW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcHVibGlzaGVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBzdGF0ZTogU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGlzaGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50PjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz47XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuICBzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50PihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4obnVsbCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZSAmJiBuYW1lLmxlbmd0aCA/IG5hbWUgOiB0aGlzLmdlbmVyYXRlU2NyZWVuTmFtZSgpO1xuICAgIHRoaXMuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcsXG4gIFB1Ymxpc2hpbmcsXG4gIFJlY292ZXJpbmcsXG4gIFJlY29ubmVjdGluZyxcbiAgU3RvcHBlZCxcbiAgVW5hdXRob3JpemVkLFxuICBHZW9SZXN0cmljdGVkLFxuICBHZW9CbG9ja2VkLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUsXG4gIE5vdEZvdW5kLFxuICBDb25maWd1cmF0aW9uRXJyb3IsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBDbGllbnRTdGFydEVycm9yLFxuICBFcnJvclxufVxuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBQdWJsaXNoZXIgZnJvbSAnLi9QdWJsaXNoZXInO1xuXG50eXBlIENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMgPSB7XG4gIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbTtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJzIHtcbiAgc3RhdGljIGNyZWF0ZVB1Ymxpc2hlcihvcHRpb25zOiBDcmVhdGVQdWJsaXNoZXJPcHRpb25zKTogUHVibGlzaGVyIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFB1Ymxpc2hlcihvcHRpb25zLm1lZGlhU3RyZWFtLCBvcHRpb25zLnRva2VuLCBvcHRpb25zLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1B1Ymxpc2hlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBSdGNQdWJsaXNoTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IHNvZnRSZXN0YXJ0SW50ZXJ2YWwgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVB1Ymxpc2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVB1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBwdWJsaXNoZXJDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaSwgdG9rZW4sIGxpc3Rlbk9uU3RyZWFtU2V0dXApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICAgICAgICAgIGxvY2FsT2ZmZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCh7c3RhdHVzLCBzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZX0pID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFB1Ymxpc2ggY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdG9wIG5vcm1hbGx5IHRoZSBwZWVyIGNvbm5lY3Rpb24gaXMgdW5yZWdpc3RlcmVkIGZpcnN0LlxuICAgICAgICAgICAgICAgIC8vIFRodXMgYW55dGltZSB3ZSBzZWUgYSBjbG9zZWQgcGVlciBjb25uZWN0aW9uIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGl0IGlzIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGFuc3dlci5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjUHVibGlzaE1vbml0b3IgPSBuZXcgUnRjUHVibGlzaE1vbml0b3IocGVlckNvbm5lY3Rpb24sIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5yb3VuZFRyaXBUaW1lIC8gNCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQocnRjUHVibGlzaE1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSBydGNQdWJsaXNoTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IGNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Rpc2Nvbm5lY3RlZCcgfHwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBjbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IHtTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi8uLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4uLy4uL3J0Yy9TZHBQYXJzZXInO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmksIHRva2VuLCBsaXN0ZW5PblN0cmVhbVNldHVwLCBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICBsb2NhbE9mZmVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHtzdGF0dXMsIHN0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9KSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPE1lZGlhU3RyZWFtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQub25UcmFja0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpLCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGUuc3RyZWFtcykge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpO1xuICAgICAgICAgICAgICB9LCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHBlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtkaXNwb3NhYmxlc30gPSBJbnNlcnRhYmxlU3RyZWFtcy5hcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCksIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSB0cmFuc2Zvcm1lZFN0cmVhbTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yID0gbmV3IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKHBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbSwgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24gPSBydGNDb25uZWN0aW9uTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiAhdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdWRpb1RyYWNrRmFpbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVHJhY2tGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLmF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrRmFpbGVkICYmIG5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpICYmIG5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID8gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgOiBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgc3RhdGUgcmVzdG9yZWQgdG8gWyVzXSBhZnRlciByZWNvbm5lY3RpbmcnLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbSB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsobW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElFbmNvZGVkU3RyZWFtU2luaykge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAyLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRW5jb2RlZFN0cmVhbVNpbmsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBhcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihzdHJlYW06IE1lZGlhU3RyZWFtLCByZWNlaXZlcnM6IFJUQ1J0cFJlY2VpdmVyW10sIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIHZpZGVvQ29kZWM6IHN0cmluZywgYXVkaW9Db2RlYzogc3RyaW5nKToge2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmUgPT4gcmVjZWl2ZS50cmFjayA9PT0gdHJhY2spWzBdO1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKGVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vV29ya2VyVHJhbnNmb3JtU3RyZWFtLnRzJywgaW1wb3J0Lm1ldGEudXJsKSwge3R5cGU6ICdtb2R1bGUnfSk7XG5cbiAgICAgICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGFzeW5jIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGV2ZW50LmRhdGEuY2h1bmspKSB7XG4gICAgICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2ZvcmNlSW52YWxpZEZyYW1lOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7XG4gICAgICAgICAgICAgICAga2luZDogdHJhY2sua2luZCxcbiAgICAgICAgICAgICAgICBjb2RlYzogdmlkZW9Db2RlY1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRWaWRlb0ZyYW1lLCBSVENFbmNvZGVkVmlkZW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgICAgICAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUodmlkZW9Db2RlYyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKHZpZGVvQ29kZWMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUgPT09IFNraXBGcmFtZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBzdXJyb2dhdGUgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWModmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh2aWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCByZWNlaXZlclN0cmVhbXMgPSByZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IHJlY2VpdmVyU3RyZWFtcy53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcilcbiAgICAgICAgICAgICAgLnBpcGVUbyhzaW5rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL1dvcmtlclRyYW5zZm9ybVN0cmVhbS50cycsIGltcG9ydC5tZXRhLnVybCksIHt0eXBlOiAnbW9kdWxlJ30pO1xuXG4gICAgICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLCBldmVudC5kYXRhLmNodW5rKSkge1xuICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtmb3JjZUludmFsaWRGcmFtZTogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge1xuICAgICAgICAgICAgICAgIGtpbmQ6IHRyYWNrLmtpbmQsXG4gICAgICAgICAgICAgICAgY29kZWM6IGF1ZGlvQ29kZWNcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG5cbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRBdWRpb0ZyYW1lLCBSVENFbmNvZGVkQXVkaW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRBdWRpb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjKGF1ZGlvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJTdHJlYW1zID0gcmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSByZWNlaXZlclN0cmVhbXMud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtkaXNwb3NhYmxlc307XG4gIH1cblxuICBzdGF0aWMgYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oc3RyZWFtOiBNZWRpYVN0cmVhbSwgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+LCBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPik6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSwgQXVkaW9EYXRhPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1BdWRpb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiBhdWRpb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogYXVkaW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKVxuICAgICAgICAgICAgICAucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgPSBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPiB7XG4gICAgKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrLCBjaHVuazogVCwgY29udHJvbGxlcjogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI8VD4pOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYWNrVHJhbnNmb3JtIHtcbiAgc3RhdGljIHZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybShtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSVN0cmVhbVRyYWNrVHJhbnNmb3JtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDMuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4ZjQsIDB4MDAsIDB4MGEsIDB4OTEsIDB4OWIsIDB4MmIsIDB4ZjEsIDB4ZjEsIDB4ZjgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDcsIDB4ODksIDB4MTIsIDB4Y2IsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4OWEsIDB4NjgsIDB4NDksIDB4YTgsIDB4NDEsIDB4NjgsIDB4OTksIDB4NGMsIDB4MGYsIDB4ZmYsIDB4OTIsIDB4ODFdKSwgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4MzEsIDB4MDMsIDB4MDAsIDB4ZTQsIDB4ZTAsIDB4YTgsIDB4OWIsIDB4MzcsIDB4YWYsIDB4MTAsIDB4NGYsIDB4NGYsIDB4YjEsIDB4MGEsIDB4MmYsIDB4ZTQsIDB4OTIsIDB4YzAsIDB4MWYsIDB4ZTcsIDB4NGYsIDB4NDYsIDB4ZmYsIDB4ZWUsIDB4NTEsIDB4YzEsIDB4NWQsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDg2LCAweDAwLCAweDQwLCAweDkyLCAweDljLCAweDI0LCAweDQ4LCAweDAwLCAweDAwLCAweDAzLCAweDcwLCAweDAwLCAweDAwLCAweDRiLCAweDQwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0ID0ge1xuICAgIElGcmFtZTogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NywgMHg0MiwgMHhjMCwgMHgwZCwgMHhkYSwgMHgxOCwgMHhkZSwgMHgyMiwgMHgyMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMywgMHhjOCwgMHhmMSwgMHg0MiwgMHhhYSwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhjZSwgMHgwZiwgMHhjOCwgLy8gUGljdHVyZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHg1ZiwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAyOTUpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiAoU0VJKVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4NCwgMHgwNSwgLi4ubmV3IFVpbnQ4QXJyYXkoMykuZmlsbCgweGZmKSwgMHgwZiwgMHg0NSwgMHgwMCwgMHgwMSwgMHg1NywgMHg5ZiwgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3OF0pLCAvLyBTbGljZSBsYXllcjogSWRyIGRhdGFcbiAgICBQRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDMsIC4uLm5ldyBVaW50OEFycmF5KDQwKS5maWxsKDB4ZmYpLCAweGE0LCAuLi5uZXcgVWludDhBcnJheSgxMDM2NCkuZmlsbCgweGZmKSwgMHg4MCwgLy8gU0VJXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDIwLCAweDE1LCAweGYwLCAweDRiXSkgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4ID0gMTA0MTg7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzTW9iaWxlQ2hyb21lIHx8IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnT1BVUyc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NC5JRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnSDI2NCc6IHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDgnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA5Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKGNvZGVjOiBzdHJpbmcpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMudG9VcHBlckNhc2UoKSA9PT0gJ0gyNjQnKSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICBjb25zdCBzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcjtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpO1xuXG4gICAgICBpZiAoc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA+IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCkge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYml0TWFzazEgPSAweDBlO1xuICAgIGNvbnN0IGJpdE1hc2syID0gMHgwMTtcbiAgICBjb25zdCBiaXRTaGlmdFJpZ2h0QnkxID0gMTtcbiAgICBjb25zdCBiaXRTaGlmdExlZnRCeTcgPSA3O1xuICAgIGNvbnN0IGJ5dGUxID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazEpID4+IGJpdFNoaWZ0UmlnaHRCeTEpO1xuICAgIGNvbnN0IGJ5dGUyID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazIpIDw8IGJpdFNoaWZ0TGVmdEJ5Nyk7XG4gICAgY29uc3QgY29weU9mRHVtbXlQRnJhbWVzID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuUEZyYW1lLnNsaWNlKCk7XG4gICAgY29uc3QgYnVmZmVyID0gY29weU9mRHVtbXlQRnJhbWVzLmJ1ZmZlcjtcbiAgICBjb25zdCBidWZmZXJJbmRleCA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleDtcblxuICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gfD0gYnl0ZTE7XG4gICAgYnVmZmVyW2J1ZmZlckluZGV4ICsgMV0gfD0gYnl0ZTI7XG4gICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcisrO1xuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBVUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2RvbWFpbiA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpbWVuc2lvbiBpbXBsZW1lbnRzIElDb21wYXJhYmxlPERpbWVuc2lvbj4ge1xuICByZWFkb25seSB3aWR0aDogbnVtYmVyO1xuICByZWFkb25seSBoZWlnaHQ6IG51bWJlcjtcblxuICBzdGF0aWMgZ2V0IGVtcHR5KCk6IERpbWVuc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oMCwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIGVxdWFscyhvdGhlcjogRGltZW5zaW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMud2lkdGggPT09IG90aGVyLndpZHRoICYmIHRoaXMuaGVpZ2h0ID09PSBvdGhlci5oZWlnaHQ7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLndpZHRofXgke3RoaXMuaGVpZ2h0fWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yU3RhbGw6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgX2xpc3RlbkZvckNvbnRpbnVhdGlvbjogKGV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIF90aW1lVG9GaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX3ZpZGVvU3RhbGxlZDogbnVtYmVyO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdmlkZW9SZXNvbHV0aW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlO1xuICBwcml2YXRlIF9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXI6IERpc3Bvc2FibGU7XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtSWQ6IHN0cmluZywgcGFnZUxvYWRUaW1lOiBudW1iZXIsIGNoYW5uZWxTdGFydFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IGNoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSA9ICgpOiB2b2lkID0+IHRoaXMuY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIpO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuRm9yU3RhbGwgPSAoKTogdm9pZCA9PiB0aGlzLm9uU3RhbGwoKTtcblxuICAgIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbiA9IChldmVudCk6IHZvaWQgPT4gdGhpcy5vbkNvbnRpbnVhdGlvbihldmVudCwgdmlkZW8pO1xuXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZHVyYXRpb25TaW5jZVBhZ2VMb2FkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHJldHVybiBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMucHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93KTtcbiAgICB0aGlzLnB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lci5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk6IHZvaWQge1xuICAgIHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fdGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBGaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk6IHZvaWQge1xuICAgIGlmICghdmlkZW8uYnVmZmVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSB2aWRlby5idWZmZXJlZC5sZW5ndGg7XG4gICAgY29uc3QgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQgPSBldmVudC50eXBlID09PSAncGxheWluZydcbiAgICB8fCBidWZmZXJMZW5ndGggPiAwID8gKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcydcbiAgICAgIHx8IGV2ZW50LnR5cGUgPT09ICd0aW1ldXBkYXRlJylcbiAgICAgICYmIHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKSA9PT0gdGhpcy5fbGFzdFByb2dyZXNzIDogdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fdmlkZW9TdGFsbGVkIHx8IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgIHRoaXMuX2xhc3RQcm9ncmVzcyA9IHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lU2luY2VTdG9wID0gRGF0ZS5ub3coKSAtIHRoaXMuX3ZpZGVvU3RhbGxlZDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQnVmZmVyaW5nLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VTdG9wfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgcmVjb3ZlcmVkIGZyb20gc3RhbGwgYWZ0ZXIgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VTdG9wKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBudWxsO1xuICB9XG5cbiAgb25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKG5ld1Jlc29sdXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld1Jlc29sdXRpb259LFxuICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5fdmlkZW9SZXNvbHV0aW9uID8ge3N0cmluZzogdGhpcy5fdmlkZW9SZXNvbHV0aW9ufSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9SZXNvbHV0aW9uID0gbmV3UmVzb2x1dGlvbjtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi9cbiAgbW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgICByZXR1cm4gZTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICB2YXIgdCxcbiAgICBlID0ge30sXG4gICAgciA9IE9iamVjdC5wcm90b3R5cGUsXG4gICAgbiA9IHIuaGFzT3duUHJvcGVydHksXG4gICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fCBmdW5jdGlvbiAodCwgZSwgcikge1xuICAgICAgdFtlXSA9IHIudmFsdWU7XG4gICAgfSxcbiAgICBpID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcbiAgICBhID0gaS5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIixcbiAgICBjID0gaS5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCIsXG4gICAgdSA9IGkudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG4gIGZ1bmN0aW9uIGRlZmluZSh0LCBlLCByKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7XG4gICAgICB2YWx1ZTogcixcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgIHdyaXRhYmxlOiAhMFxuICAgIH0pLCB0W2VdO1xuICB9XG4gIHRyeSB7XG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAodCkge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZSh0LCBlLCByKSB7XG4gICAgICByZXR1cm4gdFtlXSA9IHI7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB3cmFwKHQsIGUsIHIsIG4pIHtcbiAgICB2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBlIDogR2VuZXJhdG9yLFxuICAgICAgYSA9IE9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLFxuICAgICAgYyA9IG5ldyBDb250ZXh0KG4gfHwgW10pO1xuICAgIHJldHVybiBvKGEsIFwiX2ludm9rZVwiLCB7XG4gICAgICB2YWx1ZTogbWFrZUludm9rZU1ldGhvZCh0LCByLCBjKVxuICAgIH0pLCBhO1xuICB9XG4gIGZ1bmN0aW9uIHRyeUNhdGNoKHQsIGUsIHIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJub3JtYWxcIixcbiAgICAgICAgYXJnOiB0LmNhbGwoZSwgcilcbiAgICAgIH07XG4gICAgfSBjYXRjaCAodCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJ0aHJvd1wiLFxuICAgICAgICBhcmc6IHRcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGUud3JhcCA9IHdyYXA7XG4gIHZhciBoID0gXCJzdXNwZW5kZWRTdGFydFwiLFxuICAgIGwgPSBcInN1c3BlbmRlZFlpZWxkXCIsXG4gICAgZiA9IFwiZXhlY3V0aW5nXCIsXG4gICAgcyA9IFwiY29tcGxldGVkXCIsXG4gICAgeSA9IHt9O1xuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cbiAgdmFyIHAgPSB7fTtcbiAgZGVmaW5lKHAsIGEsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG4gIHZhciBkID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuICAgIHYgPSBkICYmIGQoZCh2YWx1ZXMoW10pKSk7XG4gIHYgJiYgdiAhPT0gciAmJiBuLmNhbGwodiwgYSkgJiYgKHAgPSB2KTtcbiAgdmFyIGcgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPSBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwKTtcbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHQpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgZGVmaW5lKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKHQsIGUpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UociwgbywgaSwgYSkge1xuICAgICAgdmFyIGMgPSB0cnlDYXRjaCh0W3JdLCB0LCBvKTtcbiAgICAgIGlmIChcInRocm93XCIgIT09IGMudHlwZSkge1xuICAgICAgICB2YXIgdSA9IGMuYXJnLFxuICAgICAgICAgIGggPSB1LnZhbHVlO1xuICAgICAgICByZXR1cm4gaCAmJiBcIm9iamVjdFwiID09IF90eXBlb2YoaCkgJiYgbi5jYWxsKGgsIFwiX19hd2FpdFwiKSA/IGUucmVzb2x2ZShoLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHQsIGksIGEpO1xuICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIGludm9rZShcInRocm93XCIsIHQsIGksIGEpO1xuICAgICAgICB9KSA6IGUucmVzb2x2ZShoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgdS52YWx1ZSA9IHQsIGkodSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIHQsIGksIGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGEoYy5hcmcpO1xuICAgIH1cbiAgICB2YXIgcjtcbiAgICBvKHRoaXMsIFwiX2ludm9rZVwiLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodCwgbikge1xuICAgICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IGUoZnVuY3Rpb24gKGUsIHIpIHtcbiAgICAgICAgICAgIGludm9rZSh0LCBuLCBlLCByKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gciA9IHIgPyByLnRoZW4oY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChlLCByLCBuKSB7XG4gICAgdmFyIG8gPSBoO1xuICAgIHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuICAgICAgaWYgKG8gPT09IGYpIHRocm93IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIGlmIChvID09PSBzKSB7XG4gICAgICAgIGlmIChcInRocm93XCIgPT09IGkpIHRocm93IGE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IHQsXG4gICAgICAgICAgZG9uZTogITBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7Oykge1xuICAgICAgICB2YXIgYyA9IG4uZGVsZWdhdGU7XG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgdmFyIHUgPSBtYXliZUludm9rZURlbGVnYXRlKGMsIG4pO1xuICAgICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgICBpZiAodSA9PT0geSkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwibmV4dFwiID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO2Vsc2UgaWYgKFwidGhyb3dcIiA9PT0gbi5tZXRob2QpIHtcbiAgICAgICAgICBpZiAobyA9PT0gaCkgdGhyb3cgbyA9IHMsIG4uYXJnO1xuICAgICAgICAgIG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuICAgICAgICB9IGVsc2UgXCJyZXR1cm5cIiA9PT0gbi5tZXRob2QgJiYgbi5hYnJ1cHQoXCJyZXR1cm5cIiwgbi5hcmcpO1xuICAgICAgICBvID0gZjtcbiAgICAgICAgdmFyIHAgPSB0cnlDYXRjaChlLCByLCBuKTtcbiAgICAgICAgaWYgKFwibm9ybWFsXCIgPT09IHAudHlwZSkge1xuICAgICAgICAgIGlmIChvID0gbi5kb25lID8gcyA6IGwsIHAuYXJnID09PSB5KSBjb250aW51ZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHAuYXJnLFxuICAgICAgICAgICAgZG9uZTogbi5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBcInRocm93XCIgPT09IHAudHlwZSAmJiAobyA9IHMsIG4ubWV0aG9kID0gXCJ0aHJvd1wiLCBuLmFyZyA9IHAuYXJnKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZSwgcikge1xuICAgIHZhciBuID0gci5tZXRob2QsXG4gICAgICBvID0gZS5pdGVyYXRvcltuXTtcbiAgICBpZiAobyA9PT0gdCkgcmV0dXJuIHIuZGVsZWdhdGUgPSBudWxsLCBcInRocm93XCIgPT09IG4gJiYgZS5pdGVyYXRvcltcInJldHVyblwiXSAmJiAoci5tZXRob2QgPSBcInJldHVyblwiLCByLmFyZyA9IHQsIG1heWJlSW52b2tlRGVsZWdhdGUoZSwgciksIFwidGhyb3dcIiA9PT0gci5tZXRob2QpIHx8IFwicmV0dXJuXCIgIT09IG4gJiYgKHIubWV0aG9kID0gXCJ0aHJvd1wiLCByLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSwgeTtcbiAgICB2YXIgaSA9IHRyeUNhdGNoKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcbiAgICBpZiAoXCJ0aHJvd1wiID09PSBpLnR5cGUpIHJldHVybiByLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBpLmFyZywgci5kZWxlZ2F0ZSA9IG51bGwsIHk7XG4gICAgdmFyIGEgPSBpLmFyZztcbiAgICByZXR1cm4gYSA/IGEuZG9uZSA/IChyW2UucmVzdWx0TmFtZV0gPSBhLnZhbHVlLCByLm5leHQgPSBlLm5leHRMb2MsIFwicmV0dXJuXCIgIT09IHIubWV0aG9kICYmIChyLm1ldGhvZCA9IFwibmV4dFwiLCByLmFyZyA9IHQpLCByLmRlbGVnYXRlID0gbnVsbCwgeSkgOiBhIDogKHIubWV0aG9kID0gXCJ0aHJvd1wiLCByLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKSwgci5kZWxlZ2F0ZSA9IG51bGwsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeSh0KSB7XG4gICAgdmFyIGUgPSB7XG4gICAgICB0cnlMb2M6IHRbMF1cbiAgICB9O1xuICAgIDEgaW4gdCAmJiAoZS5jYXRjaExvYyA9IHRbMV0pLCAyIGluIHQgJiYgKGUuZmluYWxseUxvYyA9IHRbMl0sIGUuYWZ0ZXJMb2MgPSB0WzNdKSwgdGhpcy50cnlFbnRyaWVzLnB1c2goZSk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeSh0KSB7XG4gICAgdmFyIGUgPSB0LmNvbXBsZXRpb24gfHwge307XG4gICAgZS50eXBlID0gXCJub3JtYWxcIiwgZGVsZXRlIGUuYXJnLCB0LmNvbXBsZXRpb24gPSBlO1xuICB9XG4gIGZ1bmN0aW9uIENvbnRleHQodCkge1xuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7XG4gICAgICB0cnlMb2M6IFwicm9vdFwiXG4gICAgfV0sIHQuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcbiAgfVxuICBmdW5jdGlvbiB2YWx1ZXMoZSkge1xuICAgIGlmIChlIHx8IFwiXCIgPT09IGUpIHtcbiAgICAgIHZhciByID0gZVthXTtcbiAgICAgIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcbiAgICAgIGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBvID0gLTEsXG4gICAgICAgICAgaSA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICBmb3IgKDsgKytvIDwgZS5sZW5ndGg7KSBpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gbmV4dC52YWx1ZSA9IGVbb10sIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgICAgICAgcmV0dXJuIG5leHQudmFsdWUgPSB0LCBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaS5uZXh0ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihfdHlwZW9mKGUpICsgXCIgaXMgbm90IGl0ZXJhYmxlXCIpO1xuICB9XG4gIHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbyhnLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgY29uZmlndXJhYmxlOiAhMFxuICB9KSwgbyhHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgXCJjb25zdHJ1Y3RvclwiLCB7XG4gICAgdmFsdWU6IEdlbmVyYXRvckZ1bmN0aW9uLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCB1LCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpLCBlLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAodCkge1xuICAgIHZhciBlID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuICEhZSAmJiAoZSA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHwgXCJHZW5lcmF0b3JGdW5jdGlvblwiID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcbiAgfSwgZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6ICh0Ll9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBkZWZpbmUodCwgdSwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSksIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnKSwgdDtcbiAgfSwgZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXdhaXQ6IHRcbiAgICB9O1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpLCBkZWZpbmUoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUsIGMsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3IsIGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuICAgIHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuICAgIHZhciBhID0gbmV3IEFzeW5jSXRlcmF0b3Iod3JhcCh0LCByLCBuLCBvKSwgaSk7XG4gICAgcmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKSA/IGEgOiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuICAgIH0pO1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoZyksIGRlZmluZShnLCB1LCBcIkdlbmVyYXRvclwiKSwgZGVmaW5lKGcsIGEsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGRlZmluZShnLCBcInRvU3RyaW5nXCIsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfSksIGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgdmFyIGUgPSBPYmplY3QodCksXG4gICAgICByID0gW107XG4gICAgZm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG4gICAgcmV0dXJuIHIucmV2ZXJzZSgpLCBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgZm9yICg7IHIubGVuZ3RoOykge1xuICAgICAgICB2YXIgdCA9IHIucG9wKCk7XG4gICAgICAgIGlmICh0IGluIGUpIHJldHVybiBuZXh0LnZhbHVlID0gdCwgbmV4dC5kb25lID0gITEsIG5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dC5kb25lID0gITAsIG5leHQ7XG4gICAgfTtcbiAgfSwgZS52YWx1ZXMgPSB2YWx1ZXMsIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldChlKSB7XG4gICAgICBpZiAodGhpcy5wcmV2ID0gMCwgdGhpcy5uZXh0ID0gMCwgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQsIHRoaXMuZG9uZSA9ICExLCB0aGlzLmRlbGVnYXRlID0gbnVsbCwgdGhpcy5tZXRob2QgPSBcIm5leHRcIiwgdGhpcy5hcmcgPSB0LCB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KSwgIWUpIGZvciAodmFyIHIgaW4gdGhpcykgXCJ0XCIgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG4gICAgfSxcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5kb25lID0gITA7XG4gICAgICB2YXIgdCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZSkge1xuICAgICAgaWYgKHRoaXMuZG9uZSkgdGhyb3cgZTtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShuLCBvKSB7XG4gICAgICAgIHJldHVybiBhLnR5cGUgPSBcInRocm93XCIsIGEuYXJnID0gZSwgci5uZXh0ID0gbiwgbyAmJiAoci5tZXRob2QgPSBcIm5leHRcIiwgci5hcmcgPSB0KSwgISFvO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbyA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBvID49IDA7IC0tbykge1xuICAgICAgICB2YXIgaSA9IHRoaXMudHJ5RW50cmllc1tvXSxcbiAgICAgICAgICBhID0gaS5jb21wbGV0aW9uO1xuICAgICAgICBpZiAoXCJyb290XCIgPT09IGkudHJ5TG9jKSByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICBpZiAoaS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGMgPSBuLmNhbGwoaSwgXCJjYXRjaExvY1wiKSxcbiAgICAgICAgICAgIHUgPSBuLmNhbGwoaSwgXCJmaW5hbGx5TG9jXCIpO1xuICAgICAgICAgIGlmIChjICYmIHUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoaS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF1KSB0aHJvdyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShpLmZpbmFsbHlMb2MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYWJydXB0OiBmdW5jdGlvbiBhYnJ1cHQodCwgZSkge1xuICAgICAgZm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuICAgICAgICB2YXIgbyA9IHRoaXMudHJ5RW50cmllc1tyXTtcbiAgICAgICAgaWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IG8uZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBpID0gbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSAmJiAoXCJicmVha1wiID09PSB0IHx8IFwiY29udGludWVcIiA9PT0gdCkgJiYgaS50cnlMb2MgPD0gZSAmJiBlIDw9IGkuZmluYWxseUxvYyAmJiAoaSA9IG51bGwpO1xuICAgICAgdmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG4gICAgICByZXR1cm4gYS50eXBlID0gdCwgYS5hcmcgPSBlLCBpID8gKHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMubmV4dCA9IGkuZmluYWxseUxvYywgeSkgOiB0aGlzLmNvbXBsZXRlKGEpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHQsIGUpIHtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG4gICAgICByZXR1cm4gXCJicmVha1wiID09PSB0LnR5cGUgfHwgXCJjb250aW51ZVwiID09PSB0LnR5cGUgPyB0aGlzLm5leHQgPSB0LmFyZyA6IFwicmV0dXJuXCIgPT09IHQudHlwZSA/ICh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnLCB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCIsIHRoaXMubmV4dCA9IFwiZW5kXCIpIDogXCJub3JtYWxcIiA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLCB5O1xuICAgIH0sXG4gICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2godCkge1xuICAgICAgZm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuICAgICAgICB2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcbiAgICAgICAgaWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgcmVzZXRUcnlFbnRyeShyKSwgeTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24gX2NhdGNoKHQpIHtcbiAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG4gICAgICAgIGlmIChyLnRyeUxvYyA9PT0gdCkge1xuICAgICAgICAgIHZhciBuID0gci5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChcInRocm93XCIgPT09IG4udHlwZSkge1xuICAgICAgICAgICAgdmFyIG8gPSBuLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkocik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIGRlbGVnYXRlWWllbGQoZSwgciwgbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHIsXG4gICAgICAgIG5leHRMb2M6IG5cbiAgICAgIH0sIFwibmV4dFwiID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSwgeTtcbiAgICB9XG4gIH0sIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9yZWdlbmVyYXRvclJ1bnRpbWUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUT0RPKEJhYmVsIDgpOiBSZW1vdmUgdGhpcyBmaWxlLlxuXG52YXIgcnVudGltZSA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3JlZ2VuZXJhdG9yUnVudGltZVwiKSgpO1xubW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL3BhY2thZ2VzL3J1bnRpbWUvcnVudGltZS5qcyNMNzM2PVxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIikge1xuICAgIGdsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbiAgfSBlbHNlIHtcbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xuICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJmdWxsXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IENoYW5uZWxzIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4uL3B1Ymxpc2gvUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi4vcHVibGlzaC9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZSxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiRGlzcG9zYWJsZSIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJEaXNwb3NhYmxlTGlzdCIsImRlZmF1bHREb2N1bWVudEZvY3VzSW50ZXJ2YWxUaW1lb3V0IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImRldGVjdFRhYkZvY3VzQ2hhbmdlIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImhpZGRlbiIsInZpc2liaWxpdHlDaGFuZ2UiLCJkb2N1bWVudCIsIl90eXBlb2YiLCJtc0hpZGRlbiIsIndlYmtpdEhpZGRlbiIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc0ZvcmVncm91bmQiLCJzZXRGb2N1c1N0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5Gb3JEb2N1bWVudEZvY3VzIiwiY2FsbCIsIl90aGlzMiIsIl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwiLCJ3aW5kb3ciLCJzZXRJbnRlcnZhbCIsImhhc0ZvY3VzIiwiY2xlYXJJbnRlcnZhbCIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsInNldFRpbWVvdXQiLCJpbWciLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsInJ0dCIsImxpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX2RvY3VtZW50IiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImJpbmQiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwiX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwibG9jYXRpb24iLCJob3N0bmFtZSIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJfZG9tYWluIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiRm9ybURhdGEiLCJhcHBlbmQiLCJyZWNvcmRzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwiYWJydXB0Iiwic2VudCIsInN0b3AiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJ0aGVuIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJfcmVmIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJQcm9taXNlIiwiY2FsbGJhY2siLCJUeXBlRXJyb3IiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJkb25lIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJpIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJfIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJ2aWRlb1RyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlciIsIm9wdGlvbnMiLCJhZGRUcmFuc2NlaXZlciIsInQwIiwidDEiLCJ0MiIsImNyZWF0ZU9mZmVyIiwidDMiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0NCIsInQ1IiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJSdGNDb25uZWN0aW9uTW9uaXRvciIsIm1lZGlhU3RyZWFtIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3RyYWNrc1RvTW9uaXRvciIsImdldFRyYWNrcyIsIm1hcCIsInRyYWNrIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJwYXJzZWRTRFAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfdXBkYXRlVGltZW91dCIsImNsZWFyVGltZW91dCIsIl91cGRhdGVTdGF0aXN0aWMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiYnl0ZXMiLCJieXRlc1JlY2VpdmVkIiwicHJldmlvdXNCeXRlc1JlY2VpdmVkIiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c0xvc3QiLCJwYWNrZXRzUmVjZWl2ZWQiLCJnZXRDb2RlY0J5VHlwZSIsInZpZGVvIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJnZXRTdGF0c0xlZ2FjeSIsIm5hbWVzIiwic3RhdCIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwicGFyc2VkTG9jYWxEZXNjcmlwdGlvbiIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfYXZhaWxhYmxlVHJhY2tzIiwiYXVkaW8iLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJmaXJDb3VudCIsImZyYW1lSGVpZ2h0IiwiZnJhbWVXaWR0aCIsImZyYW1lc0VuY29kZWQiLCJmcmFtZXNTZW50IiwiaGVhZGVyQnl0ZXNTZW50IiwiaHVnZUZyYW1lc1NlbnQiLCJwbGlDb3VudCIsInFwU3VtIiwidG90YWxFbmNvZGVUaW1lIiwidG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJ1c2VkQ29kZWNMaW5lIiwic2RwTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwic2V0Q29uZmlndXJhdGlvbiIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJzdWJzY3JpYmUiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJpbml0IiwiX2luaXRpYWxpemVkIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5VmlkZW9FbGVtZW50IiwiX3JlYWRPbmx5VG9rZW4iLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzdGFydCIsInBhdXNlIiwic3JjT2JqZWN0Iiwid2lkdGgiLCJ2aWRlb1dpZHRoIiwiaGVpZ2h0IiwidmlkZW9IZWlnaHQiLCJlbXB0eSIsImRpc3Bvc2FibGVzIiwic2V0Qml0cmF0ZUxpbWl0IiwiY2xlYXJCaXRyYXRlTGltaXQiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiUmVzZXQiLCJ1cGRhdGVUYXJnZXRMYWciLCJfc3RvcCIsImlzU3RhcnRpbmciLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIlVuYXV0aG9yaXplZCIsInZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsInZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsiLCJpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJTdGFydGluZyIsIlJlY292ZXJpbmciLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJjcmVhdGUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJfcmVmMiIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzNyIsInBsYXlQcm9taXNlIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiY2xpZW50VmVyc2lvbiIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwiaHR0cFJlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTUiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTgiLCJfeDE5IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gyMCIsIl94MjEiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJqc29uIiwicnRjQ29uZmlndXJhdGlvbiIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDIyIiwiX3gyMyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIl94MjQiLCJfeDI1IiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY2FsbGVlMTEkIiwiX2NvbnRleHQxMSIsIl94MjYiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMyIsIl9jYWxsZWUxMyQiLCJfY29udGV4dDEzIiwiX3gyOCIsIlB1Ymxpc2hlclN0YXRlIiwiUHVibGlzaGVyQ29udGV4dCIsIlJlYWxUaW1lUHVibGlzaGVyIiwib25lSG91ckluTWlsbGlzZWNvbmRzIiwibWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiUHVibGlzaGVyIiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcHVibGlzaGVyU3RhcnRUaW1lIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJwdWJsaXNoZXJEaXNwb3NhYmxlcyIsIlB1Ymxpc2hpbmciLCJzZXRNZWRpYVN0cmVhbSIsIm1lZGlhVHJhY2siLCJzZW5kZXIiLCJfc2VuZGVyJHRyYWNrIiwicmVwbGFjZVRyYWNrIiwic3RyZWFtUHVibGlzaGVyIiwic3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyIsIk5vdEZvdW5kIiwicmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCIsInB1Ymxpc2hlckluaXRpYWxpemF0aW9uIiwiZ2VuZXJhdGVTY3JlZW5OYW1lIiwibWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiUHVibGlzaGVycyIsImNyZWF0ZVB1Ymxpc2hlciIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwic29mdFJlc3RhcnRJbnRlcnZhbCIsInB1Ymxpc2hlckNvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJvbkxpbmUiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjMkIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsIl9yZWY0IiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfcmVmNSIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsImFuc3dlciIsIl9yZWY2IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJ0Y1B1Ymxpc2hNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIl9vYmplY3RTcHJlYWQiLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiaXNDbGllbnRPZmZlckZsb3ciLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQiLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQiLCJSZWFsVGltZVN0cmVhbSIsImNoYW5uZWxDb250ZXh0Iiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkYXAiLCJhcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsIl9JbnNlcnRhYmxlU3RyZWFtcyRhcDIiLCJhcHBseUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWVkU3RyZWFtIiwicnRjQ29ubmVjdGlvbk1vbml0b3IiLCJydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiIsInJ0Y1ZpZGVvU3RhdGlzdGljIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJhdWRpb1RyYWNrRmFpbGVkIiwidmlkZW9UcmFja0ZhaWxlZCIsIlJlYWxUaW1lU3RyZWFtRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwibW9kZSIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJyZWNlaXZlcnMiLCJyZWNlaXZlciIsInJlY2VpdmUiLCJ3b3JrZXIiLCJXb3JrZXIiLCJpbXBvcnQiLCJtZXRhIiwib25tZXNzYWdlIiwiZXZlbnQiLCJjaHVuayIsInBvc3RNZXNzYWdlIiwiZm9yY2VJbnZhbGlkRnJhbWUiLCJ0cmFuc2Zvcm0iLCJ0ZXJtaW5hdGUiLCJlbmNvZGVkU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJjb250cm9sbGVyIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJlbnF1ZXVlIiwidHJhbnNmb3JtZXIiLCJUcmFuc2Zvcm1TdHJlYW0iLCJyZWNlaXZlclN0cmVhbXMiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ3cml0YWJsZSIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwiTWVkaWFTdHJlYW0iLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwidmlkZW9UcmFjayIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInJlbW92ZVRyYWNrIiwiYXVkaW9UcmFjayIsIlN5bWJvbCIsInRvVXBwZXJDYXNlIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsIk9QVVMiLCJidWZmZXIiLCJfc2luZ2xlWmVyb0J5dGUiLCJfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9kdW1teTgyeDgySDI2NCIsIklGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJIMjY0IiwiVlA4IiwiVlA5IiwiX2lzQW5kcm9pZENocm9tZSIsImdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwic2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciIsImJpdE1hc2sxIiwiYml0TWFzazIiLCJiaXRTaGlmdFJpZ2h0QnkxIiwiYml0U2hpZnRMZWZ0Qnk3IiwiYnl0ZTEiLCJieXRlMiIsImNvcHlPZkR1bW15UEZyYW1lcyIsIlBGcmFtZSIsImJ1ZmZlckluZGV4IiwiX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleCIsIl9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiaXNBbmRyb2lkIiwiVWludDhBcnJheSIsIl9pc01vYmlsZUNocm9tZSIsIl9pc1NhZmFyaSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfbmV0d29ya01vbml0b3IiLCJyZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlIiwicmVjb3JkTmV0d29ya1JUVFVwZGF0ZSIsInJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlIiwiZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJyZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUiLCJ0aW1lU2luY2VMYXN0Q2hhbmdlIiwibmV3UlRUIiwib2xkUnR0IiwiX2xhc3ROZXR3b3JrU3RhdGlzdGljcyIsIm5ld05ldHdvcmtUeXBlIiwib2xkTmV0d29ya1R5cGUiLCJuZXdDYXBhY2l0eSIsIm9sZENhcGFjaXR5IiwiZmxvYXQiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
|
11703
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUN4SyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDNUQ7RUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFBRTtFQUN4TGxCLEdBQUcsRUFBRSxJQUFJa0IsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFH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O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7Ozs7V0N6QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOzs7OztXQ0pBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7V0NOQTs7Ozs7V0NBQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7O0FBRXlCO0FBQ21CO0FBQ1E7QUFDTDtBQUNRO0FBT3ZDO0FBR2hCLCtEQUFlO0VBQ2JwcUMsR0FBRyxFQUFIQSw0Q0FBRztFQUNIdXhCLFFBQVEsRUFBUkEsMERBQVE7RUFDUm5NLFlBQVksRUFBWkEsOERBQVk7RUFDWjRXLFVBQVUsRUFBVkEsMkRBQVU7RUFDVnhCLGNBQWMsRUFBZEEsK0RBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZUhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlTW9kZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZVN0YXRlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRW5kUG9pbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1JlYWxUaW1lUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vRGltZW5zaW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9WaWRlb1RlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Z1bGwvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcblxuY29uc3QgZGVmYXVsdERvY3VtZW50Rm9jdXNJbnRlcnZhbFRpbWVvdXQgPSAzMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnRGb2N1c0ludGVydmFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5kZXRlY3RUYWJGb2N1c0NoYW5nZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RUYWJGb2N1c0NoYW5nZSgpOiB2b2lkIHtcbiAgICBsZXQgaGlkZGVuO1xuICAgIGxldCB2aXNpYmlsaXR5Q2hhbmdlO1xuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGEgZGVmaW5pdGlvbiBmb3IgJ21zSGlkZGVuJyBvciAnd2Via2l0SGlkZGVuJyB0eXBlc1xuICAgIC8vIFJlcXVpcmVkIHRvIEB0cy1pZ25vcmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50Lm1zSGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaGlkZGVuID0gJ21zSGlkZGVuJztcbiAgICAgIHZpc2liaWxpdHlDaGFuZ2UgPSAnbXN2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudC53ZWJraXRIaWRkZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBoaWRkZW4gPSAnd2Via2l0SGlkZGVuJztcbiAgICAgIHZpc2liaWxpdHlDaGFuZ2UgPSAnd2Via2l0dmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuaGlkZGVuICE9PSAndW5kZWZpbmVkJykgeyAvLyBPcGVyYSAxMi4xMCBhbmQgRmlyZWZveCAxOCBhbmQgbGF0ZXIgc3VwcG9ydFxuICAgICAgaGlkZGVuID0gJ2hpZGRlbic7XG4gICAgICB2aXNpYmlsaXR5Q2hhbmdlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuXG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGlzRm9yZWdyb3VuZCA9ICFkb2N1bWVudFtoaWRkZW5dO1xuXG4gICAgICB0aGlzLnNldEZvY3VzU3RhdGUoaXNGb3JlZ3JvdW5kKTtcbiAgICB9O1xuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnRbaGlkZGVuXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZSwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2UsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0ZW5Gb3JEb2N1bWVudEZvY3VzLmNhbGwodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JEb2N1bWVudEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBpc0ZvcmVncm91bmQgPSBkb2N1bWVudC5oYXNGb2N1cygpO1xuXG4gICAgICB0aGlzLnNldEZvY3VzU3RhdGUoaXNGb3JlZ3JvdW5kKTtcbiAgICB9LCBkZWZhdWx0RG9jdW1lbnRGb2N1c0ludGVydmFsVGltZW91dCk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCA9IG51bGw7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c1N0YXRlKGlzRm9yZWdyb3VuZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0ZvcmVncm91bmQgPT09IGlzRm9yZWdyb3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzRm9yZWdyb3VuZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoaXMgZmlsZSBpcyB1c2VkIG9ubHkgZm9yIHRoZSBzaWxlbnQgYnVpbGQgdG8gbW9jayBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGNsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIGdldEJvb2xlYW5WYWx1ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVmYXVsdFN0cmluZ1ZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BoZW5peC1tZXRyaWNzLWxldmVsJzogVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKSxcbiAgICAgICdwaGVuaXgtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY29uc29sZS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtdGVsZW1ldHJ5LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNoYW5uZWwtdG9rZW4nOiAnJyxcbiAgICAgICdwaGVuaXgtdXJpJzogJycsXG4gICAgICAncGhlbml4LWJhc2UtdXJpJzogJydcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIge1xuICBzdGF0aWMgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnR0OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCh1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCh1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QodW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpO1xuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICB9XG5cbiAgZ2V0IGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgfVxuXG4gIGdldCBydHQoKTogU3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcnR0O1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVR5cGUoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZWZmZWN0aXZlVHlwZTtcbiAgfVxuXG4gIGdldCBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5kb3dubGluayB8fCBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5kb3dubGlua01heDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuICdVbmtub3duJztcbiAgICB9XG5cbiAgICByZXR1cm4gbmF2aWdhdG9yWydjb25uZWN0aW9uJ10uZWZmZWN0aXZlVHlwZSB8fCBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS50eXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLnJ0dDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gICAgfTtcblxuICAgIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQsIHN0cmVhbUlkKTtcbiAgfVxuXG4gIGZhaWwoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRTdHJlYW1NZXRyaWMoTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRTdHJlYW1NZXRyaWMobWV0cmljVHlwZTogTWV0cmljc1R5cGUsIHN0cmVhbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21ldHJpY1N1Ym1pdHRlZCkge1xuICAgICAgcmV0dXJuIDtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNTdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXR1cFRpbWUgPSBub3cgLSB0aGlzLl9zdGFydFRpbWU7XG4gICAgY29uc3QgbWV0cmljTmFtZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpY1R5cGUpLmdldE5hbWUoKTtcblxuICAgIHRoaXMubWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHNldHVwVGltZX0sXG4gICAgICBzdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFN0cmVhbSBtZXRyaWMgWyVzXSBpbiBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgbmV3IER1cmF0aW9ucyhzZXR1cFRpbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW50ZXJmYWNlIElUb2tlbiB7XG4gIHVyaTogVVJMIHwgbnVsbDtcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElFZGdlVG9rZW4ge1xuICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBJVG9rZW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VUb2tlbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW46IElUb2tlbjtcblxuICBjb25zdHJ1Y3RvcihlZGdlVG9rZW46IElFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIGRvY3VtZW50Py5jcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCB7SUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXJ9IGZyb20gJy4uL2RvbS9JQ29uZmlndXJhdGlvblBhcmFtYXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcjogSUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgPSBuZXcgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcigpO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCk7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuOlxuICAgICAgICByZXR1cm4gJ1dhcm4nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHJldHVybiAnRXJyb3InO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRmF0YWw6XG4gICAgICAgIHJldHVybiAnRmF0YWwnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKGxvZ2dpbmdMZXZlbFR5cGU6IExvZ2dpbmdMZXZlbFR5cGUpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5PZmY7XG4gICAgICBjYXNlICdUcmFjZSc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuVHJhY2U7XG4gICAgICBjYXNlICdEZWJ1Zyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRGVidWc7XG4gICAgICBjYXNlICdJbmZvJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgICAgY2FzZSAnV2Fybic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuV2FybjtcbiAgICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5FcnJvcjtcbiAgICAgIGNhc2UgJ0ZhdGFsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5GYXRhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBVUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlOiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU6IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gbG9jYXRpb24uaG9zdG5hbWU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBQcm9taXNlSGFuZGxlciBmcm9tICcuL1Byb21pc2VIYW5kbGVyJztcblxuY2xhc3MgUHJvbWlzZSB7XG4gIF9zdGF0ZTogbnVtYmVyO1xuICBfaGFuZGxlZDogYm9vbGVhbjtcbiAgX3ZhbHVlOiBQcm9taXNlO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjaykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSA9IDA7XG4gICAgdGhpcy5faGFuZGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICByZWFzb24gPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogUHJvbWlzZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZShkZWZlcnJlZDogUHJvbWlzZUhhbmRsZXIpOiB2b2lkIHtcbiAgICBsZXQgcHJvbWlzZSA9IHRoaXMgYXMgUHJvbWlzZTtcblxuICAgIHdoaWxlIChwcm9taXNlLl9zdGF0ZSA9PT0gMykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UuX3ZhbHVlO1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPik6IFByb21pc2Uge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpLCB2YWx1ZSk6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBjb25zdCB0aGVuID0gdmFsdWUudGhlbjtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWUpOiBQcm9taXNlIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWUpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U+KTogUHJvbWlzZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3IpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOicsIGVycm9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59XG5cblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKCgpID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGVbJ2ZpbmFsbHknXSA9IGZ1bmN0aW9uKGNhbGxiYWNrOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkIHtcbiAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgdmFsdWUgPT4gY29uc3RydWN0b3IucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlKSxcbiAgICByZWFzb24gPT4gY29uc3RydWN0b3IucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IGNvbnN0cnVjdG9yLnJlamVjdChyZWFzb24pKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyIHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uO1xuICBvblJlamVjdGVkOiBGdW5jdGlvbjtcbiAgcHJvbWlzZTogUHJvbWlzZTtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkge1xuICAgIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7XG4gICAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVlckNvbm5lY3Rpb25PZmZlckluaXQge1xuICBhdWRpb1RyYW5zY2VpdmVyPzogUlRDUnRwVHJhbnNjZWl2ZXI7XG4gIHZpZGVvVHJhbnNjZWl2ZXI/OiBSVENSdHBUcmFuc2NlaXZlcjtcbiAgcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbjtcbiAgbG9jYWxPZmZlcjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfTtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gZmFsc2UpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiAhZW5jb2RlZEluc2VydGFibGVTdHJlYW1zKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgbGV0IHZpZGVvVHJhbnNjZWl2ZXIsIGF1ZGlvVHJhbnNjZWl2ZXI7XG5cbiAgICAgICAgaWYgKHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywge2RpcmVjdGlvbn0pO1xuICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigndmlkZW8nLCB7ZGlyZWN0aW9ufSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcixcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXJlY3Rpb24gPT09ICdyZWN2b25seScgPyB7XG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgIH0gOiB7fTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICBsb2NhbE9mZmVyOiBhd2FpdCBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5QZWVyQ29ubmVjdGlvblNlcnZpY2UuaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuL1NkcFBhcnNlcic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y01vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1N0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWUpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF90cmFja3NUb01vbml0b3I6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICB0aGlzLl90cmFja3NUb01vbml0b3IgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5tYXAodHJhY2sgPT4gdHJhY2sua2luZCkgfHwgW107XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+IHtcbiAgICByZXR1cm4gdGhpcy5fcnRjU3RhdGlzdGljO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc01vbml0b3JSdW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5nZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy51cGRhdGVTdGF0aXN0aWNMZWdhY3koKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW0pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhudWxsKVxuICAgICAgLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuXG4gICAgICAgIGlmIChzdGF0cykge1xuICAgICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgICBsZXQgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgICB0aW1lRGVsdGEgKiAxMDAwKSA6IDA7XG5cbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGtpbmQsXG4gICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgICAgYnl0ZXNSZWNlaXZlZDogcmVwb3J0LmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzTG9zdDogcmVwb3J0LnBhY2tldHNMb3N0LFxuICAgICAgICAgICAgICAgICAgcGFja2V0c1JlY2VpdmVkOiByZXBvcnQucGFja2V0c1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgY29kZWM6IGNvZGVjIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUoa2luZCksXG4gICAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIHx8IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRGVjb2RlZDtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3Nba2luZF0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0c0xlZ2FjeSgpLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgICAgc3RhdHMucmVzdWx0KCkuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICByZXBvcnQubmFtZXMoKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIGlmIChuYW1lID09PSAnZ29vZ1JUVCcpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ3NzcmMnKSB7XG4gICAgICAgICAgY29uc3QgbWVkaWFUeXBlID0gcmVwb3J0LnN0YXQoJ21lZGlhVHlwZScpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0gPSB7dGltZXN0YW1wOiBEYXRlLm5vdygpfTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3NzcmMnXSA9IHJlcG9ydC5zdGF0KCdzc3JjJykudG9TdHJpbmcoKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ21lZGlhVHlwZSddID0gbWVkaWFUeXBlO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnYnl0ZXNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ2J5dGVzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNMb3N0J10gPSByZXBvcnQuc3RhdCgncGFja2V0c0xvc3QnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNSZWNlaXZlZCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnY29kZWMnXSA9IHJlcG9ydC5zdGF0KCdnb29nQ29kZWNOYW1lJykudG9TdHJpbmcoKSB8fCB0aGlzLmdldENvZGVjQnlUeXBlKG1lZGlhVHlwZSk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydyb3VuZFRyaXBUaW1lJ10gPSByb3VuZFRyaXBUaW1lO1xuXG4gICAgICAgICAgaWYgKG1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5zdGF0KCdmcmFtZXNEZWNvZGVkJyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2ZwcyddID0gKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAxMDAwIHx8IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWUpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9hdmFpbGFibGVUcmFja3M6IHtcbiAgICBhdWRpbzogYm9vbGVhbjtcbiAgICB2aWRlbzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIGVzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW0pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhudWxsKVxuICAgICAgLnRoZW4oc3RhdHMgPT4ge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3Nba2luZF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzU2VudCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1NlbnQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgICAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudDogcmVwb3J0LnJldHJhbnNtaXR0ZWRCeXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmaXJDb3VudCddID0gcmVwb3J0LmZpckNvdW50O1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRW5jb2RlZCddID0gcmVwb3J0LmZyYW1lc0VuY29kZWQ7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2h1Z2VGcmFtZXNTZW50J10gPSByZXBvcnQuaHVnZUZyYW1lc1NlbnQ7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlVGltZSddID0gcmVwb3J0LnRvdGFsRW5jb2RlVGltZTtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRW5jb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNFbmNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtzZHBTcGxpdEJ5TGluZXMuZmluZChpID0+IGkuaW5jbHVkZXMoYG09JHt0eXBlfWApKS5zcGxpdCgnICcpWzNdfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lLnNwbGl0KCcgJylbMV07XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uLCB7UGVlckNvbm5lY3Rpb25FdmVudHN9IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY29ubmVjdGlvblN0YXRlO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGU7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZTogUGVlckNvbm5lY3Rpb25FdmVudHMsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGU6IFBlZXJDb25uZWN0aW9uRXZlbnRzLCBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdCwgb3B0aW9ucz86IGJvb2xlYW4gfCBFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6IChUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogQXJyYXk8VD4sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6IEFycmF5PChUKSA9PiB2b2lkPjtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6IChUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPChUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IFVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IHtJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcn0gZnJvbSAnLi4vZG9tL0lDb25maWd1cmF0aW9uUGFyYW1hdGVyUmVhZGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlLCBTaGFrYVR5cGUsIFdlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL1N0cmVhbVR5cGVzJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IHdpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB3aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ10gfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86IChwbGF5ZXI6IFNoYWthVHlwZSkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlciA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyOiBJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciA9IG5ldyBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyKCk7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6IChXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAoU2hha2FUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6IChIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJyk7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmXG4gICAgICAgIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gIFNESy5kaXNwb3NlKCk7XG59KTtcblxuU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuaW5pdCgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBVUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi8uLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi8uLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBTdHJlYW1GYWN0b3J5IGZyb20gJy4uL3N0cmVhbWluZy9TdHJlYW1GYWN0b3J5JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWwgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdDaGFubmVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlWaWRlb0VsZW1lbnQ6IFJlYWRPbmx5U3ViamVjdDxIVE1MVmlkZW9FbGVtZW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbjogUmVhZE9ubHlTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5Qml0cmF0ZUxpbWl0OiBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVzb2x1dGlvbjogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG9wdGlvbnM/OiBDaGFubmVsT3B0aW9ucykge1xuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pO1xuICAgIGNvbnN0IGNoYW5uZWxDb250ZXh0T3B0aW9uczogQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge3RhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnfTtcbiAgICBjb25zdCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICBoYXNJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyksXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8uYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gbmV3IENoYW5uZWxDb250ZXh0KGNoYW5uZWxDb250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBuZXcgU3RyZWFtVHJhbnNmb3JtQ29udGV4dChzdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9jaGFubmVsU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9yZWFkT25seVZpZGVvRWxlbWVudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD4odGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50KTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbik7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhdGUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50Pih0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludCk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbSk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcbiAgICB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5ID0gbmV3IFNlc3Npb25UZWxlbWV0cnkoU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG4gICAgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyID0gdGhpcy5oYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gdmlkZW9FbGVtZW50O1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0uc3Vic2NyaWJlKHN0cmVhbSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5kaXNwb3NlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMudmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5ID0gbmV3IFZpZGVvVGVsZW1ldHJ5KHRoaXMuc3RyZWFtSWQsIFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5zZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lKHRoaXMudmlkZW9FbGVtZW50KTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5zZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmcodGhpcy52aWRlb0VsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuU3RvcHBlZCkge1xuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMucmVzdGFydEFmdGVyU3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlICE9PSBDaGFubmVsU3RhdGUuUGxheWluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB2aWRlb0VsZW1lbnQoKTogSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldCB2aWRlb0VsZW1lbnQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHV0aW9uLnZhbHVlLndpZHRoICE9PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCB8fCB0aGlzLnJlc29sdXRpb24udmFsdWUuaGVpZ2h0ICE9PSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IG5ldyBEaW1lbnNpb24odmlkZW9FbGVtZW50LnZpZGVvV2lkdGgsIHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBEaW1lbnNpb24uZW1wdHk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgYXV0b011dGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkO1xuICB9XG5cbiAgZ2V0IGF1dG9QYXVzZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwbGF5aW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGxheWluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCB0YXJnZXRMYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnO1xuICB9XG5cbiAgZ2V0IGxhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMYWc7XG4gIH1cblxuICBnZXQgYml0cmF0ZUxpbWl0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlc29sdXRpb247XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHNldEJpdHJhdGVMaW1pdChiaXRyYXRlTGltaXQ6IEJpdHNQZXJTZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSBiaXRyYXRlTGltaXQ7XG4gIH1cblxuICBjbGVhckJpdHJhdGVMaW1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kID0gMDtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgQml0cmF0ZU1vZGUuUmVzZXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXJnZXRMYWcobGFnOiBNaWxsaXNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZy52YWx1ZSA9IGxhZztcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBtdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5tdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygnYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlICYmIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggaW5zZXJ0YWJsZS1zdHJlYW1zIGFuZCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBhcmUgZW5hYmxlZCwgb25seSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGhhc0VuY29kZWRTdHJlYW1TaW5rID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrICYmIGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBjYWxsYmFjayBhbmQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHNpbmsgZnVuY3Rpb24gZm91bmQsIG9ubHkgdXNlIG9uZSB0eXBlIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgTWVkaWEgU3RyZWFtIFRyYWNrIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIShGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpzdGFydCcpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUGxheWVyID0gU3RyZWFtRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayk7XG5cbiAgICBpZiAoIXN0cmVhbVBsYXllcikge1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW1QbGF5ZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAsXG4gICAgICB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50LmJpbmQodGhpcykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBjaGFubmVsJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdGFydEFmdGVyU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5lbnVtIENoYW5uZWxTdGF0ZSB7XG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyxcbiAgUGF1c2VkLFxuICBQbGF5aW5nLFxuICBSZWNvdmVyaW5nLFxuICBSZWNvbm5lY3RpbmcsXG4gIFN0YW5kQnksXG4gIFN0b3BwZWQsXG4gIFVuYXV0aG9yaXplZCxcbiAgR2VvUmVzdHJpY3RlZCxcbiAgR2VvQmxvY2tlZCxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlLFxuICBDb25maWd1cmF0aW9uRXJyb3IsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBDbGllbnRTdGFydEVycm9yLFxuICBFcnJvclxufVxuXG5leHBvcnQgZGVmYXVsdCBDaGFubmVsU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG50eXBlIENyZWF0ZUNoYW5uZWxPcHRpb25zID0ge1xuICB2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVscyB7XG4gIHN0YXRpYyBjcmVhdGVDaGFubmVsKG9wdGlvbnM6IENyZWF0ZUNoYW5uZWxPcHRpb25zKTogQ2hhbm5lbCB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbm5lbE9wdGlvbnM6IENoYW5uZWxPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zLnRhcmdldExhZyxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWwob3B0aW9ucy52aWRlb0VsZW1lbnQsIG9wdGlvbnMudG9rZW4sIGNoYW5uZWxPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVscyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbSwgU3Vic2NyaWJlU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD47XG4gIHN0YXRlOiBTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIGF1dG9NdXRlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0b1BhdXNlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwbGF5aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICB0YXJnZXRMYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBsYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBiaXRyYXRlTGltaXQ6IFN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHJlc29sdXRpb246IFN1YmplY3Q8RGltZW5zaW9uPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50PjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPjtcbiAgdmlkZW9UZWxlbWV0cnk6IFZpZGVvVGVsZW1ldHJ5O1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYztcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWM7XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDaGFubmVsQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnJlbmRlcmVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSBuZXcgU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50PihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuU3RhcnRpbmcpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4oMCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4obnVsbCk7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1mYWxsdGhyb3VnaFxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQudmFsdWUgJiYgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhbmRCeTtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbT47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0luc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luaztcbiAgICB0aGlzLmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbms7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJpID0gbmV3IFVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KVxuICAgICAgKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBVUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVJlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU3Vic2NyaWJlU3RhdHVzO1xuICBzdHJlYW0/OiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogUHVibGlzaFN0YXR1cztcbiAgc3RyZWFtPzogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpXG4gICAgICApXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElTdWJzY3JpYmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIG5ldyBFcnJvcihgQWRkIGljZSBjYW5kaWRhdGVzIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgc3RyZWFtJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3I/LnNlbmRCZWFjb24pIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBuYXZpZ2F0b3Iuc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDY6XG4gICAgICAgIHJldHVybiAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU3Vic2NyaWJlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU3Vic2NyaWJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlUmVzcG9uc2U7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVSZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBzdWJzY3JpYmVSZXNwb25zZS5zdHJlYW0gPSB7XG4gICAgICB0ZW5hbmN5LFxuICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgfTtcblxuICAgIHN1YnNjcmliZVJlc3BvbnNlLmxhZyA9IGRhdGEubGFnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElQdWJsaXNoUmVzcG9uc2U7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlOiBJUHVibGlzaFJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHB1Ymxpc2hSZXNwb25zZS5zdHJlYW0gPSB7XG4gICAgICB0ZW5hbmN5LFxuICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IHtpY2VTZXJ2ZXJzOiBbXX07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgICB1cmxzOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJscyxcbiAgICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPSBjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSURlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgUmVhbFRpbWVQdWJsaXNoZXIgZnJvbSAnLi9SZWFsVGltZVB1Ymxpc2hlcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3Qgb25lSG91ckluTWlsbGlzZWNvbmRzID0gMzYwMCAqIDEwMDA7XG5jb25zdCBtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAyICogb25lSG91ckluTWlsbGlzZWNvbmRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlclN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVB1Ymxpc2hpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBuZXcgUHVibGlzaGVyQ29udGV4dChuYW1lKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbT4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwdWJsaXNoaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgc2V0TWVkaWFTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKG1lZGlhVHJhY2sgPT4ge1xuICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuZ2V0U2VuZGVycygpLmZvckVhY2goc2VuZGVyID0+IHtcbiAgICAgICAgICBpZiAobWVkaWFUcmFjay5raW5kID09PSBzZW5kZXI/LnRyYWNrPy5raW5kICYmIG1lZGlhVHJhY2suaWQgIT09IHNlbmRlci50cmFjay5pZCkge1xuICAgICAgICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayhtZWRpYVRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUHVibGlzaGVyID0gbmV3IFJlYWxUaW1lUHVibGlzaGVyKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIHJldHVybiBzdHJlYW1QdWJsaXNoZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgcHVibGlzaGluZycsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSAwO1xuXG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gRGF0ZS5ub3coKSAtIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcztcblxuICAgICAgICBpZiAobWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIDw9IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdIFslc10gYWZ0ZXIgZXhjZWVkaW5nIHRpbWVvdXQnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgcHVibGlzaGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjaGFubmVsIG5vdCBmb3VuZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7UHVibGlzaFN0YXR1c30gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJDb250ZXh0IHtcbiAgcHVibGlzaGVySW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcHVibGlzaGVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBzdGF0ZTogU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGlzaGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50PjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz47XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuICBzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50PihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4obnVsbCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZSAmJiBuYW1lLmxlbmd0aCA/IG5hbWUgOiB0aGlzLmdlbmVyYXRlU2NyZWVuTmFtZSgpO1xuICAgIHRoaXMuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcsXG4gIFB1Ymxpc2hpbmcsXG4gIFJlY292ZXJpbmcsXG4gIFJlY29ubmVjdGluZyxcbiAgU3RvcHBlZCxcbiAgVW5hdXRob3JpemVkLFxuICBHZW9SZXN0cmljdGVkLFxuICBHZW9CbG9ja2VkLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUsXG4gIE5vdEZvdW5kLFxuICBDb25maWd1cmF0aW9uRXJyb3IsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBDbGllbnRTdGFydEVycm9yLFxuICBFcnJvclxufVxuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBQdWJsaXNoZXIgZnJvbSAnLi9QdWJsaXNoZXInO1xuXG50eXBlIENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMgPSB7XG4gIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbTtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJzIHtcbiAgc3RhdGljIGNyZWF0ZVB1Ymxpc2hlcihvcHRpb25zOiBDcmVhdGVQdWJsaXNoZXJPcHRpb25zKTogUHVibGlzaGVyIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFB1Ymxpc2hlcihvcHRpb25zLm1lZGlhU3RyZWFtLCBvcHRpb25zLnRva2VuLCBvcHRpb25zLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1B1Ymxpc2hlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBSdGNQdWJsaXNoTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IHNvZnRSZXN0YXJ0SW50ZXJ2YWwgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVB1Ymxpc2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVB1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBwdWJsaXNoZXJDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaSwgdG9rZW4sIGxpc3Rlbk9uU3RyZWFtU2V0dXApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICAgICAgICAgIGxvY2FsT2ZmZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCh7c3RhdHVzLCBzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZX0pID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFB1Ymxpc2ggY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdG9wIG5vcm1hbGx5IHRoZSBwZWVyIGNvbm5lY3Rpb24gaXMgdW5yZWdpc3RlcmVkIGZpcnN0LlxuICAgICAgICAgICAgICAgIC8vIFRodXMgYW55dGltZSB3ZSBzZWUgYSBjbG9zZWQgcGVlciBjb25uZWN0aW9uIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGl0IGlzIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGFuc3dlci5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjUHVibGlzaE1vbml0b3IgPSBuZXcgUnRjUHVibGlzaE1vbml0b3IocGVlckNvbm5lY3Rpb24sIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5yb3VuZFRyaXBUaW1lIC8gNCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQocnRjUHVibGlzaE1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSBydGNQdWJsaXNoTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IGNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Rpc2Nvbm5lY3RlZCcgfHwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBjbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IHtTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi8uLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4uLy4uL3J0Yy9TZHBQYXJzZXInO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmksIHRva2VuLCBsaXN0ZW5PblN0cmVhbVNldHVwLCBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICBsb2NhbE9mZmVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHtzdGF0dXMsIHN0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9KSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPE1lZGlhU3RyZWFtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQub25UcmFja0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpLCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGUuc3RyZWFtcykge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpO1xuICAgICAgICAgICAgICB9LCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHBlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtkaXNwb3NhYmxlc30gPSBJbnNlcnRhYmxlU3RyZWFtcy5hcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCksIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSB0cmFuc2Zvcm1lZFN0cmVhbTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yID0gbmV3IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKHBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbSwgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24gPSBydGNDb25uZWN0aW9uTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiAhdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdWRpb1RyYWNrRmFpbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVHJhY2tGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLmF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrRmFpbGVkICYmIG5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpICYmIG5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID8gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgOiBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgc3RhdGUgcmVzdG9yZWQgdG8gWyVzXSBhZnRlciByZWNvbm5lY3RpbmcnLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbSB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsobW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElFbmNvZGVkU3RyZWFtU2luaykge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAyLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRW5jb2RlZFN0cmVhbVNpbmsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBhcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihzdHJlYW06IE1lZGlhU3RyZWFtLCByZWNlaXZlcnM6IFJUQ1J0cFJlY2VpdmVyW10sIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIHZpZGVvQ29kZWM6IHN0cmluZywgYXVkaW9Db2RlYzogc3RyaW5nKToge2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmUgPT4gcmVjZWl2ZS50cmFjayA9PT0gdHJhY2spWzBdO1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKGVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vV29ya2VyVHJhbnNmb3JtU3RyZWFtLnRzJywgaW1wb3J0Lm1ldGEudXJsKSwge3R5cGU6ICdtb2R1bGUnfSk7XG5cbiAgICAgICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGFzeW5jIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGV2ZW50LmRhdGEuY2h1bmspKSB7XG4gICAgICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2ZvcmNlSW52YWxpZEZyYW1lOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7XG4gICAgICAgICAgICAgICAga2luZDogdHJhY2sua2luZCxcbiAgICAgICAgICAgICAgICBjb2RlYzogdmlkZW9Db2RlY1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRWaWRlb0ZyYW1lLCBSVENFbmNvZGVkVmlkZW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgICAgICAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUodmlkZW9Db2RlYyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKHZpZGVvQ29kZWMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUgPT09IFNraXBGcmFtZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBzdXJyb2dhdGUgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWModmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh2aWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCByZWNlaXZlclN0cmVhbXMgPSByZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IHJlY2VpdmVyU3RyZWFtcy53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcilcbiAgICAgICAgICAgICAgLnBpcGVUbyhzaW5rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL1dvcmtlclRyYW5zZm9ybVN0cmVhbS50cycsIGltcG9ydC5tZXRhLnVybCksIHt0eXBlOiAnbW9kdWxlJ30pO1xuXG4gICAgICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLCBldmVudC5kYXRhLmNodW5rKSkge1xuICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtmb3JjZUludmFsaWRGcmFtZTogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge1xuICAgICAgICAgICAgICAgIGtpbmQ6IHRyYWNrLmtpbmQsXG4gICAgICAgICAgICAgICAgY29kZWM6IGF1ZGlvQ29kZWNcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG5cbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRBdWRpb0ZyYW1lLCBSVENFbmNvZGVkQXVkaW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRBdWRpb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjKGF1ZGlvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJTdHJlYW1zID0gcmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSByZWNlaXZlclN0cmVhbXMud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtkaXNwb3NhYmxlc307XG4gIH1cblxuICBzdGF0aWMgYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oc3RyZWFtOiBNZWRpYVN0cmVhbSwgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+LCBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPik6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSwgQXVkaW9EYXRhPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1BdWRpb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiBhdWRpb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogYXVkaW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKVxuICAgICAgICAgICAgICAucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgPSBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPiB7XG4gICAgKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrLCBjaHVuazogVCwgY29udHJvbGxlcjogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI8VD4pOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYWNrVHJhbnNmb3JtIHtcbiAgc3RhdGljIHZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybShtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSVN0cmVhbVRyYWNrVHJhbnNmb3JtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDMuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4ZjQsIDB4MDAsIDB4MGEsIDB4OTEsIDB4OWIsIDB4MmIsIDB4ZjEsIDB4ZjEsIDB4ZjgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDcsIDB4ODksIDB4MTIsIDB4Y2IsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4OWEsIDB4NjgsIDB4NDksIDB4YTgsIDB4NDEsIDB4NjgsIDB4OTksIDB4NGMsIDB4MGYsIDB4ZmYsIDB4OTIsIDB4ODFdKSwgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4MzEsIDB4MDMsIDB4MDAsIDB4ZTQsIDB4ZTAsIDB4YTgsIDB4OWIsIDB4MzcsIDB4YWYsIDB4MTAsIDB4NGYsIDB4NGYsIDB4YjEsIDB4MGEsIDB4MmYsIDB4ZTQsIDB4OTIsIDB4YzAsIDB4MWYsIDB4ZTcsIDB4NGYsIDB4NDYsIDB4ZmYsIDB4ZWUsIDB4NTEsIDB4YzEsIDB4NWQsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDg2LCAweDAwLCAweDQwLCAweDkyLCAweDljLCAweDI0LCAweDQ4LCAweDAwLCAweDAwLCAweDAzLCAweDcwLCAweDAwLCAweDAwLCAweDRiLCAweDQwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0ID0ge1xuICAgIElGcmFtZTogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NywgMHg0MiwgMHhjMCwgMHgwZCwgMHhkYSwgMHgxOCwgMHhkZSwgMHgyMiwgMHgyMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMywgMHhjOCwgMHhmMSwgMHg0MiwgMHhhYSwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhjZSwgMHgwZiwgMHhjOCwgLy8gUGljdHVyZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHg1ZiwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAyOTUpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiAoU0VJKVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4NCwgMHgwNSwgLi4ubmV3IFVpbnQ4QXJyYXkoMykuZmlsbCgweGZmKSwgMHgwZiwgMHg0NSwgMHgwMCwgMHgwMSwgMHg1NywgMHg5ZiwgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3OF0pLCAvLyBTbGljZSBsYXllcjogSWRyIGRhdGFcbiAgICBQRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDMsIC4uLm5ldyBVaW50OEFycmF5KDQwKS5maWxsKDB4ZmYpLCAweGE0LCAuLi5uZXcgVWludDhBcnJheSgxMDM2NCkuZmlsbCgweGZmKSwgMHg4MCwgLy8gU0VJXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDIwLCAweDE1LCAweGYwLCAweDRiXSkgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4ID0gMTA0MTg7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzTW9iaWxlQ2hyb21lIHx8IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnT1BVUyc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NC5JRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnSDI2NCc6IHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDgnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA5Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKGNvZGVjOiBzdHJpbmcpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMudG9VcHBlckNhc2UoKSA9PT0gJ0gyNjQnKSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICBjb25zdCBzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcjtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpO1xuXG4gICAgICBpZiAoc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA+IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCkge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYml0TWFzazEgPSAweDBlO1xuICAgIGNvbnN0IGJpdE1hc2syID0gMHgwMTtcbiAgICBjb25zdCBiaXRTaGlmdFJpZ2h0QnkxID0gMTtcbiAgICBjb25zdCBiaXRTaGlmdExlZnRCeTcgPSA3O1xuICAgIGNvbnN0IGJ5dGUxID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazEpID4+IGJpdFNoaWZ0UmlnaHRCeTEpO1xuICAgIGNvbnN0IGJ5dGUyID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazIpIDw8IGJpdFNoaWZ0TGVmdEJ5Nyk7XG4gICAgY29uc3QgY29weU9mRHVtbXlQRnJhbWVzID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuUEZyYW1lLnNsaWNlKCk7XG4gICAgY29uc3QgYnVmZmVyID0gY29weU9mRHVtbXlQRnJhbWVzLmJ1ZmZlcjtcbiAgICBjb25zdCBidWZmZXJJbmRleCA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleDtcblxuICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gfD0gYnl0ZTE7XG4gICAgYnVmZmVyW2J1ZmZlckluZGV4ICsgMV0gfD0gYnl0ZTI7XG4gICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcisrO1xuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBVUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2RvbWFpbiA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpbWVuc2lvbiBpbXBsZW1lbnRzIElDb21wYXJhYmxlPERpbWVuc2lvbj4ge1xuICByZWFkb25seSB3aWR0aDogbnVtYmVyO1xuICByZWFkb25seSBoZWlnaHQ6IG51bWJlcjtcblxuICBzdGF0aWMgZ2V0IGVtcHR5KCk6IERpbWVuc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oMCwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIGVxdWFscyhvdGhlcjogRGltZW5zaW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMud2lkdGggPT09IG90aGVyLndpZHRoICYmIHRoaXMuaGVpZ2h0ID09PSBvdGhlci5oZWlnaHQ7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLndpZHRofXgke3RoaXMuaGVpZ2h0fWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yU3RhbGw6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgX2xpc3RlbkZvckNvbnRpbnVhdGlvbjogKGV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIF90aW1lVG9GaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX3ZpZGVvU3RhbGxlZDogbnVtYmVyO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdmlkZW9SZXNvbHV0aW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlO1xuICBwcml2YXRlIF9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXI6IERpc3Bvc2FibGU7XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtSWQ6IHN0cmluZywgcGFnZUxvYWRUaW1lOiBudW1iZXIsIGNoYW5uZWxTdGFydFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IGNoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSA9ICgpOiB2b2lkID0+IHRoaXMuY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIpO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuRm9yU3RhbGwgPSAoKTogdm9pZCA9PiB0aGlzLm9uU3RhbGwoKTtcblxuICAgIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbiA9IChldmVudCk6IHZvaWQgPT4gdGhpcy5vbkNvbnRpbnVhdGlvbihldmVudCwgdmlkZW8pO1xuXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZHVyYXRpb25TaW5jZVBhZ2VMb2FkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHJldHVybiBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMucHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93KTtcbiAgICB0aGlzLnB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lci5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk6IHZvaWQge1xuICAgIHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fdGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBGaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk6IHZvaWQge1xuICAgIGlmICghdmlkZW8uYnVmZmVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSB2aWRlby5idWZmZXJlZC5sZW5ndGg7XG4gICAgY29uc3QgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQgPSBldmVudC50eXBlID09PSAncGxheWluZydcbiAgICB8fCBidWZmZXJMZW5ndGggPiAwID8gKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcydcbiAgICAgIHx8IGV2ZW50LnR5cGUgPT09ICd0aW1ldXBkYXRlJylcbiAgICAgICYmIHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKSA9PT0gdGhpcy5fbGFzdFByb2dyZXNzIDogdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fdmlkZW9TdGFsbGVkIHx8IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgIHRoaXMuX2xhc3RQcm9ncmVzcyA9IHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lU2luY2VTdG9wID0gRGF0ZS5ub3coKSAtIHRoaXMuX3ZpZGVvU3RhbGxlZDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQnVmZmVyaW5nLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VTdG9wfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgcmVjb3ZlcmVkIGZyb20gc3RhbGwgYWZ0ZXIgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VTdG9wKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBudWxsO1xuICB9XG5cbiAgb25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKG5ld1Jlc29sdXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld1Jlc29sdXRpb259LFxuICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5fdmlkZW9SZXNvbHV0aW9uID8ge3N0cmluZzogdGhpcy5fdmlkZW9SZXNvbHV0aW9ufSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9SZXNvbHV0aW9uID0gbmV3UmVzb2x1dGlvbjtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi9cbiAgbW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgICByZXR1cm4gZTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICB2YXIgdCxcbiAgICBlID0ge30sXG4gICAgciA9IE9iamVjdC5wcm90b3R5cGUsXG4gICAgbiA9IHIuaGFzT3duUHJvcGVydHksXG4gICAgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fCBmdW5jdGlvbiAodCwgZSwgcikge1xuICAgICAgdFtlXSA9IHIudmFsdWU7XG4gICAgfSxcbiAgICBpID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcbiAgICBhID0gaS5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIixcbiAgICBjID0gaS5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCIsXG4gICAgdSA9IGkudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG4gIGZ1bmN0aW9uIGRlZmluZSh0LCBlLCByKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7XG4gICAgICB2YWx1ZTogcixcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgIHdyaXRhYmxlOiAhMFxuICAgIH0pLCB0W2VdO1xuICB9XG4gIHRyeSB7XG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAodCkge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZSh0LCBlLCByKSB7XG4gICAgICByZXR1cm4gdFtlXSA9IHI7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiB3cmFwKHQsIGUsIHIsIG4pIHtcbiAgICB2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBlIDogR2VuZXJhdG9yLFxuICAgICAgYSA9IE9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLFxuICAgICAgYyA9IG5ldyBDb250ZXh0KG4gfHwgW10pO1xuICAgIHJldHVybiBvKGEsIFwiX2ludm9rZVwiLCB7XG4gICAgICB2YWx1ZTogbWFrZUludm9rZU1ldGhvZCh0LCByLCBjKVxuICAgIH0pLCBhO1xuICB9XG4gIGZ1bmN0aW9uIHRyeUNhdGNoKHQsIGUsIHIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJub3JtYWxcIixcbiAgICAgICAgYXJnOiB0LmNhbGwoZSwgcilcbiAgICAgIH07XG4gICAgfSBjYXRjaCAodCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJ0aHJvd1wiLFxuICAgICAgICBhcmc6IHRcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGUud3JhcCA9IHdyYXA7XG4gIHZhciBoID0gXCJzdXNwZW5kZWRTdGFydFwiLFxuICAgIGwgPSBcInN1c3BlbmRlZFlpZWxkXCIsXG4gICAgZiA9IFwiZXhlY3V0aW5nXCIsXG4gICAgcyA9IFwiY29tcGxldGVkXCIsXG4gICAgeSA9IHt9O1xuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cbiAgdmFyIHAgPSB7fTtcbiAgZGVmaW5lKHAsIGEsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG4gIHZhciBkID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuICAgIHYgPSBkICYmIGQoZCh2YWx1ZXMoW10pKSk7XG4gIHYgJiYgdiAhPT0gciAmJiBuLmNhbGwodiwgYSkgJiYgKHAgPSB2KTtcbiAgdmFyIGcgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPSBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwKTtcbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHQpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgZGVmaW5lKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKHQsIGUpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UociwgbywgaSwgYSkge1xuICAgICAgdmFyIGMgPSB0cnlDYXRjaCh0W3JdLCB0LCBvKTtcbiAgICAgIGlmIChcInRocm93XCIgIT09IGMudHlwZSkge1xuICAgICAgICB2YXIgdSA9IGMuYXJnLFxuICAgICAgICAgIGggPSB1LnZhbHVlO1xuICAgICAgICByZXR1cm4gaCAmJiBcIm9iamVjdFwiID09IF90eXBlb2YoaCkgJiYgbi5jYWxsKGgsIFwiX19hd2FpdFwiKSA/IGUucmVzb2x2ZShoLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHQsIGksIGEpO1xuICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIGludm9rZShcInRocm93XCIsIHQsIGksIGEpO1xuICAgICAgICB9KSA6IGUucmVzb2x2ZShoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgdS52YWx1ZSA9IHQsIGkodSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIHQsIGksIGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGEoYy5hcmcpO1xuICAgIH1cbiAgICB2YXIgcjtcbiAgICBvKHRoaXMsIFwiX2ludm9rZVwiLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodCwgbikge1xuICAgICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IGUoZnVuY3Rpb24gKGUsIHIpIHtcbiAgICAgICAgICAgIGludm9rZSh0LCBuLCBlLCByKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gciA9IHIgPyByLnRoZW4oY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChlLCByLCBuKSB7XG4gICAgdmFyIG8gPSBoO1xuICAgIHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuICAgICAgaWYgKG8gPT09IGYpIHRocm93IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIGlmIChvID09PSBzKSB7XG4gICAgICAgIGlmIChcInRocm93XCIgPT09IGkpIHRocm93IGE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IHQsXG4gICAgICAgICAgZG9uZTogITBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7Oykge1xuICAgICAgICB2YXIgYyA9IG4uZGVsZWdhdGU7XG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgdmFyIHUgPSBtYXliZUludm9rZURlbGVnYXRlKGMsIG4pO1xuICAgICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgICBpZiAodSA9PT0geSkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwibmV4dFwiID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO2Vsc2UgaWYgKFwidGhyb3dcIiA9PT0gbi5tZXRob2QpIHtcbiAgICAgICAgICBpZiAobyA9PT0gaCkgdGhyb3cgbyA9IHMsIG4uYXJnO1xuICAgICAgICAgIG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuICAgICAgICB9IGVsc2UgXCJyZXR1cm5cIiA9PT0gbi5tZXRob2QgJiYgbi5hYnJ1cHQoXCJyZXR1cm5cIiwgbi5hcmcpO1xuICAgICAgICBvID0gZjtcbiAgICAgICAgdmFyIHAgPSB0cnlDYXRjaChlLCByLCBuKTtcbiAgICAgICAgaWYgKFwibm9ybWFsXCIgPT09IHAudHlwZSkge1xuICAgICAgICAgIGlmIChvID0gbi5kb25lID8gcyA6IGwsIHAuYXJnID09PSB5KSBjb250aW51ZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHAuYXJnLFxuICAgICAgICAgICAgZG9uZTogbi5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBcInRocm93XCIgPT09IHAudHlwZSAmJiAobyA9IHMsIG4ubWV0aG9kID0gXCJ0aHJvd1wiLCBuLmFyZyA9IHAuYXJnKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZSwgcikge1xuICAgIHZhciBuID0gci5tZXRob2QsXG4gICAgICBvID0gZS5pdGVyYXRvcltuXTtcbiAgICBpZiAobyA9PT0gdCkgcmV0dXJuIHIuZGVsZWdhdGUgPSBudWxsLCBcInRocm93XCIgPT09IG4gJiYgZS5pdGVyYXRvcltcInJldHVyblwiXSAmJiAoci5tZXRob2QgPSBcInJldHVyblwiLCByLmFyZyA9IHQsIG1heWJlSW52b2tlRGVsZWdhdGUoZSwgciksIFwidGhyb3dcIiA9PT0gci5tZXRob2QpIHx8IFwicmV0dXJuXCIgIT09IG4gJiYgKHIubWV0aG9kID0gXCJ0aHJvd1wiLCByLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSwgeTtcbiAgICB2YXIgaSA9IHRyeUNhdGNoKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcbiAgICBpZiAoXCJ0aHJvd1wiID09PSBpLnR5cGUpIHJldHVybiByLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBpLmFyZywgci5kZWxlZ2F0ZSA9IG51bGwsIHk7XG4gICAgdmFyIGEgPSBpLmFyZztcbiAgICByZXR1cm4gYSA/IGEuZG9uZSA/IChyW2UucmVzdWx0TmFtZV0gPSBhLnZhbHVlLCByLm5leHQgPSBlLm5leHRMb2MsIFwicmV0dXJuXCIgIT09IHIubWV0aG9kICYmIChyLm1ldGhvZCA9IFwibmV4dFwiLCByLmFyZyA9IHQpLCByLmRlbGVnYXRlID0gbnVsbCwgeSkgOiBhIDogKHIubWV0aG9kID0gXCJ0aHJvd1wiLCByLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKSwgci5kZWxlZ2F0ZSA9IG51bGwsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeSh0KSB7XG4gICAgdmFyIGUgPSB7XG4gICAgICB0cnlMb2M6IHRbMF1cbiAgICB9O1xuICAgIDEgaW4gdCAmJiAoZS5jYXRjaExvYyA9IHRbMV0pLCAyIGluIHQgJiYgKGUuZmluYWxseUxvYyA9IHRbMl0sIGUuYWZ0ZXJMb2MgPSB0WzNdKSwgdGhpcy50cnlFbnRyaWVzLnB1c2goZSk7XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeSh0KSB7XG4gICAgdmFyIGUgPSB0LmNvbXBsZXRpb24gfHwge307XG4gICAgZS50eXBlID0gXCJub3JtYWxcIiwgZGVsZXRlIGUuYXJnLCB0LmNvbXBsZXRpb24gPSBlO1xuICB9XG4gIGZ1bmN0aW9uIENvbnRleHQodCkge1xuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7XG4gICAgICB0cnlMb2M6IFwicm9vdFwiXG4gICAgfV0sIHQuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcbiAgfVxuICBmdW5jdGlvbiB2YWx1ZXMoZSkge1xuICAgIGlmIChlIHx8IFwiXCIgPT09IGUpIHtcbiAgICAgIHZhciByID0gZVthXTtcbiAgICAgIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcbiAgICAgIGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBvID0gLTEsXG4gICAgICAgICAgaSA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICBmb3IgKDsgKytvIDwgZS5sZW5ndGg7KSBpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gbmV4dC52YWx1ZSA9IGVbb10sIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgICAgICAgcmV0dXJuIG5leHQudmFsdWUgPSB0LCBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICAgICAgICB9O1xuICAgICAgICByZXR1cm4gaS5uZXh0ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihfdHlwZW9mKGUpICsgXCIgaXMgbm90IGl0ZXJhYmxlXCIpO1xuICB9XG4gIHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbyhnLCBcImNvbnN0cnVjdG9yXCIsIHtcbiAgICB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgY29uZmlndXJhYmxlOiAhMFxuICB9KSwgbyhHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgXCJjb25zdHJ1Y3RvclwiLCB7XG4gICAgdmFsdWU6IEdlbmVyYXRvckZ1bmN0aW9uLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCB1LCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpLCBlLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAodCkge1xuICAgIHZhciBlID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuICEhZSAmJiAoZSA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHwgXCJHZW5lcmF0b3JGdW5jdGlvblwiID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcbiAgfSwgZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6ICh0Ll9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBkZWZpbmUodCwgdSwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSksIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShnKSwgdDtcbiAgfSwgZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXdhaXQ6IHRcbiAgICB9O1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpLCBkZWZpbmUoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUsIGMsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3IsIGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuICAgIHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuICAgIHZhciBhID0gbmV3IEFzeW5jSXRlcmF0b3Iod3JhcCh0LCByLCBuLCBvKSwgaSk7XG4gICAgcmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKSA/IGEgOiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuICAgIH0pO1xuICB9LCBkZWZpbmVJdGVyYXRvck1ldGhvZHMoZyksIGRlZmluZShnLCB1LCBcIkdlbmVyYXRvclwiKSwgZGVmaW5lKGcsIGEsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGRlZmluZShnLCBcInRvU3RyaW5nXCIsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfSksIGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgdmFyIGUgPSBPYmplY3QodCksXG4gICAgICByID0gW107XG4gICAgZm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG4gICAgcmV0dXJuIHIucmV2ZXJzZSgpLCBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgZm9yICg7IHIubGVuZ3RoOykge1xuICAgICAgICB2YXIgdCA9IHIucG9wKCk7XG4gICAgICAgIGlmICh0IGluIGUpIHJldHVybiBuZXh0LnZhbHVlID0gdCwgbmV4dC5kb25lID0gITEsIG5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dC5kb25lID0gITAsIG5leHQ7XG4gICAgfTtcbiAgfSwgZS52YWx1ZXMgPSB2YWx1ZXMsIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldChlKSB7XG4gICAgICBpZiAodGhpcy5wcmV2ID0gMCwgdGhpcy5uZXh0ID0gMCwgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQsIHRoaXMuZG9uZSA9ICExLCB0aGlzLmRlbGVnYXRlID0gbnVsbCwgdGhpcy5tZXRob2QgPSBcIm5leHRcIiwgdGhpcy5hcmcgPSB0LCB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KSwgIWUpIGZvciAodmFyIHIgaW4gdGhpcykgXCJ0XCIgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG4gICAgfSxcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5kb25lID0gITA7XG4gICAgICB2YXIgdCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZSkge1xuICAgICAgaWYgKHRoaXMuZG9uZSkgdGhyb3cgZTtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShuLCBvKSB7XG4gICAgICAgIHJldHVybiBhLnR5cGUgPSBcInRocm93XCIsIGEuYXJnID0gZSwgci5uZXh0ID0gbiwgbyAmJiAoci5tZXRob2QgPSBcIm5leHRcIiwgci5hcmcgPSB0KSwgISFvO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbyA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBvID49IDA7IC0tbykge1xuICAgICAgICB2YXIgaSA9IHRoaXMudHJ5RW50cmllc1tvXSxcbiAgICAgICAgICBhID0gaS5jb21wbGV0aW9uO1xuICAgICAgICBpZiAoXCJyb290XCIgPT09IGkudHJ5TG9jKSByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICBpZiAoaS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGMgPSBuLmNhbGwoaSwgXCJjYXRjaExvY1wiKSxcbiAgICAgICAgICAgIHUgPSBuLmNhbGwoaSwgXCJmaW5hbGx5TG9jXCIpO1xuICAgICAgICAgIGlmIChjICYmIHUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoaS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGkuY2F0Y2hMb2MsICEwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF1KSB0aHJvdyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShpLmZpbmFsbHlMb2MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYWJydXB0OiBmdW5jdGlvbiBhYnJ1cHQodCwgZSkge1xuICAgICAgZm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuICAgICAgICB2YXIgbyA9IHRoaXMudHJ5RW50cmllc1tyXTtcbiAgICAgICAgaWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IG8uZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBpID0gbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSAmJiAoXCJicmVha1wiID09PSB0IHx8IFwiY29udGludWVcIiA9PT0gdCkgJiYgaS50cnlMb2MgPD0gZSAmJiBlIDw9IGkuZmluYWxseUxvYyAmJiAoaSA9IG51bGwpO1xuICAgICAgdmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG4gICAgICByZXR1cm4gYS50eXBlID0gdCwgYS5hcmcgPSBlLCBpID8gKHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMubmV4dCA9IGkuZmluYWxseUxvYywgeSkgOiB0aGlzLmNvbXBsZXRlKGEpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHQsIGUpIHtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG4gICAgICByZXR1cm4gXCJicmVha1wiID09PSB0LnR5cGUgfHwgXCJjb250aW51ZVwiID09PSB0LnR5cGUgPyB0aGlzLm5leHQgPSB0LmFyZyA6IFwicmV0dXJuXCIgPT09IHQudHlwZSA/ICh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnLCB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCIsIHRoaXMubmV4dCA9IFwiZW5kXCIpIDogXCJub3JtYWxcIiA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLCB5O1xuICAgIH0sXG4gICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2godCkge1xuICAgICAgZm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuICAgICAgICB2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcbiAgICAgICAgaWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgcmVzZXRUcnlFbnRyeShyKSwgeTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24gX2NhdGNoKHQpIHtcbiAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG4gICAgICAgIGlmIChyLnRyeUxvYyA9PT0gdCkge1xuICAgICAgICAgIHZhciBuID0gci5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChcInRocm93XCIgPT09IG4udHlwZSkge1xuICAgICAgICAgICAgdmFyIG8gPSBuLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkocik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIGRlbGVnYXRlWWllbGQoZSwgciwgbikge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHIsXG4gICAgICAgIG5leHRMb2M6IG5cbiAgICAgIH0sIFwibmV4dFwiID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSwgeTtcbiAgICB9XG4gIH0sIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9yZWdlbmVyYXRvclJ1bnRpbWUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUT0RPKEJhYmVsIDgpOiBSZW1vdmUgdGhpcyBmaWxlLlxuXG52YXIgcnVudGltZSA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3JlZ2VuZXJhdG9yUnVudGltZVwiKSgpO1xubW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL3BhY2thZ2VzL3J1bnRpbWUvcnVudGltZS5qcyNMNzM2PVxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIikge1xuICAgIGdsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbiAgfSBlbHNlIHtcbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xuICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJmdWxsXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IENoYW5uZWxzIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4uL3B1Ymxpc2gvUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi4vcHVibGlzaC9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZSxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiRGlzcG9zYWJsZSIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJEaXNwb3NhYmxlTGlzdCIsImRlZmF1bHREb2N1bWVudEZvY3VzSW50ZXJ2YWxUaW1lb3V0IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImRldGVjdFRhYkZvY3VzQ2hhbmdlIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImhpZGRlbiIsInZpc2liaWxpdHlDaGFuZ2UiLCJkb2N1bWVudCIsIl90eXBlb2YiLCJtc0hpZGRlbiIsIndlYmtpdEhpZGRlbiIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc0ZvcmVncm91bmQiLCJzZXRGb2N1c1N0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5Gb3JEb2N1bWVudEZvY3VzIiwiY2FsbCIsIl90aGlzMiIsIl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwiLCJ3aW5kb3ciLCJzZXRJbnRlcnZhbCIsImhhc0ZvY3VzIiwiY2xlYXJJbnRlcnZhbCIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsInNldFRpbWVvdXQiLCJpbWciLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsInJ0dCIsImxpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX2RvY3VtZW50IiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImJpbmQiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwiX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwibG9jYXRpb24iLCJob3N0bmFtZSIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJfZG9tYWluIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiRm9ybURhdGEiLCJhcHBlbmQiLCJyZWNvcmRzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwiYWJydXB0Iiwic2VudCIsInN0b3AiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJ0aGVuIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJfcmVmIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJQcm9taXNlIiwiY2FsbGJhY2siLCJUeXBlRXJyb3IiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJkb25lIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJpIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJfIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJ2aWRlb1RyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlciIsIm9wdGlvbnMiLCJhZGRUcmFuc2NlaXZlciIsInQwIiwidDEiLCJ0MiIsImNyZWF0ZU9mZmVyIiwidDMiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0NCIsInQ1IiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJSdGNDb25uZWN0aW9uTW9uaXRvciIsIm1lZGlhU3RyZWFtIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3RyYWNrc1RvTW9uaXRvciIsImdldFRyYWNrcyIsIm1hcCIsInRyYWNrIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJwYXJzZWRTRFAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfdXBkYXRlVGltZW91dCIsImNsZWFyVGltZW91dCIsIl91cGRhdGVTdGF0aXN0aWMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiYnl0ZXMiLCJieXRlc1JlY2VpdmVkIiwicHJldmlvdXNCeXRlc1JlY2VpdmVkIiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c0xvc3QiLCJwYWNrZXRzUmVjZWl2ZWQiLCJnZXRDb2RlY0J5VHlwZSIsInZpZGVvIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJnZXRTdGF0c0xlZ2FjeSIsIm5hbWVzIiwic3RhdCIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwicGFyc2VkTG9jYWxEZXNjcmlwdGlvbiIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfYXZhaWxhYmxlVHJhY2tzIiwiYXVkaW8iLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJmaXJDb3VudCIsImZyYW1lSGVpZ2h0IiwiZnJhbWVXaWR0aCIsImZyYW1lc0VuY29kZWQiLCJmcmFtZXNTZW50IiwiaGVhZGVyQnl0ZXNTZW50IiwiaHVnZUZyYW1lc1NlbnQiLCJwbGlDb3VudCIsInFwU3VtIiwidG90YWxFbmNvZGVUaW1lIiwidG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJ1c2VkQ29kZWNMaW5lIiwic2RwTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwic2V0Q29uZmlndXJhdGlvbiIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJzdWJzY3JpYmUiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJpbml0IiwiX2luaXRpYWxpemVkIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5VmlkZW9FbGVtZW50IiwiX3JlYWRPbmx5VG9rZW4iLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzdGFydCIsInBhdXNlIiwic3JjT2JqZWN0Iiwid2lkdGgiLCJ2aWRlb1dpZHRoIiwiaGVpZ2h0IiwidmlkZW9IZWlnaHQiLCJlbXB0eSIsImRpc3Bvc2FibGVzIiwic2V0Qml0cmF0ZUxpbWl0IiwiY2xlYXJCaXRyYXRlTGltaXQiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiUmVzZXQiLCJ1cGRhdGVUYXJnZXRMYWciLCJfc3RvcCIsImlzU3RhcnRpbmciLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIlVuYXV0aG9yaXplZCIsInZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsInZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsiLCJpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJTdGFydGluZyIsIlJlY292ZXJpbmciLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJjcmVhdGUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJfcmVmMiIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzNyIsInBsYXlQcm9taXNlIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiY2xpZW50VmVyc2lvbiIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwiaHR0cFJlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTUiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTgiLCJfeDE5IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gyMCIsIl94MjEiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJqc29uIiwicnRjQ29uZmlndXJhdGlvbiIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDIyIiwiX3gyMyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIl94MjQiLCJfeDI1IiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY2FsbGVlMTEkIiwiX2NvbnRleHQxMSIsIl94MjYiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMyIsIl9jYWxsZWUxMyQiLCJfY29udGV4dDEzIiwiX3gyOCIsIlB1Ymxpc2hlclN0YXRlIiwiUHVibGlzaGVyQ29udGV4dCIsIlJlYWxUaW1lUHVibGlzaGVyIiwib25lSG91ckluTWlsbGlzZWNvbmRzIiwibWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiUHVibGlzaGVyIiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcHVibGlzaGVyU3RhcnRUaW1lIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJwdWJsaXNoZXJEaXNwb3NhYmxlcyIsIlB1Ymxpc2hpbmciLCJzZXRNZWRpYVN0cmVhbSIsIm1lZGlhVHJhY2siLCJzZW5kZXIiLCJfc2VuZGVyJHRyYWNrIiwicmVwbGFjZVRyYWNrIiwic3RyZWFtUHVibGlzaGVyIiwic3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyIsIk5vdEZvdW5kIiwicmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCIsInB1Ymxpc2hlckluaXRpYWxpemF0aW9uIiwiZ2VuZXJhdGVTY3JlZW5OYW1lIiwibWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiUHVibGlzaGVycyIsImNyZWF0ZVB1Ymxpc2hlciIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwic29mdFJlc3RhcnRJbnRlcnZhbCIsInB1Ymxpc2hlckNvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJvbkxpbmUiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjMkIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsIl9yZWY0IiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfcmVmNSIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsImFuc3dlciIsIl9yZWY2IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJ0Y1B1Ymxpc2hNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIl9vYmplY3RTcHJlYWQiLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiaXNDbGllbnRPZmZlckZsb3ciLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQiLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQiLCJSZWFsVGltZVN0cmVhbSIsImNoYW5uZWxDb250ZXh0Iiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJfSW5zZXJ0YWJsZVN0cmVhbXMkYXAiLCJhcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsIl9JbnNlcnRhYmxlU3RyZWFtcyRhcDIiLCJhcHBseUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWVkU3RyZWFtIiwicnRjQ29ubmVjdGlvbk1vbml0b3IiLCJydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiIsInJ0Y1ZpZGVvU3RhdGlzdGljIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJhdWRpb1RyYWNrRmFpbGVkIiwidmlkZW9UcmFja0ZhaWxlZCIsIlJlYWxUaW1lU3RyZWFtRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwibW9kZSIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJyZWNlaXZlcnMiLCJyZWNlaXZlciIsInJlY2VpdmUiLCJ3b3JrZXIiLCJXb3JrZXIiLCJpbXBvcnQiLCJtZXRhIiwib25tZXNzYWdlIiwiZXZlbnQiLCJjaHVuayIsInBvc3RNZXNzYWdlIiwiZm9yY2VJbnZhbGlkRnJhbWUiLCJ0cmFuc2Zvcm0iLCJ0ZXJtaW5hdGUiLCJlbmNvZGVkU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJjb250cm9sbGVyIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJlbnF1ZXVlIiwidHJhbnNmb3JtZXIiLCJUcmFuc2Zvcm1TdHJlYW0iLCJyZWNlaXZlclN0cmVhbXMiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ3cml0YWJsZSIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwiTWVkaWFTdHJlYW0iLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwidmlkZW9UcmFjayIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInJlbW92ZVRyYWNrIiwiYXVkaW9UcmFjayIsIlN5bWJvbCIsInRvVXBwZXJDYXNlIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsIk9QVVMiLCJidWZmZXIiLCJfc2luZ2xlWmVyb0J5dGUiLCJfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9kdW1teTgyeDgySDI2NCIsIklGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJIMjY0IiwiVlA4IiwiVlA5IiwiX2lzQW5kcm9pZENocm9tZSIsImdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwic2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciIsImJpdE1hc2sxIiwiYml0TWFzazIiLCJiaXRTaGlmdFJpZ2h0QnkxIiwiYml0U2hpZnRMZWZ0Qnk3IiwiYnl0ZTEiLCJieXRlMiIsImNvcHlPZkR1bW15UEZyYW1lcyIsIlBGcmFtZSIsImJ1ZmZlckluZGV4IiwiX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleCIsIl9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiaXNBbmRyb2lkIiwiVWludDhBcnJheSIsIl9pc01vYmlsZUNocm9tZSIsIl9pc1NhZmFyaSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfbmV0d29ya01vbml0b3IiLCJyZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlIiwicmVjb3JkTmV0d29ya1JUVFVwZGF0ZSIsInJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlIiwiZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJyZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUiLCJ0aW1lU2luY2VMYXN0Q2hhbmdlIiwibmV3UlRUIiwib2xkUnR0IiwiX2xhc3ROZXR3b3JrU3RhdGlzdGljcyIsIm5ld05ldHdvcmtUeXBlIiwib2xkTmV0d29ya1R5cGUiLCJuZXdDYXBhY2l0eSIsIm9sZENhcGFjaXR5IiwiZmxvYXQiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|