testcafe 2.1.0 → 2.1.1-alpha.1
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/lib/browser/connection/gateway.js +3 -3
- package/lib/cli/argument-parser/index.js +2 -2
- package/lib/cli/cli.js +3 -3
- package/lib/client/automation/index.js +1 -3
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/driver/index.js +2 -0
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/test-run/index.js.mustache +5 -3
- package/lib/configuration/option-names.js +2 -2
- package/lib/configuration/run-option-names.js +2 -2
- package/lib/configuration/testcafe-configuration.js +4 -4
- package/lib/errors/process-test-fn-error.js +3 -1
- package/lib/errors/test-run/index.js +2 -2
- package/lib/proxyless/request-hooks/event-provider.js +3 -2
- package/lib/proxyless/request-pipeline/index.js +45 -20
- package/lib/proxyless/resource-injector.js +27 -12
- package/lib/proxyless/types.js +1 -1
- package/lib/proxyless/utils/cdp.js +11 -2
- package/lib/proxyless/utils/headers.js +2 -2
- package/lib/runner/index.js +2 -2
- package/lib/test-run/index.js +36 -13
- package/lib/test-run/role-provider.js +41 -0
- package/lib/testcafe.js +2 -2
- package/package.json +2 -2
|
@@ -43,8 +43,8 @@ class BrowserConnectionGateway {
|
|
|
43
43
|
this._dispatch(`${service_routes_1.default.statusDone}/{id}`, proxy, BrowserConnectionGateway._onStatusRequestOnTestDone, 'GET', this.proxyless);
|
|
44
44
|
this._dispatch(`${service_routes_1.default.initScript}/{id}`, proxy, BrowserConnectionGateway._onInitScriptRequest);
|
|
45
45
|
this._dispatch(`${service_routes_1.default.initScript}/{id}`, proxy, BrowserConnectionGateway._onInitScriptResponse, 'POST');
|
|
46
|
-
this._dispatch(`${service_routes_1.default.activeWindowId}/{id}`, proxy, BrowserConnectionGateway._onGetActiveWindowIdRequest);
|
|
47
|
-
this._dispatch(`${service_routes_1.default.activeWindowId}/{id}`, proxy, BrowserConnectionGateway._onSetActiveWindowIdRequest, 'POST');
|
|
46
|
+
this._dispatch(`${service_routes_1.default.activeWindowId}/{id}`, proxy, BrowserConnectionGateway._onGetActiveWindowIdRequest, 'GET', this.proxyless);
|
|
47
|
+
this._dispatch(`${service_routes_1.default.activeWindowId}/{id}`, proxy, BrowserConnectionGateway._onSetActiveWindowIdRequest, 'POST', this.proxyless);
|
|
48
48
|
this._dispatch(`${service_routes_1.default.closeWindow}/{id}`, proxy, BrowserConnectionGateway._onCloseWindowRequest, 'POST');
|
|
49
49
|
this._dispatch(`${service_routes_1.default.openFileProtocol}/{id}`, proxy, BrowserConnectionGateway._onOpenFileProtocolRequest, 'POST');
|
|
50
50
|
proxy.GET(service_routes_1.default.connect, (req, res) => this._connectNextRemoteBrowser(req, res));
|
|
@@ -190,4 +190,4 @@ class BrowserConnectionGateway {
|
|
|
190
190
|
}
|
|
191
191
|
exports.default = BrowserConnectionGateway;
|
|
192
192
|
module.exports = exports.default;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL2Nvbm5lY3Rpb24vZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9FQUEyQztBQUMzQywyQ0FNMEI7QUFFMUIsb0VBQTJDO0FBQzNDLDZEQUErRDtBQUkvRCxzRUFBOEM7QUFDOUMsMEZBQWtFO0FBQ2xFLDhFQUFnRTtBQUVoRSxNQUFxQix3QkFBd0I7SUFRekMsWUFBb0IsS0FBWSxFQUFFLE9BQXdEO1FBUGxGLGlCQUFZLEdBQWtDLEVBQUUsQ0FBQztRQVFyRCxJQUFJLENBQUMsYUFBYSxHQUFLLElBQUksdUJBQVksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQVEsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHdCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFhLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUUsR0FBVyxFQUFFLEtBQVksRUFBRSxPQUFpQixFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsdUJBQWlDO1FBQzlHLHlFQUF5RTtRQUN6RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQVUsRUFBRSxNQUEwQixFQUFFLEVBQUU7WUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFaEQsSUFBQSxxQkFBYyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLElBQUksdUJBQXVC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LHlCQUF5QixDQUFFLEdBQW9CLEVBQUUsR0FBbUI7UUFDOUUsSUFBQSxxQkFBYyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFELElBQUksZ0JBQWdCO1lBQ2hCLElBQUEsZUFBUSxFQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7WUFFcEMsSUFBQSxpQkFBVSxFQUFDLEdBQUcsRUFBRSxtREFBbUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNO0lBQ0Msc0JBQXNCLENBQUUsVUFBNkI7UUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBRTlDLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEtBQUssUUFBUTtZQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0scUJBQXFCLENBQUUsVUFBNkI7UUFDdkQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4QyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxLQUFLLFFBQVE7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2QsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUM5QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNKO0FBMU9ELDJDQTBPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkQXNzZXRzIGZyb20gJy4uLy4uL2xvYWQtYXNzZXRzJztcbmltcG9ydCB7XG4gICAgcmVzcG9uZDQwNCxcbiAgICByZXNwb25kNTAwLFxuICAgIHJlc3BvbmRXaXRoSlNPTixcbiAgICByZWRpcmVjdCxcbiAgICBwcmV2ZW50Q2FjaGluZyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvaHR0cCc7XG5cbmltcG9ydCBSZW1vdGVzUXVldWUgZnJvbSAnLi9yZW1vdGVzLXF1ZXVlJztcbmltcG9ydCB7IFByb3h5LCBhY2NlcHRDcm9zc09yaWdpbiB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgU0VSVklDRV9ST1VURVMgZnJvbSAnLi9zZXJ2aWNlLXJvdXRlcyc7XG5pbXBvcnQgRU1QVFlfUEFHRV9NQVJLVVAgZnJvbSAnLi4vLi4vcHJveHlsZXNzL2VtcHR5LXBhZ2UtbWFya3VwJztcbmltcG9ydCBQUk9YWUxFU1NfRVJST1JfUk9VVEUgZnJvbSAnLi4vLi4vcHJveHlsZXNzL2Vycm9yLXJvdXRlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5IHtcbiAgICBwcml2YXRlIF9jb25uZWN0aW9uczogRGljdGlvbmFyeTxCcm93c2VyQ29ubmVjdGlvbj4gPSB7fTtcbiAgICBwcml2YXRlIF9yZW1vdGVzUXVldWU6IFJlbW90ZXNRdWV1ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdFVybDogc3RyaW5nO1xuICAgIHB1YmxpYyByZXRyeVRlc3RQYWdlczogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3h5bGVzczogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJveHk6IFByb3h5O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwcm94eTogUHJveHksIG9wdGlvbnM6IHsgcmV0cnlUZXN0UGFnZXM6IGJvb2xlYW47IHByb3h5bGVzczogYm9vbGVhbiB9KSB7XG4gICAgICAgIHRoaXMuX3JlbW90ZXNRdWV1ZSAgID0gbmV3IFJlbW90ZXNRdWV1ZSgpO1xuICAgICAgICB0aGlzLmNvbm5lY3RVcmwgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoU0VSVklDRV9ST1VURVMuY29ubmVjdCk7XG4gICAgICAgIHRoaXMucmV0cnlUZXN0UGFnZXMgID0gb3B0aW9ucy5yZXRyeVRlc3RQYWdlcztcbiAgICAgICAgdGhpcy5wcm94eWxlc3MgICAgICAgPSBvcHRpb25zLnByb3h5bGVzcztcbiAgICAgICAgdGhpcy5wcm94eSAgICAgICAgICAgPSBwcm94eTtcblxuICAgICAgICB0aGlzLl9yZWdpc3RlclJvdXRlcyhwcm94eSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzcGF0Y2ggKHVybDogc3RyaW5nLCBwcm94eTogUHJveHksIGhhbmRsZXI6IEZ1bmN0aW9uLCBtZXRob2QgPSAnR0VUJywgc2hvdWxkQWNjZXB0Q3Jvc3NPcmlnaW4/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgTmVlZCB0byBpbXByb3ZlIHR5cGluZ3Mgb2YgdGhlICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJyBtb2R1bGVcbiAgICAgICAgcHJveHlbbWV0aG9kXSh1cmwsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgc2VydmVySW5mbywgcGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLl9jb25uZWN0aW9uc1twYXJhbXMuaWRdO1xuXG4gICAgICAgICAgICBwcmV2ZW50Q2FjaGluZyhyZXMpO1xuXG4gICAgICAgICAgICBpZiAoc2hvdWxkQWNjZXB0Q3Jvc3NPcmlnaW4pXG4gICAgICAgICAgICAgICAgYWNjZXB0Q3Jvc3NPcmlnaW4ocmVzKTtcblxuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24pXG4gICAgICAgICAgICAgICAgaGFuZGxlcihyZXEsIHJlcywgY29ubmVjdGlvbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmVzcG9uZDQwNChyZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWdpc3RlclJvdXRlcyAocHJveHk6IFByb3h5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlkbGVQYWdlU2NyaXB0LFxuICAgICAgICAgICAgaWRsZVBhZ2VTdHlsZSxcbiAgICAgICAgICAgIGlkbGVQYWdlTG9nbyxcbiAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJTY3JpcHQsXG4gICAgICAgIH0gPSBsb2FkQXNzZXRzKCk7XG5cbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuY29ubmVjdH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uQ29ubmVjdGlvbik7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmhlYXJ0YmVhdH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSGVhcnRiZWF0LCAnR0VUJywgdGhpcy5wcm94eWxlc3MpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5pZGxlfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25JZGxlKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaWRsZUZvcmNlZH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSWRsZUZvcmNlZCk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c30ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdCk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c0RvbmV9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vblN0YXR1c1JlcXVlc3RPblRlc3REb25lLCAnR0VUJywgdGhpcy5wcm94eWxlc3MpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5pbml0U2NyaXB0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25Jbml0U2NyaXB0UmVxdWVzdCk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmluaXRTY3JpcHR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkluaXRTY3JpcHRSZXNwb25zZSwgJ1BPU1QnKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuYWN0aXZlV2luZG93SWR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkdldEFjdGl2ZVdpbmRvd0lkUmVxdWVzdCk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmFjdGl2ZVdpbmRvd0lkfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25TZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QsICdQT1NUJyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmNsb3NlV2luZG93fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25DbG9zZVdpbmRvd1JlcXVlc3QsICdQT1NUJyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLm9wZW5GaWxlUHJvdG9jb2x9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbk9wZW5GaWxlUHJvdG9jb2xSZXF1ZXN0LCAnUE9TVCcpO1xuXG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5jb25uZWN0LCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UpID0+IHRoaXMuX2Nvbm5lY3ROZXh0UmVtb3RlQnJvd3NlcihyZXEsIHJlcykpO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuY29ubmVjdFdpdGhUcmFpbGluZ1NsYXNoLCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UpID0+IHRoaXMuX2Nvbm5lY3ROZXh0UmVtb3RlQnJvd3NlcihyZXEsIHJlcykpO1xuXG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5zZXJ2aWNlV29ya2VyLCB7IGNvbnRlbnQ6IHNlcnZpY2VXb3JrZXJTY3JpcHQsIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0JyB9KTtcbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLmFzc2V0cy5pbmRleCwgeyBjb250ZW50OiBpZGxlUGFnZVNjcmlwdCwgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLnN0eWxlcywgeyBjb250ZW50OiBpZGxlUGFnZVN0eWxlLCBjb250ZW50VHlwZTogJ3RleHQvY3NzJyB9KTtcbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLmFzc2V0cy5sb2dvLCB7IGNvbnRlbnQ6IGlkbGVQYWdlTG9nbywgY29udGVudFR5cGU6ICdpbWFnZS9zdmcreG1sJyB9KTtcblxuICAgICAgICBpZiAodGhpcy5wcm94eWxlc3MpIHtcbiAgICAgICAgICAgIHByb3h5LkdFVChQUk9YWUxFU1NfRVJST1JfUk9VVEUsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgICAgICByZXMuZW5kKEVNUFRZX1BBR0VfTUFSS1VQKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGVscGVyc1xuICAgIHByaXZhdGUgc3RhdGljIF9lbnN1cmVDb25uZWN0aW9uUmVhZHkgKHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29ubmVjdGlvbi5pc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIHJlc3BvbmQ1MDAocmVzLCAnVGhlIGNvbm5lY3Rpb24gaXMgbm90IHJlYWR5IHlldC4nKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9mZXRjaFJlcXVlc3REYXRhIChyZXE6IEluY29taW5nTWVzc2FnZSwgY2FsbGJhY2s6IChkYXRhOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IGRhdGEgPSAnJztcblxuICAgICAgICByZXEub24oJ2RhdGEnLCBjaHVuayA9PiB7XG4gICAgICAgICAgICBkYXRhICs9IGNodW5rO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXEub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJvdXRlIGhhbmRsZXJzXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uQ29ubmVjdGlvbiAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChjb25uZWN0aW9uLmlzUmVhZHkoKSlcbiAgICAgICAgICAgIHJlc3BvbmQ1MDAocmVzLCAnVGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBlc3RhYmxpc2hlZC4nKTtcblxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJBZ2VudCA9IHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10gYXMgc3RyaW5nO1xuXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmVzdGFibGlzaCh1c2VyQWdlbnQpO1xuICAgICAgICAgICAgcmVkaXJlY3QocmVzLCBjb25uZWN0aW9uLmlkbGVVcmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uSGVhcnRiZWF0IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGNvbm5lY3Rpb24uaGVhcnRiZWF0KCk7XG5cbiAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMsIHN0YXR1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25JZGxlIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpXG4gICAgICAgICAgICByZXMuZW5kKGNvbm5lY3Rpb24ucmVuZGVySWRsZVBhZ2UoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uSWRsZUZvcmNlZCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeShyZXMsIGNvbm5lY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBjb25uZWN0aW9uLmdldFN0YXR1cyh0cnVlKTtcblxuICAgICAgICAgICAgcmVkaXJlY3QocmVzLCBzdGF0dXMudXJsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIF9vblN0YXR1c1JlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vblN0YXR1c1JlcXVlc3RDb3JlKHJlcSwgcmVzLCBjb25uZWN0aW9uLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uU3RhdHVzUmVxdWVzdE9uVGVzdERvbmUgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vblN0YXR1c1JlcXVlc3RDb3JlKHJlcSwgcmVzLCBjb25uZWN0aW9uLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25TdGF0dXNSZXF1ZXN0Q29yZSAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uLCBpc1Rlc3REb25lOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeShyZXMsIGNvbm5lY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBjb25uZWN0aW9uLmdldFN0YXR1cyhpc1Rlc3REb25lKTtcblxuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9vbkluaXRTY3JpcHRSZXF1ZXN0IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGNvbm5lY3Rpb24uZ2V0SW5pdFNjcmlwdCgpO1xuXG4gICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzLCBzY3JpcHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uSW5pdFNjcmlwdFJlc3BvbnNlIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZmV0Y2hSZXF1ZXN0RGF0YShyZXEsIGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uaGFuZGxlSW5pdFNjcmlwdFJlc3VsdChkYXRhKTtcblxuICAgICAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uR2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMsIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVXaW5kb3dJZDogY29ubmVjdGlvbi5hY3RpdmVXaW5kb3dJZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uU2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZmV0Y2hSZXF1ZXN0RGF0YShyZXEsIGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5hY3RpdmVXaW5kb3dJZCA9IHBhcnNlZERhdGEud2luZG93SWQ7XG5cbiAgICAgICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uQ2xvc2VXaW5kb3dSZXF1ZXN0IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucHJvdmlkZXIuY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3coY29ubmVjdGlvbi5pZClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uT3BlbkZpbGVQcm90b2NvbFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG5cbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLm9wZW5GaWxlUHJvdG9jb2wocGFyc2VkRGF0YS51cmwpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY29ubmVjdE5leHRSZW1vdGVCcm93c2VyIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBwcmV2ZW50Q2FjaGluZyhyZXMpO1xuXG4gICAgICAgIGNvbnN0IHJlbW90ZUNvbm5lY3Rpb24gPSBhd2FpdCB0aGlzLl9yZW1vdGVzUXVldWUuc2hpZnQoKTtcblxuICAgICAgICBpZiAocmVtb3RlQ29ubmVjdGlvbilcbiAgICAgICAgICAgIHJlZGlyZWN0KHJlcywgcmVtb3RlQ29ubmVjdGlvbi51cmwpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXNwb25kNTAwKHJlcywgJ1RoZXJlIGFyZSBubyBhdmFpbGFibGUgX2Nvbm5lY3Rpb25zIHRvIGVzdGFibGlzaC4nKTtcbiAgICB9XG5cbiAgICAvLyBBUElcbiAgICBwdWJsaWMgc3RhcnRTZXJ2aW5nQ29ubmVjdGlvbiAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvbnNbY29ubmVjdGlvbi5pZF0gPSBjb25uZWN0aW9uO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnByb3ZpZGVyTmFtZSA9PT0gJ3JlbW90ZScpXG4gICAgICAgICAgICB0aGlzLl9yZW1vdGVzUXVldWUuYWRkKGNvbm5lY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9wU2VydmluZ0Nvbm5lY3Rpb24gKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9jb25uZWN0aW9uc1tjb25uZWN0aW9uLmlkXTtcblxuICAgICAgICBpZiAoY29ubmVjdGlvbi5icm93c2VySW5mby5wcm92aWRlck5hbWUgPT09ICdyZW1vdGUnKVxuICAgICAgICAgICAgdGhpcy5fcmVtb3Rlc1F1ZXVlLnJlbW92ZShjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2UgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGlkIGluIHRoaXMuX2Nvbm5lY3Rpb25zKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29ubmVjdGlvbnNbaWRdLmNsb3NlKCk7XG4gICAgfVxufVxuXG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL2Nvbm5lY3Rpb24vZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9FQUEyQztBQUMzQywyQ0FNMEI7QUFFMUIsb0VBQTJDO0FBQzNDLDZEQUErRDtBQUkvRCxzRUFBOEM7QUFDOUMsMEZBQWtFO0FBQ2xFLDhFQUFnRTtBQUVoRSxNQUFxQix3QkFBd0I7SUFRekMsWUFBb0IsS0FBWSxFQUFFLE9BQXdEO1FBUGxGLGlCQUFZLEdBQWtDLEVBQUUsQ0FBQztRQVFyRCxJQUFJLENBQUMsYUFBYSxHQUFLLElBQUksdUJBQVksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQVEsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHdCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFhLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUUsR0FBVyxFQUFFLEtBQVksRUFBRSxPQUFpQixFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsdUJBQWlDO1FBQzlHLHlFQUF5RTtRQUN6RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQVUsRUFBRSxNQUEwQixFQUFFLEVBQUU7WUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFaEQsSUFBQSxxQkFBYyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLElBQUksdUJBQXVC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Li4vLi4vbG9hZC1hc3NldHMnO1xuaW1wb3J0IHtcbiAgICByZXNwb25kNDA0LFxuICAgIHJlc3BvbmQ1MDAsXG4gICAgcmVzcG9uZFdpdGhKU09OLFxuICAgIHJlZGlyZWN0LFxuICAgIHByZXZlbnRDYWNoaW5nLFxufSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcblxuaW1wb3J0IFJlbW90ZXNRdWV1ZSBmcm9tICcuL3JlbW90ZXMtcXVldWUnO1xuaW1wb3J0IHsgUHJveHksIGFjY2VwdENyb3NzT3JpZ2luIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJztcbmltcG9ydCBTRVJWSUNFX1JPVVRFUyBmcm9tICcuL3NlcnZpY2Utcm91dGVzJztcbmltcG9ydCBFTVBUWV9QQUdFX01BUktVUCBmcm9tICcuLi8uLi9wcm94eWxlc3MvZW1wdHktcGFnZS1tYXJrdXAnO1xuaW1wb3J0IFBST1hZTEVTU19FUlJPUl9ST1VURSBmcm9tICcuLi8uLi9wcm94eWxlc3MvZXJyb3Itcm91dGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkge1xuICAgIHByaXZhdGUgX2Nvbm5lY3Rpb25zOiBEaWN0aW9uYXJ5PEJyb3dzZXJDb25uZWN0aW9uPiA9IHt9O1xuICAgIHByaXZhdGUgX3JlbW90ZXNRdWV1ZTogUmVtb3Rlc1F1ZXVlO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25uZWN0VXJsOiBzdHJpbmc7XG4gICAgcHVibGljIHJldHJ5VGVzdFBhZ2VzOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJveHlsZXNzOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBwcm94eTogUHJveHk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHByb3h5OiBQcm94eSwgb3B0aW9uczogeyByZXRyeVRlc3RQYWdlczogYm9vbGVhbjsgcHJveHlsZXNzOiBib29sZWFuIH0pIHtcbiAgICAgICAgdGhpcy5fcmVtb3Rlc1F1ZXVlICAgPSBuZXcgUmVtb3Rlc1F1ZXVlKCk7XG4gICAgICAgIHRoaXMuY29ubmVjdFVybCAgICAgID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChTRVJWSUNFX1JPVVRFUy5jb25uZWN0KTtcbiAgICAgICAgdGhpcy5yZXRyeVRlc3RQYWdlcyAgPSBvcHRpb25zLnJldHJ5VGVzdFBhZ2VzO1xuICAgICAgICB0aGlzLnByb3h5bGVzcyAgICAgICA9IG9wdGlvbnMucHJveHlsZXNzO1xuICAgICAgICB0aGlzLnByb3h5ICAgICAgICAgICA9IHByb3h5O1xuXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyUm91dGVzKHByb3h5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNwYXRjaCAodXJsOiBzdHJpbmcsIHByb3h5OiBQcm94eSwgaGFuZGxlcjogRnVuY3Rpb24sIG1ldGhvZCA9ICdHRVQnLCBzaG91bGRBY2NlcHRDcm9zc09yaWdpbj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBOZWVkIHRvIGltcHJvdmUgdHlwaW5ncyBvZiB0aGUgJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnIG1vZHVsZVxuICAgICAgICBwcm94eVttZXRob2RdKHVybCwgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBzZXJ2ZXJJbmZvLCBwYXJhbXM6IERpY3Rpb25hcnk8c3RyaW5nPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25zW3BhcmFtcy5pZF07XG5cbiAgICAgICAgICAgIHByZXZlbnRDYWNoaW5nKHJlcyk7XG5cbiAgICAgICAgICAgIGlmIChzaG91bGRBY2NlcHRDcm9zc09yaWdpbilcbiAgICAgICAgICAgICAgICBhY2NlcHRDcm9zc09yaWdpbihyZXMpO1xuXG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbilcbiAgICAgICAgICAgICAgICBoYW5kbGVyKHJlcSwgcmVzLCBjb25uZWN0aW9uKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXNwb25kNDA0KHJlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlZ2lzdGVyUm91dGVzIChwcm94eTogUHJveHkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaWRsZVBhZ2VTY3JpcHQsXG4gICAgICAgICAgICBpZGxlUGFnZVN0eWxlLFxuICAgICAgICAgICAgaWRsZVBhZ2VMb2dvLFxuICAgICAgICAgICAgc2VydmljZVdvcmtlclNjcmlwdCxcbiAgICAgICAgfSA9IGxvYWRBc3NldHMoKTtcblxuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5jb25uZWN0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25Db25uZWN0aW9uKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaGVhcnRiZWF0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25IZWFydGJlYXQsICdHRVQnLCB0aGlzLnByb3h5bGVzcyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmlkbGV9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbklkbGUpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5pZGxlRm9yY2VkfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25JZGxlRm9yY2VkKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25TdGF0dXNSZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzRG9uZX0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdE9uVGVzdERvbmUsICdHRVQnLCB0aGlzLnByb3h5bGVzcyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmluaXRTY3JpcHR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkluaXRTY3JpcHRSZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaW5pdFNjcmlwdH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSW5pdFNjcmlwdFJlc3BvbnNlLCAnUE9TVCcpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uR2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0LCAnR0VUJywgdGhpcy5wcm94eWxlc3MpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0LCAnUE9TVCcsIHRoaXMucHJveHlsZXNzKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuY2xvc2VXaW5kb3d9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkNsb3NlV2luZG93UmVxdWVzdCwgJ1BPU1QnKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMub3BlbkZpbGVQcm90b2NvbH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uT3BlbkZpbGVQcm90b2NvbFJlcXVlc3QsICdQT1NUJyk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLmNvbm5lY3QsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5jb25uZWN0V2l0aFRyYWlsaW5nU2xhc2gsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLnNlcnZpY2VXb3JrZXIsIHsgY29udGVudDogc2VydmljZVdvcmtlclNjcmlwdCwgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmluZGV4LCB7IGNvbnRlbnQ6IGlkbGVQYWdlU2NyaXB0LCBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5hc3NldHMuc3R5bGVzLCB7IGNvbnRlbnQ6IGlkbGVQYWdlU3R5bGUsIGNvbnRlbnRUeXBlOiAndGV4dC9jc3MnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmxvZ28sIHsgY29udGVudDogaWRsZVBhZ2VMb2dvLCBjb250ZW50VHlwZTogJ2ltYWdlL3N2Zyt4bWwnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3h5bGVzcykge1xuICAgICAgICAgICAgcHJveHkuR0VUKFBST1hZTEVTU19FUlJPUl9ST1VURSwgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgICAgICAgIHJlcy5lbmQoRU1QVFlfUEFHRV9NQVJLVVApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeSAocmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb25uZWN0aW9uLmlzUmVhZHkoKSkge1xuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBub3QgcmVhZHkgeWV0LicpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2ZldGNoUmVxdWVzdERhdGEgKHJlcTogSW5jb21pbmdNZXNzYWdlLCBjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgZGF0YSA9ICcnO1xuXG4gICAgICAgIHJlcS5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlcS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUm91dGUgaGFuZGxlcnNcbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25Db25uZWN0aW9uIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uaXNSZWFkeSgpKVxuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGVzdGFibGlzaGVkLicpO1xuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdXNlckFnZW50ID0gcmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uZXN0YWJsaXNoKHVzZXJBZ2VudCk7XG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIGNvbm5lY3Rpb24uaWRsZVVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25IZWFydGJlYXQgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gY29ubmVjdGlvbi5oZWFydGJlYXQoKTtcblxuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9vbklkbGUgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSlcbiAgICAgICAgICAgIHJlcy5lbmQoY29ubmVjdGlvbi5yZW5kZXJJZGxlUGFnZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25JZGxlRm9yY2VkIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKHRydWUpO1xuXG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIHN0YXR1cy51cmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uU3RhdHVzUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25TdGF0dXNSZXF1ZXN0T25UZXN0RG9uZSAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIF9vblN0YXR1c1JlcXVlc3RDb3JlIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIGlzVGVzdERvbmU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKGlzVGVzdERvbmUpO1xuXG4gICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzLCBzdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uSW5pdFNjcmlwdFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gY29ubmVjdGlvbi5nZXRJbml0U2NyaXB0KCk7XG5cbiAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMsIHNjcmlwdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25Jbml0U2NyaXB0UmVzcG9uc2UgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5oYW5kbGVJbml0U2NyaXB0UmVzdWx0KGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25HZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVdpbmRvd0lkOiBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25TZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG5cbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkID0gcGFyc2VkRGF0YS53aW5kb3dJZDtcblxuICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25DbG9zZVdpbmRvd1JlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5wcm92aWRlci5jbG9zZUJyb3dzZXJDaGlsZFdpbmRvdyhjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25PcGVuRmlsZVByb3RvY29sUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeShyZXMsIGNvbm5lY3Rpb24pKSB7XG4gICAgICAgICAgICBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2ZldGNoUmVxdWVzdERhdGEocmVxLCBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ub3BlbkZpbGVQcm90b2NvbChwYXJzZWREYXRhLnVybClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jb25uZWN0TmV4dFJlbW90ZUJyb3dzZXIgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHByZXZlbnRDYWNoaW5nKHJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVtb3RlQ29ubmVjdGlvbiA9IGF3YWl0IHRoaXMuX3JlbW90ZXNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChyZW1vdGVDb25uZWN0aW9uKVxuICAgICAgICAgICAgcmVkaXJlY3QocmVzLCByZW1vdGVDb25uZWN0aW9uLnVybCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlc3BvbmQ1MDAocmVzLCAnVGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBfY29ubmVjdGlvbnMgdG8gZXN0YWJsaXNoLicpO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBzdGFydFNlcnZpbmdDb25uZWN0aW9uIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uc1tjb25uZWN0aW9uLmlkXSA9IGNvbm5lY3Rpb247XG5cbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lID09PSAncmVtb3RlJylcbiAgICAgICAgICAgIHRoaXMuX3JlbW90ZXNRdWV1ZS5hZGQoY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3BTZXJ2aW5nQ29ubmVjdGlvbiAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2Nvbm5lY3Rpb25zW2Nvbm5lY3Rpb24uaWRdO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnByb3ZpZGVyTmFtZSA9PT0gJ3JlbW90ZScpXG4gICAgICAgICAgICB0aGlzLl9yZW1vdGVzUXVldWUucmVtb3ZlKGNvbm5lY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGZvciAoY29uc3QgaWQgaW4gdGhpcy5fY29ubmVjdGlvbnMpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25uZWN0aW9uc1tpZF0uY2xvc2UoKTtcbiAgICB9XG59XG5cbiJdfQ==
|
|
@@ -154,7 +154,7 @@ class CLIArgumentParser {
|
|
|
154
154
|
.option('--color', 'force colors in command line')
|
|
155
155
|
.option('--no-color', 'disable colors in command line')
|
|
156
156
|
// NOTE: temporary hide experimental options from --help command
|
|
157
|
-
.addOption(new commander_1.Option('--proxyless', 'experimental').hideHelp())
|
|
157
|
+
.addOption(new commander_1.Option('--experimental-proxyless', 'experimental').hideHelp())
|
|
158
158
|
.addOption(new commander_1.Option('--experimental-debug', 'enable experimental debug mode').hideHelp())
|
|
159
159
|
.addOption(new commander_1.Option('--disable-cross-domain', 'experimental').hideHelp())
|
|
160
160
|
.action((opts) => {
|
|
@@ -388,4 +388,4 @@ class CLIArgumentParser {
|
|
|
388
388
|
}
|
|
389
389
|
exports.default = CLIArgumentParser;
|
|
390
390
|
module.exports = exports.default;
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFVaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUU1QyxpR0FBNkc7QUFFN0csTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFFOUMsTUFBTSxXQUFXLEdBQUcsSUFBQSxnQkFBTSxFQUFDOzs7Ozs7Ozs7Ozs7O0NBYTFCLENBQUMsQ0FBQztBQXlDSCxNQUFxQixpQkFBaUI7SUFTbEMsWUFBb0IsR0FBWTtRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBVSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBVSxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFp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QUFNLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sYUFBYTtRQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLDBCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNsQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSTtnQkFDdkIsMkRBQTJEO2dCQUMzRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBMEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0o7QUF4YUQsb0NBd2FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzLCBzZXQgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgcHJvZ3JhbSwge1xuICAgIENvbW1hbmQsXG4gICAgT3B0aW9uLFxufSBmcm9tICdjb21tYW5kZXInO1xuXG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudCc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgZ2V0Vmlld1BvcnRXaWR0aCBmcm9tICcuLi8uLi91dGlscy9nZXQtdmlld3BvcnQtd2lkdGgnO1xuaW1wb3J0IHsgd29yZFdyYXAsIHNwbGl0UXVvdGVkVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQge1xuICAgIGdldFNTTE9wdGlvbnMsXG4gICAgZ2V0UXVhcmFudGluZU9wdGlvbnMsXG4gICAgZ2V0U2NyZWVuc2hvdE9wdGlvbnMsXG4gICAgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucyxcbiAgICBnZXRWaWRlb09wdGlvbnMsXG4gICAgZ2V0TWV0YU9wdGlvbnMsXG4gICAgZ2V0R3JlcE9wdGlvbnMsXG4gICAgZ2V0Q29tcGlsZXJPcHRpb25zLFxuICAgIGdldERhc2hib2FyZE9wdGlvbnMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2dldC1vcHRpb25zJztcblxuaW1wb3J0IGdldEZpbHRlckZuIGZyb20gJy4uLy4uL3V0aWxzL2dldC1maWx0ZXItZm4nO1xuaW1wb3J0IFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2NyZWVuc2hvdC1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFJVTl9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9ydW4tb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSxcbiAgICBSZXBvcnRlck9wdGlvbixcbiAgICBSdW5uZXJSdW5PcHRpb25zLFxufSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcXVhcmFudGluZS1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzIH0gZnJvbSAnLi4vbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcbmltcG9ydCBnZXRUZXN0Y2FmZVZlcnNpb24gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXRlc3RjYWZlLXZlcnNpb24nO1xuaW1wb3J0IHsgcGFyc2VQb3J0TnVtYmVyLCBwYXJzZUxpc3QgfSBmcm9tICcuL3BhcnNlLXV0aWxzJztcbmltcG9ydCBDT01NQU5EX05BTUVTIGZyb20gJy4vY29tbWFuZC1uYW1lcyc7XG5pbXBvcnQgeyBTZW5kUmVwb3J0U3RhdGUgfSBmcm9tICcuLi8uLi9kYXNoYm9hcmQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NraXAtanMtZXJyb3JzLW9wdGlvbi1uYW1lcyc7XG5cbmNvbnN0IFJFTU9URV9BTElBU19SRSA9IC9ecmVtb3RlKD86OihcXGQqKSk/JC87XG5cbmNvbnN0IERFU0NSSVBUSU9OID0gZGVkZW50KGBcbiAgICBJbiB0aGUgYnJvd3NlciBsaXN0LCB5b3UgY2FuIHVzZSBicm93c2VyIG5hbWVzIChlLmcuIFwiaWVcIiwgXCJjaHJvbWVcIiwgZXRjLikgYXMgd2VsbCBhcyBwYXRocyB0byBleGVjdXRhYmxlcy5cblxuICAgIFRvIHJ1biB0ZXN0cyBhZ2FpbnN0IGFsbCBpbnN0YWxsZWQgYnJvd3NlcnMsIHVzZSB0aGUgXCJhbGxcIiBhbGlhcy5cblxuICAgIFRvIHVzZSBhIHJlbW90ZSBicm93c2VyIGNvbm5lY3Rpb24gKGUuZy4sIHRvIGNvbm5lY3QgYSBtb2JpbGUgZGV2aWNlKSwgc3BlY2lmeSBcInJlbW90ZVwiIGFzIHRoZSBicm93c2VyIGFsaWFzLlxuICAgIElmIHlvdSBuZWVkIHRvIGNvbm5lY3QgbXVsdGlwbGUgZGV2aWNlcywgYWRkIGEgY29sb24gYW5kIHRoZSBudW1iZXIgb2YgYnJvd3NlcnMgeW91IHdhbnQgdG8gY29ubmVjdCAoZS5nLiwgXCJyZW1vdGU6M1wiKS5cblxuICAgIFRvIHJ1biB0ZXN0cyBpbiBhIGJyb3dzZXIgYWNjZXNzZWQgdGhyb3VnaCBhIGJyb3dzZXIgcHJvdmlkZXIgcGx1Z2luLCBzcGVjaWZ5IGEgYnJvd3NlciBhbGlhcyB0aGF0IGNvbnNpc3RzIG9mIHR3byBwYXJ0cyAtIHRoZSBicm93c2VyIHByb3ZpZGVyIG5hbWUgcHJlZml4IGFuZCB0aGUgbmFtZSBvZiB0aGUgYnJvd3NlciBpdHNlbGY7IGZvciBleGFtcGxlLCBcInNhdWNlbGFiczpjaHJvbWVANTFcIi5cblxuICAgIFlvdSBjYW4gdXNlIG9uZSBvciBtb3JlIGZpbGUgcGF0aHMgb3IgZ2xvYiBwYXR0ZXJucyB0byBzcGVjaWZ5IHdoaWNoIHRlc3RzIHRvIHJ1bi5cblxuICAgIE1vcmUgaW5mbzogaHR0cHM6Ly9kZXZleHByZXNzLmdpdGh1Yi5pby90ZXN0Y2FmZS9kb2N1bWVudGF0aW9uXG5gKTtcblxuaW50ZXJmYWNlIENvbW1hbmRMaW5lT3B0aW9ucyB7XG4gICAgdGVzdEdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgZml4dHVyZUdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgc3JjPzogc3RyaW5nW107XG4gICAgYnJvd3NlcnM/OiBzdHJpbmdbXTtcbiAgICBsaXN0QnJvd3NlcnM/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHRlc3RNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaXh0dXJlTWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZmlsdGVyPzogRnVuY3Rpb247XG4gICAgYXBwSW5pdERlbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc2VsZWN0b3JUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNwZWVkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VMb2FkVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYWpheFJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGNvbmN1cnJlbmN5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHF1YXJhbnRpbmVNb2RlPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPjtcbiAgICBwb3J0cz86IHN0cmluZyB8IG51bWJlcltdO1xuICAgIHByb3ZpZGVyTmFtZT86IHN0cmluZztcbiAgICBzc2w/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIHJlcG9ydGVyPzogc3RyaW5nIHwgUmVwb3J0ZXJPcHRpb25bXTtcbiAgICBzY3JlZW5zaG90cz86IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gfCBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIHByb3h5bGVzcz86IGJvb2xlYW47XG4gICAgdjhGbGFncz86IHN0cmluZ1tdO1xuICAgIGRhc2hib2FyZE9wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI+O1xuICAgIGJhc2VVcmw/OiBzdHJpbmc7XG4gICAgc2tpcEpzRXJyb3JzPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8UmVnRXhwIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ0xJQXJndW1lbnRQYXJzZXIge1xuICAgIHByaXZhdGUgY3dkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZW1vdGVDb3VudDogbnVtYmVyO1xuICAgIHB1YmxpYyBpc0Rhc2hib2FyZENvbW1hbmQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNlbmRSZXBvcnRTdGF0ZTogU2VuZFJlcG9ydFN0YXRlO1xuICAgIHB1YmxpYyBvcHRzOiBDb21tYW5kTGluZU9wdGlvbnM7XG4gICAgcHVibGljIGFyZ3M6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVzdENhZmVDb21tYW5kOiBDb21tYW5kO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjd2Q/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jd2QgICAgICAgICA9IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB0aGlzLnJlbW90ZUNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5vcHRzICAgICAgICA9IHt9O1xuICAgICAgICB0aGlzLmFyZ3MgICAgICAgID0gW107XG5cbiAgICAgICAgdGhpcy5pc0Rhc2hib2FyZENvbW1hbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50ZXN0Q2FmZUNvbW1hbmQgICAgPSB0aGlzLl9hZGRUZXN0Q2FmZUNvbW1hbmQoKTtcblxuICAgICAgICB0aGlzLl9wYXRjaEhlbHBPdXRwdXQodGhpcy50ZXN0Q2FmZUNvbW1hbmQpO1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fc2V0dXBSb290Q29tbWFuZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9zZXR1cFJvb3RDb21tYW5kICgpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogV2UgYXJlIGZvcmNlZCB0byBzZXQgdGhlIG5hbWUgb2YgdGhlIHJvb3QgY29tbWFuZCB0byAndGVzdGNhZmUnXG4gICAgICAgIC8vIHRvIGF2b2lkIHRoZSBhdXRvbWF0aWMgY29tbWFuZCBuYW1lIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBleGVjdXRlZCBmaWxlIHBhdGguXG4gICAgICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRvIGNvcnJlY3QgY29tbWFuZCBkZXNjcmlwdGlvbiBmb3IgbmVzdGVkIGNvbW1hbmRzLlxuICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLm5hbWUoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3JlbW92ZUNvbW1hbmRJZkV4aXN0cyAobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IEJ1ZyBpbiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlLlxuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGFkZCBhIGZldyBjb21tYW5kcyB3aXRoIHRoZSBzYW1lIG5hbWUuXG4gICAgICAgIC8vIEFsc28sIHJlbW92aW5nIGlzIGEgYmV0dGVyIHRoYW4gY29uZGl0aW9uYWxseSBhZGRpbmdcbiAgICAgICAgLy8gYmVjYXVzZSBpdCBhbGxvd3MgYXZvaWRpbmcgdGhlIHBhcnNlZCBvcHRpb24gZHVwbGljYXRlcy5cbiAgICAgICAgY29uc3QgaW5kZXggPSAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmNvbW1hbmRzLmZpbmRJbmRleChjbWQgPT4gY21kLm5hbWUoKSA9PT0gbmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpXG4gICAgICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmNvbW1hbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldERlc2NyaXB0aW9uICgpOiBzdHJpbmcge1xuICAgICAgICAvLyBOT1RFOiBhZGQgZW1wdHkgbGluZSB0byB3b3JrYXJvdW5kIGNvbW1hbmRlci1mb3JjZWQgaW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUuXG4gICAgICAgIHJldHVybiAnXFxuJyArIHdvcmRXcmFwKERFU0NSSVBUSU9OLCAyLCBnZXRWaWV3UG9ydFdpZHRoKHByb2Nlc3Muc3Rkb3V0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkVGVzdENhZmVDb21tYW5kICgpOiBDb21tYW5kIHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3JlbW92ZUNvbW1hbmRJZkV4aXN0cyhDT01NQU5EX05BTUVTLlRlc3RDYWZlKTtcblxuICAgICAgICByZXR1cm4gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKVxuICAgICAgICAgICAgLmNvbW1hbmQoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSwgeyBpc0RlZmF1bHQ6IHRydWUgfSlcbiAgICAgICAgICAgIC52ZXJzaW9uKGdldFRlc3RjYWZlVmVyc2lvbigpLCAnLXYsIC0tdmVyc2lvbicpXG4gICAgICAgICAgICAudXNhZ2UoJ1tvcHRpb25zXSA8Y29tbWEtc2VwYXJhdGVkLWJyb3dzZXItbGlzdD4gPGZpbGUtb3ItZ2xvYiAuLi4+JylcbiAgICAgICAgICAgIC5kZXNjcmlwdGlvbihDTElBcmd1bWVudFBhcnNlci5fZ2V0RGVzY3JpcHRpb24oKSlcblxuICAgICAgICAgICAgLmFsbG93VW5rbm93bk9wdGlvbigpXG4gICAgICAgICAgICAub3B0aW9uKCctYiwgLS1saXN0LWJyb3dzZXJzIFtwcm92aWRlcl0nLCAnb3V0cHV0IHRoZSBhbGlhc2VzIGZvciBsb2NhbCBicm93c2VycyBvciBicm93c2VycyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgc3BlY2lmaWVkIGJyb3dzZXIgcHJvdmlkZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLXIsIC0tcmVwb3J0ZXIgPG5hbWVbOm91dHB1dEZpbGVdWywuLi5dPicsICdzcGVjaWZ5IHRoZSByZXBvcnRlcnMgYW5kIG9wdGlvbmFsbHkgZmlsZXMgd2hlcmUgcmVwb3J0cyBhcmUgc2F2ZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLXMsIC0tc2NyZWVuc2hvdHMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSBzY3JlZW5zaG90IG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLVMsIC0tc2NyZWVuc2hvdHMtb24tZmFpbHMnLCAndGFrZSBhIHNjcmVlbnNob3Qgd2hlbmV2ZXIgYSB0ZXN0IGZhaWxzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1wLCAtLXNjcmVlbnNob3QtcGF0aC1wYXR0ZXJuIDxwYXR0ZXJuPicsICd1c2UgcGF0dGVybnMgdG8gY29tcG9zZSBzY3JlZW5zaG90IGZpbGUgbmFtZXMgYW5kIHBhdGhzOiAke0JST1dTRVJ9LCAke0JST1dTRVJfVkVSU0lPTn0sICR7T1N9LCBldGMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1xLCAtLXF1YXJhbnRpbmUtbW9kZSBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnZW5hYmxlIHF1YXJhbnRpbmUgbW9kZSBhbmQgKG9wdGlvbmFsbHkpIG1vZGlmeSBxdWFyYW50aW5lIG1vZGUgc2V0dGluZ3MnKVxuICAgICAgICAgICAgLm9wdGlvbignLWQsIC0tZGVidWctbW9kZScsICdleGVjdXRlIHRlc3Qgc3RlcHMgb25lIGJ5IG9uZSBwYXVzaW5nIHRoZSB0ZXN0IGFmdGVyIGVhY2ggc3RlcCcpXG4gICAgICAgICAgICAub3B0aW9uKCctZSwgLS1za2lwLWpzLWVycm9ycyBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpXG4gICAgICAgICAgICAub3B0aW9uKCctdSwgLS1za2lwLXVuY2F1Z2h0LWVycm9ycycsICdpZ25vcmUgdW5jYXVnaHQgZXJyb3JzIGFuZCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zLCB3aGljaCBvY2N1ciBkdXJpbmcgdGVzdCBleGVjdXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLXQsIC0tdGVzdCA8bmFtZT4nLCAncnVuIG9ubHkgdGVzdHMgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLVQsIC0tdGVzdC1ncmVwIDxwYXR0ZXJuPicsICdydW4gb25seSB0ZXN0cyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4nKVxuICAgICAgICAgICAgLm9wdGlvbignLWYsIC0tZml4dHVyZSA8bmFtZT4nLCAncnVuIG9ubHkgZml4dHVyZXMgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLUYsIC0tZml4dHVyZS1ncmVwIDxwYXR0ZXJuPicsICdydW4gb25seSBmaXh0dXJlcyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4nKVxuICAgICAgICAgICAgLm9wdGlvbignLWEsIC0tYXBwIDxjb21tYW5kPicsICdsYXVuY2ggdGhlIHRlc3RlZCBhcHAgdXNpbmcgdGhlIHNwZWNpZmllZCBjb21tYW5kIGJlZm9yZSBydW5uaW5nIHRlc3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1jLCAtLWNvbmN1cnJlbmN5IDxudW1iZXI+JywgJ3J1biB0ZXN0cyBjb25jdXJyZW50bHknKVxuICAgICAgICAgICAgLm9wdGlvbignLUwsIC0tbGl2ZScsICdlbmFibGUgbGl2ZSBtb2RlLiBJbiB0aGlzIG1vZGUsIFRlc3RDYWZlIHdhdGNoZXMgZm9yIGNoYW5nZXMgeW91IG1ha2UgaW4gdGhlIHRlc3QgZmlsZXMuIFRoZXNlIGNoYW5nZXMgaW1tZWRpYXRlbHkgcmVzdGFydCB0aGUgdGVzdHMgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgZWZmZWN0LicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdydW4gb25seSB0ZXN0cyB3aXRoIG1hdGNoaW5nIG1ldGFkYXRhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZml4dHVyZS1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ3J1biBvbmx5IGZpeHR1cmVzIHdpdGggbWF0Y2hpbmcgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZWJ1Zy1vbi1mYWlsJywgJ3BhdXNlIHRoZSB0ZXN0IGlmIGl0IGZhaWxzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYXBwLWluaXQtZGVsYXkgPG1zPicsICdzcGVjaWZ5IGhvdyBtdWNoIHRpbWUgaXQgdGFrZXMgZm9yIHRoZSB0ZXN0ZWQgYXBwIHRvIGluaXRpYWxpemUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSB3aXRoaW4gd2hpY2ggc2VsZWN0b3JzIG1ha2UgYXR0ZW1wdHMgdG8gb2J0YWluIGEgbm9kZSB0byBiZSByZXR1cm5lZCcpXG4gICAgICAgICAgICAub3B0aW9uKCctLWFzc2VydGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSB3aXRoaW4gd2hpY2ggYXNzZXJ0aW9uIHNob3VsZCBwYXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1sb2FkLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIHdpdGhpbiB3aGljaCBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIGB3aW5kb3cubG9hZGAgZXZlbnQgdG8gZmlyZSBvbiBwYWdlIGxvYWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gdGhlIG5leHQgdGVzdCBhY3Rpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wYWdlLXJlcXVlc3QtdGltZW91dCA8bXM+JywgXCJzcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGNvbXBsZXRlIHRoZSByZXF1ZXN0IGZvciB0aGUgcGFnZSdzIEhUTUxcIilcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYWpheC1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGNvbXBsZXRlIHRoZSBBSkFYIHJlcXVlc3RzIChYSFIgb3IgZmV0Y2gpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYnJvd3Nlci1pbml0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIFRlc3RDYWZlIHdhaXRzIGZvciB0aGUgYnJvd3NlciB0byBzdGFydCcpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIFRlc3RDYWZlIHdhaXRzIGZvciB0aGUgdGVzdCBleGVjdXRlZCcpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJ1bi1leGVjdXRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgVGVzdENhZmUgd2FpdHMgZm9yIHRoZSBhbGwgdGVzdCBleGVjdXRlZCcpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNwZWVkIDxmYWN0b3I+JywgJ3NldCB0aGUgc3BlZWQgb2YgdGVzdCBleGVjdXRpb24gKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IGN1c3RvbSBwb3J0IG51bWJlcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ob3N0bmFtZSA8bmFtZT4nLCAnc3BlY2lmeSB0aGUgaG9zdG5hbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wcm94eSA8aG9zdD4nLCAnc3BlY2lmeSB0aGUgaG9zdCBvZiB0aGUgcHJveHkgc2VydmVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHJ1bGVzIHRoYXQgZGVmaW5lIFVSTHMgYWNjZXNzZWQgYnlwYXNzaW5nIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIHByb3h5IHNlcnZlciBvdmVyIHRoZSBIVFRQUyBwcm90b2NvbCcpXG4gICAgICAgICAgICAub3B0aW9uKCctLXZpZGVvIDxwYXRoPicsICdyZWNvcmQgdmlkZW9zIG9mIHRlc3QgcnVucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXZpZGVvLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB2aWRlbyByZWNvcmRpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXZpZGVvLWVuY29kaW5nLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSBlbmNvZGluZyBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGV2JywgJ2VuYWJsZXMgbWVjaGFuaXNtcyB0byBsb2cgYW5kIGRpYWdub3NlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0cyBRUi1jb2RlIHRoYXQgcmVwZWF0cyBVUkxzIHVzZWQgdG8gY29ubmVjdCB0aGUgcmVtb3RlIGJyb3dzZXJzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2YsIC0tc3RvcC1vbi1maXJzdC1mYWlsJywgJ3N0b3AgYW4gZW50aXJlIHRlc3QgcnVuIGlmIGFueSB0ZXN0IGZhaWxzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29uZmlnLWZpbGUgPHBhdGg+JywgJ3NwZWNpZnkgYSBjdXN0b20gcGF0aCB0byB0aGUgdGVzdGNhZmUgY29uZmlndXJhdGlvbiBmaWxlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdHMtY29uZmlnLXBhdGggPHBhdGg+JywgJ3VzZSBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3BlY2lmeSBpdHMgbG9jYXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jcywgLS1jbGllbnQtc2NyaXB0cyA8cGF0aHM+JywgJ2luamVjdCBzY3JpcHRzIGludG8gdGVzdGVkIHBhZ2VzJywgcGFyc2VMaXN0LCBbXSlcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1wYWdlLWNhY2hpbmcnLCAnZGlzYWJsZSBwYWdlIGNhY2hpbmcgZHVyaW5nIHRlc3QgZXhlY3V0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1wYWdlLXJlbG9hZHMnLCAnZGlzYWJsZSBwYWdlIHJlbG9hZHMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgbmV0d29yayByZXF1ZXN0cyB0byB0ZXN0IHBhZ2VzIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtc2NyZWVuc2hvdHMnLCAnZGlzYWJsZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNjcmVlbnNob3RzLWZ1bGwtcGFnZScsICdlbmFibGUgZnVsbC1wYWdlIHNjcmVlbnNob3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29tcGlsZXItb3B0aW9ucyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHRlc3QgZmlsZSBjb21waWxlciBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgbXVsdGlwbGUgd2luZG93cyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1odHRwMicsICdkaXNhYmxlIHRoZSBIVFRQLzIgcHJveHkgYmFja2VuZCBhbmQgZm9yY2UgdGhlIHByb3h5IHRvIHVzZSBvbmx5IEhUVFAvMS4xIHJlcXVlc3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY2FjaGUnLCAnY2FjaGUgd2ViIGFzc2V0cyBiZXR3ZWVuIHRlc3QgcnVucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJhc2UtdXJsIDx1cmw+JywgJ3NldCB0aGUgYmFzZSB1cmwgZm9yIGFsbCB0ZXN0cycpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRoZXNlIG9wdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGJ5IGNoYWxrIGludGVybmFsbHlcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29sb3InLCAnZm9yY2UgY29sb3JzIGluIGNvbW1hbmQgbGluZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ2Rpc2FibGUgY29sb3JzIGluIGNvbW1hbmQgbGluZScpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRlbXBvcmFyeSBoaWRlIGV4cGVyaW1lbnRhbCBvcHRpb25zIGZyb20gLS1oZWxwIGNvbW1hbmRcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcm94eWxlc3MnLCAnZXhwZXJpbWVudGFsJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHBlcmltZW50YWwtZGVidWcnLCAnZW5hYmxlIGV4cGVyaW1lbnRhbCBkZWJ1ZyBtb2RlJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kaXNhYmxlLWNyb3NzLWRvbWFpbicsICdleHBlcmltZW50YWwnKS5oaWRlSGVscCgpKVxuICAgICAgICAgICAgLmFjdGlvbigob3B0czogQ29tbWFuZExpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhdGNoSGVscE91dHB1dCAoZGVmYXVsdFN1YkNvbW1hbmQ6IENvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogSW4gdGhlIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlXG4gICAgICAgIC8vIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHJlbW92ZSB0aGlzIGhhY2suXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkub3V0cHV0SGVscCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZFBhcmVudCA9IGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQub3V0cHV0SGVscCgpO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBzdG9yZWRQYXJlbnQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRDb3VudFJlbW90ZXMgKGJyb3dzZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZW1vdGVNYXRjaCA9IGJyb3dzZXIubWF0Y2goUkVNT1RFX0FMSUFTX1JFKTtcblxuICAgICAgICBpZiAocmVtb3RlTWF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlQ291bnQgKz0gcGFyc2VJbnQocmVtb3RlTWF0Y2hbMV0sIDEwKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlRmlsdGVyaW5nT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS10ZXN0LWdyZXAnLCB0aGlzLm9wdHMudGVzdEdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tZml4dHVyZS1ncmVwJywgdGhpcy5vcHRzLmZpeHR1cmVHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0TWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0TWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLXRlc3QtbWV0YScsIHRoaXMub3B0cy50ZXN0TWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZU1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZU1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS1maXh0dXJlLW1ldGEnLCB0aGlzLm9wdHMuZml4dHVyZU1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICB0aGlzLm9wdHMuZmlsdGVyID0gZ2V0RmlsdGVyRm4odGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFwcEluaXREZWxheSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwSW5pdERlbGF5KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3RlZCBhcHAgaW5pdGlhbGl6YXRpb24gZGVsYXknLCB0aGlzLm9wdHMuYXBwSW5pdERlbGF5KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFwcEluaXREZWxheSA9IHBhcnNlSW50KHRoaXMub3B0cy5hcHBJbml0RGVsYXkgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNlbGVjdG9yVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIFNlbGVjdG9yIHRpbWVvdXQnLCB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFzc2VydGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYXNzZXJ0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VMb2FkVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgbG9hZCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgQUpBWCByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJJbml0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGJyb3dzZXIgaW5pdGlhbGl6YXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3QgZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcnVuIGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTcGVlZCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3BlZWQpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3BlZWQgPSBwYXJzZUZsb2F0KHRoaXMub3B0cy5zcGVlZCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uY3VycmVuY3kgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5vcHRzLmNvbmN1cnJlbmN5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmNvbmN1cnJlbmN5IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUXVhcmFudGluZU9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlID0gYXdhaXQgZ2V0UXVhcmFudGluZU9wdGlvbnMoJy0tcXVhcmFudGluZS1tb2RlJywgdGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNraXBKc0Vycm9yc09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNraXBKc0Vycm9ycylcbiAgICAgICAgICAgIHRoaXMub3B0cy5za2lwSnNFcnJvcnMgPSBhd2FpdCBnZXRTa2lwSnNFcnJvcnNPcHRpb25zKCctLXNraXAtanMtZXJyb3JzJywgdGhpcy5vcHRzLnNraXBKc0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zICovXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKHBhcnNlUG9ydE51bWJlcik7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZWRQb3J0cy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydHNPcHRpb25SZXF1aXJlc1R3b051bWJlcnMpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucG9ydHMgPSBwYXJzZWRQb3J0cyBhcyBudW1iZXJbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlcnNGcm9tQXJncyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJzQXJnID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJnc1swXSB8fCAnJztcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlcnMgPSBzcGxpdFF1b3RlZFRleHQoYnJvd3NlcnNBcmcsICcsJylcbiAgICAgICAgICAgIC5maWx0ZXIoYnJvd3NlciA9PiBicm93c2VyICYmIHRoaXMuX2NoZWNrQW5kQ291bnRSZW1vdGVzKGJyb3dzZXIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlU3NsT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3NsKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNzbCA9IGF3YWl0IGdldFNTTE9wdGlvbnModGhpcy5vcHRzLnNzbCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUmVwb3J0ZXJzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZXJzID0gdGhpcy5vcHRzLnJlcG9ydGVyID8gKHRoaXMub3B0cy5yZXBvcnRlciBhcyBzdHJpbmcpLnNwbGl0KCcsJykgOiBbXTsgLyogZXNsaW50LWRpc2FibGUtbGluZSBuby1leHRyYS1wYXJlbnMqL1xuXG4gICAgICAgIHRoaXMub3B0cy5yZXBvcnRlciA9IHJlcG9ydGVycy5tYXAoKHJlcG9ydGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gcmVwb3J0ZXIuaW5kZXhPZignOicpO1xuXG4gICAgICAgICAgICBpZiAoc2VwYXJhdG9ySW5kZXggPCAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IHJlcG9ydGVyIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgICA9IHJlcG9ydGVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSByZXBvcnRlci5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgb3V0cHV0IH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlRmlsZUxpc3QgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wdHMuc3JjID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJncy5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNjcmVlbnNob3RPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IGF3YWl0IGdldFNjcmVlbnNob3RPcHRpb25zKHRoaXMub3B0cy5zY3JlZW5zaG90cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IHt9O1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm4pICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm4pXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5dID0gdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybjtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VWaWRlb09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvT3B0aW9ucyBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VDb21waWxlck9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29tcGlsZXJPcHRpb25zID0gYXdhaXQgZ2V0Q29tcGlsZXJPcHRpb25zKHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWRDb21waWxlck9wdGlvbnMpKVxuICAgICAgICAgICAgc2V0KHJlc3VsdENvbXBpbGVyT3B0aW9ucywga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyA9IHJlc3VsdENvbXBpbGVyT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZURhc2hib2FyZE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZGFzaGJvYXJkT3B0aW9ucyA9IGF3YWl0IGdldERhc2hib2FyZE9wdGlvbnModGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUxpc3RCcm93c2VycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3RCcm93c2VyT3B0aW9uID0gdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICB0aGlzLm9wdHMubGlzdEJyb3dzZXJzID0gISF0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIGlmICghdGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wdHMucHJvdmlkZXJOYW1lID0gdHlwZW9mIGxpc3RCcm93c2VyT3B0aW9uID09PSAnc3RyaW5nJyA/IGxpc3RCcm93c2VyT3B0aW9uIDogJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbiAoYXJndjogc3RyaW5nW10sIG9wdGlvbk5hbWVzOiBzdHJpbmdbXSwgc3ViT3B0aW9uc05hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBtb3ZlIG9wdGlvbnMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkgdG8gY29ycmVjdGx5IHBhcnNlIGJvdGggQm9vbGVhbiBhbmQgT2JqZWN0IHR5cGUgYXJndW1lbnRzIChHSC02MjMxKVxuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IGFyZ3YuZmluZEluZGV4KFxuICAgICAgICAgICAgZWwgPT4gb3B0aW9uTmFtZXMuc29tZShvcHQgPT4gZWwuc3RhcnRzV2l0aChvcHQpKSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTm90TGFzdE9wdGlvbiAgICAgICA9IG9wdGlvbkluZGV4IDwgYXJndi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTW92ZU9wdGlvblRvRW5kID0gaXNOb3RMYXN0T3B0aW9uICYmXG4gICAgICAgICAgICAgICAgIXN1Yk9wdGlvbnNOYW1lcy5zb21lKG9wdCA9PiBhcmd2W29wdGlvbkluZGV4ICsgMV0uc3RhcnRzV2l0aChvcHQpKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZE1vdmVPcHRpb25Ub0VuZClcbiAgICAgICAgICAgICAgICBhcmd2LnB1c2goYXJndi5zcGxpY2Uob3B0aW9uSW5kZXgsIDEpWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXJzZSAoYXJndjogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLCBPYmplY3QudmFsdWVzKFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTKSk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLWUnLCAnLS1za2lwLWpzLWVycm9ycyddLCBPYmplY3QudmFsdWVzKFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUykpO1xuXG4gICAgICAgIGNvbnN0IHsgYXJncywgdjhGbGFncyB9ID0gZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzKGFyZ3YpO1xuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkucGFyc2UoYXJncyk7XG5cbiAgICAgICAgdGhpcy5hcmdzID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgeyB2OEZsYWdzIH0pO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlTGlzdEJyb3dzZXJzKCk7XG5cbiAgICAgICAgLy8gTk9URTogdGhlICctLWxpc3QtYnJvd3NlcnMnIG9wdGlvbiBvbmx5IGxpc3RzIGJyb3dzZXJzIGFuZCBpbW1lZGlhdGVseSBleGl0cyB0aGUgYXBwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBvdGhlciBhcmd1bWVudHMuXG4gICAgICAgIGlmICh0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlU2VsZWN0b3JUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXNzZXJ0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VMb2FkVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJJbml0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFwcEluaXREZWxheSgpO1xuICAgICAgICB0aGlzLl9wYXJzZVNwZWVkKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUG9ydHMoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2Vyc0Zyb21BcmdzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQ29uY3VycmVuY3koKTtcbiAgICAgICAgdGhpcy5fcGFyc2VGaWxlTGlzdCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlRmlsdGVyaW5nT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVF1YXJhbnRpbmVPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZURhc2hib2FyZE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UnVuT3B0aW9ucyAoKTogUnVubmVyUnVuT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgUlVOX09QVElPTl9OQU1FUy5mb3JFYWNoKG9wdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbk5hbWUgaW4gdGhpcy5vcHRzKVxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgYSBoYWNrIHRvIGFkZCBhbiBpbmRleCBzaWduYXR1cmUgdG8gaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgcmVzdWx0W29wdGlvbk5hbWVdID0gdGhpcy5vcHRzW29wdGlvbk5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFJ1bm5lclJ1bk9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFVaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUU1QyxpR0FBNkc7QUFFN0csTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFFOUMsTUFBTSxXQUFXLEdBQUcsSUFBQSxnQkFBTSxFQUFDOzs7Ozs7Ozs7Ozs7O0NBYTFCLENBQUMsQ0FBQztBQXlDSCxNQUFxQixpQkFBaUI7SUFTbEMsWUFBb0IsR0FBWTtRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBVSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBVSxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFp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LE1BQU0sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsMEJBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUN2QiwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQXhhRCxvQ0F3YUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXMsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBwcm9ncmFtLCB7XG4gICAgQ29tbWFuZCxcbiAgICBPcHRpb24sXG59IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCBkZWRlbnQgZnJvbSAnZGVkZW50JztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBnZXRWaWV3UG9ydFdpZHRoIGZyb20gJy4uLy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgc3BsaXRRdW90ZWRUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7XG4gICAgZ2V0U1NMT3B0aW9ucyxcbiAgICBnZXRRdWFyYW50aW5lT3B0aW9ucyxcbiAgICBnZXRTY3JlZW5zaG90T3B0aW9ucyxcbiAgICBnZXRTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIGdldFZpZGVvT3B0aW9ucyxcbiAgICBnZXRNZXRhT3B0aW9ucyxcbiAgICBnZXRHcmVwT3B0aW9ucyxcbiAgICBnZXRDb21waWxlck9wdGlvbnMsXG4gICAgZ2V0RGFzaGJvYXJkT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW9wdGlvbnMnO1xuXG5pbXBvcnQgZ2V0RmlsdGVyRm4gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LWZpbHRlci1mbic7XG5pbXBvcnQgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9zY3JlZW5zaG90LW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgUlVOX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3J1bi1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHtcbiAgICBEaWN0aW9uYXJ5LFxuICAgIFJlcG9ydGVyT3B0aW9uLFxuICAgIFJ1bm5lclJ1bk9wdGlvbnMsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgUVVBUkFOVElORV9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9xdWFyYW50aW5lLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMgfSBmcm9tICcuLi9ub2RlLWFyZ3VtZW50cy1maWx0ZXInO1xuaW1wb3J0IGdldFRlc3RjYWZlVmVyc2lvbiBmcm9tICcuLi8uLi91dGlscy9nZXQtdGVzdGNhZmUtdmVyc2lvbic7XG5pbXBvcnQgeyBwYXJzZVBvcnROdW1iZXIsIHBhcnNlTGlzdCB9IGZyb20gJy4vcGFyc2UtdXRpbHMnO1xuaW1wb3J0IENPTU1BTkRfTkFNRVMgZnJvbSAnLi9jb21tYW5kLW5hbWVzJztcbmltcG9ydCB7IFNlbmRSZXBvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2Rhc2hib2FyZC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzJztcblxuY29uc3QgUkVNT1RFX0FMSUFTX1JFID0gL15yZW1vdGUoPzo6KFxcZCopKT8kLztcblxuY29uc3QgREVTQ1JJUFRJT04gPSBkZWRlbnQoYFxuICAgIEluIHRoZSBicm93c2VyIGxpc3QsIHlvdSBjYW4gdXNlIGJyb3dzZXIgbmFtZXMgKGUuZy4gXCJpZVwiLCBcImNocm9tZVwiLCBldGMuKSBhcyB3ZWxsIGFzIHBhdGhzIHRvIGV4ZWN1dGFibGVzLlxuXG4gICAgVG8gcnVuIHRlc3RzIGFnYWluc3QgYWxsIGluc3RhbGxlZCBicm93c2VycywgdXNlIHRoZSBcImFsbFwiIGFsaWFzLlxuXG4gICAgVG8gdXNlIGEgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbiAoZS5nLiwgdG8gY29ubmVjdCBhIG1vYmlsZSBkZXZpY2UpLCBzcGVjaWZ5IFwicmVtb3RlXCIgYXMgdGhlIGJyb3dzZXIgYWxpYXMuXG4gICAgSWYgeW91IG5lZWQgdG8gY29ubmVjdCBtdWx0aXBsZSBkZXZpY2VzLCBhZGQgYSBjb2xvbiBhbmQgdGhlIG51bWJlciBvZiBicm93c2VycyB5b3Ugd2FudCB0byBjb25uZWN0IChlLmcuLCBcInJlbW90ZTozXCIpLlxuXG4gICAgVG8gcnVuIHRlc3RzIGluIGEgYnJvd3NlciBhY2Nlc3NlZCB0aHJvdWdoIGEgYnJvd3NlciBwcm92aWRlciBwbHVnaW4sIHNwZWNpZnkgYSBicm93c2VyIGFsaWFzIHRoYXQgY29uc2lzdHMgb2YgdHdvIHBhcnRzIC0gdGhlIGJyb3dzZXIgcHJvdmlkZXIgbmFtZSBwcmVmaXggYW5kIHRoZSBuYW1lIG9mIHRoZSBicm93c2VyIGl0c2VsZjsgZm9yIGV4YW1wbGUsIFwic2F1Y2VsYWJzOmNocm9tZUA1MVwiLlxuXG4gICAgWW91IGNhbiB1c2Ugb25lIG9yIG1vcmUgZmlsZSBwYXRocyBvciBnbG9iIHBhdHRlcm5zIHRvIHNwZWNpZnkgd2hpY2ggdGVzdHMgdG8gcnVuLlxuXG4gICAgTW9yZSBpbmZvOiBodHRwczovL2RldmV4cHJlc3MuZ2l0aHViLmlvL3Rlc3RjYWZlL2RvY3VtZW50YXRpb25cbmApO1xuXG5pbnRlcmZhY2UgQ29tbWFuZExpbmVPcHRpb25zIHtcbiAgICB0ZXN0R3JlcD86IHN0cmluZyB8IFJlZ0V4cDtcbiAgICBmaXh0dXJlR3JlcD86IHN0cmluZyB8IFJlZ0V4cDtcbiAgICBzcmM/OiBzdHJpbmdbXTtcbiAgICBicm93c2Vycz86IHN0cmluZ1tdO1xuICAgIGxpc3RCcm93c2Vycz86IGJvb2xlYW4gfCBzdHJpbmc7XG4gICAgdGVzdE1ldGE/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIGZpeHR1cmVNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaWx0ZXI/OiBGdW5jdGlvbjtcbiAgICBhcHBJbml0RGVsYXk/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYXNzZXJ0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBzZWxlY3RvclRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc3BlZWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcGFnZUxvYWRUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VSZXF1ZXN0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhamF4UmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYnJvd3NlckluaXRUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRlc3RFeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHJ1bkV4ZWN1dGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgY29uY3VycmVuY3k/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcXVhcmFudGluZU1vZGU/OiBib29sZWFuIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXI+O1xuICAgIHBvcnRzPzogc3RyaW5nIHwgbnVtYmVyW107XG4gICAgcHJvdmlkZXJOYW1lPzogc3RyaW5nO1xuICAgIHNzbD86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgcmVwb3J0ZXI/OiBzdHJpbmcgfCBSZXBvcnRlck9wdGlvbltdO1xuICAgIHNjcmVlbnNob3RzPzogRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB8IHN0cmluZztcbiAgICBzY3JlZW5zaG90UGF0aFBhdHRlcm4/OiBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdHNPbkZhaWxzPzogYm9vbGVhbjtcbiAgICB2aWRlb09wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIHZpZGVvRW5jb2RpbmdPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb21waWxlck9wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gICAgcHJveHlsZXNzPzogYm9vbGVhbjtcbiAgICB2OEZsYWdzPzogc3RyaW5nW107XG4gICAgZGFzaGJvYXJkT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG4gICAgYmFzZVVybD86IHN0cmluZztcbiAgICBza2lwSnNFcnJvcnM/OiBib29sZWFuIHwgRGljdGlvbmFyeTxSZWdFeHAgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDTElBcmd1bWVudFBhcnNlciB7XG4gICAgcHJpdmF0ZSBjd2Q6IHN0cmluZztcbiAgICBwcml2YXRlIHJlbW90ZUNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGlzRGFzaGJvYXJkQ29tbWFuZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2VuZFJlcG9ydFN0YXRlOiBTZW5kUmVwb3J0U3RhdGU7XG4gICAgcHVibGljIG9wdHM6IENvbW1hbmRMaW5lT3B0aW9ucztcbiAgICBwdWJsaWMgYXJnczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXN0Q2FmZUNvbW1hbmQ6IENvbW1hbmQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGN3ZD86IHN0cmluZykge1xuICAgICAgICB0aGlzLmN3ZCAgICAgICAgID0gY3dkIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgIHRoaXMucmVtb3RlQ291bnQgPSAwO1xuICAgICAgICB0aGlzLm9wdHMgICAgICAgID0ge307XG4gICAgICAgIHRoaXMuYXJncyAgICAgICAgPSBbXTtcblxuICAgICAgICB0aGlzLmlzRGFzaGJvYXJkQ29tbWFuZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRlc3RDYWZlQ29tbWFuZCAgICA9IHRoaXMuX2FkZFRlc3RDYWZlQ29tbWFuZCgpO1xuXG4gICAgICAgIHRoaXMuX3BhdGNoSGVscE91dHB1dCh0aGlzLnRlc3RDYWZlQ29tbWFuZCk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9zZXR1cFJvb3RDb21tYW5kKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3NldHVwUm9vdENvbW1hbmQgKCk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgZm9yY2VkIHRvIHNldCB0aGUgbmFtZSBvZiB0aGUgcm9vdCBjb21tYW5kIHRvICd0ZXN0Y2FmZSdcbiAgICAgICAgLy8gdG8gYXZvaWQgdGhlIGF1dG9tYXRpYyBjb21tYW5kIG5hbWUgY2FsY3VsYXRpb24gdXNpbmcgdGhlIGV4ZWN1dGVkIGZpbGUgcGF0aC5cbiAgICAgICAgLy8gSXQncyBuZWNlc3NhcnkgdG8gY29ycmVjdCBjb21tYW5kIGRlc2NyaXB0aW9uIGZvciBuZXN0ZWQgY29tbWFuZHMuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkubmFtZShDT01NQU5EX05BTUVTLlRlc3RDYWZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcmVtb3ZlQ29tbWFuZElmRXhpc3RzIChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogQnVnIGluIHRoZSAnY29tbWFuZGVyJyBtb2R1bGUuXG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gYWRkIGEgZmV3IGNvbW1hbmRzIHdpdGggdGhlIHNhbWUgbmFtZS5cbiAgICAgICAgLy8gQWxzbywgcmVtb3ZpbmcgaXMgYSBiZXR0ZXIgdGhhbiBjb25kaXRpb25hbGx5IGFkZGluZ1xuICAgICAgICAvLyBiZWNhdXNlIGl0IGFsbG93cyBhdm9pZGluZyB0aGUgcGFyc2VkIG9wdGlvbiBkdXBsaWNhdGVzLlxuICAgICAgICBjb25zdCBpbmRleCA9IChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuY29tbWFuZHMuZmluZEluZGV4KGNtZCA9PiBjbWQubmFtZSgpID09PSBuYW1lKTtcblxuICAgICAgICBpZiAoaW5kZXggPiAtMSlcbiAgICAgICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuY29tbWFuZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0RGVzY3JpcHRpb24gKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIE5PVEU6IGFkZCBlbXB0eSBsaW5lIHRvIHdvcmthcm91bmQgY29tbWFuZGVyLWZvcmNlZCBpbmRlbnRhdGlvbiBvbiB0aGUgZmlyc3QgbGluZS5cbiAgICAgICAgcmV0dXJuICdcXG4nICsgd29yZFdyYXAoREVTQ1JJUFRJT04sIDIsIGdldFZpZXdQb3J0V2lkdGgocHJvY2Vzcy5zdGRvdXQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGRUZXN0Q2FmZUNvbW1hbmQgKCk6IENvbW1hbmQge1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcmVtb3ZlQ29tbWFuZElmRXhpc3RzKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuXG4gICAgICAgIHJldHVybiAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpXG4gICAgICAgICAgICAuY29tbWFuZChDT01NQU5EX05BTUVTLlRlc3RDYWZlLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KVxuICAgICAgICAgICAgLnZlcnNpb24oZ2V0VGVzdGNhZmVWZXJzaW9uKCksICctdiwgLS12ZXJzaW9uJylcbiAgICAgICAgICAgIC51c2FnZSgnW29wdGlvbnNdIDxjb21tYS1zZXBhcmF0ZWQtYnJvd3Nlci1saXN0PiA8ZmlsZS1vci1nbG9iIC4uLj4nKVxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uKENMSUFyZ3VtZW50UGFyc2VyLl9nZXREZXNjcmlwdGlvbigpKVxuXG4gICAgICAgICAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAgICAgICAgIC5vcHRpb24oJy1iLCAtLWxpc3QtYnJvd3NlcnMgW3Byb3ZpZGVyXScsICdvdXRwdXQgdGhlIGFsaWFzZXMgZm9yIGxvY2FsIGJyb3dzZXJzIG9yIGJyb3dzZXJzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBzcGVjaWZpZWQgYnJvd3NlciBwcm92aWRlcicpXG4gICAgICAgICAgICAub3B0aW9uKCctciwgLS1yZXBvcnRlciA8bmFtZVs6b3V0cHV0RmlsZV1bLC4uLl0+JywgJ3NwZWNpZnkgdGhlIHJlcG9ydGVycyBhbmQgb3B0aW9uYWxseSBmaWxlcyB3aGVyZSByZXBvcnRzIGFyZSBzYXZlZCcpXG4gICAgICAgICAgICAub3B0aW9uKCctcywgLS1zY3JlZW5zaG90cyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHNjcmVlbnNob3Qgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctUywgLS1zY3JlZW5zaG90cy1vbi1mYWlscycsICd0YWtlIGEgc2NyZWVuc2hvdCB3aGVuZXZlciBhIHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLXAsIC0tc2NyZWVuc2hvdC1wYXRoLXBhdHRlcm4gPHBhdHRlcm4+JywgJ3VzZSBwYXR0ZXJucyB0byBjb21wb3NlIHNjcmVlbnNob3QgZmlsZSBuYW1lcyBhbmQgcGF0aHM6ICR7QlJPV1NFUn0sICR7QlJPV1NFUl9WRVJTSU9OfSwgJHtPU30sIGV0Yy4nKVxuICAgICAgICAgICAgLm9wdGlvbignLXEsIC0tcXVhcmFudGluZS1tb2RlIFtvcHRpb249dmFsdWUsLi4uXScsICdlbmFibGUgcXVhcmFudGluZSBtb2RlIGFuZCAob3B0aW9uYWxseSkgbW9kaWZ5IHF1YXJhbnRpbmUgbW9kZSBzZXR0aW5ncycpXG4gICAgICAgICAgICAub3B0aW9uKCctZCwgLS1kZWJ1Zy1tb2RlJywgJ2V4ZWN1dGUgdGVzdCBzdGVwcyBvbmUgYnkgb25lIHBhdXNpbmcgdGhlIHRlc3QgYWZ0ZXIgZWFjaCBzdGVwJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1lLCAtLXNraXAtanMtZXJyb3JzIFtvcHRpb249dmFsdWUsLi4uXScsICdpZ25vcmUgSmF2YVNjcmlwdCBlcnJvcnMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy11LCAtLXNraXAtdW5jYXVnaHQtZXJyb3JzJywgJ2lnbm9yZSB1bmNhdWdodCBlcnJvcnMgYW5kIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnMsIHdoaWNoIG9jY3VyIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctdCwgLS10ZXN0IDxuYW1lPicsICdydW4gb25seSB0ZXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctVCwgLS10ZXN0LWdyZXAgPHBhdHRlcm4+JywgJ3J1biBvbmx5IHRlc3RzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcGF0dGVybicpXG4gICAgICAgICAgICAub3B0aW9uKCctZiwgLS1maXh0dXJlIDxuYW1lPicsICdydW4gb25seSBmaXh0dXJlcyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctRiwgLS1maXh0dXJlLWdyZXAgPHBhdHRlcm4+JywgJ3J1biBvbmx5IGZpeHR1cmVzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcGF0dGVybicpXG4gICAgICAgICAgICAub3B0aW9uKCctYSwgLS1hcHAgPGNvbW1hbmQ+JywgJ2xhdW5jaCB0aGUgdGVzdGVkIGFwcCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLWMsIC0tY29uY3VycmVuY3kgPG51bWJlcj4nLCAncnVuIHRlc3RzIGNvbmN1cnJlbnRseScpXG4gICAgICAgICAgICAub3B0aW9uKCctTCwgLS1saXZlJywgJ2VuYWJsZSBsaXZlIG1vZGUuIEluIHRoaXMgbW9kZSwgVGVzdENhZmUgd2F0Y2hlcyBmb3IgY2hhbmdlcyB5b3UgbWFrZSBpbiB0aGUgdGVzdCBmaWxlcy4gVGhlc2UgY2hhbmdlcyBpbW1lZGlhdGVseSByZXN0YXJ0IHRoZSB0ZXN0cyBzbyB0aGF0IHlvdSBjYW4gc2VlIHRoZSBlZmZlY3QuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ3J1biBvbmx5IHRlc3RzIHdpdGggbWF0Y2hpbmcgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1maXh0dXJlLW1ldGEgPGtleT12YWx1ZVssa2V5Mj12YWx1ZTIsLi4uXT4nLCAncnVuIG9ubHkgZml4dHVyZXMgd2l0aCBtYXRjaGluZyBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRlYnVnLW9uLWZhaWwnLCAncGF1c2UgdGhlIHRlc3QgaWYgaXQgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgaG93IG11Y2ggdGltZSBpdCB0YWtlcyBmb3IgdGhlIHRlc3RlZCBhcHAgdG8gaW5pdGlhbGl6ZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNlbGVjdG9yLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIHdpdGhpbiB3aGljaCBzZWxlY3RvcnMgbWFrZSBhdHRlbXB0cyB0byBvYnRhaW4gYSBub2RlIHRvIGJlIHJldHVybmVkJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYXNzZXJ0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIHdpdGhpbiB3aGljaCBhc3NlcnRpb24gc2hvdWxkIHBhc3MnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wYWdlLWxvYWQtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgd2l0aGluIHdoaWNoIFRlc3RDYWZlIHdhaXRzIGZvciB0aGUgYHdpbmRvdy5sb2FkYCBldmVudCB0byBmaXJlIG9uIHBhZ2UgbG9hZCBiZWZvcmUgcHJvY2VlZGluZyB0byB0aGUgbmV4dCB0ZXN0IGFjdGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtcmVxdWVzdC10aW1lb3V0IDxtcz4nLCBcInNwZWNpZmllcyB0aGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gY29tcGxldGUgdGhlIHJlcXVlc3QgZm9yIHRoZSBwYWdlJ3MgSFRNTFwiKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZmllcyB0aGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gY29tcGxldGUgdGhlIEFKQVggcmVxdWVzdHMgKFhIUiBvciBmZXRjaCknKVxuICAgICAgICAgICAgLm9wdGlvbignLS1icm93c2VyLWluaXQtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgVGVzdENhZmUgd2FpdHMgZm9yIHRoZSBicm93c2VyIHRvIHN0YXJ0JylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1leGVjdXRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgVGVzdENhZmUgd2FpdHMgZm9yIHRoZSB0ZXN0IGV4ZWN1dGVkJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcnVuLWV4ZWN1dGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIGFsbCB0ZXN0IGV4ZWN1dGVkJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc3BlZWQgPGZhY3Rvcj4nLCAnc2V0IHRoZSBzcGVlZCBvZiB0ZXN0IGV4ZWN1dGlvbiAoMC4wMSAuLi4gMSknKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wb3J0cyA8cG9ydDEscG9ydDI+JywgJ3NwZWNpZnkgY3VzdG9tIHBvcnQgbnVtYmVycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWhvc3RuYW1lIDxuYW1lPicsICdzcGVjaWZ5IHRoZSBob3N0bmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5IDxob3N0PicsICdzcGVjaWZ5IHRoZSBob3N0IG9mIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wcm94eS1ieXBhc3MgPHJ1bGVzPicsICdzcGVjaWZ5IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcnVsZXMgdGhhdCBkZWZpbmUgVVJMcyBhY2Nlc3NlZCBieXBhc3NpbmcgdGhlIHByb3h5IHNlcnZlcicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNzbCA8b3B0aW9ucz4nLCAnc3BlY2lmeSBTU0wgb3B0aW9ucyB0byBydW4gVGVzdENhZmUgcHJveHkgc2VydmVyIG92ZXIgdGhlIEhUVFBTIHByb3RvY29sJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8gPHBhdGg+JywgJ3JlY29yZCB2aWRlb3Mgb2YgdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8tb3B0aW9ucyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHZpZGVvIHJlY29yZGluZyBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8tZW5jb2Rpbmctb3B0aW9ucyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IGVuY29kaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZXYnLCAnZW5hYmxlcyBtZWNoYW5pc21zIHRvIGxvZyBhbmQgZGlhZ25vc2UgZXJyb3JzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcXItY29kZScsICdvdXRwdXRzIFFSLWNvZGUgdGhhdCByZXBlYXRzIFVSTHMgdXNlZCB0byBjb25uZWN0IHRoZSByZW1vdGUgYnJvd3NlcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCBhbiBlbnRpcmUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAndXNlIGEgY3VzdG9tIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzcGVjaWZ5IGl0cyBsb2NhdGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IHNjcmlwdHMgaW50byB0ZXN0ZWQgcGFnZXMnLCBwYXJzZUxpc3QsIFtdKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXBhZ2UtY2FjaGluZycsICdkaXNhYmxlIHBhZ2UgY2FjaGluZyBkdXJpbmcgdGVzdCBleGVjdXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXBhZ2UtcmVsb2FkcycsICdkaXNhYmxlIHBhZ2UgcmVsb2FkcyBiZXR3ZWVuIHRlc3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcmV0cnktdGVzdC1wYWdlcycsICdyZXRyeSBuZXR3b3JrIHJlcXVlc3RzIHRvIHRlc3QgcGFnZXMgZHVyaW5nIHRlc3QgZXhlY3V0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1zY3JlZW5zaG90cycsICdkaXNhYmxlIHNjcmVlbnNob3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2NyZWVuc2hvdHMtZnVsbC1wYWdlJywgJ2VuYWJsZSBmdWxsLXBhZ2Ugc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb21waWxlci1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdGVzdCBmaWxlIGNvbXBpbGVyIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLW11bHRpcGxlLXdpbmRvd3MnLCAnZGlzYWJsZSBtdWx0aXBsZSB3aW5kb3dzIG1vZGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLWh0dHAyJywgJ2Rpc2FibGUgdGhlIEhUVFAvMiBwcm94eSBiYWNrZW5kIGFuZCBmb3JjZSB0aGUgcHJveHkgdG8gdXNlIG9ubHkgSFRUUC8xLjEgcmVxdWVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jYWNoZScsICdjYWNoZSB3ZWIgYXNzZXRzIGJldHdlZW4gdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYmFzZS11cmwgPHVybD4nLCAnc2V0IHRoZSBiYXNlIHVybCBmb3IgYWxsIHRlc3RzJylcblxuICAgICAgICAgICAgLy8gTk9URTogdGhlc2Ugb3B0aW9ucyB3aWxsIGJlIGhhbmRsZWQgYnkgY2hhbGsgaW50ZXJuYWxseVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb2xvcicsICdmb3JjZSBjb2xvcnMgaW4gY29tbWFuZCBsaW5lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tbm8tY29sb3InLCAnZGlzYWJsZSBjb2xvcnMgaW4gY29tbWFuZCBsaW5lJylcblxuICAgICAgICAgICAgLy8gTk9URTogdGVtcG9yYXJ5IGhpZGUgZXhwZXJpbWVudGFsIG9wdGlvbnMgZnJvbSAtLWhlbHAgY29tbWFuZFxuICAgICAgICAgICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWV4cGVyaW1lbnRhbC1wcm94eWxlc3MnLCAnZXhwZXJpbWVudGFsJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHBlcmltZW50YWwtZGVidWcnLCAnZW5hYmxlIGV4cGVyaW1lbnRhbCBkZWJ1ZyBtb2RlJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kaXNhYmxlLWNyb3NzLWRvbWFpbicsICdleHBlcmltZW50YWwnKS5oaWRlSGVscCgpKVxuICAgICAgICAgICAgLmFjdGlvbigob3B0czogQ29tbWFuZExpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhdGNoSGVscE91dHB1dCAoZGVmYXVsdFN1YkNvbW1hbmQ6IENvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogSW4gdGhlIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlXG4gICAgICAgIC8vIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHJlbW92ZSB0aGlzIGhhY2suXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkub3V0cHV0SGVscCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZFBhcmVudCA9IGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQub3V0cHV0SGVscCgpO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBzdG9yZWRQYXJlbnQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRDb3VudFJlbW90ZXMgKGJyb3dzZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZW1vdGVNYXRjaCA9IGJyb3dzZXIubWF0Y2goUkVNT1RFX0FMSUFTX1JFKTtcblxuICAgICAgICBpZiAocmVtb3RlTWF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlQ291bnQgKz0gcGFyc2VJbnQocmVtb3RlTWF0Y2hbMV0sIDEwKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlRmlsdGVyaW5nT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS10ZXN0LWdyZXAnLCB0aGlzLm9wdHMudGVzdEdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tZml4dHVyZS1ncmVwJywgdGhpcy5vcHRzLmZpeHR1cmVHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0TWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0TWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLXRlc3QtbWV0YScsIHRoaXMub3B0cy50ZXN0TWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZU1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZU1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS1maXh0dXJlLW1ldGEnLCB0aGlzLm9wdHMuZml4dHVyZU1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICB0aGlzLm9wdHMuZmlsdGVyID0gZ2V0RmlsdGVyRm4odGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFwcEluaXREZWxheSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwSW5pdERlbGF5KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3RlZCBhcHAgaW5pdGlhbGl6YXRpb24gZGVsYXknLCB0aGlzLm9wdHMuYXBwSW5pdERlbGF5KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFwcEluaXREZWxheSA9IHBhcnNlSW50KHRoaXMub3B0cy5hcHBJbml0RGVsYXkgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNlbGVjdG9yVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIFNlbGVjdG9yIHRpbWVvdXQnLCB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFzc2VydGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYXNzZXJ0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VMb2FkVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgbG9hZCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgQUpBWCByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJJbml0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGJyb3dzZXIgaW5pdGlhbGl6YXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3QgZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcnVuIGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTcGVlZCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3BlZWQpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3BlZWQgPSBwYXJzZUZsb2F0KHRoaXMub3B0cy5zcGVlZCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uY3VycmVuY3kgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5vcHRzLmNvbmN1cnJlbmN5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmNvbmN1cnJlbmN5IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUXVhcmFudGluZU9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlID0gYXdhaXQgZ2V0UXVhcmFudGluZU9wdGlvbnMoJy0tcXVhcmFudGluZS1tb2RlJywgdGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNraXBKc0Vycm9yc09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNraXBKc0Vycm9ycylcbiAgICAgICAgICAgIHRoaXMub3B0cy5za2lwSnNFcnJvcnMgPSBhd2FpdCBnZXRTa2lwSnNFcnJvcnNPcHRpb25zKCctLXNraXAtanMtZXJyb3JzJywgdGhpcy5vcHRzLnNraXBKc0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zICovXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKHBhcnNlUG9ydE51bWJlcik7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZWRQb3J0cy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydHNPcHRpb25SZXF1aXJlc1R3b051bWJlcnMpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucG9ydHMgPSBwYXJzZWRQb3J0cyBhcyBudW1iZXJbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlcnNGcm9tQXJncyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJzQXJnID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJnc1swXSB8fCAnJztcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlcnMgPSBzcGxpdFF1b3RlZFRleHQoYnJvd3NlcnNBcmcsICcsJylcbiAgICAgICAgICAgIC5maWx0ZXIoYnJvd3NlciA9PiBicm93c2VyICYmIHRoaXMuX2NoZWNrQW5kQ291bnRSZW1vdGVzKGJyb3dzZXIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlU3NsT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3NsKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNzbCA9IGF3YWl0IGdldFNTTE9wdGlvbnModGhpcy5vcHRzLnNzbCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUmVwb3J0ZXJzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZXJzID0gdGhpcy5vcHRzLnJlcG9ydGVyID8gKHRoaXMub3B0cy5yZXBvcnRlciBhcyBzdHJpbmcpLnNwbGl0KCcsJykgOiBbXTsgLyogZXNsaW50LWRpc2FibGUtbGluZSBuby1leHRyYS1wYXJlbnMqL1xuXG4gICAgICAgIHRoaXMub3B0cy5yZXBvcnRlciA9IHJlcG9ydGVycy5tYXAoKHJlcG9ydGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gcmVwb3J0ZXIuaW5kZXhPZignOicpO1xuXG4gICAgICAgICAgICBpZiAoc2VwYXJhdG9ySW5kZXggPCAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IHJlcG9ydGVyIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgICA9IHJlcG9ydGVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSByZXBvcnRlci5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgb3V0cHV0IH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlRmlsZUxpc3QgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wdHMuc3JjID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJncy5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNjcmVlbnNob3RPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IGF3YWl0IGdldFNjcmVlbnNob3RPcHRpb25zKHRoaXMub3B0cy5zY3JlZW5zaG90cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IHt9O1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm4pICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm4pXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5dID0gdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybjtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VWaWRlb09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvT3B0aW9ucyBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VDb21waWxlck9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29tcGlsZXJPcHRpb25zID0gYXdhaXQgZ2V0Q29tcGlsZXJPcHRpb25zKHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWRDb21waWxlck9wdGlvbnMpKVxuICAgICAgICAgICAgc2V0KHJlc3VsdENvbXBpbGVyT3B0aW9ucywga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyA9IHJlc3VsdENvbXBpbGVyT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZURhc2hib2FyZE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZGFzaGJvYXJkT3B0aW9ucyA9IGF3YWl0IGdldERhc2hib2FyZE9wdGlvbnModGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUxpc3RCcm93c2VycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3RCcm93c2VyT3B0aW9uID0gdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICB0aGlzLm9wdHMubGlzdEJyb3dzZXJzID0gISF0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIGlmICghdGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wdHMucHJvdmlkZXJOYW1lID0gdHlwZW9mIGxpc3RCcm93c2VyT3B0aW9uID09PSAnc3RyaW5nJyA/IGxpc3RCcm93c2VyT3B0aW9uIDogJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbiAoYXJndjogc3RyaW5nW10sIG9wdGlvbk5hbWVzOiBzdHJpbmdbXSwgc3ViT3B0aW9uc05hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBtb3ZlIG9wdGlvbnMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkgdG8gY29ycmVjdGx5IHBhcnNlIGJvdGggQm9vbGVhbiBhbmQgT2JqZWN0IHR5cGUgYXJndW1lbnRzIChHSC02MjMxKVxuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IGFyZ3YuZmluZEluZGV4KFxuICAgICAgICAgICAgZWwgPT4gb3B0aW9uTmFtZXMuc29tZShvcHQgPT4gZWwuc3RhcnRzV2l0aChvcHQpKSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTm90TGFzdE9wdGlvbiAgICAgICA9IG9wdGlvbkluZGV4IDwgYXJndi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTW92ZU9wdGlvblRvRW5kID0gaXNOb3RMYXN0T3B0aW9uICYmXG4gICAgICAgICAgICAgICAgIXN1Yk9wdGlvbnNOYW1lcy5zb21lKG9wdCA9PiBhcmd2W29wdGlvbkluZGV4ICsgMV0uc3RhcnRzV2l0aChvcHQpKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZE1vdmVPcHRpb25Ub0VuZClcbiAgICAgICAgICAgICAgICBhcmd2LnB1c2goYXJndi5zcGxpY2Uob3B0aW9uSW5kZXgsIDEpWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXJzZSAoYXJndjogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLCBPYmplY3QudmFsdWVzKFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTKSk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLWUnLCAnLS1za2lwLWpzLWVycm9ycyddLCBPYmplY3QudmFsdWVzKFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUykpO1xuXG4gICAgICAgIGNvbnN0IHsgYXJncywgdjhGbGFncyB9ID0gZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzKGFyZ3YpO1xuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkucGFyc2UoYXJncyk7XG5cbiAgICAgICAgdGhpcy5hcmdzID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgeyB2OEZsYWdzIH0pO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlTGlzdEJyb3dzZXJzKCk7XG5cbiAgICAgICAgLy8gTk9URTogdGhlICctLWxpc3QtYnJvd3NlcnMnIG9wdGlvbiBvbmx5IGxpc3RzIGJyb3dzZXJzIGFuZCBpbW1lZGlhdGVseSBleGl0cyB0aGUgYXBwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBvdGhlciBhcmd1bWVudHMuXG4gICAgICAgIGlmICh0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlU2VsZWN0b3JUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXNzZXJ0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VMb2FkVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJJbml0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFwcEluaXREZWxheSgpO1xuICAgICAgICB0aGlzLl9wYXJzZVNwZWVkKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUG9ydHMoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2Vyc0Zyb21BcmdzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQ29uY3VycmVuY3koKTtcbiAgICAgICAgdGhpcy5fcGFyc2VGaWxlTGlzdCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlRmlsdGVyaW5nT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVF1YXJhbnRpbmVPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZURhc2hib2FyZE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UnVuT3B0aW9ucyAoKTogUnVubmVyUnVuT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgUlVOX09QVElPTl9OQU1FUy5mb3JFYWNoKG9wdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbk5hbWUgaW4gdGhpcy5vcHRzKVxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgYSBoYWNrIHRvIGFkZCBhbiBpbmRleCBzaWduYXR1cmUgdG8gaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgcmVzdWx0W29wdGlvbk5hbWVdID0gdGhpcy5vcHRzW29wdGlvbk5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFJ1bm5lclJ1bk9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
package/lib/cli/cli.js
CHANGED
|
@@ -60,7 +60,7 @@ async function runTests(argParser) {
|
|
|
60
60
|
const proxyBypass = opts.proxyBypass;
|
|
61
61
|
const configFile = opts.configFile;
|
|
62
62
|
log_1.default.showSpinner();
|
|
63
|
-
const { hostname, ssl, dev, experimentalDebug, retryTestPages, cache, disableHttp2, v8Flags,
|
|
63
|
+
const { hostname, ssl, dev, experimentalDebug, retryTestPages, cache, disableHttp2, v8Flags, experimentalProxyless, disableCrossDomain, } = opts;
|
|
64
64
|
const testCafe = await (0, __1.default)({
|
|
65
65
|
developmentMode: dev,
|
|
66
66
|
isCli: true,
|
|
@@ -74,7 +74,7 @@ async function runTests(argParser) {
|
|
|
74
74
|
configFile,
|
|
75
75
|
disableHttp2,
|
|
76
76
|
v8Flags,
|
|
77
|
-
|
|
77
|
+
experimentalProxyless,
|
|
78
78
|
disableCrossDomain,
|
|
79
79
|
});
|
|
80
80
|
const correctedBrowsersAndSources = await (0, correct_browsers_and_sources_1.default)(argParser, testCafe.configuration);
|
|
@@ -148,4 +148,4 @@ async function listBrowsers(providerName) {
|
|
|
148
148
|
error(err);
|
|
149
149
|
}
|
|
150
150
|
})();
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBQzFDLDZEQUFnRDtBQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxjQUFjLENBQUMsQ0FBQztBQUVyQyw2REFBNkQ7QUFDN0QsTUFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQWEsS0FBSyxDQUFDO0FBRTlCLFNBQVMsV0FBVyxDQUFFLGdCQUFnQjtJQUNsQyxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLGFBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxDQUFDO1FBQy9CLE9BQU87SUFFWCxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsSUFBSSxD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QUUsQ0FBQztRQUUxQyxJQUFBLG1CQUFRLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUEsbUJBQVEsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxDQUFDLGtCQUFrQjtZQUM1QixNQUFNLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN4RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNoQyxNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztZQUVoRCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNkO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IENsaUFyZ3VtZW50UGFyc2VyIGZyb20gJy4vYXJndW1lbnQtcGFyc2VyJztcbmltcG9ydCBUZXJtaW5hdGlvbkhhbmRsZXIgZnJvbSAnLi90ZXJtaW5hdGlvbi1oYW5kbGVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHJlbW90ZXNXaXphcmQgZnJvbSAnLi9yZW1vdGVzLXdpemFyZCc7XG5pbXBvcnQgY29ycmVjdEJyb3dzZXJzQW5kU291cmNlcyBmcm9tICcuL2NvcnJlY3QtYnJvd3NlcnMtYW5kLXNvdXJjZXMnO1xuaW1wb3J0IGNyZWF0ZVRlc3RDYWZlIGZyb20gJy4uLyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ0VudHJ5IGZyb20gJy4uL3V0aWxzL2xvZy1lbnRyeSc7XG5pbXBvcnQgZGFzaGJvYXJkSW50ZWdyYXRpb24gZnJvbSAnLi4vZGFzaGJvYXJkJztcblxuY29uc3QgTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmNsaScpO1xuXG4vLyBOT1RFOiBMb2FkIHRoZSBwcm92aWRlciBwb29sIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lXG5jb25zdCBsYXp5UmVxdWlyZSAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlclBvb2wgPSBsYXp5UmVxdWlyZSgnLi4vYnJvd3Nlci9wcm92aWRlci9wb29sJyk7XG5cbmxldCBzaG93TWVzc2FnZU9uRXhpdCA9IHRydWU7XG5sZXQgZXhpdE1lc3NhZ2VTaG93biAgPSBmYWxzZTtcbmxldCBleGl0aW5nICAgICAgICAgICA9IGZhbHNlO1xuXG5mdW5jdGlvbiBleGl0SGFuZGxlciAodGVybWluYXRpb25MZXZlbCkge1xuICAgIGlmIChzaG93TWVzc2FnZU9uRXhpdCAmJiAhZXhpdE1lc3NhZ2VTaG93bikge1xuICAgICAgICBleGl0TWVzc2FnZVNob3duID0gdHJ1ZTtcblxuICAgICAgICBsb2cud3JpdGUoJ1N0b3BwaW5nIFRlc3RDYWZlLi4uJyk7XG5cbiAgICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IGxvZy5oaWRlU3Bpbm5lcih0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGV4aXRpbmcgfHwgdGVybWluYXRpb25MZXZlbCA8IDIpXG4gICAgICAgIHJldHVybjtcblxuICAgIGV4aXRpbmcgPSB0cnVlO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuZnVuY3Rpb24gZXhpdCAoY29kZSkge1xuICAgIGxvZy5oaWRlU3Bpbm5lcih0cnVlKTtcblxuICAgIC8vIE5PVEU6IGdpdmUgYSBwcm9jZXNzIHRpbWUgdG8gZmx1c2ggdGhlIG91dHB1dC5cbiAgICAvLyBJdCdzIG5lY2Vzc2FyeSBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHByb2Nlc3MuZXhpdChjb2RlKSwgMCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yIChlcnIpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIoKTtcblxuICAgIGxldCBtZXNzYWdlID0gbnVsbDtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBHZW5lcmFsRXJyb3IpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcblxuICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLmNvbG9yZWRTdGFjaztcblxuICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IGVyci5zdGFjaztcblxuICAgIGxvZy53cml0ZShjaGFsay5yZWQoJ0VSUk9SICcpICsgbWVzc2FnZSArICdcXG4nKTtcbiAgICBsb2cud3JpdGUoY2hhbGsuZ3JheSgnVHlwZSBcInRlc3RjYWZlIC1oXCIgZm9yIGhlbHAuJykpO1xuXG4gICAgZXhpdCgxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMgKGFyZ1BhcnNlcikge1xuICAgIGNvbnN0IG9wdHMgICAgICAgID0gYXJnUGFyc2VyLm9wdHM7XG4gICAgY29uc3QgcG9ydDEgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMF07XG4gICAgY29uc3QgcG9ydDIgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMV07XG4gICAgY29uc3QgcHJveHkgICAgICAgPSBvcHRzLnByb3h5O1xuICAgIGNvbnN0IHByb3h5QnlwYXNzID0gb3B0cy5wcm94eUJ5cGFzcztcbiAgICBjb25zdCBjb25maWdGaWxlICA9IG9wdHMuY29uZmlnRmlsZTtcblxuICAgIGxvZy5zaG93U3Bpbm5lcigpO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgc3NsLFxuICAgICAgICBkZXYsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgcHJveHlsZXNzLFxuICAgICAgICBkaXNhYmxlQ3Jvc3NEb21haW4sXG4gICAgfSA9IG9wdHM7XG5cbiAgICBjb25zdCB0ZXN0Q2FmZSA9IGF3YWl0IGNyZWF0ZVRlc3RDYWZlKHtcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiBkZXYsXG4gICAgICAgIGlzQ2xpOiAgICAgICAgICAgdHJ1ZSxcblxuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2wsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgcHJveHlsZXNzLFxuICAgICAgICBkaXNhYmxlQ3Jvc3NEb21haW4sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMgPSBhd2FpdCBjb3JyZWN0QnJvd3NlcnNBbmRTb3VyY2VzKGFyZ1BhcnNlciwgdGVzdENhZmUuY29uZmlndXJhdGlvbik7XG4gICAgY29uc3QgYXV0b21hdGVkQnJvd3NlcnMgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLmJyb3dzZXJzO1xuICAgIGNvbnN0IHJlbW90ZUJyb3dzZXJzICAgICAgICAgICAgICA9IGF3YWl0IHJlbW90ZXNXaXphcmQodGVzdENhZmUsIGFyZ1BhcnNlci5yZW1vdGVDb3VudCwgb3B0cy5xckNvZGUpO1xuICAgIGNvbnN0IGJyb3dzZXJzICAgICAgICAgICAgICAgICAgICA9IGF1dG9tYXRlZEJyb3dzZXJzLmNvbmNhdChyZW1vdGVCcm93c2Vycyk7XG4gICAgY29uc3Qgc291cmNlcyAgICAgICAgICAgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLnNvdXJjZXM7XG5cbiAgICBjb25zdCBydW5uZXIgPSBvcHRzLmxpdmUgPyB0ZXN0Q2FmZS5jcmVhdGVMaXZlTW9kZVJ1bm5lcigpIDogdGVzdENhZmUuY3JlYXRlUnVubmVyKCk7XG5cbiAgICBsZXQgZmFpbGVkID0gMDtcblxuICAgIHJ1bm5lclxuICAgICAgICAudXNlUHJveHkocHJveHksIHByb3h5QnlwYXNzKVxuICAgICAgICAuc3JjKHNvdXJjZXMpXG4gICAgICAgIC50c0NvbmZpZ1BhdGgoYXJnUGFyc2VyLm9wdHMudHNDb25maWdQYXRoKVxuICAgICAgICAuYnJvd3NlcnMoYnJvd3NlcnMpXG4gICAgICAgIC5yZXBvcnRlcihhcmdQYXJzZXIub3B0cy5yZXBvcnRlcilcbiAgICAgICAgLmNvbmN1cnJlbmN5KGFyZ1BhcnNlci5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAuZmlsdGVyKGFyZ1BhcnNlci5vcHRzLmZpbHRlcilcbiAgICAgICAgLnZpZGVvKG9wdHMudmlkZW8sIG9wdHMudmlkZW9PcHRpb25zLCBvcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAuc2NyZWVuc2hvdHMob3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgLnN0YXJ0QXBwKG9wdHMuYXBwLCBvcHRzLmFwcEluaXREZWxheSlcbiAgICAgICAgLmNsaWVudFNjcmlwdHMoYXJnUGFyc2VyLm9wdHMuY2xpZW50U2NyaXB0cylcbiAgICAgICAgLmNvbXBpbGVyT3B0aW9ucyhhcmdQYXJzZXIub3B0cy5jb21waWxlck9wdGlvbnMpO1xuXG4gICAgcnVubmVyLm9uY2UoJ2RvbmUtYm9vdHN0cmFwcGluZycsICgpID0+IGxvZy5oaWRlU3Bpbm5lcigpKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJ1bk9wdHMgPSBhcmdQYXJzZXIuZ2V0UnVuT3B0aW9ucygpO1xuXG4gICAgICAgIGZhaWxlZCA9IGF3YWl0IHJ1bm5lci5ydW4ocnVuT3B0cyk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBhd2FpdCB0ZXN0Q2FmZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIGV4aXQoZmFpbGVkKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuRGFzaGJvYXJkSW50ZWdyYXRpb24gKHN0YXRlKSB7XG4gICAgYXdhaXQgZGFzaGJvYXJkSW50ZWdyYXRpb24oc3RhdGUpO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdEJyb3dzZXJzIChwcm92aWRlck5hbWUpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGJyb3dzZXJQcm92aWRlclBvb2wuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcblxuICAgIGlmICghcHJvdmlkZXIpXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlclByb3ZpZGVyTm90Rm91bmQsIHByb3ZpZGVyTmFtZSk7XG5cbiAgICBpZiAocHJvdmlkZXIuaXNNdWx0aUJyb3dzZXIpIHtcbiAgICAgICAgY29uc3QgYnJvd3Nlck5hbWVzID0gYXdhaXQgcHJvdmlkZXIuZ2V0QnJvd3Nlckxpc3QoKTtcblxuICAgICAgICBhd2FpdCBicm93c2VyUHJvdmlkZXJQb29sLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAocHJvdmlkZXJOYW1lID09PSAnbG9jYWxseS1pbnN0YWxsZWQnKVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLm1hcChicm93c2VyTmFtZSA9PiBgXCIkeyBwcm92aWRlck5hbWUgfTokeyBicm93c2VyTmFtZSB9XCJgKS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFwiJHsgcHJvdmlkZXJOYW1lIH1cImApO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuKGFzeW5jIGZ1bmN0aW9uIGNsaSAoKSB7XG4gICAgY29uc3QgdGVybWluYXRpb25IYW5kbGVyID0gbmV3IFRlcm1pbmF0aW9uSGFuZGxlcigpO1xuXG4gICAgdGVybWluYXRpb25IYW5kbGVyLm9uKFRlcm1pbmF0aW9uSGFuZGxlci5URVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQsIGV4aXRIYW5kbGVyKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFyZ1BhcnNlciA9IG5ldyBDbGlBcmd1bWVudFBhcnNlcigpO1xuXG4gICAgICAgIGxvZ0VudHJ5KExPR0dFUiwgcHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBhd2FpdCBhcmdQYXJzZXIucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBsb2dFbnRyeShMT0dHRVIsIGFyZ1BhcnNlci5vcHRzKTtcblxuICAgICAgICBpZiAoYXJnUGFyc2VyLmlzRGFzaGJvYXJkQ29tbWFuZClcbiAgICAgICAgICAgIGF3YWl0IHJ1bkRhc2hib2FyZEludGVncmF0aW9uKGFyZ1BhcnNlci5zZW5kUmVwb3J0U3RhdGUpO1xuICAgICAgICBlbHNlIGlmIChhcmdQYXJzZXIub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICBhd2FpdCBsaXN0QnJvd3NlcnMoYXJnUGFyc2VyLm9wdHMucHJvdmlkZXJOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgcnVuVGVzdHMoYXJnUGFyc2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBlcnJvcihlcnIpO1xuICAgIH1cbn0pKCk7XG5cbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBQzFDLDZEQUFnRDtBQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxjQUFjLENBQUMsQ0FBQztBQUVyQyw2REFBNkQ7QUFDN0QsTUFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQWEsS0FBSyxDQUFDO0FBRTlCLFNBQVMsV0FBVyxDQUFFLGdCQUFnQjtJQUNsQyxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLGFBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxDQUFDO1FBQy9CLE9BQU87SUFFWCxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFFLElBQUk7SUFDZixhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRCLGlEQUFpRDtJQUNqRCx1Q0FBdUM7SUFDdkMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFFLEdBQUc7SUFDZixhQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFbEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRW5CLElBQUksR0FBRyxZQUFZLHNCQUFZO1FBQzNCLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBRXJCLElBQUksR0FBRyxZQUFZLGtCQUFRO1FBQzVCLE9BQU8sR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDOztRQUczQixPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUV4QixhQUFHLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hELGFBQUcsQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7SUFFdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUUsU0FBUztJQUM5QixNQUFNLElBQUksR0FBVSxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFTLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLEtBQUssR0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxLQUFLLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFFcEMsYUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRWxCLE1BQU0sRUFDRixRQUFRLEVBQ1IsR0FBRyxFQUNILEdBQUcsRUFDSCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLEtBQUssRUFDTCxZQUFZLEVBQ1osT0FBTyxFQUNQLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDckIsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsV0FBYyxFQUFDO1FBQ2xDLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLEtBQUssRUFBWSxJQUFJO1FBRXJCLFFBQVE7UUFDUixLQUFLO1FBQ0wsS0FBSztRQUNMLEdBQUc7UUFDSCxpQkFBaUI7UUFDakIsY0FBYztRQUNkLEtBQUs7UUFDTCxVQUFVO1FBQ1YsWUFBWTtRQUNaLE9BQU87UUFDUCxxQkFBcUI7UUFDckIsa0JBQWtCO0tBQ3JCLENBQUMsQ0FBQztJQUVILE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxJQUFBLHNDQUF5QixFQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkcsTUFBTSxpQkFBaUIsR0FBYSwyQkFBMkIsQ0FBQyxRQUFRLENBQUM7SUFDekUsTUFBTSxjQUFjLEdBQWdCLE1BQU0sSUFBQSx3QkFBYSxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RyxNQUFNLFFBQVEsR0FBc0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sT0FBTyxHQUF1QiwyQkFBMkIsQ0FBQyxPQUFPLENBQUM7SUFFeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyRixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFZixNQUFNO1NBQ0QsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7U0FDNUIsR0FBRyxDQUFDLE9BQU8sQ0FBQztTQUNaLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDO1NBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUNqQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDdkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1NBQy9ELFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDckMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzNDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFM0QsSUFBSTtRQUNBLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUxQyxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO1lBQ087UUFDSixpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDMUI7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakIsQ0FBQztBQUVELEtBQUssVUFBVSx1QkFBdUIsQ0FBRSxLQUFLO0lBQ3pDLE1BQU0sSUFBQSxtQkFBb0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FBRSxZQUFZO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXJFLElBQUksQ0FBQyxRQUFRO1FBQ1QsTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVqRixJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7UUFDekIsTUFBTSxZQUFZLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFckQsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxJQUFJLFlBQVksS0FBSyxtQkFBbUI7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7O1lBRXJDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUssWUFBYSxJQUFLLFdBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDdkc7O1FBRUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFLLFlBQWEsR0FBRyxDQUFDLENBQUM7SUFFdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELENBQUMsS0FBSyxVQUFVLEdBQUc7SUFDZixNQUFNLGtCQUFrQixHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztJQUVwRCxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQWtCLENBQUMsaUNBQWlDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFekYsSUFBSTtRQUNBLE1BQU0sU0FBUyxHQUFHLElBQUkseUJBQWlCLEVBQUUsQ0FBQztRQUUxQyxJQUFBLG1CQUFRLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUEsbUJBQVEsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxDQUFDLGtCQUFrQjtZQUM1QixNQUFNLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN4RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNoQyxNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztZQUVoRCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNkO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IENsaUFyZ3VtZW50UGFyc2VyIGZyb20gJy4vYXJndW1lbnQtcGFyc2VyJztcbmltcG9ydCBUZXJtaW5hdGlvbkhhbmRsZXIgZnJvbSAnLi90ZXJtaW5hdGlvbi1oYW5kbGVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHJlbW90ZXNXaXphcmQgZnJvbSAnLi9yZW1vdGVzLXdpemFyZCc7XG5pbXBvcnQgY29ycmVjdEJyb3dzZXJzQW5kU291cmNlcyBmcm9tICcuL2NvcnJlY3QtYnJvd3NlcnMtYW5kLXNvdXJjZXMnO1xuaW1wb3J0IGNyZWF0ZVRlc3RDYWZlIGZyb20gJy4uLyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ0VudHJ5IGZyb20gJy4uL3V0aWxzL2xvZy1lbnRyeSc7XG5pbXBvcnQgZGFzaGJvYXJkSW50ZWdyYXRpb24gZnJvbSAnLi4vZGFzaGJvYXJkJztcblxuY29uc3QgTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmNsaScpO1xuXG4vLyBOT1RFOiBMb2FkIHRoZSBwcm92aWRlciBwb29sIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lXG5jb25zdCBsYXp5UmVxdWlyZSAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlclBvb2wgPSBsYXp5UmVxdWlyZSgnLi4vYnJvd3Nlci9wcm92aWRlci9wb29sJyk7XG5cbmxldCBzaG93TWVzc2FnZU9uRXhpdCA9IHRydWU7XG5sZXQgZXhpdE1lc3NhZ2VTaG93biAgPSBmYWxzZTtcbmxldCBleGl0aW5nICAgICAgICAgICA9IGZhbHNlO1xuXG5mdW5jdGlvbiBleGl0SGFuZGxlciAodGVybWluYXRpb25MZXZlbCkge1xuICAgIGlmIChzaG93TWVzc2FnZU9uRXhpdCAmJiAhZXhpdE1lc3NhZ2VTaG93bikge1xuICAgICAgICBleGl0TWVzc2FnZVNob3duID0gdHJ1ZTtcblxuICAgICAgICBsb2cud3JpdGUoJ1N0b3BwaW5nIFRlc3RDYWZlLi4uJyk7XG5cbiAgICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IGxvZy5oaWRlU3Bpbm5lcih0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGV4aXRpbmcgfHwgdGVybWluYXRpb25MZXZlbCA8IDIpXG4gICAgICAgIHJldHVybjtcblxuICAgIGV4aXRpbmcgPSB0cnVlO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuZnVuY3Rpb24gZXhpdCAoY29kZSkge1xuICAgIGxvZy5oaWRlU3Bpbm5lcih0cnVlKTtcblxuICAgIC8vIE5PVEU6IGdpdmUgYSBwcm9jZXNzIHRpbWUgdG8gZmx1c2ggdGhlIG91dHB1dC5cbiAgICAvLyBJdCdzIG5lY2Vzc2FyeSBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHByb2Nlc3MuZXhpdChjb2RlKSwgMCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yIChlcnIpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIoKTtcblxuICAgIGxldCBtZXNzYWdlID0gbnVsbDtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBHZW5lcmFsRXJyb3IpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcblxuICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLmNvbG9yZWRTdGFjaztcblxuICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IGVyci5zdGFjaztcblxuICAgIGxvZy53cml0ZShjaGFsay5yZWQoJ0VSUk9SICcpICsgbWVzc2FnZSArICdcXG4nKTtcbiAgICBsb2cud3JpdGUoY2hhbGsuZ3JheSgnVHlwZSBcInRlc3RjYWZlIC1oXCIgZm9yIGhlbHAuJykpO1xuXG4gICAgZXhpdCgxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMgKGFyZ1BhcnNlcikge1xuICAgIGNvbnN0IG9wdHMgICAgICAgID0gYXJnUGFyc2VyLm9wdHM7XG4gICAgY29uc3QgcG9ydDEgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMF07XG4gICAgY29uc3QgcG9ydDIgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMV07XG4gICAgY29uc3QgcHJveHkgICAgICAgPSBvcHRzLnByb3h5O1xuICAgIGNvbnN0IHByb3h5QnlwYXNzID0gb3B0cy5wcm94eUJ5cGFzcztcbiAgICBjb25zdCBjb25maWdGaWxlICA9IG9wdHMuY29uZmlnRmlsZTtcblxuICAgIGxvZy5zaG93U3Bpbm5lcigpO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgc3NsLFxuICAgICAgICBkZXYsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgZXhwZXJpbWVudGFsUHJveHlsZXNzLFxuICAgICAgICBkaXNhYmxlQ3Jvc3NEb21haW4sXG4gICAgfSA9IG9wdHM7XG5cbiAgICBjb25zdCB0ZXN0Q2FmZSA9IGF3YWl0IGNyZWF0ZVRlc3RDYWZlKHtcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiBkZXYsXG4gICAgICAgIGlzQ2xpOiAgICAgICAgICAgdHJ1ZSxcblxuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2wsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICAgICAgZXhwZXJpbWVudGFsUHJveHlsZXNzLFxuICAgICAgICBkaXNhYmxlQ3Jvc3NEb21haW4sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMgPSBhd2FpdCBjb3JyZWN0QnJvd3NlcnNBbmRTb3VyY2VzKGFyZ1BhcnNlciwgdGVzdENhZmUuY29uZmlndXJhdGlvbik7XG4gICAgY29uc3QgYXV0b21hdGVkQnJvd3NlcnMgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLmJyb3dzZXJzO1xuICAgIGNvbnN0IHJlbW90ZUJyb3dzZXJzICAgICAgICAgICAgICA9IGF3YWl0IHJlbW90ZXNXaXphcmQodGVzdENhZmUsIGFyZ1BhcnNlci5yZW1vdGVDb3VudCwgb3B0cy5xckNvZGUpO1xuICAgIGNvbnN0IGJyb3dzZXJzICAgICAgICAgICAgICAgICAgICA9IGF1dG9tYXRlZEJyb3dzZXJzLmNvbmNhdChyZW1vdGVCcm93c2Vycyk7XG4gICAgY29uc3Qgc291cmNlcyAgICAgICAgICAgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLnNvdXJjZXM7XG5cbiAgICBjb25zdCBydW5uZXIgPSBvcHRzLmxpdmUgPyB0ZXN0Q2FmZS5jcmVhdGVMaXZlTW9kZVJ1bm5lcigpIDogdGVzdENhZmUuY3JlYXRlUnVubmVyKCk7XG5cbiAgICBsZXQgZmFpbGVkID0gMDtcblxuICAgIHJ1bm5lclxuICAgICAgICAudXNlUHJveHkocHJveHksIHByb3h5QnlwYXNzKVxuICAgICAgICAuc3JjKHNvdXJjZXMpXG4gICAgICAgIC50c0NvbmZpZ1BhdGgoYXJnUGFyc2VyLm9wdHMudHNDb25maWdQYXRoKVxuICAgICAgICAuYnJvd3NlcnMoYnJvd3NlcnMpXG4gICAgICAgIC5yZXBvcnRlcihhcmdQYXJzZXIub3B0cy5yZXBvcnRlcilcbiAgICAgICAgLmNvbmN1cnJlbmN5KGFyZ1BhcnNlci5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAuZmlsdGVyKGFyZ1BhcnNlci5vcHRzLmZpbHRlcilcbiAgICAgICAgLnZpZGVvKG9wdHMudmlkZW8sIG9wdHMudmlkZW9PcHRpb25zLCBvcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAuc2NyZWVuc2hvdHMob3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgLnN0YXJ0QXBwKG9wdHMuYXBwLCBvcHRzLmFwcEluaXREZWxheSlcbiAgICAgICAgLmNsaWVudFNjcmlwdHMoYXJnUGFyc2VyLm9wdHMuY2xpZW50U2NyaXB0cylcbiAgICAgICAgLmNvbXBpbGVyT3B0aW9ucyhhcmdQYXJzZXIub3B0cy5jb21waWxlck9wdGlvbnMpO1xuXG4gICAgcnVubmVyLm9uY2UoJ2RvbmUtYm9vdHN0cmFwcGluZycsICgpID0+IGxvZy5oaWRlU3Bpbm5lcigpKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJ1bk9wdHMgPSBhcmdQYXJzZXIuZ2V0UnVuT3B0aW9ucygpO1xuXG4gICAgICAgIGZhaWxlZCA9IGF3YWl0IHJ1bm5lci5ydW4ocnVuT3B0cyk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBhd2FpdCB0ZXN0Q2FmZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIGV4aXQoZmFpbGVkKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuRGFzaGJvYXJkSW50ZWdyYXRpb24gKHN0YXRlKSB7XG4gICAgYXdhaXQgZGFzaGJvYXJkSW50ZWdyYXRpb24oc3RhdGUpO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdEJyb3dzZXJzIChwcm92aWRlck5hbWUpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGJyb3dzZXJQcm92aWRlclBvb2wuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcblxuICAgIGlmICghcHJvdmlkZXIpXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlclByb3ZpZGVyTm90Rm91bmQsIHByb3ZpZGVyTmFtZSk7XG5cbiAgICBpZiAocHJvdmlkZXIuaXNNdWx0aUJyb3dzZXIpIHtcbiAgICAgICAgY29uc3QgYnJvd3Nlck5hbWVzID0gYXdhaXQgcHJvdmlkZXIuZ2V0QnJvd3Nlckxpc3QoKTtcblxuICAgICAgICBhd2FpdCBicm93c2VyUHJvdmlkZXJQb29sLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAocHJvdmlkZXJOYW1lID09PSAnbG9jYWxseS1pbnN0YWxsZWQnKVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYnJvd3Nlck5hbWVzLm1hcChicm93c2VyTmFtZSA9PiBgXCIkeyBwcm92aWRlck5hbWUgfTokeyBicm93c2VyTmFtZSB9XCJgKS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFwiJHsgcHJvdmlkZXJOYW1lIH1cImApO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuKGFzeW5jIGZ1bmN0aW9uIGNsaSAoKSB7XG4gICAgY29uc3QgdGVybWluYXRpb25IYW5kbGVyID0gbmV3IFRlcm1pbmF0aW9uSGFuZGxlcigpO1xuXG4gICAgdGVybWluYXRpb25IYW5kbGVyLm9uKFRlcm1pbmF0aW9uSGFuZGxlci5URVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQsIGV4aXRIYW5kbGVyKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFyZ1BhcnNlciA9IG5ldyBDbGlBcmd1bWVudFBhcnNlcigpO1xuXG4gICAgICAgIGxvZ0VudHJ5KExPR0dFUiwgcHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBhd2FpdCBhcmdQYXJzZXIucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICAgICAgICBsb2dFbnRyeShMT0dHRVIsIGFyZ1BhcnNlci5vcHRzKTtcblxuICAgICAgICBpZiAoYXJnUGFyc2VyLmlzRGFzaGJvYXJkQ29tbWFuZClcbiAgICAgICAgICAgIGF3YWl0IHJ1bkRhc2hib2FyZEludGVncmF0aW9uKGFyZ1BhcnNlci5zZW5kUmVwb3J0U3RhdGUpO1xuICAgICAgICBlbHNlIGlmIChhcmdQYXJzZXIub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICBhd2FpdCBsaXN0QnJvd3NlcnMoYXJnUGFyc2VyLm9wdHMucHJvdmlkZXJOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgcnVuVGVzdHMoYXJnUGFyc2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBzaG93TWVzc2FnZU9uRXhpdCA9IGZhbHNlO1xuICAgICAgICBlcnJvcihlcnIpO1xuICAgIH1cbn0pKCk7XG5cbiJdfQ==
|
|
@@ -5142,9 +5142,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5142
5142
|
var isButton = testCafeCore.domUtils.isButtonElement(activeElement);
|
|
5143
5143
|
var isSafariWithAutoRaisedClick = browserUtils$a.isSafari &&
|
|
5144
5144
|
browserUtils$a.compareVersions([browserUtils$a.webkitVersion, '603.1.30']) >= 0;
|
|
5145
|
-
var
|
|
5146
|
-
var raiseClickOnEnter = (!browserUtils$a.isFirefox || isKeyActivatedInputInFirefox) && !isSafariWithAutoRaisedClick
|
|
5147
|
-
&& (isKeyActivatedInput || isButton);
|
|
5145
|
+
var raiseClickOnEnter = !isSafariWithAutoRaisedClick && (isKeyActivatedInput || isButton);
|
|
5148
5146
|
if (raiseClickOnEnter && this.sanitizedKey === 'enter')
|
|
5149
5147
|
activeElement.click();
|
|
5150
5148
|
return raiseDefault;
|