testcafe 3.7.3 → 3.7.5
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/api/test-page-url.js +3 -3
- package/lib/assertions/executor.js +2 -2
- package/lib/browser/provider/utils/client-functions.js +1 -3
- package/lib/cli/argument-parser/index.js +3 -3
- package/lib/client/automation/index.js +5 -4
- package/lib/client/automation/playback/press/utils.js +3 -2
- package/lib/client/browser/service-worker.js +1 -1
- package/lib/client/core/index.js +6 -10
- package/lib/client/core/utils/dom.js +2 -2
- package/lib/client/driver/index.js +429 -425
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/ui/favicon.ico +0 -0
- package/lib/client/ui/index.js +426 -426
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/sprite.png +0 -0
- package/lib/client-functions/replicator.js +2 -2
- package/lib/client-functions/selectors/selector-attribute-filter.js +1 -3
- package/lib/client-functions/selectors/selector-text-filter.js +1 -3
- package/lib/configuration/types.js +1 -2
- package/lib/custom-client-scripts/client-script-init.js +1 -1
- package/lib/custom-client-scripts/problematic-scripts.js +1 -1
- package/lib/custom-client-scripts/utils.js +4 -4
- package/lib/live/controller.js +5 -5
- package/lib/reporter/plugin-host.js +3 -1
- package/lib/test-run/commands/validations/argument.js +3 -2
- package/lib/test-run/index.js +2 -2
- package/lib/utils/replicator/index.js +442 -0
- package/package.json +21 -25
package/lib/api/test-page-url.js
CHANGED
|
@@ -9,7 +9,6 @@ const os_family_1 = __importDefault(require("os-family"));
|
|
|
9
9
|
const runtime_1 = require("../errors/runtime");
|
|
10
10
|
const types_1 = require("../errors/types");
|
|
11
11
|
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
|
12
|
-
const path_1 = require("path");
|
|
13
12
|
const PROTOCOL_RE = /^([\w-]+?)(?=:\/\/)/;
|
|
14
13
|
const SUPPORTED_PROTOCOL_RE = /^(https?|file):/;
|
|
15
14
|
const IMPLICIT_PROTOCOL_RE = /^\/\//;
|
|
@@ -47,7 +46,8 @@ function getUrl(url, base) {
|
|
|
47
46
|
}
|
|
48
47
|
exports.getUrl = getUrl;
|
|
49
48
|
function prepareBaseUrl(url) {
|
|
50
|
-
|
|
49
|
+
if (!url.endsWith('/'))
|
|
50
|
+
url += '/';
|
|
51
51
|
return isAbsolute(url) ? (0, url_1.pathToFileURL)(url) : new url_1.URL(url);
|
|
52
52
|
}
|
|
53
53
|
exports.prepareBaseUrl = prepareBaseUrl;
|
|
@@ -73,4 +73,4 @@ function assertRoleUrl(url, callsiteName) {
|
|
|
73
73
|
throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.roleInitializedWithRelativeUrl);
|
|
74
74
|
}
|
|
75
75
|
exports.assertRoleUrl = assertRoleUrl;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wYWdlLXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdGVzdC1wYWdlLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2QkFBeUM7QUFDekMsMERBQTJCO0FBQzNCLCtDQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsNkRBQXlEO0FBRXpELE1BQU0sV0FBVyxHQUFhLHFCQUFxQixDQUFDO0FBQ3BELE1BQU0scUJBQXFCLEdBQUcsaUJBQWlCLENBQUM7QUFDaEQsTUFBTSxvQkFBb0IsR0FBSSxPQUFPLENBQUM7QUFDdEMsTUFBTSxnQkFBZ0IsR0FBUSxTQUFTLENBQUM7QUFDeEMsTUFBTSxvQkFBb0IsR0FBSSxXQUFXLENBQUM7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBUSxhQUFhLENBQUM7QUFFNUMsU0FBZ0IsVUFBVSxDQUFFLEdBQVc7SUFDbkMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBUyxVQUFVLENBQUUsR0FBVztJQUM1QixvRUFBb0U7SUFDcEUsT0FBTyxtQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFFLElBQVksRUFBRSxJQUFTO0lBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksU0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBSkQsZ0RBSUM7QUFFRCxTQUFTLGNBQWMsQ0FBRSxHQUFXO0lBQ2hDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyx3Q0FBa0I7UUFDN0QsT0FBTyxHQUFHLENBQUM7SUFFZixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXRFLE9BQU8sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFFLEdBQVcsRUFBRSxJQUFVO0lBQzNDLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxJQUFJO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRXpELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2YsT0FBTyxJQUFBLG1CQUFhLEVBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFekMsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQVpELHdCQVlDO0FBRUQsU0FBZ0IsY0FBYyxDQUFFLEdBQVc7SUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ2xCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFFZixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxtQkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBTEQsd0NBS0M7QUFFRCxTQUFnQixhQUFhLENBQUUsR0FBVyxFQUFFLFlBQW9CO0lBQzVELGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFGRCxzQ0FFQztBQUVELFNBQVMsY0FBYyxDQUFFLEdBQVcsRUFBRSxZQUFvQixFQUFFLElBQVk7SUFDcEUsTUFBTSxRQUFRLEdBQWlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUUsTUFBTSxpQkFBaUIsR0FBUSxtQkFBRSxDQUFDLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEUsSUFBSSxzQkFBc0IsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEdBQUcsS0FBSyx3Q0FBa0I7UUFDMUUsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFILENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUUsR0FBVyxFQUFFLFlBQW9CO0lBQzVELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNmLE1BQU0sSUFBSSxrQkFBUSxDQUFDLFlBQVksRUFBRSxzQkFBYyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUxRSxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBTEQsc0NBS0M7QUFFRCxTQUFnQixhQUFhLENBQUUsR0FBVyxFQUFFLFlBQW9CO0lBQzVELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNmLE1BQU0sSUFBSSxrQkFBUSxDQUFDLFlBQVksRUFBRSxzQkFBYyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUhELHNDQUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVJMLCBwYXRoVG9GaWxlVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBTUEVDSUFMX0JMQU5LX1BBR0UgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuY29uc3QgUFJPVE9DT0xfUkUgICAgICAgICAgID0gL14oW1xcdy1dKz8pKD89OlxcL1xcLykvO1xuY29uc3QgU1VQUE9SVEVEX1BST1RPQ09MX1JFID0gL14oaHR0cHM/fGZpbGUpOi87XG5jb25zdCBJTVBMSUNJVF9QUk9UT0NPTF9SRSAgPSAvXlxcL1xcLy87XG5jb25zdCBBQlNPTFVURV9QQVRIX1JFICAgICAgPSAvXlxcL1teL10vO1xuY29uc3QgV0lOX0FCU09MVVRFX1BBVEhfUkUgID0gL15cXHc6Wy9cXFxcXS87XG5jb25zdCBSRUxBVElWRV9QQVRIX1JFICAgICAgPSAvXlxcLlxcLj9bL1xcXFxdLztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVsYXRpdmUgKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJFTEFUSVZFX1BBVEhfUkUudGVzdCh1cmwpO1xufVxuXG5mdW5jdGlvbiBpc0Fic29sdXRlICh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIE5PVEU6IHBhdGguaXNBYnNvbHV0ZSB0cmVhdHMgdGhlICcvL2V4YW1wbGUuY29tJyBwYXRoIGFzIGFic29sdXRlXG4gICAgcmV0dXJuIE9TLndpbiA/IFdJTl9BQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKSA6IEFCU09MVVRFX1BBVEhfUkUudGVzdCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlVXJsIChwYXRoOiBzdHJpbmcsIGJhc2U6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChwYXRoLCBiYXNlKTtcblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlUHJvdG9jb2wgKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoU1VQUE9SVEVEX1BST1RPQ09MX1JFLnRlc3QodXJsKSB8fCB1cmwgPT09IFNQRUNJQUxfQkxBTktfUEFHRSlcbiAgICAgICAgcmV0dXJuIHVybDtcblxuICAgIGNvbnN0IHByb3RvY29sID0gSU1QTElDSVRfUFJPVE9DT0xfUkUudGVzdCh1cmwpID8gJ2h0dHA6JyA6ICdodHRwOi8vJztcblxuICAgIHJldHVybiBwcm90b2NvbCArIHVybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVybCAodXJsOiBzdHJpbmcsIGJhc2U/OiBVUkwpOiBzdHJpbmcge1xuICAgIGlmIChpc1JlbGF0aXZlKHVybCkpIHtcbiAgICAgICAgaWYgKCFiYXNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWxhdGl2ZSB1cmxzIHJlcXVpcmUgYSBiYXNlIHBhdGgnKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZVJlbGF0aXZlVXJsKHVybCwgYmFzZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQWJzb2x1dGUodXJsKSlcbiAgICAgICAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwodXJsKS50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIGVuc3VyZVByb3RvY29sKHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmFzZVVybCAodXJsOiBzdHJpbmcpOiBVUkwge1xuICAgIGlmICghdXJsLmVuZHNXaXRoKCcvJykpXG4gICAgICAgIHVybCArPSAnLyc7XG5cbiAgICByZXR1cm4gaXNBYnNvbHV0ZSh1cmwpID8gcGF0aFRvRmlsZVVSTCh1cmwpIDogbmV3IFVSTCh1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UGFnZVVybCAodXJsOiBzdHJpbmcsIGNhbGxzaXRlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgYXNzZXJ0UHJvdG9jb2wodXJsLCBjYWxsc2l0ZU5hbWUsICd0ZXN0IHBhZ2UgVVJMJyk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFByb3RvY29sICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcsIHdoYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByb3RvY29sICAgICAgICAgICAgICAgPSB1cmwubWF0Y2goUFJPVE9DT0xfUkUpO1xuICAgIGNvbnN0IGhhc1Vuc3VwcG9ydGVkUHJvdG9jb2wgPSBwcm90b2NvbCAmJiAhU1VQUE9SVEVEX1BST1RPQ09MX1JFLnRlc3QodXJsKTtcbiAgICBjb25zdCBpc1dpbkFic29sdXRlUGF0aCAgICAgID0gT1Mud2luICYmIFdJTl9BQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKTtcblxuICAgIGlmIChoYXNVbnN1cHBvcnRlZFByb3RvY29sICYmICFpc1dpbkFic29sdXRlUGF0aCAmJiB1cmwgIT09IFNQRUNJQUxfQkxBTktfUEFHRSlcbiAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKGNhbGxzaXRlTmFtZSwgUlVOVElNRV9FUlJPUlMudW5zdXBwb3J0ZWRVcmxQcm90b2NvbCwgd2hhdCwgdXJsLCB3aGF0LCBwcm90b2NvbCAmJiBwcm90b2NvbFswXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRCYXNlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yZWxhdGl2ZUJhc2VVcmwsIHVybCk7XG5cbiAgICBhc3NlcnRQcm90b2NvbCh1cmwsIGNhbGxzaXRlTmFtZSwgJ2Jhc2UgVVJMJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRSb2xlVXJsICh1cmw6IHN0cmluZywgY2FsbHNpdGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNSZWxhdGl2ZSh1cmwpKVxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoY2FsbHNpdGVOYW1lLCBSVU5USU1FX0VSUk9SUy5yb2xlSW5pdGlhbGl6ZWRXaXRoUmVsYXRpdmVVcmwpO1xufVxuIl19
|
|
@@ -32,7 +32,7 @@ class AssertionExecutor extends events_1.EventEmitter {
|
|
|
32
32
|
return (0, thennable_1.isThennable)(val);
|
|
33
33
|
}
|
|
34
34
|
_getTimeLeft() {
|
|
35
|
-
const executionTime = new Date().getTime() - this.startTime;
|
|
35
|
+
const executionTime = new Date().getTime() - this.startTime;
|
|
36
36
|
return this.timeout - executionTime;
|
|
37
37
|
}
|
|
38
38
|
_onExecutionFinished() {
|
|
@@ -77,4 +77,4 @@ class AssertionExecutor extends events_1.EventEmitter {
|
|
|
77
77
|
}
|
|
78
78
|
exports.default = AssertionExecutor;
|
|
79
79
|
module.exports = exports.default;
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0aW9ucy9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFzQztBQUN0QywyREFBbUM7QUFDbkMsa0RBQWlEO0FBQ2pELGlEQUFtRztBQUNuRywyRkFBaUU7QUFDakUsc0RBQTZCO0FBSTdCLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUU1QixNQUFxQixpQkFBa0IsU0FBUSxxQkFBWTtJQVN2RCxZQUFvQixPQUF5QixFQUFFLE9BQWUsRUFBRSxRQUF3QjtRQUNwRixLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxPQUFPLEdBQUksT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUksT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQU0sS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUssS0FBSyxDQUFDO1FBRXZCLE1BQU0sRUFBRSxHQUFjLElBQUEsZ0JBQUssRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFMUMsSUFBSSxhQUFhLFlBQVksK0JBQW1CO1lBQzVDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDbEYsTUFBTSxJQUFJLHlDQUE4QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7WUFFeEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFVBQVUsQ0FBRSxHQUFZO1FBQzVCLE9BQU8sSUFBQSx1QkFBVyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUksSUFBSSxDQUFDLFNBQW9CLENBQUM7UUFFeEUsT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksSUFBSSxDQUFDLE9BQU87WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sYUFBYSxDQUFFLEVBQVk7UUFDL0IsT0FBTyxLQUFLLElBQUksRUFBRTtZQUNkLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBNkIsQ0FBQztZQUVqRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBRXZELElBQUk7b0JBQ0EsRUFBRSxFQUFFLENBQUM7b0JBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUMvQjtnQkFFRCxPQUFPLEdBQUcsRUFBRTtvQkFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO3dCQUM1QixNQUFNLEdBQUcsQ0FBQztxQkFDYjtvQkFFRCxNQUFNLElBQUEsZUFBSyxFQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUU3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztpQkFDN0Q7YUFDSjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV0QyxJQUFJO1lBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbkI7UUFFRCxPQUFPLEdBQVEsRUFBRTtZQUNiLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQzFFLE1BQU0sSUFBSSx3Q0FBNkIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhFLElBQUksR0FBRyxDQUFDLGVBQWU7Z0JBQ25CLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUVqQyxNQUFNLEdBQUcsQ0FBQztTQUNiO0lBQ0wsQ0FBQztDQUNKO0FBM0ZELG9DQTJGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgZGVsYXkgZnJvbSAnLi4vdXRpbHMvZGVsYXknO1xuaW1wb3J0IHsgaXNUaGVubmFibGUgfSBmcm9tICcuLi91dGlscy90aGVubmFibGUnO1xuaW1wb3J0IHsgRXh0ZXJuYWxBc3NlcnRpb25MaWJyYXJ5RXJyb3IsIEFzc2VydGlvblVuYXdhaXRlZFByb21pc2VFcnJvciB9IGZyb20gJy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5pbXBvcnQgUmVFeGVjdXRhYmxlUHJvbWlzZSBmcm9tICcuLi91dGlscy9yZS1leGVjdXRhYmxlLXByb21pc2UnO1xuaW1wb3J0IGdldEZuIGZyb20gJy4vZ2V0LWZuJztcbmltcG9ydCB7IEFzc2VydGlvbkNvbW1hbmQgfSBmcm9tICcuLi90ZXN0LXJ1bi9jb21tYW5kcy9hc3NlcnRpb24nO1xuaW1wb3J0IHsgQ2FsbHNpdGVSZWNvcmQgfSBmcm9tICdAZGV2ZXhwcmVzcy9jYWxsc2l0ZS1yZWNvcmQnO1xuXG5jb25zdCBBU1NFUlRJT05fREVMQVkgPSAyMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFzc2VydGlvbkV4ZWN1dG9yIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZDogQXNzZXJ0aW9uQ29tbWFuZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGxzaXRlOiBDYWxsc2l0ZVJlY29yZDtcbiAgICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyIHwgbnVsbDtcbiAgICBwcml2YXRlIHBhc3NlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGluUmV0cnk6IGJvb2xlYW47XG4gICAgcHVibGljIGZuOiBGdW5jdGlvbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY29tbWFuZDogQXNzZXJ0aW9uQ29tbWFuZCwgdGltZW91dDogbnVtYmVyLCBjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmNvbW1hbmQgID0gY29tbWFuZDtcbiAgICAgICAgdGhpcy50aW1lb3V0ICA9IHRpbWVvdXQ7XG4gICAgICAgIHRoaXMuY2FsbHNpdGUgPSBjYWxsc2l0ZTtcblxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFzc2VkICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5SZXRyeSAgID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgZm4gICAgICAgICAgICA9IGdldEZuKHRoaXMuY29tbWFuZCk7XG4gICAgICAgIGNvbnN0IGFjdHVhbENvbW1hbmQgPSB0aGlzLmNvbW1hbmQuYWN0dWFsO1xuXG4gICAgICAgIGlmIChhY3R1YWxDb21tYW5kIGluc3RhbmNlb2YgUmVFeGVjdXRhYmxlUHJvbWlzZSlcbiAgICAgICAgICAgIHRoaXMuZm4gPSB0aGlzLl93cmFwRnVuY3Rpb24oZm4pO1xuICAgICAgICBlbHNlIGlmICghdGhpcy5jb21tYW5kLm9wdGlvbnMuYWxsb3dVbmF3YWl0ZWRQcm9taXNlICYmIHRoaXMuX2lzUHJvbWlzZShhY3R1YWxDb21tYW5kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25VbmF3YWl0ZWRQcm9taXNlRXJyb3IodGhpcy5jYWxsc2l0ZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc1Byb21pc2UgKHZhbDogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNUaGVubmFibGUodmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRUaW1lTGVmdCAoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gKHRoaXMuc3RhcnRUaW1lIGFzIG51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGltZW91dCAtIGV4ZWN1dGlvblRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb25FeGVjdXRpb25GaW5pc2hlZCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluUmV0cnkpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2VuZC1hc3NlcnRpb24tcmV0cmllcycsIHRoaXMucGFzc2VkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwRnVuY3Rpb24gKGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSB0aGlzLmNvbW1hbmQuYWN0dWFsIGFzIFJlRXhlY3V0YWJsZVByb21pc2U7XG5cbiAgICAgICAgICAgIHdoaWxlICghdGhpcy5wYXNzZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1hbmQuYWN0dWFsID0gYXdhaXQgcmVzdWx0UHJvbWlzZS5fcmVFeGVjdXRlKCk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRXhlY3V0aW9uRmluaXNoZWQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9nZXRUaW1lTGVmdCgpIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uRXhlY3V0aW9uRmluaXNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlbGF5KEFTU0VSVElPTl9ERUxBWSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pblJldHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdzdGFydC1hc3NlcnRpb24tcmV0cmllcycsIHRoaXMuX2dldFRpbWVMZWZ0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcnVuICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5mbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICBpZiAoZXJyLm5hbWUgPT09ICdBc3NlcnRpb25FcnJvcicgfHwgZXJyLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdBc3NlcnRpb25FcnJvcicpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4dGVybmFsQXNzZXJ0aW9uTGlicmFyeUVycm9yKGVyciwgdGhpcy5jYWxsc2l0ZSk7XG5cbiAgICAgICAgICAgIGlmIChlcnIuaXNUZXN0Q2FmZUVycm9yKVxuICAgICAgICAgICAgICAgIGVyci5jYWxsc2l0ZSA9IHRoaXMuY2FsbHNpdGU7XG5cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET_IS_SERVICE_WORKER_ENABLED = exports.GET_WINDOW_DIMENSIONS_INFO_SCRIPT = exports.GET_TITLE_SCRIPT = void 0;
|
|
4
|
-
/*eslint-disable no-undef, no-var*/
|
|
5
4
|
function getTitle() {
|
|
6
5
|
return document.title;
|
|
7
6
|
}
|
|
@@ -18,8 +17,7 @@ function getWindowDimensionsInfo() {
|
|
|
18
17
|
function getIsServiceWorkerEnabled() {
|
|
19
18
|
return !!navigator.serviceWorker;
|
|
20
19
|
}
|
|
21
|
-
/*eslint-disable no-undef, no-var*/
|
|
22
20
|
exports.GET_TITLE_SCRIPT = getTitle.toString();
|
|
23
21
|
exports.GET_WINDOW_DIMENSIONS_INFO_SCRIPT = getWindowDimensionsInfo.toString();
|
|
24
22
|
exports.GET_IS_SERVICE_WORKER_ENABLED = getIsServiceWorkerEnabled.toString();
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3V0aWxzL2NsaWVudC1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBUyxRQUFRO0lBQ2IsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFTLHVCQUF1QjtJQUM1QixPQUFPO1FBQ0gsS0FBSyxFQUFZLE1BQU0sQ0FBQyxVQUFVO1FBQ2xDLE1BQU0sRUFBVyxNQUFNLENBQUMsV0FBVztRQUNuQyxVQUFVLEVBQU8sTUFBTSxDQUFDLFVBQVU7UUFDbEMsV0FBVyxFQUFNLE1BQU0sQ0FBQyxXQUFXO1FBQ25DLGNBQWMsRUFBRyxNQUFNLENBQUMsVUFBVTtRQUNsQyxlQUFlLEVBQUUsTUFBTSxDQUFDLFdBQVc7S0FDdEMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLHlCQUF5QjtJQUM5QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO0FBQ3JDLENBQUM7QUFFWSxRQUFBLGdCQUFnQixHQUFvQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEQsUUFBQSxpQ0FBaUMsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN2RSxRQUFBLDZCQUE2QixHQUFPLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2luZG93RGltZW50aW9uc0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZnVuY3Rpb24gZ2V0VGl0bGUgKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnRpdGxlO1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dEaW1lbnNpb25zSW5mbyAoKTogV2luZG93RGltZW50aW9uc0luZm8ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgIGhlaWdodDogICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICBvdXRlcldpZHRoOiAgICAgIHdpbmRvdy5vdXRlcldpZHRoLFxuICAgICAgICBvdXRlckhlaWdodDogICAgIHdpbmRvdy5vdXRlckhlaWdodCxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGg6ICBzY3JlZW4uYXZhaWxXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0OiBzY3JlZW4uYXZhaWxIZWlnaHQsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0SXNTZXJ2aWNlV29ya2VyRW5hYmxlZCAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7XG59XG5cbmV4cG9ydCBjb25zdCBHRVRfVElUTEVfU0NSSVBUICAgICAgICAgICAgICAgICAgPSBnZXRUaXRsZS50b1N0cmluZygpO1xuZXhwb3J0IGNvbnN0IEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCA9IGdldFdpbmRvd0RpbWVuc2lvbnNJbmZvLnRvU3RyaW5nKCk7XG5leHBvcnQgY29uc3QgR0VUX0lTX1NFUlZJQ0VfV09SS0VSX0VOQUJMRUQgICAgID0gZ2V0SXNTZXJ2aWNlV29ya2VyRW5hYmxlZC50b1N0cmluZygpO1xuXG4iXX0=
|
|
@@ -261,7 +261,7 @@ class CLIArgumentParser {
|
|
|
261
261
|
}
|
|
262
262
|
_parsePorts() {
|
|
263
263
|
if (this.opts.ports) {
|
|
264
|
-
const parsedPorts = this.opts.ports
|
|
264
|
+
const parsedPorts = this.opts.ports
|
|
265
265
|
.split(',')
|
|
266
266
|
.map(parse_utils_1.parsePortNumber);
|
|
267
267
|
if (parsedPorts.length < 2)
|
|
@@ -279,7 +279,7 @@ class CLIArgumentParser {
|
|
|
279
279
|
this.opts.ssl = await (0, get_options_1.getSSLOptions)(this.opts.ssl);
|
|
280
280
|
}
|
|
281
281
|
async _parseReporters() {
|
|
282
|
-
const reporters = this.opts.reporter ? this.opts.reporter.split(',') : [];
|
|
282
|
+
const reporters = this.opts.reporter ? this.opts.reporter.split(',') : [];
|
|
283
283
|
this.opts.reporter = reporters.map((reporter) => {
|
|
284
284
|
const separatorIndex = reporter.indexOf(':');
|
|
285
285
|
if (separatorIndex < 0)
|
|
@@ -379,4 +379,4 @@ class CLIArgumentParser {
|
|
|
379
379
|
}
|
|
380
380
|
exports.default = CLIArgumentParser;
|
|
381
381
|
module.exports = exports.default;
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFTaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUM1QyxpR0FBNkc7QUFDN0csbUdBQXVFO0FBRXZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBRTlDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQU0sRUFBQzs7Ozs7Ozs7Ozs7Q0FXMUIsQ0FBQyxDQUFDO0FBeUNILE1BQXFCLGlCQUFpQjtJQU9sQyxZQUFvQixHQUFZO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQjtRQUM1Qix3RUFBd0U7UUFDeEUsZ0ZBQWdG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QyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsMEJBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUN2QiwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQTdaRCxvQ0E2WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXMsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBwcm9ncmFtLCB7XG4gICAgQ29tbWFuZCxcbiAgICBPcHRpb24sXG59IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCBkZWRlbnQgZnJvbSAnZGVkZW50JztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBnZXRWaWV3UG9ydFdpZHRoIGZyb20gJy4uLy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgc3BsaXRRdW90ZWRUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7XG4gICAgZ2V0U1NMT3B0aW9ucyxcbiAgICBnZXRRdWFyYW50aW5lT3B0aW9ucyxcbiAgICBnZXRTY3JlZW5zaG90T3B0aW9ucyxcbiAgICBnZXRTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIGdldFZpZGVvT3B0aW9ucyxcbiAgICBnZXRNZXRhT3B0aW9ucyxcbiAgICBnZXRHcmVwT3B0aW9ucyxcbiAgICBnZXRDb21waWxlck9wdGlvbnMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2dldC1vcHRpb25zJztcblxuaW1wb3J0IGdldEZpbHRlckZuIGZyb20gJy4uLy4uL3V0aWxzL2dldC1maWx0ZXItZm4nO1xuaW1wb3J0IFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2NyZWVuc2hvdC1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFJVTl9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9ydW4tb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSxcbiAgICBSZXBvcnRlck9wdGlvbixcbiAgICBSdW5uZXJSdW5PcHRpb25zLFxufSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcXVhcmFudGluZS1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzIH0gZnJvbSAnLi4vbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcbmltcG9ydCBnZXRUZXN0Q2FmZVZlcnNpb24gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXRlc3RjYWZlLXZlcnNpb24nO1xuaW1wb3J0IHsgcGFyc2VQb3J0TnVtYmVyLCBwYXJzZUxpc3QgfSBmcm9tICcuL3BhcnNlLXV0aWxzJztcbmltcG9ydCBDT01NQU5EX05BTUVTIGZyb20gJy4vY29tbWFuZC1uYW1lcyc7XG5pbXBvcnQgeyBTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NraXAtanMtZXJyb3JzLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgc2hvdWxkTW92ZU9wdGlvblRvRW5kIGZyb20gJy4uL3V0aWxzL3Nob3VsZC1tb3ZlLW9wdGlvbi10by1lbmQnO1xuXG5jb25zdCBSRU1PVEVfQUxJQVNfUkUgPSAvXnJlbW90ZSg/OjooXFxkKikpPyQvO1xuXG5jb25zdCBERVNDUklQVElPTiA9IGRlZGVudChgXG5cbiAgICBUbyBzZWxlY3QgYSBicm93c2VyLCBzcGVjaWZ5IGFuIGFsaWFzIChcImVkZ2VcIiwgXCJjaHJvbWVcIiwgZXRjLikgb3IgdGhlIHBhdGggdG8gdGhlIGJyb3dzZXIgZXhlY3V0YWJsZS4gWW91IGNhbiBzZWxlY3QgbW9yZSB0aGFuIG9uZSBicm93c2VyLlxuXG4gICAgVXNlIHRoZSBcImFsbFwiIGFsaWFzIHRvIHJ1biB0ZXN0cyBhZ2FpbnN0IGFsbCBhdmFpbGFibGUgYnJvd3NlcnMuXG4gICAgVXNlIHRoZSBcInJlbW90ZVwiIGFsaWFzIHRvIHJ1biB0ZXN0cyBvbiByZW1vdGUgZGV2aWNlcywgbGlrZSBzbWFydHBob25lcyBvciB0YWJsZXRzLiBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgcmVtb3RlIGJyb3dzZXJzIGFmdGVyIHRoZSBzZW1pY29sb24gKFwicmVtb3RlOjNcIikuXG4gICAgSWYgeW91IHVzZSBhIGJyb3dzZXIgcHJvdmlkZXIgcGx1Z2luLCBzcGVjaWZ5IGJvdGggdGhlIG5hbWUgb2YgdGhlIHBsdWdpbiBhbmQgdGhlIG5hbWUgb2YgdGhlIGJyb3dzZXIuIFNlcGFyYXRlIHRoZSB0d28gd2l0aCBhIHNlbWljb2xvbiAoXCJzYXVjZWxhYnM6Y2hyb21lQDUxXCIpLlxuXG4gICAgVG8gZXhlY3V0ZSBtdWx0aXBsZSB0ZXN0IGZpbGVzLCBzcGVjaWZ5IG11bHRpcGxlIGZpbGUgcGF0aHMgb3IgZ2xvYiBwYXR0ZXJucy5cblxuICAgIEZ1bGwgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly90ZXN0Y2FmZS5pby9kb2N1bWVudGF0aW9uLzQwMjYzOS9yZWZlcmVuY2UvY29tbWFuZC1saW5lLWludGVyZmFjZVxuYCk7XG5cbmludGVyZmFjZSBDb21tYW5kTGluZU9wdGlvbnMge1xuICAgIHRlc3RHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIGZpeHR1cmVHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHNyYz86IHN0cmluZ1tdO1xuICAgIGJyb3dzZXJzPzogc3RyaW5nW107XG4gICAgbGlzdEJyb3dzZXJzPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICB0ZXN0TWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZml4dHVyZU1ldGE/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIGZpbHRlcj86IEZ1bmN0aW9uO1xuICAgIGFwcEluaXREZWxheT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhc3NlcnRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNlbGVjdG9yVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBzcGVlZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlTG9hZFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcGFnZVJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFqYXhSZXF1ZXN0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBicm93c2VySW5pdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGVzdEV4ZWN1dGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcnVuRXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBjb25jdXJyZW5jeT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBxdWFyYW50aW5lTW9kZT86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlcj47XG4gICAgcG9ydHM/OiBzdHJpbmcgfCBudW1iZXJbXTtcbiAgICBwcm92aWRlck5hbWU/OiBzdHJpbmc7XG4gICAgc3NsPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICByZXBvcnRlcj86IHN0cmluZyB8IFJlcG9ydGVyT3B0aW9uW107XG4gICAgc2NyZWVuc2hvdHM/OiBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+IHwgc3RyaW5nO1xuICAgIHNjcmVlbnNob3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgICBzY3JlZW5zaG90UGF0aFBhdHRlcm5PbkZhaWxzPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIG5hdGl2ZUF1dG9tYXRpb24/OiBib29sZWFuO1xuICAgIHY4RmxhZ3M/OiBzdHJpbmdbXTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHNraXBKc0Vycm9ycz86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PFJlZ0V4cCB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIGN3ZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlQ291bnQ6IG51bWJlcjtcbiAgICBwdWJsaWMgb3B0czogQ29tbWFuZExpbmVPcHRpb25zO1xuICAgIHB1YmxpYyBhcmdzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlc3RDYWZlQ29tbWFuZDogQ29tbWFuZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY3dkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3dkICAgICAgICAgPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgdGhpcy5yZW1vdGVDb3VudCA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5hcmdzICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMudGVzdENhZmVDb21tYW5kID0gdGhpcy5fYWRkVGVzdENhZmVDb21tYW5kKCk7XG5cbiAgICAgICAgdGhpcy5fcGF0Y2hIZWxwT3V0cHV0KHRoaXMudGVzdENhZmVDb21tYW5kKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3NldHVwUm9vdENvbW1hbmQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfc2V0dXBSb290Q29tbWFuZCAoKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBmb3JjZWQgdG8gc2V0IHRoZSBuYW1lIG9mIHRoZSByb290IGNvbW1hbmQgdG8gJ3Rlc3RjYWZlJ1xuICAgICAgICAvLyB0byBhdm9pZCB0aGUgYXV0b21hdGljIGNvbW1hbmQgbmFtZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgZXhlY3V0ZWQgZmlsZSBwYXRoLlxuICAgICAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb3JyZWN0IGNvbW1hbmQgZGVzY3JpcHRpb24gZm9yIG5lc3RlZCBjb21tYW5kcy5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5uYW1lKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW1vdmVDb21tYW5kSWZFeGlzdHMgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBCdWcgaW4gdGhlICdjb21tYW5kZXInIG1vZHVsZS5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBhZGQgYSBmZXcgY29tbWFuZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAgICAvLyBBbHNvLCByZW1vdmluZyBpcyBhIGJldHRlciB0aGFuIGNvbmRpdGlvbmFsbHkgYWRkaW5nXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgYWxsb3dzIGF2b2lkaW5nIHRoZSBwYXJzZWQgb3B0aW9uIGR1cGxpY2F0ZXMuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5maW5kSW5kZXgoY21kID0+IGNtZC5uYW1lKCkgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXREZXNjcmlwdGlvbiAoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gTk9URTogYWRkIGVtcHR5IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21tYW5kZXItZm9yY2VkIGluZGVudGF0aW9uIG9uIHRoZSBmaXJzdCBsaW5lLlxuICAgICAgICByZXR1cm4gJ1xcbicgKyB3b3JkV3JhcChERVNDUklQVElPTiwgMiwgZ2V0Vmlld1BvcnRXaWR0aChwcm9jZXNzLnN0ZG91dCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZFRlc3RDYWZlQ29tbWFuZCAoKTogQ29tbWFuZCB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9yZW1vdmVDb21tYW5kSWZFeGlzdHMoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG5cbiAgICAgICAgcmV0dXJuIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZClcbiAgICAgICAgICAgIC5jb21tYW5kKENPTU1BTkRfTkFNRVMuVGVzdENhZmUsIHsgaXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICAudmVyc2lvbihnZXRUZXN0Q2FmZVZlcnNpb24oKSwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ2Rpc3BsYXkgdGhlIGxpc3Qgb2YgYWxpYXNlcyBmb3IgYXZhaWxhYmxlIGJyb3dzZXJzIGFuZCBicm93c2VyIHByb3ZpZGVycycpXG4gICAgICAgICAgICAub3B0aW9uKCctciwgLS1yZXBvcnRlciA8bmFtZVs6b3V0cHV0RmlsZV1bLC4uLl0+JywgJ3NwZWNpZnkgcmVwb3J0ZXJzIGFuZCByZXBvcnQgZmlsZW5hbWVzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IG9uIHRlc3QgZmFpbHVyZScpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAnc3BlY2lmeSB0aGUgbmFtaW5nIHNjaGVtYSBmb3Igc2NyZWVuc2hvdCBmaWxlbmFtZXMgYW5kIHBhdGhzOiAke0JST1dTRVJ9LCAke0JST1dTRVJfVkVSU0lPTn0sICR7T1N9LCBldGMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1xLCAtLXF1YXJhbnRpbmUtbW9kZSBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnZW5hYmxlIGFuZCBjb25maWd1cmUgcXVhcmFudGluZSBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZW5hYmxlIGRlYnVnIG1vZGUuIFdoZW4geW91IHJ1biBUZXN0Q2FmZSBpbiBkZWJ1ZyBtb2RlLCBpdCBleGVjdXRlcyB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUsIGFuZCBwYXVzZXMgdGhlIHRlc3QgYWZ0ZXIgZWFjaCBzdGVwLicpXG4gICAgICAgICAgICAub3B0aW9uKCctZSwgLS1za2lwLWpzLWVycm9ycyBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpXG4gICAgICAgICAgICAub3B0aW9uKCctdSwgLS1za2lwLXVuY2F1Z2h0LWVycm9ycycsICdpZ25vcmUgdW5jYXVnaHQgZXJyb3JzIGFuZCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ2ZpbHRlciB0ZXN0cyBieSBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAnZmlsdGVyIHRlc3RzIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctZiwgLS1maXh0dXJlIDxuYW1lPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctRiwgLS1maXh0dXJlLWdyZXAgPHBhdHRlcm4+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSByZWd1bGFyIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLWEsIC0tYXBwIDxjb21tYW5kPicsICdleGVjdXRlIGEgc2hlbGwgY29tbWFuZCBvbiBzdGFydHVwIHRvIGxhdW5jaCBhIHdlYiBhcHBsaWNhdGlvbiBvciBwZXJmb3JtIG90aGVyIHByZXBhcmF0b3J5IHRhc2tzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1jLCAtLWNvbmN1cnJlbmN5IDxudW1iZXI+JywgJ3J1biB0ZXN0cyBjb25jdXJyZW50bHknKVxuICAgICAgICAgICAgLm9wdGlvbignLUwsIC0tbGl2ZScsICdlbmFibGUgbGl2ZSBtb2RlLiBMaXZlIG1vZGUgcmVzdGFydHMgdGVzdHMgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRlc3QgZmlsZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ2ZpbHRlciB0ZXN0cyBieSBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZWJ1Zy1vbi1mYWlsJywgJ3BhdXNlIHRlc3RzIG9uIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLW5hdGl2ZS1hdXRvbWF0aW9uJywgJ2Rpc2FibGUgbmF0aXZlIGF1dG9tYXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgeW91ciBhcHBsaWNhdGlvbmBzIGluaXRpYWxpemF0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBTZWxlY3RvciByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQXNzZXJ0aW9uIHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gdGhlIHdpbmRvdy5sb2FkIGV2ZW50IGFuZCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCAobXMpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHBhZ2UgcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQUpBWCByZXF1ZXN0IHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBicm93c2VyIHN0YXJ0dXAgdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgZXhlY3V0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgcnVuIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGVzdCBleGVjdXRpb24gc3BlZWQgKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IG5ldHdvcmsgcG9ydHMgdG8gdXNlIGR1cmluZyB0aGUgdGVzdCBydW4uIFRoZSBzZWNvbmQgcG9ydCBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIGNyb3NzLWRvbWFpbiByZXNvdXJjZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgYHNwZWNpZnkgeW91ciBob3N0bmFtZS4gTmVjZXNzYXJ5IHRvIHJ1biB0ZXN0cyBpbiByZW1vdGUgYnJvd3NlcnMuYClcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIHByb3h5IHNlcnZlciBob3N0bmFtZSBvciBJUCBhZGRyZXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBVUkxzIHRoYXQgYnlwYXNzIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdsb2cgYW5kIGRpYWdub3NlIFRlc3RDYWZlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0IFFSIGNvZGVzIHdpdGggVVJMcyBmb3IgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCB0aGUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAnc3BlY2lmeSB0aGUgcGF0aCB0byBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IGNsaWVudC1zaWRlIHNjcmlwdHMgaW50byB0aGUgcGFnZScsIHBhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2RvIG5vdCBjYWNoZSBwYWdlcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2RvIG5vdCByZWxvYWQgcGFnZXMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgcGFnZSByZXF1ZXN0cyBpbiBjYXNlIG9mIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGNvbXBpbGF0aW9uIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgdGhlIG11bHRpLXdpbmRvdyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZXhwZXJpbWVudGFsLW11bHRpcGxlLXdpbmRvd3MnLCAnRW5hYmxlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBtdWx0aXBsZSB3aW5kb3dzIGluIE5hdGl2ZSBBdXRvbWF0aW9uIG1vZGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLWh0dHAyJywgJ2ZvcmNlIHRoZSBwcm94eSB0byBpc3N1ZSBIVFRQLzEuMSByZXF1ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNhY2hlJywgJ2NhY2hlIHdlYiBhc3NldHMgYmV0d2VlbiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1iYXNlLXVybCA8dXJsPicsICdzZXQgdGhlIGJhc2UgdXJsIGZvciB0aGUgdGVzdCBydW4nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1lc20nLCAnZW5hYmxlIEVTTSBtb2R1bGUgc3VwcG9ydCcpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRoZXNlIG9wdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGJ5IGNoYWxrIGludGVybmFsbHlcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29sb3InLCAnZm9yY2UgVGVzdENhZmUgdG8gZm9ybWF0IENMSSBvdXRwdXQgd2l0aCBjb2xvcicpXG4gICAgICAgICAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ2Rpc2FibGUgdGV4dCBjb2xvciBmb3JtYXR0aW5nIGluIHRoZSBDTEknKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiBUZW1wb3JhcmlseSBleGNsdWRlIGV4cGVyaW1lbnRhbCBvcHRpb25zIGZyb20gLS1oZWxwIG91dHB1dFxuICAgICAgICAgICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRpc2FibGUtY3Jvc3MtZG9tYWluJywgJ2V4cGVyaW1lbnRhbCcpLmhpZGVIZWxwKCkpXG4gICAgICAgICAgICAuYWN0aW9uKChvcHRzOiBDb21tYW5kTGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGF0Y2hIZWxwT3V0cHV0IChkZWZhdWx0U3ViQ29tbWFuZDogQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSAnY29tbWFuZGVyJyBtb2R1bGVcbiAgICAgICAgLy8gbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gcmVtb3ZlIHRoaXMgaGFjay5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5vdXRwdXRIZWxwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkUGFyZW50ID0gZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50O1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5vdXRwdXRIZWxwKCk7XG5cbiAgICAgICAgICAgIGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudCA9IHN0b3JlZFBhcmVudDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja0FuZENvdW50UmVtb3RlcyAoYnJvd3Nlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbW90ZU1hdGNoID0gYnJvd3Nlci5tYXRjaChSRU1PVEVfQUxJQVNfUkUpO1xuXG4gICAgICAgIGlmIChyZW1vdGVNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdGVDb3VudCArPSBwYXJzZUludChyZW1vdGVNYXRjaFsxXSwgMTApIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VGaWx0ZXJpbmdPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0R3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0R3JlcCA9IGdldEdyZXBPcHRpb25zKCctLXRlc3QtZ3JlcCcsIHRoaXMub3B0cy50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZUdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZUdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS1maXh0dXJlLWdyZXAnLCB0aGlzLm9wdHMuZml4dHVyZUdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tdGVzdC1tZXRhJywgdGhpcy5vcHRzLnRlc3RNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlTWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlTWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLWZpeHR1cmUtbWV0YScsIHRoaXMub3B0cy5maXh0dXJlTWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHRoaXMub3B0cy5maWx0ZXIgPSBnZXRGaWx0ZXJGbih0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXBwSW5pdERlbGF5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hcHBJbml0RGVsYXkpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdGVkIGFwcCBpbml0aWFsaXphdGlvbiBkZWxheScsIHRoaXMub3B0cy5hcHBJbml0RGVsYXkpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXBwSW5pdERlbGF5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFwcEluaXREZWxheSBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU2VsZWN0b3JUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgU2VsZWN0b3IgdGltZW91dCcsIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXNzZXJ0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBhc3NlcnRpb24gdGltZW91dCcsIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZUxvYWRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSBsb2FkIHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBBSkFYIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlckluaXRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYnJvd3NlciBpbml0aWFsaXphdGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdCBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBydW4gZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNwZWVkICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zcGVlZClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zcGVlZCA9IHBhcnNlRmxvYXQodGhpcy5vcHRzLnNwZWVkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VDb25jdXJyZW5jeSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuY29uY3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLm9wdHMuY29uY3VycmVuY3kgPSBwYXJzZUludCh0aGlzLm9wdHMuY29uY3VycmVuY3kgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VRdWFyYW50aW5lT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucXVhcmFudGluZU1vZGUgIT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSA9IGF3YWl0IGdldFF1YXJhbnRpbmVPcHRpb25zKCctLXF1YXJhbnRpbmUtbW9kZScsIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTa2lwSnNFcnJvcnNPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5za2lwSnNFcnJvcnMgIT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMub3B0cy5za2lwSnNFcnJvcnMgPSBhd2FpdCBnZXRTa2lwSnNFcnJvcnNPcHRpb25zKCctLXNraXAtanMtZXJyb3JzJywgdGhpcy5vcHRzLnNraXBKc0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zICovXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKHBhcnNlUG9ydE51bWJlcik7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZWRQb3J0cy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydHNPcHRpb25SZXF1aXJlc1R3b051bWJlcnMpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucG9ydHMgPSBwYXJzZWRQb3J0cyBhcyBudW1iZXJbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlcnNGcm9tQXJncyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJzQXJnID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJnc1swXSB8fCAnJztcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlcnMgPSBzcGxpdFF1b3RlZFRleHQoYnJvd3NlcnNBcmcsICcsJylcbiAgICAgICAgICAgIC5maWx0ZXIoYnJvd3NlciA9PiBicm93c2VyICYmIHRoaXMuX2NoZWNrQW5kQ291bnRSZW1vdGVzKGJyb3dzZXIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlU3NsT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3NsKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNzbCA9IGF3YWl0IGdldFNTTE9wdGlvbnModGhpcy5vcHRzLnNzbCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUmVwb3J0ZXJzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZXJzID0gdGhpcy5vcHRzLnJlcG9ydGVyID8gKHRoaXMub3B0cy5yZXBvcnRlciBhcyBzdHJpbmcpLnNwbGl0KCcsJykgOiBbXTsgLyogZXNsaW50LWRpc2FibGUtbGluZSBuby1leHRyYS1wYXJlbnMqL1xuXG4gICAgICAgIHRoaXMub3B0cy5yZXBvcnRlciA9IHJlcG9ydGVycy5tYXAoKHJlcG9ydGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gcmVwb3J0ZXIuaW5kZXhPZignOicpO1xuXG4gICAgICAgICAgICBpZiAoc2VwYXJhdG9ySW5kZXggPCAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IHJlcG9ydGVyIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgICA9IHJlcG9ydGVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSByZXBvcnRlci5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgb3V0cHV0IH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlRmlsZUxpc3QgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wdHMuc3JjID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJncy5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNjcmVlbnNob3RPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IGF3YWl0IGdldFNjcmVlbnNob3RPcHRpb25zKHRoaXMub3B0cy5zY3JlZW5zaG90cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IHt9O1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm4pICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm4pXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5dID0gdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybjtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuT25GYWlscykgJiYgdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybk9uRmFpbHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5PbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm5PbkZhaWxzO1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMudGFrZU9uRmFpbHMpICYmIHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMudGFrZU9uRmFpbHNdID0gdGhpcy5vcHRzLnNjcmVlbnNob3RzT25GYWlscztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVZpZGVvT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9PcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnZpZGVvT3B0aW9ucyA9IGF3YWl0IGdldFZpZGVvT3B0aW9ucyh0aGlzLm9wdHMudmlkZW9PcHRpb25zIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucyA9IGF3YWl0IGdldFZpZGVvT3B0aW9ucyh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZUNvbXBpbGVyT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwYXJzZWRDb21waWxlck9wdGlvbnMgPSBhd2FpdCBnZXRDb21waWxlck9wdGlvbnModGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCByZXN1bHRDb21waWxlck9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZENvbXBpbGVyT3B0aW9ucykpXG4gICAgICAgICAgICBzZXQocmVzdWx0Q29tcGlsZXJPcHRpb25zLCBrZXksIHZhbHVlKTtcblxuICAgICAgICB0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zID0gcmVzdWx0Q29tcGlsZXJPcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlTGlzdEJyb3dzZXJzICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlzdEJyb3dzZXJPcHRpb24gPSB0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIHRoaXMub3B0cy5saXN0QnJvd3NlcnMgPSAhIXRoaXMub3B0cy5saXN0QnJvd3NlcnM7XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub3B0cy5wcm92aWRlck5hbWUgPSB0eXBlb2YgbGlzdEJyb3dzZXJPcHRpb24gPT09ICdzdHJpbmcnID8gbGlzdEJyb3dzZXJPcHRpb24gOiAnbG9jYWxseS1pbnN0YWxsZWQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uIChhcmd2OiBzdHJpbmdbXSwgb3B0aW9uTmFtZXM6IHN0cmluZ1tdLCBzdWJPcHRpb25zTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IG1vdmUgb3B0aW9ucyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBjb3JyZWN0bHkgcGFyc2UgYm90aCBCb29sZWFuIGFuZCBPYmplY3QgdHlwZSBhcmd1bWVudHMgKEdILTYyMzEpXG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gYXJndi5maW5kSW5kZXgoXG4gICAgICAgICAgICBlbCA9PiBvcHRpb25OYW1lcy5zb21lKG9wdCA9PiBlbC5zdGFydHNXaXRoKG9wdCkpKTtcblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggPiAtMSAmJiBzaG91bGRNb3ZlT3B0aW9uVG9FbmQoYXJndiwgb3B0aW9uSW5kZXgsIHN1Yk9wdGlvbnNOYW1lcykpXG4gICAgICAgICAgICBhcmd2LnB1c2goYXJndi5zcGxpY2Uob3B0aW9uSW5kZXgsIDEpWzBdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcGFyc2UgKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLXEnLCAnLS1xdWFyYW50aW5lLW1vZGUnXSwgT2JqZWN0LnZhbHVlcyhRVUFSQU5USU5FX09QVElPTl9OQU1FUykpO1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbihhcmd2LCBbJy1lJywgJy0tc2tpcC1qcy1lcnJvcnMnXSwgT2JqZWN0LnZhbHVlcyhTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMpKTtcblxuICAgICAgICBjb25zdCB7IGFyZ3MsIHY4RmxhZ3MgfSA9IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyhhcmd2KTtcblxuICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLnBhcnNlKGFyZ3MpO1xuXG4gICAgICAgIHRoaXMuYXJncyA9IChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuYXJncztcbiAgICAgICAgdGhpcy5vcHRzID0gT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIHsgdjhGbGFncyB9KTtcblxuICAgICAgICB0aGlzLl9wYXJzZUxpc3RCcm93c2VycygpO1xuXG4gICAgICAgIC8vIE5PVEU6IHRoZSAnLS1saXN0LWJyb3dzZXJzJyBvcHRpb24gb25seSBsaXN0cyBicm93c2VycyBhbmQgaW1tZWRpYXRlbHkgZXhpdHMgdGhlIGFwcC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3Mgb3RoZXIgYXJndW1lbnRzLlxuICAgICAgICBpZiAodGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9wYXJzZVNlbGVjdG9yVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2VydGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlTG9hZFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2VySW5pdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBcHBJbml0RGVsYXkoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VTcGVlZCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBvcnRzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlcnNGcm9tQXJncygpO1xuICAgICAgICB0aGlzLl9wYXJzZUNvbmN1cnJlbmN5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlRmlsZUxpc3QoKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUZpbHRlcmluZ09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VRdWFyYW50aW5lT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNraXBKc0Vycm9yc09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTY3JlZW5zaG90T3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVZpZGVvT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUNvbXBpbGVyT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNzbE9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VSZXBvcnRlcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UnVuT3B0aW9ucyAoKTogUnVubmVyUnVuT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgUlVOX09QVElPTl9OQU1FUy5mb3JFYWNoKG9wdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbk5hbWUgaW4gdGhpcy5vcHRzKVxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgYSBoYWNrIHRvIGFkZCBhbiBpbmRleCBzaWduYXR1cmUgdG8gaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgcmVzdWx0W29wdGlvbk5hbWVdID0gdGhpcy5vcHRzW29wdGlvbk5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFJ1bm5lclJ1bk9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFTaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUM1QyxpR0FBNkc7QUFDN0csbUdBQXVFO0FBRXZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBRTlDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQU0sRUFBQzs7Ozs7Ozs7Ozs7Q0FXMUIsQ0FBQyxDQUFDO0FBeUNILE1BQXFCLGlCQUFpQjtJQU9sQyxZQUFvQixHQUFZO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQjtRQUM1Qix3RUFBd0U7UUFDeEUsZ0ZBQWdG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LE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsMEJBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUN2QiwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQTdaRCxvQ0E2WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXMsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBwcm9ncmFtLCB7XG4gICAgQ29tbWFuZCxcbiAgICBPcHRpb24sXG59IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCBkZWRlbnQgZnJvbSAnZGVkZW50JztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBnZXRWaWV3UG9ydFdpZHRoIGZyb20gJy4uLy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgc3BsaXRRdW90ZWRUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7XG4gICAgZ2V0U1NMT3B0aW9ucyxcbiAgICBnZXRRdWFyYW50aW5lT3B0aW9ucyxcbiAgICBnZXRTY3JlZW5zaG90T3B0aW9ucyxcbiAgICBnZXRTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIGdldFZpZGVvT3B0aW9ucyxcbiAgICBnZXRNZXRhT3B0aW9ucyxcbiAgICBnZXRHcmVwT3B0aW9ucyxcbiAgICBnZXRDb21waWxlck9wdGlvbnMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2dldC1vcHRpb25zJztcblxuaW1wb3J0IGdldEZpbHRlckZuIGZyb20gJy4uLy4uL3V0aWxzL2dldC1maWx0ZXItZm4nO1xuaW1wb3J0IFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2NyZWVuc2hvdC1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFJVTl9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9ydW4tb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSxcbiAgICBSZXBvcnRlck9wdGlvbixcbiAgICBSdW5uZXJSdW5PcHRpb25zLFxufSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcXVhcmFudGluZS1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzIH0gZnJvbSAnLi4vbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcbmltcG9ydCBnZXRUZXN0Q2FmZVZlcnNpb24gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXRlc3RjYWZlLXZlcnNpb24nO1xuaW1wb3J0IHsgcGFyc2VQb3J0TnVtYmVyLCBwYXJzZUxpc3QgfSBmcm9tICcuL3BhcnNlLXV0aWxzJztcbmltcG9ydCBDT01NQU5EX05BTUVTIGZyb20gJy4vY29tbWFuZC1uYW1lcyc7XG5pbXBvcnQgeyBTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NraXAtanMtZXJyb3JzLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgc2hvdWxkTW92ZU9wdGlvblRvRW5kIGZyb20gJy4uL3V0aWxzL3Nob3VsZC1tb3ZlLW9wdGlvbi10by1lbmQnO1xuXG5jb25zdCBSRU1PVEVfQUxJQVNfUkUgPSAvXnJlbW90ZSg/OjooXFxkKikpPyQvO1xuXG5jb25zdCBERVNDUklQVElPTiA9IGRlZGVudChgXG5cbiAgICBUbyBzZWxlY3QgYSBicm93c2VyLCBzcGVjaWZ5IGFuIGFsaWFzIChcImVkZ2VcIiwgXCJjaHJvbWVcIiwgZXRjLikgb3IgdGhlIHBhdGggdG8gdGhlIGJyb3dzZXIgZXhlY3V0YWJsZS4gWW91IGNhbiBzZWxlY3QgbW9yZSB0aGFuIG9uZSBicm93c2VyLlxuXG4gICAgVXNlIHRoZSBcImFsbFwiIGFsaWFzIHRvIHJ1biB0ZXN0cyBhZ2FpbnN0IGFsbCBhdmFpbGFibGUgYnJvd3NlcnMuXG4gICAgVXNlIHRoZSBcInJlbW90ZVwiIGFsaWFzIHRvIHJ1biB0ZXN0cyBvbiByZW1vdGUgZGV2aWNlcywgbGlrZSBzbWFydHBob25lcyBvciB0YWJsZXRzLiBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgcmVtb3RlIGJyb3dzZXJzIGFmdGVyIHRoZSBzZW1pY29sb24gKFwicmVtb3RlOjNcIikuXG4gICAgSWYgeW91IHVzZSBhIGJyb3dzZXIgcHJvdmlkZXIgcGx1Z2luLCBzcGVjaWZ5IGJvdGggdGhlIG5hbWUgb2YgdGhlIHBsdWdpbiBhbmQgdGhlIG5hbWUgb2YgdGhlIGJyb3dzZXIuIFNlcGFyYXRlIHRoZSB0d28gd2l0aCBhIHNlbWljb2xvbiAoXCJzYXVjZWxhYnM6Y2hyb21lQDUxXCIpLlxuXG4gICAgVG8gZXhlY3V0ZSBtdWx0aXBsZSB0ZXN0IGZpbGVzLCBzcGVjaWZ5IG11bHRpcGxlIGZpbGUgcGF0aHMgb3IgZ2xvYiBwYXR0ZXJucy5cblxuICAgIEZ1bGwgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly90ZXN0Y2FmZS5pby9kb2N1bWVudGF0aW9uLzQwMjYzOS9yZWZlcmVuY2UvY29tbWFuZC1saW5lLWludGVyZmFjZVxuYCk7XG5cbmludGVyZmFjZSBDb21tYW5kTGluZU9wdGlvbnMge1xuICAgIHRlc3RHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIGZpeHR1cmVHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHNyYz86IHN0cmluZ1tdO1xuICAgIGJyb3dzZXJzPzogc3RyaW5nW107XG4gICAgbGlzdEJyb3dzZXJzPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICB0ZXN0TWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZml4dHVyZU1ldGE/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIGZpbHRlcj86IEZ1bmN0aW9uO1xuICAgIGFwcEluaXREZWxheT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhc3NlcnRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNlbGVjdG9yVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBzcGVlZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlTG9hZFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcGFnZVJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFqYXhSZXF1ZXN0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBicm93c2VySW5pdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGVzdEV4ZWN1dGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcnVuRXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBjb25jdXJyZW5jeT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBxdWFyYW50aW5lTW9kZT86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlcj47XG4gICAgcG9ydHM/OiBzdHJpbmcgfCBudW1iZXJbXTtcbiAgICBwcm92aWRlck5hbWU/OiBzdHJpbmc7XG4gICAgc3NsPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICByZXBvcnRlcj86IHN0cmluZyB8IFJlcG9ydGVyT3B0aW9uW107XG4gICAgc2NyZWVuc2hvdHM/OiBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+IHwgc3RyaW5nO1xuICAgIHNjcmVlbnNob3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgICBzY3JlZW5zaG90UGF0aFBhdHRlcm5PbkZhaWxzPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIG5hdGl2ZUF1dG9tYXRpb24/OiBib29sZWFuO1xuICAgIHY4RmxhZ3M/OiBzdHJpbmdbXTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHNraXBKc0Vycm9ycz86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PFJlZ0V4cCB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIGN3ZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlQ291bnQ6IG51bWJlcjtcbiAgICBwdWJsaWMgb3B0czogQ29tbWFuZExpbmVPcHRpb25zO1xuICAgIHB1YmxpYyBhcmdzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlc3RDYWZlQ29tbWFuZDogQ29tbWFuZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY3dkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3dkICAgICAgICAgPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgdGhpcy5yZW1vdGVDb3VudCA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5hcmdzICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMudGVzdENhZmVDb21tYW5kID0gdGhpcy5fYWRkVGVzdENhZmVDb21tYW5kKCk7XG5cbiAgICAgICAgdGhpcy5fcGF0Y2hIZWxwT3V0cHV0KHRoaXMudGVzdENhZmVDb21tYW5kKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3NldHVwUm9vdENvbW1hbmQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfc2V0dXBSb290Q29tbWFuZCAoKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBmb3JjZWQgdG8gc2V0IHRoZSBuYW1lIG9mIHRoZSByb290IGNvbW1hbmQgdG8gJ3Rlc3RjYWZlJ1xuICAgICAgICAvLyB0byBhdm9pZCB0aGUgYXV0b21hdGljIGNvbW1hbmQgbmFtZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgZXhlY3V0ZWQgZmlsZSBwYXRoLlxuICAgICAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb3JyZWN0IGNvbW1hbmQgZGVzY3JpcHRpb24gZm9yIG5lc3RlZCBjb21tYW5kcy5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5uYW1lKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW1vdmVDb21tYW5kSWZFeGlzdHMgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBCdWcgaW4gdGhlICdjb21tYW5kZXInIG1vZHVsZS5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBhZGQgYSBmZXcgY29tbWFuZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAgICAvLyBBbHNvLCByZW1vdmluZyBpcyBhIGJldHRlciB0aGFuIGNvbmRpdGlvbmFsbHkgYWRkaW5nXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgYWxsb3dzIGF2b2lkaW5nIHRoZSBwYXJzZWQgb3B0aW9uIGR1cGxpY2F0ZXMuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5maW5kSW5kZXgoY21kID0+IGNtZC5uYW1lKCkgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXREZXNjcmlwdGlvbiAoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gTk9URTogYWRkIGVtcHR5IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21tYW5kZXItZm9yY2VkIGluZGVudGF0aW9uIG9uIHRoZSBmaXJzdCBsaW5lLlxuICAgICAgICByZXR1cm4gJ1xcbicgKyB3b3JkV3JhcChERVNDUklQVElPTiwgMiwgZ2V0Vmlld1BvcnRXaWR0aChwcm9jZXNzLnN0ZG91dCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZFRlc3RDYWZlQ29tbWFuZCAoKTogQ29tbWFuZCB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9yZW1vdmVDb21tYW5kSWZFeGlzdHMoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG5cbiAgICAgICAgcmV0dXJuIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZClcbiAgICAgICAgICAgIC5jb21tYW5kKENPTU1BTkRfTkFNRVMuVGVzdENhZmUsIHsgaXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICAudmVyc2lvbihnZXRUZXN0Q2FmZVZlcnNpb24oKSwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ2Rpc3BsYXkgdGhlIGxpc3Qgb2YgYWxpYXNlcyBmb3IgYXZhaWxhYmxlIGJyb3dzZXJzIGFuZCBicm93c2VyIHByb3ZpZGVycycpXG4gICAgICAgICAgICAub3B0aW9uKCctciwgLS1yZXBvcnRlciA8bmFtZVs6b3V0cHV0RmlsZV1bLC4uLl0+JywgJ3NwZWNpZnkgcmVwb3J0ZXJzIGFuZCByZXBvcnQgZmlsZW5hbWVzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IG9uIHRlc3QgZmFpbHVyZScpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAnc3BlY2lmeSB0aGUgbmFtaW5nIHNjaGVtYSBmb3Igc2NyZWVuc2hvdCBmaWxlbmFtZXMgYW5kIHBhdGhzOiAke0JST1dTRVJ9LCAke0JST1dTRVJfVkVSU0lPTn0sICR7T1N9LCBldGMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1xLCAtLXF1YXJhbnRpbmUtbW9kZSBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnZW5hYmxlIGFuZCBjb25maWd1cmUgcXVhcmFudGluZSBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZW5hYmxlIGRlYnVnIG1vZGUuIFdoZW4geW91IHJ1biBUZXN0Q2FmZSBpbiBkZWJ1ZyBtb2RlLCBpdCBleGVjdXRlcyB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUsIGFuZCBwYXVzZXMgdGhlIHRlc3QgYWZ0ZXIgZWFjaCBzdGVwLicpXG4gICAgICAgICAgICAub3B0aW9uKCctZSwgLS1za2lwLWpzLWVycm9ycyBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpXG4gICAgICAgICAgICAub3B0aW9uKCctdSwgLS1za2lwLXVuY2F1Z2h0LWVycm9ycycsICdpZ25vcmUgdW5jYXVnaHQgZXJyb3JzIGFuZCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ2ZpbHRlciB0ZXN0cyBieSBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAnZmlsdGVyIHRlc3RzIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctZiwgLS1maXh0dXJlIDxuYW1lPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctRiwgLS1maXh0dXJlLWdyZXAgPHBhdHRlcm4+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSByZWd1bGFyIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLWEsIC0tYXBwIDxjb21tYW5kPicsICdleGVjdXRlIGEgc2hlbGwgY29tbWFuZCBvbiBzdGFydHVwIHRvIGxhdW5jaCBhIHdlYiBhcHBsaWNhdGlvbiBvciBwZXJmb3JtIG90aGVyIHByZXBhcmF0b3J5IHRhc2tzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1jLCAtLWNvbmN1cnJlbmN5IDxudW1iZXI+JywgJ3J1biB0ZXN0cyBjb25jdXJyZW50bHknKVxuICAgICAgICAgICAgLm9wdGlvbignLUwsIC0tbGl2ZScsICdlbmFibGUgbGl2ZSBtb2RlLiBMaXZlIG1vZGUgcmVzdGFydHMgdGVzdHMgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRlc3QgZmlsZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ2ZpbHRlciB0ZXN0cyBieSBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZWJ1Zy1vbi1mYWlsJywgJ3BhdXNlIHRlc3RzIG9uIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLW5hdGl2ZS1hdXRvbWF0aW9uJywgJ2Rpc2FibGUgbmF0aXZlIGF1dG9tYXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgeW91ciBhcHBsaWNhdGlvbmBzIGluaXRpYWxpemF0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBTZWxlY3RvciByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQXNzZXJ0aW9uIHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gdGhlIHdpbmRvdy5sb2FkIGV2ZW50IGFuZCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCAobXMpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHBhZ2UgcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQUpBWCByZXF1ZXN0IHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBicm93c2VyIHN0YXJ0dXAgdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgZXhlY3V0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgcnVuIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGVzdCBleGVjdXRpb24gc3BlZWQgKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IG5ldHdvcmsgcG9ydHMgdG8gdXNlIGR1cmluZyB0aGUgdGVzdCBydW4uIFRoZSBzZWNvbmQgcG9ydCBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIGNyb3NzLWRvbWFpbiByZXNvdXJjZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgYHNwZWNpZnkgeW91ciBob3N0bmFtZS4gTmVjZXNzYXJ5IHRvIHJ1biB0ZXN0cyBpbiByZW1vdGUgYnJvd3NlcnMuYClcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIHByb3h5IHNlcnZlciBob3N0bmFtZSBvciBJUCBhZGRyZXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBVUkxzIHRoYXQgYnlwYXNzIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdsb2cgYW5kIGRpYWdub3NlIFRlc3RDYWZlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0IFFSIGNvZGVzIHdpdGggVVJMcyBmb3IgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCB0aGUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAnc3BlY2lmeSB0aGUgcGF0aCB0byBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IGNsaWVudC1zaWRlIHNjcmlwdHMgaW50byB0aGUgcGFnZScsIHBhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2RvIG5vdCBjYWNoZSBwYWdlcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2RvIG5vdCByZWxvYWQgcGFnZXMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgcGFnZSByZXF1ZXN0cyBpbiBjYXNlIG9mIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGNvbXBpbGF0aW9uIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgdGhlIG11bHRpLXdpbmRvdyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZXhwZXJpbWVudGFsLW11bHRpcGxlLXdpbmRvd3MnLCAnRW5hYmxlIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBtdWx0aXBsZSB3aW5kb3dzIGluIE5hdGl2ZSBBdXRvbWF0aW9uIG1vZGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLWh0dHAyJywgJ2ZvcmNlIHRoZSBwcm94eSB0byBpc3N1ZSBIVFRQLzEuMSByZXF1ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNhY2hlJywgJ2NhY2hlIHdlYiBhc3NldHMgYmV0d2VlbiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1iYXNlLXVybCA8dXJsPicsICdzZXQgdGhlIGJhc2UgdXJsIGZvciB0aGUgdGVzdCBydW4nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1lc20nLCAnZW5hYmxlIEVTTSBtb2R1bGUgc3VwcG9ydCcpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRoZXNlIG9wdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGJ5IGNoYWxrIGludGVybmFsbHlcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29sb3InLCAnZm9yY2UgVGVzdENhZmUgdG8gZm9ybWF0IENMSSBvdXRwdXQgd2l0aCBjb2xvcicpXG4gICAgICAgICAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ2Rpc2FibGUgdGV4dCBjb2xvciBmb3JtYXR0aW5nIGluIHRoZSBDTEknKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiBUZW1wb3JhcmlseSBleGNsdWRlIGV4cGVyaW1lbnRhbCBvcHRpb25zIGZyb20gLS1oZWxwIG91dHB1dFxuICAgICAgICAgICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRpc2FibGUtY3Jvc3MtZG9tYWluJywgJ2V4cGVyaW1lbnRhbCcpLmhpZGVIZWxwKCkpXG4gICAgICAgICAgICAuYWN0aW9uKChvcHRzOiBDb21tYW5kTGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGF0Y2hIZWxwT3V0cHV0IChkZWZhdWx0U3ViQ29tbWFuZDogQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSAnY29tbWFuZGVyJyBtb2R1bGVcbiAgICAgICAgLy8gbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gcmVtb3ZlIHRoaXMgaGFjay5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5vdXRwdXRIZWxwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkUGFyZW50ID0gZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50O1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5vdXRwdXRIZWxwKCk7XG5cbiAgICAgICAgICAgIGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudCA9IHN0b3JlZFBhcmVudDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja0FuZENvdW50UmVtb3RlcyAoYnJvd3Nlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbW90ZU1hdGNoID0gYnJvd3Nlci5tYXRjaChSRU1PVEVfQUxJQVNfUkUpO1xuXG4gICAgICAgIGlmIChyZW1vdGVNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdGVDb3VudCArPSBwYXJzZUludChyZW1vdGVNYXRjaFsxXSwgMTApIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VGaWx0ZXJpbmdPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0R3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0R3JlcCA9IGdldEdyZXBPcHRpb25zKCctLXRlc3QtZ3JlcCcsIHRoaXMub3B0cy50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZUdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZUdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS1maXh0dXJlLWdyZXAnLCB0aGlzLm9wdHMuZml4dHVyZUdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tdGVzdC1tZXRhJywgdGhpcy5vcHRzLnRlc3RNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlTWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlTWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLWZpeHR1cmUtbWV0YScsIHRoaXMub3B0cy5maXh0dXJlTWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHRoaXMub3B0cy5maWx0ZXIgPSBnZXRGaWx0ZXJGbih0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXBwSW5pdERlbGF5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hcHBJbml0RGVsYXkpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdGVkIGFwcCBpbml0aWFsaXphdGlvbiBkZWxheScsIHRoaXMub3B0cy5hcHBJbml0RGVsYXkpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXBwSW5pdERlbGF5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFwcEluaXREZWxheSBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU2VsZWN0b3JUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgU2VsZWN0b3IgdGltZW91dCcsIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXNzZXJ0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBhc3NlcnRpb24gdGltZW91dCcsIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZUxvYWRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSBsb2FkIHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBBSkFYIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlckluaXRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYnJvd3NlciBpbml0aWFsaXphdGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdCBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBydW4gZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNwZWVkICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zcGVlZClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zcGVlZCA9IHBhcnNlRmxvYXQodGhpcy5vcHRzLnNwZWVkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VDb25jdXJyZW5jeSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuY29uY3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLm9wdHMuY29uY3VycmVuY3kgPSBwYXJzZUludCh0aGlzLm9wdHMuY29uY3VycmVuY3kgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VRdWFyYW50aW5lT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucXVhcmFudGluZU1vZGUgIT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSA9IGF3YWl0IGdldFF1YXJhbnRpbmVPcHRpb25zKCctLXF1YXJhbnRpbmUtbW9kZScsIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTa2lwSnNFcnJvcnNPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5za2lwSnNFcnJvcnMgIT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMub3B0cy5za2lwSnNFcnJvcnMgPSBhd2FpdCBnZXRTa2lwSnNFcnJvcnNPcHRpb25zKCctLXNraXAtanMtZXJyb3JzJywgdGhpcy5vcHRzLnNraXBKc0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKHBhcnNlUG9ydE51bWJlcik7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZWRQb3J0cy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydHNPcHRpb25SZXF1aXJlc1R3b051bWJlcnMpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucG9ydHMgPSBwYXJzZWRQb3J0cyBhcyBudW1iZXJbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlcnNGcm9tQXJncyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJzQXJnID0gdGhpcy50ZXN0Q2FmZUNvbW1hbmQuYXJnc1swXSB8fCAnJztcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlcnMgPSBzcGxpdFF1b3RlZFRleHQoYnJvd3NlcnNBcmcsICcsJylcbiAgICAgICAgICAgIC5maWx0ZXIoYnJvd3NlciA9PiBicm93c2VyICYmIHRoaXMuX2NoZWNrQW5kQ291bnRSZW1vdGVzKGJyb3dzZXIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlU3NsT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3NsKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNzbCA9IGF3YWl0IGdldFNTTE9wdGlvbnModGhpcy5vcHRzLnNzbCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUmVwb3J0ZXJzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZXJzID0gdGhpcy5vcHRzLnJlcG9ydGVyID8gKHRoaXMub3B0cy5yZXBvcnRlciBhcyBzdHJpbmcpLnNwbGl0KCcsJykgOiBbXTtcblxuICAgICAgICB0aGlzLm9wdHMucmVwb3J0ZXIgPSByZXBvcnRlcnMubWFwKChyZXBvcnRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHJlcG9ydGVyLmluZGV4T2YoJzonKTtcblxuICAgICAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4IDwgMClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiByZXBvcnRlciB9O1xuXG4gICAgICAgICAgICBjb25zdCBuYW1lICAgPSByZXBvcnRlci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9ySW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVwb3J0ZXIuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IG5hbWUsIG91dHB1dCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUZpbGVMaXN0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRzLnNyYyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3Muc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTY3JlZW5zaG90T3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSBhd2FpdCBnZXRTY3JlZW5zaG90T3B0aW9ucyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSB7fTtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm47XG5cbiAgICAgICAgaWYgKCFoYXModGhpcy5vcHRzLnNjcmVlbnNob3RzLCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy5wYXRoUGF0dGVybk9uRmFpbHMpICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm5PbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuT25GYWlsc10gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuT25GYWlscztcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VWaWRlb09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvT3B0aW9ucyBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VDb21waWxlck9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29tcGlsZXJPcHRpb25zID0gYXdhaXQgZ2V0Q29tcGlsZXJPcHRpb25zKHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWRDb21waWxlck9wdGlvbnMpKVxuICAgICAgICAgICAgc2V0KHJlc3VsdENvbXBpbGVyT3B0aW9ucywga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyA9IHJlc3VsdENvbXBpbGVyT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUxpc3RCcm93c2VycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3RCcm93c2VyT3B0aW9uID0gdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICB0aGlzLm9wdHMubGlzdEJyb3dzZXJzID0gISF0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIGlmICghdGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wdHMucHJvdmlkZXJOYW1lID0gdHlwZW9mIGxpc3RCcm93c2VyT3B0aW9uID09PSAnc3RyaW5nJyA/IGxpc3RCcm93c2VyT3B0aW9uIDogJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbiAoYXJndjogc3RyaW5nW10sIG9wdGlvbk5hbWVzOiBzdHJpbmdbXSwgc3ViT3B0aW9uc05hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBtb3ZlIG9wdGlvbnMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkgdG8gY29ycmVjdGx5IHBhcnNlIGJvdGggQm9vbGVhbiBhbmQgT2JqZWN0IHR5cGUgYXJndW1lbnRzIChHSC02MjMxKVxuICAgICAgICBjb25zdCBvcHRpb25JbmRleCA9IGFyZ3YuZmluZEluZGV4KFxuICAgICAgICAgICAgZWwgPT4gb3B0aW9uTmFtZXMuc29tZShvcHQgPT4gZWwuc3RhcnRzV2l0aChvcHQpKSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ID4gLTEgJiYgc2hvdWxkTW92ZU9wdGlvblRvRW5kKGFyZ3YsIG9wdGlvbkluZGV4LCBzdWJPcHRpb25zTmFtZXMpKVxuICAgICAgICAgICAgYXJndi5wdXNoKGFyZ3Yuc3BsaWNlKG9wdGlvbkluZGV4LCAxKVswXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhcnNlIChhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbihhcmd2LCBbJy1xJywgJy0tcXVhcmFudGluZS1tb2RlJ10sIE9iamVjdC52YWx1ZXMoUVVBUkFOVElORV9PUFRJT05fTkFNRVMpKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctZScsICctLXNraXAtanMtZXJyb3JzJ10sIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKSk7XG5cbiAgICAgICAgY29uc3QgeyBhcmdzLCB2OEZsYWdzIH0gPSBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMoYXJndik7XG5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5wYXJzZShhcmdzKTtcblxuICAgICAgICB0aGlzLmFyZ3MgPSAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmFyZ3M7XG4gICAgICAgIHRoaXMub3B0cyA9IE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCB7IHY4RmxhZ3MgfSk7XG5cbiAgICAgICAgdGhpcy5fcGFyc2VMaXN0QnJvd3NlcnMoKTtcblxuICAgICAgICAvLyBOT1RFOiB0aGUgJy0tbGlzdC1icm93c2Vycycgb3B0aW9uIG9ubHkgbGlzdHMgYnJvd3NlcnMgYW5kIGltbWVkaWF0ZWx5IGV4aXRzIHRoZSBhcHAuXG4gICAgICAgIC8vIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIG90aGVyIGFyZ3VtZW50cy5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fcGFyc2VTZWxlY3RvclRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBc3NlcnRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUGFnZUxvYWRUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUGFnZVJlcXVlc3RUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlckluaXRUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VSdW5FeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXBwSW5pdERlbGF5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlU3BlZWQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQb3J0cygpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VDb25jdXJyZW5jeSgpO1xuICAgICAgICB0aGlzLl9wYXJzZUZpbGVMaXN0KCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VGaWx0ZXJpbmdPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlUXVhcmFudGluZU9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTa2lwSnNFcnJvcnNPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2NyZWVuc2hvdE9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VWaWRlb09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VDb21waWxlck9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTc2xPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlUmVwb3J0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJ1bk9wdGlvbnMgKCk6IFJ1bm5lclJ1bk9wdGlvbnMge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIFJVTl9PUFRJT05fTkFNRVMuZm9yRWFjaChvcHRpb25OYW1lID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25OYW1lIGluIHRoaXMub3B0cylcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGEgaGFjayB0byBhZGQgYW4gaW5kZXggc2lnbmF0dXJlIHRvIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIHJlc3VsdFtvcHRpb25OYW1lXSA9IHRoaXMub3B0c1tvcHRpb25OYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBSdW5uZXJSdW5PcHRpb25zO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2485,7 +2485,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
2485
2485
|
if (_this._skipParentFrames || !isIframeWindow(window))
|
|
2486
2486
|
return;
|
|
2487
2487
|
state.cmd = ScrollAutomation.SCROLL_REQUEST_CMD;
|
|
2488
|
-
// eslint-disable-next-line
|
|
2488
|
+
// eslint-disable-next-line consistent-return
|
|
2489
2489
|
return sendRequestToFrame(state, ScrollAutomation.SCROLL_RESPONSE_CMD, window.parent);
|
|
2490
2490
|
})
|
|
2491
2491
|
.then(function () { return _this._scrollWasPerformed; });
|
|
@@ -3450,7 +3450,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3450
3450
|
return _this;
|
|
3451
3451
|
}
|
|
3452
3452
|
VisibleElementAutomation.prototype._ensureWindowAndCursorForLegacyTests = function (automation) {
|
|
3453
|
-
automation.window = automation.window || window;
|
|
3453
|
+
automation.window = automation.window || window;
|
|
3454
3454
|
automation.cursor = cursor;
|
|
3455
3455
|
};
|
|
3456
3456
|
VisibleElementAutomation.prototype.canUseNativeAutomationEventSimulator = function (element) {
|
|
@@ -3478,7 +3478,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3478
3478
|
return [4 /*yield*/, MoveAutomation.create(this.element, moveOptions, this.window, this.cursor, this.nativeAutomationInput)];
|
|
3479
3479
|
case 1:
|
|
3480
3480
|
moveAutomation = _a.sent();
|
|
3481
|
-
return [2 /*return*/, moveAutomation
|
|
3481
|
+
return [2 /*return*/, moveAutomation
|
|
3482
3482
|
.run()
|
|
3483
3483
|
.then(function () { return delay$5(_this.automationSettings.mouseActionStepDelay); })];
|
|
3484
3484
|
}
|
|
@@ -5208,7 +5208,8 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
5208
5208
|
try {
|
|
5209
5209
|
activeElementInIframe = getDeepActiveElement(nativeMethods$2.contentDocumentGetter.call(activeElement));
|
|
5210
5210
|
}
|
|
5211
|
-
catch (e) {
|
|
5211
|
+
catch (e) {
|
|
5212
|
+
// This catch block intentionally does nothing
|
|
5212
5213
|
}
|
|
5213
5214
|
}
|
|
5214
5215
|
return activeElementInIframe || activeElement;
|
|
@@ -62,7 +62,8 @@ function getDeepActiveElement(currentDocument) {
|
|
|
62
62
|
try {
|
|
63
63
|
activeElementInIframe = getDeepActiveElement(nativeMethods.contentDocumentGetter.call(activeElement));
|
|
64
64
|
}
|
|
65
|
-
catch (e) {
|
|
65
|
+
catch (e) {
|
|
66
|
+
// This catch block intentionally does nothing
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
return activeElementInIframe || activeElement;
|
|
@@ -139,4 +140,4 @@ function getNextFocusableElement(element, reverse, skipRadioGroups) {
|
|
|
139
140
|
return correctFocusableElement(allFocusable, allFocusable[currentIndex + offset], skipRadioGroups);
|
|
140
141
|
}
|
|
141
142
|
exports.getNextFocusableElement = getNextFocusableElement;
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2F1dG9tYXRpb24vcGxheWJhY2svcHJlc3MvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUVBQStDO0FBQy9DLDREQUlrQztBQUVsQyxzRUFBNkM7QUFHN0MsTUFBTSxhQUFhLEdBQU0sb0JBQVUsQ0FBQyxhQUFhLENBQUM7QUFDbEQsTUFBTSxZQUFZLEdBQU8sb0JBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsb0JBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO0FBQzNELE1BQU0sT0FBTyxHQUFZLG9CQUFVLENBQUMsT0FBTyxDQUFDO0FBRTVDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxHQUFHLHdCQUFRLENBQUM7QUFFMUYsU0FBZ0IsZ0JBQWdCLENBQUUsTUFBTTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRWxELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuRSxDQUFDO0FBSkQsNENBSUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FBRSxRQUFRO0lBQ3hELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTVDLHNDQUFzQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLE9BQU87Z0JBQ1IsU0FBUztZQUViLElBQUksd0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUMxQixRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLHdCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM1QyxJQUFJLHdCQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2dCQUN2QyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsd0JBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0RTtRQUVELElBQUksd0JBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRTtZQUMzRixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsd0JBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLENBQUMsRUFBRSxDQUFDO1NBQ1A7S0FDSjtJQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLENBQUM7QUFDeEQsQ0FBQztBQTVCRCxnRkE0QkM7QUFFRCxTQUFnQixPQUFPLENBQUUsR0FBRyxFQUFFLGFBQWE7SUFDdkMsSUFBSSxHQUFHLEtBQUssT0FBTztRQUNmLE9BQU8sR0FBRyxDQUFDO0lBRWYsSUFBSSxhQUFhLEVBQUU7UUFDZixJQUFJLElBQUEsbUJBQVEsRUFBQyxHQUFHLENBQUM7WUFDYixPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksd0JBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyx3QkFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzdDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBYkQsMEJBYUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBRSxlQUFlO0lBQ2pELE1BQU0sR0FBRyxHQUFtQixlQUFlLElBQUksUUFBUSxDQUFDO0lBQ3hELE1BQU0sYUFBYSxHQUFTLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBR2pDLElBQUksYUFBYSxJQUFJLHdCQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUN4RCxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ3pELElBQUk7WUFDQSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDekc7UUFDRCxPQUFPLENBQUMsRUFBRSxFQUFFLCtCQUErQjtTQUMxQztLQUNKO0lBRUQsT0FBTyxxQkFBcUIsSUFBSSxhQUFhLENBQUM7QUFDbEQsQ0FBQztBQWhCRCxvREFnQkM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWU7SUFDL0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRS9FLElBQUksV0FBVztZQUNYLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7O1lBRWhFLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVRELDRDQVNDO0FBRUQsU0FBUywwQkFBMEIsQ0FBRSxhQUFhLEVBQUUsZUFBZTtJQUMvRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFbEIsSUFBSSxlQUFlLEVBQUU7UUFDakIsOEZBQThGO1FBQzlGLG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFDcEQsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxDQUFDO0tBQ2pHO0lBQ0QsNkdBQTZHO0lBQzdHLGlHQUFpRztJQUNqRyxnRkFBZ0Y7U0FDM0UsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLEVBQUU7UUFDOUIsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxDQUFDO1NBQy9FLElBQUksWUFBWSxDQUFDLFFBQVE7UUFDMUIsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBRTlELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZUFBZTtJQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBRXBCLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVE7UUFDakUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLDBCQUEwQixDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUU1RSxJQUFJLFFBQVE7UUFDUixRQUFRLEdBQUcsMEJBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXJELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZTtJQUNoRSxNQUFNLDhCQUE4QixHQUFRLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlHLElBQUkscUNBQXFDLEdBQUcsSUFBSSxDQUFDO0lBRWpELElBQUksZUFBZSxJQUFJLDhCQUE4QixFQUFFO1FBQ25ELHFDQUFxQyxHQUFHLDBCQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNuRSxPQUFPLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLHFDQUFxQyxJQUFJLE9BQU8sQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBUyxnQ0FBZ0MsQ0FBRSxHQUFHO0lBQzFDLE1BQU0sYUFBYSxHQUFXLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEYsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLElBQUksNEJBQTRCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFM0YsT0FBTyxhQUFhLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWU7SUFDdEUsTUFBTSxNQUFNLEdBQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sR0FBRyxHQUFVLHdCQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3BFLE1BQU0sSUFBSSxHQUFTLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsSUFBSSxZQUFZLEdBQUcsd0JBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFNUQsWUFBWSxHQUFHLHVCQUF1QixDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFL0UsTUFBTSxZQUFZLEdBQVcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsTUFBTSxZQUFZLEdBQVcsMEJBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFckcsSUFBSSxvQkFBb0IsRUFBRTtRQUN0QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQztZQUNoQyxPQUFPLDBCQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFbEUsT0FBTyxlQUFlLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztLQUNsSDtJQUVELElBQUksT0FBTyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVqRCxPQUFPLHVCQUF1QixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUF2QkQsMERBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhhbW1lcmhlYWQgZnJvbSAnLi4vLi4vZGVwcy9oYW1tZXJoZWFkJztcbmltcG9ydCB7XG4gICAgS0VZX01BUFMsXG4gICAgZG9tVXRpbHMsXG4gICAgYXJyYXlVdGlscyxcbn0gZnJvbSAnLi4vLi4vZGVwcy90ZXN0Y2FmZS1jb3JlJztcblxuaW1wb3J0IGlzTGV0dGVyIGZyb20gJy4uLy4uL3V0aWxzL2lzLWxldHRlcic7XG5cblxuY29uc3QgbmF0aXZlTWV0aG9kcyAgICA9IGhhbW1lcmhlYWQubmF0aXZlTWV0aG9kcztcbmNvbnN0IGJyb3dzZXJVdGlscyAgICAgPSBoYW1tZXJoZWFkLnV0aWxzLmJyb3dzZXI7XG5jb25zdCBmb2N1c0JsdXJTYW5kYm94ID0gaGFtbWVyaGVhZC5ldmVudFNhbmRib3guZm9jdXNCbHVyO1xuY29uc3QgUHJvbWlzZSAgICAgICAgICA9IGhhbW1lcmhlYWQuUHJvbWlzZTtcblxuY29uc3QgeyBpc1JhZGlvQnV0dG9uRWxlbWVudCwgZ2V0QWN0aXZlRWxlbWVudCwgZ2V0VGFiSW5kZXhBdHRyaWJ1dGVJbnRWYWx1ZSB9ID0gZG9tVXRpbHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VMZXR0ZXJDYXNlIChsZXR0ZXIpIHtcbiAgICBjb25zdCBpc0xvd0Nhc2UgPSBsZXR0ZXIgPT09IGxldHRlci50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGlzTG93Q2FzZSA/IGxldHRlci50b1VwcGVyQ2FzZSgpIDogbGV0dGVyLnRvTG93ZXJDYXNlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3R1YWxLZXlzQW5kRXZlbnRLZXlQcm9wZXJ0aWVzIChrZXlBcnJheSkge1xuICAgIGNvbnN0IGV2ZW50S2V5UHJvcGVydGllcyA9IGtleUFycmF5LnNsaWNlKCk7XG5cbiAgICAvL05PVEU6IGNoZWNrICdzaGlmdCcgbW9kaWZpZXIgaW4ga2V5c1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5QXJyYXlbaV07XG5cbiAgICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0S2V5ID0ga2V5QXJyYXlbaSArIDFdO1xuXG4gICAgICAgICAgICBpZiAoIW5leHRLZXkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmIChLRVlfTUFQUy5zaGlmdE1hcFtuZXh0S2V5XSlcbiAgICAgICAgICAgICAgICBrZXlBcnJheVtpICsgMV0gPSBLRVlfTUFQUy5zaGlmdE1hcFtuZXh0S2V5XTtcbiAgICAgICAgICAgIGVsc2UgaWYgKEtFWV9NQVBTLnJldmVyc2VkU2hpZnRNYXBbbmV4dEtleV0pXG4gICAgICAgICAgICAgICAgZXZlbnRLZXlQcm9wZXJ0aWVzW2kgKyAxXSA9IEtFWV9NQVBTLnJldmVyc2VkU2hpZnRNYXBbbmV4dEtleV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS0VZX01BUFMuc2hpZnRNYXBba2V5XSAmJiAoIWtleUFycmF5W2kgLSAxXSB8fCBrZXlBcnJheVtpIC0gMV0udG9Mb3dlckNhc2UoKSAhPT0gJ3NoaWZ0JykpIHtcbiAgICAgICAgICAgIGtleUFycmF5W2ldID0gS0VZX01BUFMuc2hpZnRNYXBba2V5XTtcbiAgICAgICAgICAgIGtleUFycmF5LnNwbGljZShpLCAwLCAnc2hpZnQnKTtcbiAgICAgICAgICAgIGV2ZW50S2V5UHJvcGVydGllcy5zcGxpY2UoaSwgMCwgJ3NoaWZ0Jyk7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBhY3R1YWxLZXlzOiBrZXlBcnJheSwgZXZlbnRLZXlQcm9wZXJ0aWVzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFyIChrZXksIHNoaWZ0TW9kaWZpZWQpIHtcbiAgICBpZiAoa2V5ID09PSAnc3BhY2UnKVxuICAgICAgICByZXR1cm4gJyAnO1xuXG4gICAgaWYgKHNoaWZ0TW9kaWZpZWQpIHtcbiAgICAgICAgaWYgKGlzTGV0dGVyKGtleSkpXG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlTGV0dGVyQ2FzZShrZXkpO1xuXG4gICAgICAgIGlmIChLRVlfTUFQUy5yZXZlcnNlZFNoaWZ0TWFwW2tleV0pXG4gICAgICAgICAgICByZXR1cm4gS0VZX01BUFMucmV2ZXJzZWRTaGlmdE1hcFtrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBrZXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWVwQWN0aXZlRWxlbWVudCAoY3VycmVudERvY3VtZW50KSB7XG4gICAgY29uc3QgZG9jICAgICAgICAgICAgICAgICA9IGN1cnJlbnREb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ICAgICAgID0gZ2V0QWN0aXZlRWxlbWVudChkb2MpO1xuICAgIGxldCBhY3RpdmVFbGVtZW50SW5JZnJhbWUgPSBudWxsO1xuXG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiBkb21VdGlscy5pc0lmcmFtZUVsZW1lbnQoYWN0aXZlRWxlbWVudCkgJiZcbiAgICAgICAgbmF0aXZlTWV0aG9kcy5jb250ZW50RG9jdW1lbnRHZXR0ZXIuY2FsbChhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudEluSWZyYW1lID0gZ2V0RGVlcEFjdGl2ZUVsZW1lbnQobmF0aXZlTWV0aG9kcy5jb250ZW50RG9jdW1lbnRHZXR0ZXIuY2FsbChhY3RpdmVFbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnRJbklmcmFtZSB8fCBhY3RpdmVFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNOZXh0RWxlbWVudCAoZWxlbWVudCwgcmV2ZXJzZSwgc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGdldE5leHRGb2N1c2FibGVFbGVtZW50KGVsZW1lbnQsIHJldmVyc2UsIHNraXBSYWRpb0dyb3Vwcyk7XG5cbiAgICAgICAgaWYgKG5leHRFbGVtZW50KVxuICAgICAgICAgICAgZm9jdXNCbHVyU2FuZGJveC5mb2N1cyhuZXh0RWxlbWVudCwgKCkgPT4gcmVzb2x2ZShuZXh0RWxlbWVudCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEZvY3VzYWJsZUVsZW1lbnRzRmlsdGVyIChzb3VyY2VFbGVtZW50LCBza2lwUmFkaW9Hcm91cHMpIHtcbiAgICBsZXQgZmlsdGVyID0gbnVsbDtcblxuICAgIGlmIChza2lwUmFkaW9Hcm91cHMpIHtcbiAgICAgICAgLy8gTk9URTogaW4gYWxsIGJyb3dzZXJzIGV4Y2VwdCBNb3ppbGxhIGFuZCBPcGVyYSBmb2N1cyBzZXRzIG9uIG9uZSByYWRpbyBzZXQgZnJvbSBncm91cCBvbmx5LlxuICAgICAgICAvLyBpbiBNb3ppbGxhIGFuZCBPcGVyYSBmb2N1cyBzZXRzIG9uIGFueSByYWRpbyBzZXQuXG4gICAgICAgIGlmIChzb3VyY2VFbGVtZW50Lm5hbWUgIT09ICcnICYmICFicm93c2VyVXRpbHMuaXNGaXJlZm94KVxuICAgICAgICAgICAgZmlsdGVyID0gaXRlbSA9PiAhaXRlbS5uYW1lIHx8IGl0ZW0gPT09IHNvdXJjZUVsZW1lbnQgfHwgaXRlbS5uYW1lICE9PSBzb3VyY2VFbGVtZW50Lm5hbWU7XG4gICAgfVxuICAgIC8vIE5PVEUgYXJyb3cgbmF2aWdhdGlvbnMgd29ya3Mgd2l0aCByYWRpbyBidXR0b25zIGluIGFsbCBicm93c2VycyBvbmx5IGJldHdlZW4gcmFkaW8gYnV0dG9ucyB3aXRoIHNhbWUgbmFtZXNcbiAgICAvLyBOYXZpZ2F0aW9uIGJldHdlZW4gcmFkaW8gYnV0dG9ucyB3aXRob3V0IG5hbWUganVzdCBtb3ZlcyBmb2N1cyBiZXR3ZWVuIHJhZGlvIGJ1dHRvbnMgaW4gQ2hyb21lXG4gICAgLy8gSW4gb3RoZXIgYnJvd3NlcnMgbmF2aWdhdGlvbiBiZXR3ZWVuIHJhZGlvIGJ1dHRvbnMgd2l0aG91dCBuYW1lIGRvZXMgbm90IHdvcmtcbiAgICBlbHNlIGlmIChzb3VyY2VFbGVtZW50Lm5hbWUgIT09ICcnKVxuICAgICAgICBmaWx0ZXIgPSBpdGVtID0+IGlzUmFkaW9CdXR0b25FbGVtZW50KGl0ZW0pICYmIGl0ZW0ubmFtZSA9PT0gc291cmNlRWxlbWVudC5uYW1lO1xuICAgIGVsc2UgaWYgKGJyb3dzZXJVdGlscy5pc0Nocm9tZSlcbiAgICAgICAgZmlsdGVyID0gaXRlbSA9PiBpc1JhZGlvQnV0dG9uRWxlbWVudChpdGVtKSAmJiAhaXRlbS5uYW1lO1xuXG4gICAgcmV0dXJuIGZpbHRlcjtcbn1cblxuZnVuY3Rpb24gZmlsdGVyRm9jdXNhYmxlRWxlbWVudHMgKGVsZW1lbnRzLCBzb3VyY2VFbGVtZW50LCBza2lwUmFkaW9Hcm91cHMpIHtcbiAgICBpZiAoIWlzUmFkaW9CdXR0b25FbGVtZW50KHNvdXJjZUVsZW1lbnQpKVxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG5cbiAgICBpZiAoIXNraXBSYWRpb0dyb3VwcyAmJiAhc291cmNlRWxlbWVudC5uYW1lICYmICFicm93c2VyVXRpbHMuaXNDaHJvbWUpXG4gICAgICAgIHJldHVybiBbc291cmNlRWxlbWVudF07XG5cbiAgICBjb25zdCBmaWx0ZXJGbiA9IGdldEZvY3VzYWJsZUVsZW1lbnRzRmlsdGVyKHNvdXJjZUVsZW1lbnQsIHNraXBSYWRpb0dyb3Vwcyk7XG5cbiAgICBpZiAoZmlsdGVyRm4pXG4gICAgICAgIGVsZW1lbnRzID0gYXJyYXlVdGlscy5maWx0ZXIoZWxlbWVudHMsIGZpbHRlckZuKTtcblxuICAgIHJldHVybiBlbGVtZW50cztcbn1cblxuZnVuY3Rpb24gY29ycmVjdEZvY3VzYWJsZUVsZW1lbnQgKGVsZW1lbnRzLCBlbGVtZW50LCBza2lwUmFkaW9Hcm91cHMpIHtcbiAgICBjb25zdCBpc05vdENoZWNrZWRSYWRpb0J1dHRvbkVsZW1lbnQgICAgICA9IGlzUmFkaW9CdXR0b25FbGVtZW50KGVsZW1lbnQpICYmIGVsZW1lbnQubmFtZSAmJiAhZWxlbWVudC5jaGVja2VkO1xuICAgIGxldCBjaGVja2VkUmFkaW9CdXR0b25FbGVtZW50V2l0aFNhbWVOYW1lID0gbnVsbDtcblxuICAgIGlmIChza2lwUmFkaW9Hcm91cHMgJiYgaXNOb3RDaGVja2VkUmFkaW9CdXR0b25FbGVtZW50KSB7XG4gICAgICAgIGNoZWNrZWRSYWRpb0J1dHRvbkVsZW1lbnRXaXRoU2FtZU5hbWUgPSBhcnJheVV0aWxzLmZpbmQoZWxlbWVudHMsIGVsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpc1JhZGlvQnV0dG9uRWxlbWVudChlbCkgJiYgZWwubmFtZSA9PT0gZWxlbWVudC5uYW1lICYmIGVsLmNoZWNrZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGVja2VkUmFkaW9CdXR0b25FbGVtZW50V2l0aFNhbWVOYW1lIHx8IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGFjdGl2ZUVsZW1lbnRIYXNOZWdhdGl2ZVRhYkluZGV4IChkb2MpIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ICAgICAgICAgPSBuYXRpdmVNZXRob2RzLmRvY3VtZW50QWN0aXZlRWxlbWVudEdldHRlci5jYWxsKGRvYyk7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudFRhYkluZGV4ID0gYWN0aXZlRWxlbWVudCAmJiBnZXRUYWJJbmRleEF0dHJpYnV0ZUludFZhbHVlKGFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudFRhYkluZGV4IDwgMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRGb2N1c2FibGVFbGVtZW50IChlbGVtZW50LCByZXZlcnNlLCBza2lwUmFkaW9Hcm91cHMpIHtcbiAgICBjb25zdCBvZmZzZXQgICAgID0gcmV2ZXJzZSA/IC0xIDogMTtcbiAgICBjb25zdCBkb2MgICAgICAgID0gZG9tVXRpbHMuZ2V0VG9wU2FtZURvbWFpbldpbmRvdyh3aW5kb3cpLmRvY3VtZW50O1xuICAgIGNvbnN0IHNvcnQgICAgICAgPSAhYWN0aXZlRWxlbWVudEhhc05lZ2F0aXZlVGFiSW5kZXgoZG9jKTtcbiAgICBsZXQgYWxsRm9jdXNhYmxlID0gZG9tVXRpbHMuZ2V0Rm9jdXNhYmxlRWxlbWVudHMoZG9jLCBzb3J0KTtcblxuICAgIGFsbEZvY3VzYWJsZSA9IGZpbHRlckZvY3VzYWJsZUVsZW1lbnRzKGFsbEZvY3VzYWJsZSwgZWxlbWVudCwgc2tpcFJhZGlvR3JvdXBzKTtcblxuICAgIGNvbnN0IGlzUmFkaW9JbnB1dCAgICAgICAgID0gaXNSYWRpb0J1dHRvbkVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgY3VycmVudEluZGV4ICAgICAgICAgPSBhcnJheVV0aWxzLmluZGV4T2YoYWxsRm9jdXNhYmxlLCBlbGVtZW50KTtcbiAgICBjb25zdCBpc0xhc3RFbGVtZW50Rm9jdXNlZCA9IHJldmVyc2UgPyBjdXJyZW50SW5kZXggPT09IDAgOiBjdXJyZW50SW5kZXggPT09IGFsbEZvY3VzYWJsZS5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGlzTGFzdEVsZW1lbnRGb2N1c2VkKSB7XG4gICAgICAgIGlmICghcmV2ZXJzZSAmJiBlbGVtZW50LnRhYkluZGV4IDwgMClcbiAgICAgICAgICAgIHJldHVybiBhcnJheVV0aWxzLmZpbmQoYWxsRm9jdXNhYmxlLCBlbCA9PiBlbC50YWJJbmRleCA9PT0gMCk7XG5cbiAgICAgICAgcmV0dXJuIHNraXBSYWRpb0dyb3VwcyB8fCAhaXNSYWRpb0lucHV0ID8gZG9jdW1lbnQuYm9keSA6IGFsbEZvY3VzYWJsZVthbGxGb2N1c2FibGUubGVuZ3RoIC0gMSAtIGN1cnJlbnRJbmRleF07XG4gICAgfVxuXG4gICAgaWYgKHJldmVyc2UgJiYgY3VycmVudEluZGV4ID09PSAtMSlcbiAgICAgICAgcmV0dXJuIGFsbEZvY3VzYWJsZVthbGxGb2N1c2FibGUubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gY29ycmVjdEZvY3VzYWJsZUVsZW1lbnQoYWxsRm9jdXNhYmxlLCBhbGxGb2N1c2FibGVbY3VycmVudEluZGV4ICsgb2Zmc2V0XSwgc2tpcFJhZGlvR3JvdXBzKTtcbn1cbiJdfQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2F1dG9tYXRpb24vcGxheWJhY2svcHJlc3MvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUVBQStDO0FBQy9DLDREQUlrQztBQUVsQyxzRUFBNkM7QUFHN0MsTUFBTSxhQUFhLEdBQU0sb0JBQVUsQ0FBQyxhQUFhLENBQUM7QUFDbEQsTUFBTSxZQUFZLEdBQU8sb0JBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsb0JBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO0FBQzNELE1BQU0sT0FBTyxHQUFZLG9CQUFVLENBQUMsT0FBTyxDQUFDO0FBRTVDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxHQUFHLHdCQUFRLENBQUM7QUFFMUYsU0FBZ0IsZ0JBQWdCLENBQUUsTUFBTTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRWxELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuRSxDQUFDO0FBSkQsNENBSUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FBRSxRQUFRO0lBQ3hELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTVDLHNDQUFzQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssT0FB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TyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVqRCxPQUFPLHVCQUF1QixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUF2QkQsMERBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhhbW1lcmhlYWQgZnJvbSAnLi4vLi4vZGVwcy9oYW1tZXJoZWFkJztcbmltcG9ydCB7XG4gICAgS0VZX01BUFMsXG4gICAgZG9tVXRpbHMsXG4gICAgYXJyYXlVdGlscyxcbn0gZnJvbSAnLi4vLi4vZGVwcy90ZXN0Y2FmZS1jb3JlJztcblxuaW1wb3J0IGlzTGV0dGVyIGZyb20gJy4uLy4uL3V0aWxzL2lzLWxldHRlcic7XG5cblxuY29uc3QgbmF0aXZlTWV0aG9kcyAgICA9IGhhbW1lcmhlYWQubmF0aXZlTWV0aG9kcztcbmNvbnN0IGJyb3dzZXJVdGlscyAgICAgPSBoYW1tZXJoZWFkLnV0aWxzLmJyb3dzZXI7XG5jb25zdCBmb2N1c0JsdXJTYW5kYm94ID0gaGFtbWVyaGVhZC5ldmVudFNhbmRib3guZm9jdXNCbHVyO1xuY29uc3QgUHJvbWlzZSAgICAgICAgICA9IGhhbW1lcmhlYWQuUHJvbWlzZTtcblxuY29uc3QgeyBpc1JhZGlvQnV0dG9uRWxlbWVudCwgZ2V0QWN0aXZlRWxlbWVudCwgZ2V0VGFiSW5kZXhBdHRyaWJ1dGVJbnRWYWx1ZSB9ID0gZG9tVXRpbHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VMZXR0ZXJDYXNlIChsZXR0ZXIpIHtcbiAgICBjb25zdCBpc0xvd0Nhc2UgPSBsZXR0ZXIgPT09IGxldHRlci50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGlzTG93Q2FzZSA/IGxldHRlci50b1VwcGVyQ2FzZSgpIDogbGV0dGVyLnRvTG93ZXJDYXNlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3R1YWxLZXlzQW5kRXZlbnRLZXlQcm9wZXJ0aWVzIChrZXlBcnJheSkge1xuICAgIGNvbnN0IGV2ZW50S2V5UHJvcGVydGllcyA9IGtleUFycmF5LnNsaWNlKCk7XG5cbiAgICAvL05PVEU6IGNoZWNrICdzaGlmdCcgbW9kaWZpZXIgaW4ga2V5c1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5QXJyYXlbaV07XG5cbiAgICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0S2V5ID0ga2V5QXJyYXlbaSArIDFdO1xuXG4gICAgICAgICAgICBpZiAoIW5leHRLZXkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmIChLRVlfTUFQUy5zaGlmdE1hcFtuZXh0S2V5XSlcbiAgICAgICAgICAgICAgICBrZXlBcnJheVtpICsgMV0gPSBLRVlfTUFQUy5zaGlmdE1hcFtuZXh0S2V5XTtcbiAgICAgICAgICAgIGVsc2UgaWYgKEtFWV9NQVBTLnJldmVyc2VkU2hpZnRNYXBbbmV4dEtleV0pXG4gICAgICAgICAgICAgICAgZXZlbnRLZXlQcm9wZXJ0aWVzW2kgKyAxXSA9IEtFWV9NQVBTLnJldmVyc2VkU2hpZnRNYXBbbmV4dEtleV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS0VZX01BUFMuc2hpZnRNYXBba2V5XSAmJiAoIWtleUFycmF5W2kgLSAxXSB8fCBrZXlBcnJheVtpIC0gMV0udG9Mb3dlckNhc2UoKSAhPT0gJ3NoaWZ0JykpIHtcbiAgICAgICAgICAgIGtleUFycmF5W2ldID0gS0VZX01BUFMuc2hpZnRNYXBba2V5XTtcbiAgICAgICAgICAgIGtleUFycmF5LnNwbGljZShpLCAwLCAnc2hpZnQnKTtcbiAgICAgICAgICAgIGV2ZW50S2V5UHJvcGVydGllcy5zcGxpY2UoaSwgMCwgJ3NoaWZ0Jyk7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBhY3R1YWxLZXlzOiBrZXlBcnJheSwgZXZlbnRLZXlQcm9wZXJ0aWVzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFyIChrZXksIHNoaWZ0TW9kaWZpZWQpIHtcbiAgICBpZiAoa2V5ID09PSAnc3BhY2UnKVxuICAgICAgICByZXR1cm4gJyAnO1xuXG4gICAgaWYgKHNoaWZ0TW9kaWZpZWQpIHtcbiAgICAgICAgaWYgKGlzTGV0dGVyKGtleSkpXG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlTGV0dGVyQ2FzZShrZXkpO1xuXG4gICAgICAgIGlmIChLRVlfTUFQUy5yZXZlcnNlZFNoaWZ0TWFwW2tleV0pXG4gICAgICAgICAgICByZXR1cm4gS0VZX01BUFMucmV2ZXJzZWRTaGlmdE1hcFtrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBrZXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWVwQWN0aXZlRWxlbWVudCAoY3VycmVudERvY3VtZW50KSB7XG4gICAgY29uc3QgZG9jICAgICAgICAgICAgICAgICA9IGN1cnJlbnREb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ICAgICAgID0gZ2V0QWN0aXZlRWxlbWVudChkb2MpO1xuICAgIGxldCBhY3RpdmVFbGVtZW50SW5JZnJhbWUgPSBudWxsO1xuXG5cbiAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiBkb21VdGlscy5pc0lmcmFtZUVsZW1lbnQoYWN0aXZlRWxlbWVudCkgJiZcbiAgICAgICAgbmF0aXZlTWV0aG9kcy5jb250ZW50RG9jdW1lbnRHZXR0ZXIuY2FsbChhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudEluSWZyYW1lID0gZ2V0RGVlcEFjdGl2ZUVsZW1lbnQobmF0aXZlTWV0aG9kcy5jb250ZW50RG9jdW1lbnRHZXR0ZXIuY2FsbChhY3RpdmVFbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY2F0Y2ggYmxvY2sgaW50ZW50aW9uYWxseSBkb2VzIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY3RpdmVFbGVtZW50SW5JZnJhbWUgfHwgYWN0aXZlRWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzTmV4dEVsZW1lbnQgKGVsZW1lbnQsIHJldmVyc2UsIHNraXBSYWRpb0dyb3Vwcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBnZXROZXh0Rm9jdXNhYmxlRWxlbWVudChlbGVtZW50LCByZXZlcnNlLCBza2lwUmFkaW9Hcm91cHMpO1xuXG4gICAgICAgIGlmIChuZXh0RWxlbWVudClcbiAgICAgICAgICAgIGZvY3VzQmx1clNhbmRib3guZm9jdXMobmV4dEVsZW1lbnQsICgpID0+IHJlc29sdmUobmV4dEVsZW1lbnQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRGb2N1c2FibGVFbGVtZW50c0ZpbHRlciAoc291cmNlRWxlbWVudCwgc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgbGV0IGZpbHRlciA9IG51bGw7XG5cbiAgICBpZiAoc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgICAgIC8vIE5PVEU6IGluIGFsbCBicm93c2VycyBleGNlcHQgTW96aWxsYSBhbmQgT3BlcmEgZm9jdXMgc2V0cyBvbiBvbmUgcmFkaW8gc2V0IGZyb20gZ3JvdXAgb25seS5cbiAgICAgICAgLy8gaW4gTW96aWxsYSBhbmQgT3BlcmEgZm9jdXMgc2V0cyBvbiBhbnkgcmFkaW8gc2V0LlxuICAgICAgICBpZiAoc291cmNlRWxlbWVudC5uYW1lICE9PSAnJyAmJiAhYnJvd3NlclV0aWxzLmlzRmlyZWZveClcbiAgICAgICAgICAgIGZpbHRlciA9IGl0ZW0gPT4gIWl0ZW0ubmFtZSB8fCBpdGVtID09PSBzb3VyY2VFbGVtZW50IHx8IGl0ZW0ubmFtZSAhPT0gc291cmNlRWxlbWVudC5uYW1lO1xuICAgIH1cbiAgICAvLyBOT1RFIGFycm93IG5hdmlnYXRpb25zIHdvcmtzIHdpdGggcmFkaW8gYnV0dG9ucyBpbiBhbGwgYnJvd3NlcnMgb25seSBiZXR3ZWVuIHJhZGlvIGJ1dHRvbnMgd2l0aCBzYW1lIG5hbWVzXG4gICAgLy8gTmF2aWdhdGlvbiBiZXR3ZWVuIHJhZGlvIGJ1dHRvbnMgd2l0aG91dCBuYW1lIGp1c3QgbW92ZXMgZm9jdXMgYmV0d2VlbiByYWRpbyBidXR0b25zIGluIENocm9tZVxuICAgIC8vIEluIG90aGVyIGJyb3dzZXJzIG5hdmlnYXRpb24gYmV0d2VlbiByYWRpbyBidXR0b25zIHdpdGhvdXQgbmFtZSBkb2VzIG5vdCB3b3JrXG4gICAgZWxzZSBpZiAoc291cmNlRWxlbWVudC5uYW1lICE9PSAnJylcbiAgICAgICAgZmlsdGVyID0gaXRlbSA9PiBpc1JhZGlvQnV0dG9uRWxlbWVudChpdGVtKSAmJiBpdGVtLm5hbWUgPT09IHNvdXJjZUVsZW1lbnQubmFtZTtcbiAgICBlbHNlIGlmIChicm93c2VyVXRpbHMuaXNDaHJvbWUpXG4gICAgICAgIGZpbHRlciA9IGl0ZW0gPT4gaXNSYWRpb0J1dHRvbkVsZW1lbnQoaXRlbSkgJiYgIWl0ZW0ubmFtZTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckZvY3VzYWJsZUVsZW1lbnRzIChlbGVtZW50cywgc291cmNlRWxlbWVudCwgc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgaWYgKCFpc1JhZGlvQnV0dG9uRWxlbWVudChzb3VyY2VFbGVtZW50KSlcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuXG4gICAgaWYgKCFza2lwUmFkaW9Hcm91cHMgJiYgIXNvdXJjZUVsZW1lbnQubmFtZSAmJiAhYnJvd3NlclV0aWxzLmlzQ2hyb21lKVxuICAgICAgICByZXR1cm4gW3NvdXJjZUVsZW1lbnRdO1xuXG4gICAgY29uc3QgZmlsdGVyRm4gPSBnZXRGb2N1c2FibGVFbGVtZW50c0ZpbHRlcihzb3VyY2VFbGVtZW50LCBza2lwUmFkaW9Hcm91cHMpO1xuXG4gICAgaWYgKGZpbHRlckZuKVxuICAgICAgICBlbGVtZW50cyA9IGFycmF5VXRpbHMuZmlsdGVyKGVsZW1lbnRzLCBmaWx0ZXJGbik7XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmZ1bmN0aW9uIGNvcnJlY3RGb2N1c2FibGVFbGVtZW50IChlbGVtZW50cywgZWxlbWVudCwgc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgY29uc3QgaXNOb3RDaGVja2VkUmFkaW9CdXR0b25FbGVtZW50ICAgICAgPSBpc1JhZGlvQnV0dG9uRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50Lm5hbWUgJiYgIWVsZW1lbnQuY2hlY2tlZDtcbiAgICBsZXQgY2hlY2tlZFJhZGlvQnV0dG9uRWxlbWVudFdpdGhTYW1lTmFtZSA9IG51bGw7XG5cbiAgICBpZiAoc2tpcFJhZGlvR3JvdXBzICYmIGlzTm90Q2hlY2tlZFJhZGlvQnV0dG9uRWxlbWVudCkge1xuICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25FbGVtZW50V2l0aFNhbWVOYW1lID0gYXJyYXlVdGlscy5maW5kKGVsZW1lbnRzLCBlbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXNSYWRpb0J1dHRvbkVsZW1lbnQoZWwpICYmIGVsLm5hbWUgPT09IGVsZW1lbnQubmFtZSAmJiBlbC5jaGVja2VkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hlY2tlZFJhZGlvQnV0dG9uRWxlbWVudFdpdGhTYW1lTmFtZSB8fCBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBhY3RpdmVFbGVtZW50SGFzTmVnYXRpdmVUYWJJbmRleCAoZG9jKSB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCAgICAgICAgID0gbmF0aXZlTWV0aG9kcy5kb2N1bWVudEFjdGl2ZUVsZW1lbnRHZXR0ZXIuY2FsbChkb2MpO1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRUYWJJbmRleCA9IGFjdGl2ZUVsZW1lbnQgJiYgZ2V0VGFiSW5kZXhBdHRyaWJ1dGVJbnRWYWx1ZShhY3RpdmVFbGVtZW50KTtcblxuICAgIHJldHVybiBhY3RpdmVFbGVtZW50ICYmIGFjdGl2ZUVsZW1lbnRUYWJJbmRleCA8IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0Rm9jdXNhYmxlRWxlbWVudCAoZWxlbWVudCwgcmV2ZXJzZSwgc2tpcFJhZGlvR3JvdXBzKSB7XG4gICAgY29uc3Qgb2Zmc2V0ICAgICA9IHJldmVyc2UgPyAtMSA6IDE7XG4gICAgY29uc3QgZG9jICAgICAgICA9IGRvbVV0aWxzLmdldFRvcFNhbWVEb21haW5XaW5kb3cod2luZG93KS5kb2N1bWVudDtcbiAgICBjb25zdCBzb3J0ICAgICAgID0gIWFjdGl2ZUVsZW1lbnRIYXNOZWdhdGl2ZVRhYkluZGV4KGRvYyk7XG4gICAgbGV0IGFsbEZvY3VzYWJsZSA9IGRvbVV0aWxzLmdldEZvY3VzYWJsZUVsZW1lbnRzKGRvYywgc29ydCk7XG5cbiAgICBhbGxGb2N1c2FibGUgPSBmaWx0ZXJGb2N1c2FibGVFbGVtZW50cyhhbGxGb2N1c2FibGUsIGVsZW1lbnQsIHNraXBSYWRpb0dyb3Vwcyk7XG5cbiAgICBjb25zdCBpc1JhZGlvSW5wdXQgICAgICAgICA9IGlzUmFkaW9CdXR0b25FbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCAgICAgICAgID0gYXJyYXlVdGlscy5pbmRleE9mKGFsbEZvY3VzYWJsZSwgZWxlbWVudCk7XG4gICAgY29uc3QgaXNMYXN0RWxlbWVudEZvY3VzZWQgPSByZXZlcnNlID8gY3VycmVudEluZGV4ID09PSAwIDogY3VycmVudEluZGV4ID09PSBhbGxGb2N1c2FibGUubGVuZ3RoIC0gMTtcblxuICAgIGlmIChpc0xhc3RFbGVtZW50Rm9jdXNlZCkge1xuICAgICAgICBpZiAoIXJldmVyc2UgJiYgZWxlbWVudC50YWJJbmRleCA8IDApXG4gICAgICAgICAgICByZXR1cm4gYXJyYXlVdGlscy5maW5kKGFsbEZvY3VzYWJsZSwgZWwgPT4gZWwudGFiSW5kZXggPT09IDApO1xuXG4gICAgICAgIHJldHVybiBza2lwUmFkaW9Hcm91cHMgfHwgIWlzUmFkaW9JbnB1dCA/IGRvY3VtZW50LmJvZHkgOiBhbGxGb2N1c2FibGVbYWxsRm9jdXNhYmxlLmxlbmd0aCAtIDEgLSBjdXJyZW50SW5kZXhdO1xuICAgIH1cblxuICAgIGlmIChyZXZlcnNlICYmIGN1cnJlbnRJbmRleCA9PT0gLTEpXG4gICAgICAgIHJldHVybiBhbGxGb2N1c2FibGVbYWxsRm9jdXNhYmxlLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGNvcnJlY3RGb2N1c2FibGVFbGVtZW50KGFsbEZvY3VzYWJsZSwgYWxsRm9jdXNhYmxlW2N1cnJlbnRJbmRleCArIG9mZnNldF0sIHNraXBSYWRpb0dyb3Vwcyk7XG59XG4iXX0=
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
262
262
|
function step(op) {
|
|
263
263
|
if (f) throw new TypeError("Generator is already executing.");
|
|
264
|
-
while (_) try {
|
|
264
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
265
265
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
266
266
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
267
267
|
switch (op[0]) {
|
package/lib/client/core/index.js
CHANGED
|
@@ -215,7 +215,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
215
215
|
}
|
|
216
216
|
this._requests.clear();
|
|
217
217
|
this._offListening();
|
|
218
|
-
this._waitResolve();
|
|
218
|
+
this._waitResolve();
|
|
219
219
|
};
|
|
220
220
|
RequestBarrier.prototype.wait = function (isPageLoad) {
|
|
221
221
|
var _this = this;
|
|
@@ -526,7 +526,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
526
526
|
}
|
|
527
527
|
this._scripts.clear();
|
|
528
528
|
this._offListening();
|
|
529
|
-
this._waitResolve();
|
|
529
|
+
this._waitResolve();
|
|
530
530
|
this._waitResolve = null;
|
|
531
531
|
};
|
|
532
532
|
ScriptExecutionBarrier.prototype.wait = function () {
|
|
@@ -917,7 +917,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
917
917
|
res.push('<');
|
|
918
918
|
res.push(getTagName(el));
|
|
919
919
|
for (var attr in attributes) {
|
|
920
|
-
if (attributes.hasOwnProperty(attr)) {
|
|
920
|
+
if (attributes.hasOwnProperty(attr)) {
|
|
921
921
|
var val = el[attributes[attr]];
|
|
922
922
|
if (val)
|
|
923
923
|
res.push(' ' + attr + '="' + val + '"');
|
|
@@ -2369,7 +2369,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
2369
2369
|
if (_this._skipParentFrames || !isIframeWindow(window))
|
|
2370
2370
|
return;
|
|
2371
2371
|
state.cmd = ScrollAutomation.SCROLL_REQUEST_CMD;
|
|
2372
|
-
// eslint-disable-next-line
|
|
2372
|
+
// eslint-disable-next-line consistent-return
|
|
2373
2373
|
return sendRequestToFrame(state, ScrollAutomation.SCROLL_RESPONSE_CMD, window.parent);
|
|
2374
2374
|
})
|
|
2375
2375
|
.then(function () { return _this._scrollWasPerformed; });
|
|
@@ -3948,7 +3948,6 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3948
3948
|
// WARNING: this file is used by both the client and the server.
|
|
3949
3949
|
// Do not use any browser or node-specific API!
|
|
3950
3950
|
// -------------------------------------------------------------
|
|
3951
|
-
/* eslint-disable no-undef */
|
|
3952
3951
|
function selectorTextFilter(node, index, originNode, textFilter) {
|
|
3953
3952
|
function hasChildrenWithText(parentNode) {
|
|
3954
3953
|
var cnCount = parentNode.childNodes.length;
|
|
@@ -3980,14 +3979,12 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3980
3979
|
if (node.nodeType === 11)
|
|
3981
3980
|
return hasChildrenWithText(node);
|
|
3982
3981
|
return checkNodeText(node.textContent);
|
|
3983
|
-
}
|
|
3984
|
-
/* eslint-enable no-undef */
|
|
3982
|
+
}
|
|
3985
3983
|
|
|
3986
3984
|
// -------------------------------------------------------------
|
|
3987
3985
|
// WARNING: this file is used by both the client and the server.
|
|
3988
3986
|
// Do not use any browser or node-specific API!
|
|
3989
3987
|
// -------------------------------------------------------------
|
|
3990
|
-
/* eslint-disable no-undef */
|
|
3991
3988
|
function selectorAttributeFilter(node, index, originNode, attrName, attrValue) {
|
|
3992
3989
|
if (node.nodeType !== 1)
|
|
3993
3990
|
return false;
|
|
@@ -4000,8 +3997,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4000
3997
|
return true;
|
|
4001
3998
|
}
|
|
4002
3999
|
return false;
|
|
4003
|
-
}
|
|
4004
|
-
/* eslint-enable no-undef */
|
|
4000
|
+
}
|
|
4005
4001
|
|
|
4006
4002
|
var exports$1 = {};
|
|
4007
4003
|
exports$1.RequestBarrier = RequestBarrier;
|