testcafe 1.20.2-alpha.1 → 2.0.0-rc.3
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/request-hooks/assert-type.js +2 -2
- package/lib/api/request-hooks/hook.js +2 -2
- package/lib/api/request-hooks/request-logger.js +2 -2
- package/lib/api/skip-js-errors/index.js +62 -0
- package/lib/api/structure/base-unit.js +2 -2
- package/lib/api/structure/fixture.js +13 -13
- package/lib/api/structure/test.js +18 -17
- package/lib/api/structure/testing-unit.js +26 -16
- package/lib/api/test-controller/assertion.js +5 -5
- package/lib/api/test-controller/execution-context.js +2 -2
- package/lib/api/test-controller/index.js +33 -30
- package/lib/api/test-controller/proxy.js +2 -2
- package/lib/api/test-page-url.js +4 -4
- package/lib/api/test-run-tracker.js +2 -2
- package/lib/api/wrap-test-function.js +3 -3
- package/lib/assertions/executor.js +4 -4
- package/lib/assertions/get-fn.js +3 -3
- package/lib/browser/connection/gateway.js +18 -18
- package/lib/browser/connection/get-hints.js +8 -8
- package/lib/browser/connection/index.js +11 -11
- package/lib/browser/connection/remotes-queue.js +4 -4
- package/lib/browser/provider/built-in/dedicated/base.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +10 -10
- package/lib/browser/provider/built-in/dedicated/chrome/config.js +17 -17
- package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +4 -4
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +4 -4
- package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/config.js +8 -8
- package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +3 -3
- package/lib/browser/provider/built-in/dedicated/firefox/index.js +5 -5
- package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +7 -7
- package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +3 -3
- package/lib/browser/provider/built-in/path.js +2 -2
- package/lib/browser/provider/built-in/remote.js +3 -3
- package/lib/browser/provider/index.js +5 -5
- package/lib/browser/provider/plugin-host.js +5 -6
- package/lib/browser/provider/pool.js +4 -4
- package/lib/browser/provider/utils/argument-parsing.js +3 -3
- package/lib/browser/provider/utils/browser-starter.js +2 -2
- package/lib/cli/argument-parser/index.js +52 -41
- package/lib/cli/argument-parser/parse-utils.js +2 -2
- package/lib/cli/authentication-helper.js +3 -3
- package/lib/cli/cli.js +8 -8
- package/lib/cli/correct-browsers-and-sources.js +2 -2
- package/lib/cli/index.js +2 -2
- package/lib/cli/log.js +3 -3
- package/lib/cli/remotes-wizard.js +3 -3
- package/lib/client/automation/index.js +120 -34
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +321 -317
- package/lib/client/browser/service-worker.js +244 -290
- package/lib/client/core/deps/hammerhead.js +12 -4
- package/lib/client/core/index.js +145 -55
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/dom.js +33 -28
- package/lib/client/core/utils/position.js +18 -14
- package/lib/client/core/utils/style.js +8 -4
- package/lib/client/driver/command-executors/client-functions/selector-executor/filter.js +5 -5
- package/lib/client/driver/command-executors/client-functions/selector-executor/utils.js +3 -3
- package/lib/client/driver/deps/hammerhead.js +12 -4
- package/lib/client/driver/deps/testcafe-core.js +12 -4
- package/lib/client/driver/deps/testcafe-ui.js +12 -4
- package/lib/client/driver/index.js +654 -630
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/status.js +2 -2
- package/lib/client/ui/index.js +10 -8
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client-functions/builder-symbol.js +1 -2
- package/lib/client-functions/client-function-builder.js +12 -12
- package/lib/client-functions/replicator.js +2 -2
- package/lib/client-functions/selector-api-execution-mode.js +2 -2
- package/lib/client-functions/selectors/add-api.js +48 -48
- package/lib/client-functions/selectors/selector-builder.js +17 -17
- package/lib/compiler/compile-client-function.js +6 -6
- package/lib/compiler/index.js +9 -9
- package/lib/compiler/test-file/api-based.js +8 -8
- package/lib/compiler/test-file/base.js +6 -6
- package/lib/compiler/test-file/exportble-lib-path.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +2 -2
- package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
- package/lib/compiler/test-file/formats/es-next/get-test-list.js +4 -4
- package/lib/compiler/test-file/formats/raw.js +2 -2
- package/lib/compiler/test-file/formats/typescript/compiler.js +11 -11
- package/lib/compiler/test-file/formats/typescript/get-test-list.js +3 -3
- package/lib/compiler/test-file/test-file-parser-base.js +3 -3
- package/lib/configuration/configuration-base.js +15 -15
- package/lib/configuration/interfaces.js +1 -1
- package/lib/configuration/skip-js-errors-option-names.js +11 -0
- package/lib/configuration/testcafe-configuration.js +21 -16
- package/lib/configuration/types.js +1 -1
- package/lib/configuration/typescript-configuration.js +4 -4
- package/lib/custom-client-scripts/assert-type.js +2 -2
- package/lib/custom-client-scripts/client-script.js +6 -6
- package/lib/custom-client-scripts/get-code.js +2 -2
- package/lib/custom-client-scripts/routing.js +3 -3
- package/lib/custom-client-scripts/utils.js +3 -3
- package/lib/dashboard/connector.js +4 -4
- package/lib/dashboard/get-default-project-link.js +2 -2
- package/lib/dashboard/index.js +26 -26
- package/lib/errors/create-stack-filter.js +2 -2
- package/lib/errors/error-list.js +2 -2
- package/lib/errors/get-callsite.js +2 -2
- package/lib/errors/is-internal-stack-frame.js +5 -5
- package/lib/errors/process-test-fn-error.js +2 -2
- package/lib/errors/runtime/index.js +10 -10
- package/lib/errors/runtime/templates.js +5 -2
- package/lib/errors/runtime/type-assertions.js +6 -6
- package/lib/errors/stack-cleaning-hook.js +2 -2
- package/lib/errors/test-run/formattable-adapter.js +7 -7
- package/lib/errors/test-run/index.js +25 -5
- package/lib/errors/test-run/render-error-template/index.js +6 -6
- package/lib/errors/test-run/render-error-template/utils.js +2 -2
- package/lib/errors/test-run/templates.js +40 -31
- package/lib/errors/test-run/utils.js +7 -7
- package/lib/errors/types.js +5 -1
- package/lib/index.js +1 -1
- package/lib/live/file-watcher/index.js +2 -2
- package/lib/live/keyboard-observer.js +3 -3
- package/lib/live/test-run-controller.js +3 -3
- package/lib/live/test-run.js +3 -2
- package/lib/live/test-runner.js +2 -2
- package/lib/load-assets.js +2 -2
- package/lib/notifications/add-rendered-warning.js +4 -4
- package/lib/notifications/debug-logger.js +6 -6
- package/lib/notifications/deprecated.js +2 -2
- package/lib/notifications/information-message.js +4 -3
- package/lib/proxyless/resource-injector.js +4 -4
- package/lib/reporter/command/command-formatter.js +4 -4
- package/lib/reporter/index.js +10 -10
- package/lib/reporter/plugin-host.js +7 -7
- package/lib/role/index.js +8 -8
- package/lib/role/role.js +2 -2
- package/lib/runner/bootstrapper.js +20 -20
- package/lib/runner/browser-job.js +3 -3
- package/lib/runner/browser-set.js +12 -12
- package/lib/runner/fixture-hook-controller.js +5 -5
- package/lib/runner/index.js +43 -33
- package/lib/runner/task/index.js +10 -6
- package/lib/runner/test-run-hook-controller.js +5 -5
- package/lib/runner/tested-app.js +7 -7
- package/lib/screenshots/capturer.js +17 -17
- package/lib/screenshots/crop.js +8 -8
- package/lib/screenshots/index.js +6 -10
- package/lib/screenshots/utils.js +4 -4
- package/lib/services/compiler/host.js +8 -8
- package/lib/services/compiler/service.js +13 -13
- package/lib/services/compiler/test-run-proxy.js +8 -8
- package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +2 -2
- package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
- package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +3 -3
- package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +2 -2
- package/lib/services/serialization/test-structure.js +4 -4
- package/lib/services/utils/ipc/interfaces.js +1 -3
- package/lib/services/utils/ipc/io.js +3 -3
- package/lib/services/utils/ipc/message.js +2 -2
- package/lib/services/utils/ipc/proxy.js +4 -4
- package/lib/services/utils/ipc/transport.js +2 -2
- package/lib/shared/errors/index.js +9 -2
- package/lib/shared/errors/selector-error-ctor-callback.js +7 -3
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/browser-manipulation-queue.js +3 -3
- package/lib/test-run/commands/actions.js +66 -46
- package/lib/test-run/commands/assertion.js +3 -3
- package/lib/test-run/commands/base.js +2 -2
- package/lib/test-run/commands/browser-manipulation.js +8 -8
- package/lib/test-run/commands/observation.js +4 -4
- package/lib/test-run/commands/options.js +27 -12
- package/lib/test-run/commands/type.js +2 -1
- package/lib/test-run/commands/utils.js +3 -2
- package/lib/test-run/commands/validations/argument.js +19 -10
- package/lib/test-run/commands/validations/factories.js +10 -2
- package/lib/test-run/commands/validations/initializers.js +4 -4
- package/lib/test-run/debug-log.js +4 -4
- package/lib/test-run/execute-js-expression/index.js +4 -4
- package/lib/test-run/index.js +48 -41
- package/lib/test-run/request/create-request-options.js +9 -9
- package/lib/test-run/request/process-response-data.js +2 -2
- package/lib/test-run/request/send.js +5 -5
- package/lib/testcafe.js +8 -4
- package/lib/utils/check-file-path.js +2 -2
- package/lib/utils/check-url.js +2 -2
- package/lib/utils/correct-file-path.js +4 -4
- package/lib/utils/delegated-api.js +1 -1
- package/lib/utils/detect-ffmpeg.js +3 -3
- package/lib/utils/diff/colors.js +2 -2
- package/lib/utils/diff/index.js +11 -7
- package/lib/utils/diff/util.js +5 -5
- package/lib/utils/diff.js +4 -4
- package/lib/utils/escape-user-agent.js +2 -2
- package/lib/utils/execute-fn-with-timeout.js +2 -2
- package/lib/utils/get-browser.js +2 -2
- package/lib/utils/get-filter-fn.js +4 -4
- package/lib/utils/get-options/base.js +2 -2
- package/lib/utils/get-options/compiler.js +2 -2
- package/lib/utils/get-options/dashboard.js +2 -2
- package/lib/utils/get-options/get-assertion-timeout.js +1 -1
- package/lib/utils/get-options/index.js +4 -2
- package/lib/utils/get-options/meta.js +2 -2
- package/lib/utils/get-options/quarantine.js +8 -6
- package/lib/utils/get-options/screenshot.js +2 -2
- package/lib/utils/get-options/skip-js-errors.js +35 -0
- package/lib/utils/get-options/ssl.js +6 -6
- package/lib/utils/get-options/video.js +2 -2
- package/lib/utils/is-password-input.js +1 -1
- package/lib/utils/log-entry.js +2 -2
- package/lib/utils/make-reg-exp.js +19 -6
- package/lib/utils/moment-loader.js +2 -2
- package/lib/utils/parse-file-list.js +7 -7
- package/lib/utils/path-pattern.js +4 -4
- package/lib/utils/prepare-reporters.js +2 -2
- package/lib/utils/prerender-callsite.js +6 -6
- package/lib/utils/process.js +7 -7
- package/lib/utils/promisified-functions.js +14 -14
- package/lib/utils/raw-command-callsite-record.js +2 -2
- package/lib/utils/resolve-path-relatively-cwd.js +2 -2
- package/lib/utils/string.js +3 -3
- package/lib/utils/temp-directory/cleanup-process/index.js +6 -6
- package/lib/utils/temp-directory/cleanup-process/worker.js +4 -4
- package/lib/utils/temp-directory/index.js +6 -6
- package/lib/utils/temp-directory/lockfile.js +2 -2
- package/lib/video-recorder/process.js +6 -6
- package/lib/video-recorder/recorder.js +9 -9
- package/lib/video-recorder/test-run-video-recorder.js +2 -2
- package/package.json +8 -7
- package/ts-defs/index.d.ts +46 -7
- package/ts-defs/selectors.d.ts +39 -0
- package/ts-defs/testcafe-scripts.d.ts +39 -0
|
@@ -48,7 +48,7 @@ class TestFileParserBase {
|
|
|
48
48
|
this.tokenType = tokenType;
|
|
49
49
|
}
|
|
50
50
|
static formatComputedName(line) {
|
|
51
|
-
return util_1.format(COMPUTED_NAME_TEXT_TMP, line);
|
|
51
|
+
return (0, util_1.format)(COMPUTED_NAME_TEXT_TMP, line);
|
|
52
52
|
}
|
|
53
53
|
isAsyncFn( /* token */) {
|
|
54
54
|
throw new Error('Not implemented');
|
|
@@ -213,7 +213,7 @@ class TestFileParserBase {
|
|
|
213
213
|
async readFile(filePath) {
|
|
214
214
|
let fileContent = '';
|
|
215
215
|
try {
|
|
216
|
-
fileContent = await promisified_functions_1.readFile(filePath, 'utf8');
|
|
216
|
+
fileContent = await (0, promisified_functions_1.readFile)(filePath, 'utf8');
|
|
217
217
|
}
|
|
218
218
|
catch (err) {
|
|
219
219
|
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindSpecifiedTestSource, filePath);
|
|
@@ -229,4 +229,4 @@ class TestFileParserBase {
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
exports.TestFileParserBase = TestFileParserBase;
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlLXBhcnNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS90ZXN0LWZpbGUtcGFyc2VyLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZEO0FBQzdELCtCQUE4QjtBQUM5QixrREFBb0Q7QUFDcEQsOENBQW9EO0FBRXBELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakQsTUFBTSxzQkFBc0IsR0FBSSwyQkFBMkIsQ0FBQztBQUM1RCxNQUFNLGtCQUFrQixHQUFRLE1BQU0sQ0FBQztBQUV2QyxTQUFTLE1BQU0sQ0FBRSxHQUFHO0lBQ2hCLHVEQUF1RDtJQUN2RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV2QyxzSEFBc0g7SUFDdEgsOEhBQThIO0lBQzlILG1EQUFtRDtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQzlCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUV6QixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBYSxPQUFPO0lBQ2hCLFlBQWEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQU8sS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQVMsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQU8sRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0NBQ0o7QUFWRCwwQkFVQztBQUVELE1BQWEsSUFBSTtJQUNiLFlBQWEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQU8sS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQVMsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0NBQ0o7QUFURCxvQkFTQztBQUVELE1BQWEsa0JBQWtCO0lBQzNCLFlBQWEsU0FBUztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFFLElBQUk7UUFDM0IsT0FBTyxhQUFNLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFNBQVMsRUFBRSxXQUFXO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsU0FBUyxFQUFFLFdBQVc7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlLEVBQUUsV0FBVztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksRUFBRSx3QkFBd0I7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxnQkFBZ0IsRUFBRSxXQUFXO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxFQUFFLFNBQVM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLEVBQUUsV0FBVztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELG9CQUFvQixFQUFFLFdBQVc7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhLEVBQUUsV0FBVztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssRUFBRSxvQkFBb0I7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFZLEVBQUUsV0FBVztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsRUFBRSxXQUFXO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBZTtRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFFLEVBQUU7UUFDUCxPQUFPLEVBQUUsS0FBSyxTQUFTLElBQUksRUFBRSxLQUFLLE1BQU0sQ0FBQztJQUM3QyxDQUFDO0lBRUQsZUFBZSxDQUFFLEtBQUs7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCO1lBQ25FLE9BQU8sRUFBRSxDQUFDO1FBRWQsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBRXpDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFakIsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZUFBZSxDQUFFLEtBQUs7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztZQUMxRCxPQUFPLElBQUksQ0FBQztRQUVoQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBRTdCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFekMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDakQ7YUFFSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFFLFNBQVM7UUFDbEIsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWM7Z0JBQ3hELE9BQU8sU0FBUyxDQUFDO1lBRXJCLE1BQU0sTUFBTSxHQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxNQUFNLGlCQUFpQixHQUFHLFVBQVUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDO1lBRWpGLElBQUksaUJBQWlCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNO2dCQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV6RCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBRSxhQUFhLEVBQUUsS0FBSyxHQUFHLGFBQWE7O1FBQ2xELE1BQU0sUUFBUSxHQUFHLE9BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsMENBQUUsSUFBSSxNQUFLLGtCQUFrQixJQUFJLE9BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksMENBQUUsSUFBSSxNQUFLLGtCQUFrQixDQUFDO1FBRTFHLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUV0RSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQzdFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELHdCQUF3QixDQUFFLElBQUksRUFBRSxLQUFLO1FBQ2pDLGtFQUFrRTtRQUNsRSxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFFeEQsK0RBQStEO1FBQy9ELE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QjtZQUNoRCx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFakUscUZBQXFGO1FBQ3JGLE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztRQUUxRCxPQUFPLFlBQVksSUFBSSxZQUFZLElBQUksVUFBVSxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZLENBQUUsS0FBSztRQUNmLE1BQU0sU0FBUyxHQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxRQUFRLGFBQWEsRUFBRTtZQUNuQixLQUFLLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQztZQUNuQyxLQUFLLFNBQVMsQ0FBQyx1QkFBdUI7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFL0MsS0FBSyxTQUFTLENBQUMsbUJBQW1CLENBQUM7WUFDbkMsS0FBSyxTQUFTLENBQUMsa0JBQWtCO2dCQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO29CQUNyQixPQUFPLElBQUksQ0FBQztnQkFFaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXBFLEtBQUssU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLEtBQUssU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzlCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7Z0JBRTFGLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDbEU7WUFDRCxLQUFLLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDOUIsS0FBSyxTQUFTLENBQUMsd0JBQXdCLENBQUM7WUFDeEMsS0FBSyxTQUFTLENBQUMsd0JBQXdCO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckMsS0FBSyxTQUFTLENBQUMsZUFBZTtnQkFDMUIsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELG9CQUFvQixDQUFFLE9BQU87UUFDekIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFDLElBQUksUUFBUTtnQkFDUixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUUsT0FBTztRQUNaLE1BQU0sUUFBUSxHQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUTtnQkFBRSxPQUFPO1lBRXBELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUVsRyxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUU3Qix5SEFBeUg7WUFDekgsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckQsTUFBTSxhQUFhLEdBQUksY0FBYyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2xFLE1BQU0sSUFBSSxHQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUV0RyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFFLFFBQVE7UUFDcEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUk7WUFDQSxXQUFXLEdBQUcsTUFBTSxnQ0FBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sR0FBRyxFQUFFO1lBQ1IsTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsRjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFFLFFBQVE7UUFDdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsbUJBQW1CLENBQUUsSUFBSTtRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKO0FBeFBELGdEQXdQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHJvbWlzaWZpZWQtZnVuY3Rpb25zJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuXG5jb25zdCBNRVRIT0RTX1NQRUNJRllJTkdfTkFNRSA9IFsnb25seScsICdza2lwJ107XG5jb25zdCBDT01QVVRFRF9OQU1FX1RFWFRfVE1QICA9ICc8Y29tcHV0ZWQgbmFtZT4obGluZTogJXMpJztcbmNvbnN0IFNLSVBfUFJPUEVSVFlfTkFNRSAgICAgID0gJ3NraXAnO1xuXG5mdW5jdGlvbiBnZXRMb2MgKGxvYykge1xuICAgIC8vIE5PVEU6IERvbid0IG1vZGlmeSB0aGUgQmFiZWwncyBwYXJzZXIgZGF0YSBzdHJ1Y3R1cmVcbiAgICBjb25zdCBsb2NDb3B5ID0gT2JqZWN0LmFzc2lnbih7fSwgbG9jKTtcblxuICAgIC8vIE5PVEU6ICdmaWxlTmFtZScgYW5kICdpZGVudGlmaWVyTmFtZScgZmllbGRzIHdpdGggJ3VuZGVmaW5lZCcgdmFsdWVzIGFkZGVkIGluIHRoZSBTb3VyY2VMb2NhdGlvbiBjbGFzcyBjb25zdHJ1Y3Rvci5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmFiZWwvYmFiZWwvYmxvYi9kNTFhYTZkNzYxNzdiNTQ0NTkwY2RmZTM4NjhmOWY0ZDMzZDg4MTNkL3BhY2thZ2VzL2JhYmVsLXBhcnNlci9zcmMvdXRpbC9sb2NhdGlvbi5qcyNMMjJcbiAgICAvLyBTaW5jZSB0aGlzIGlzIHVzZWxlc3MgaW5mb3JtYXRpb24sIHdlIHJlbW92ZSBpdC5cbiAgICBkZWxldGUgbG9jQ29weS5maWxlbmFtZTtcbiAgICBkZWxldGUgbG9jQ29weS5pZGVudGlmaWVyTmFtZTtcbiAgICBkZWxldGUgbG9jQ29weS5zdGFydC5pbmRleDtcbiAgICBkZWxldGUgbG9jQ29weS5lbmQuaW5kZXg7XG5cbiAgICByZXR1cm4gbG9jQ29weTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpeHR1cmUge1xuICAgIGNvbnN0cnVjdG9yIChuYW1lLCBzdGFydCwgZW5kLCBsb2MsIG1ldGEsIGlzU2tpcHBlZCkge1xuICAgICAgICB0aGlzLm5hbWUgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMubG9jICAgICAgID0gZ2V0TG9jKGxvYyk7XG4gICAgICAgIHRoaXMuc3RhcnQgICAgID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kICAgICAgID0gZW5kO1xuICAgICAgICB0aGlzLm1ldGEgICAgICA9IG1ldGE7XG4gICAgICAgIHRoaXMudGVzdHMgICAgID0gW107XG4gICAgICAgIHRoaXMuaXNTa2lwcGVkID0gISFpc1NraXBwZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gICAgY29uc3RydWN0b3IgKG5hbWUsIHN0YXJ0LCBlbmQsIGxvYywgbWV0YSwgaXNTa2lwcGVkKSB7XG4gICAgICAgIHRoaXMubmFtZSAgICAgID0gbmFtZTtcbiAgICAgICAgdGhpcy5sb2MgICAgICAgPSBnZXRMb2MobG9jKTtcbiAgICAgICAgdGhpcy5zdGFydCAgICAgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmQgICAgICAgPSBlbmQ7XG4gICAgICAgIHRoaXMubWV0YSAgICAgID0gbWV0YTtcbiAgICAgICAgdGhpcy5pc1NraXBwZWQgPSAhIWlzU2tpcHBlZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0RmlsZVBhcnNlckJhc2Uge1xuICAgIGNvbnN0cnVjdG9yICh0b2tlblR5cGUpIHtcbiAgICAgICAgdGhpcy50b2tlblR5cGUgPSB0b2tlblR5cGU7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdENvbXB1dGVkTmFtZSAobGluZSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0KENPTVBVVEVEX05BTUVfVEVYVF9UTVAsIGxpbmUpO1xuICAgIH1cblxuICAgIGlzQXN5bmNGbiAoLyogdG9rZW4gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRSVmFsdWUgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0RnVuY3Rpb25Cb2R5ICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGZvcm1hdEZuRGF0YSAoLyogbmFtZSwgdmFsdWUsIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgYW5hbHl6ZU1lbWJlckV4cCAoLyogdG9rZW4gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBmb3JtYXRGbkFyZyAoLyogYXJnICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0Rm5DYWxsICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGdldFRhZ2dlZFRlbXBsYXRlRXhwICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGFuYWx5emVGbkNhbGwgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcGFyc2UgKC8qIGZpbGVQYXRoLCBjb2RlICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW5UeXBlICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGdldENhbGxlZVRva2VuICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGdldE1lbWJlckZuTmFtZSAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0S2V5VmFsdWUgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGdldFN0cmluZ1ZhbHVlICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBpc0FwaUZuIChmbikge1xuICAgICAgICByZXR1cm4gZm4gPT09ICdmaXh0dXJlJyB8fCBmbiA9PT0gJ3Rlc3QnO1xuICAgIH1cblxuICAgIHNlcmlhbGl6ZU9iakV4cCAodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VG9rZW5UeXBlKHRva2VuKSAhPT0gdGhpcy50b2tlblR5cGUuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24pXG4gICAgICAgICAgICByZXR1cm4ge307XG5cbiAgICAgICAgcmV0dXJuIHRva2VuLnByb3BlcnRpZXMucmVkdWNlKChvYmosIHByb3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gdGhpcy5nZXRLZXlWYWx1ZShwcm9wKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiB7fTtcblxuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHByb2Nlc3NNZXRhQXJncyAodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VG9rZW5UeXBlKHRva2VuKSAhPT0gdGhpcy50b2tlblR5cGUuQ2FsbEV4cHJlc3Npb24pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBhcmdzID0gdG9rZW4uYXJndW1lbnRzO1xuXG4gICAgICAgIGxldCBtZXRhID0ge307XG5cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0U3RyaW5nVmFsdWUoYXJnc1sxXSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4ge307XG5cbiAgICAgICAgICAgIG1ldGEgPSB7IFt0aGlzLmZvcm1hdEZuQXJnKGFyZ3NbMF0pXTogdmFsdWUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgbWV0YSA9IHRoaXMuc2VyaWFsaXplT2JqRXhwKGFyZ3NbMF0pO1xuXG4gICAgICAgIHJldHVybiBtZXRhO1xuICAgIH1cblxuICAgIGdldE1ldGFJbmZvIChjYWxsU3RhY2spIHtcbiAgICAgICAgcmV0dXJuIGNhbGxTdGFjay5yZWR1Y2UoKG1ldGFDYWxscywgZXhwKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRUb2tlblR5cGUoZXhwKSAhPT0gdGhpcy50b2tlblR5cGUuQ2FsbEV4cHJlc3Npb24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFDYWxscztcblxuICAgICAgICAgICAgY29uc3QgY2FsbGVlICAgICAgICAgICAgPSB0aGlzLmdldENhbGxlZVRva2VuKGV4cCk7XG4gICAgICAgICAgICBjb25zdCBjYWxsZWVUeXBlICAgICAgICA9IHRoaXMuZ2V0VG9rZW5UeXBlKGNhbGxlZSk7XG4gICAgICAgICAgICBjb25zdCBpc0NhbGxlZU1lbWJlckV4cCA9IGNhbGxlZVR5cGUgPT09IHRoaXMudG9rZW5UeXBlLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjtcblxuICAgICAgICAgICAgaWYgKGlzQ2FsbGVlTWVtYmVyRXhwICYmIHRoaXMuZ2V0TWVtYmVyRm5OYW1lKGV4cCkgPT09ICdtZXRhJylcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMucHJvY2Vzc01ldGFBcmdzKGV4cCldLmNvbmNhdChtZXRhQ2FsbHMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWV0YUNhbGxzO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzU2tpcHBlZCAob3JpZ2luYWxUb2tlbiwgdG9rZW4gPSBvcmlnaW5hbFRva2VuKSB7XG4gICAgICAgIGNvbnN0IG5lZWRTa2lwID0gdG9rZW4/LnByb3BlcnR5Py5uYW1lID09PSBTS0lQX1BST1BFUlRZX05BTUUgfHwgdG9rZW4/Lm5hbWU/LnRleHQgPT09IFNLSVBfUFJPUEVSVFlfTkFNRTtcblxuICAgICAgICBpZiAoIW5lZWRTa2lwKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2VuLmNhbGxlZSB8fCB0b2tlbi50YWcgfHwgdG9rZW4ub2JqZWN0IHx8IHRva2VuLmV4cHJlc3Npb247XG5cbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA/IFRlc3RGaWxlUGFyc2VyQmFzZS5pc1NraXBwZWQob3JpZ2luYWxUb2tlbiwgdG9rZW4pIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjaGVja0V4cERlZmluZVRhcmdldE5hbWUgKHR5cGUsIGFwaUZuKSB7XG4gICAgICAgIC8vTk9URTogZml4dHVyZSgnZml4dHVyZU5hbWUnKS5jaGFpbkZuIG9yIHRlc3QoJ3Rlc3ROYW1lJykuY2hhaW5GblxuICAgICAgICBjb25zdCBpc0RpcmVjdENhbGwgPSB0eXBlID09PSB0aGlzLnRva2VuVHlwZS5JZGVudGlmaWVyO1xuXG4gICAgICAgIC8vTk9URTogZml4dHVyZS5za2lwKCdmaXh0dXJlTmFtZScpLCB0ZXN0Lm9ubHkoJ3Rlc3ROYW1lJykgZXRjLlxuICAgICAgICBjb25zdCBpc01lbWJlckNhbGwgPSB0eXBlID09PSB0aGlzLnRva2VuVHlwZS5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSE9EU19TUEVDSUZZSU5HX05BTUUuaW5kZXhPZihhcGlGbikgPiAtMTtcblxuICAgICAgICAvL05PVEU6IGZpeHR1cmUuYmVmb3JlKCkuYWZ0ZXIoKSgnZml4dHVyZU5hbWUnKSwgdGVzdC5iZWZvcmUoKWB0ZXN0TmFtZWAuYWZ0ZXIoKSBldGMuXG4gICAgICAgIGNvbnN0IGlzVGFpbENhbGwgPSB0eXBlID09PSB0aGlzLnRva2VuVHlwZS5DYWxsRXhwcmVzc2lvbjtcblxuICAgICAgICByZXR1cm4gaXNEaXJlY3RDYWxsIHx8IGlzTWVtYmVyQ2FsbCB8fCBpc1RhaWxDYWxsO1xuICAgIH1cblxuICAgIGFuYWx5emVUb2tlbiAodG9rZW4pIHtcbiAgICAgICAgY29uc3QgdG9rZW5UeXBlICAgICA9IHRoaXMudG9rZW5UeXBlO1xuICAgICAgICBjb25zdCBjdXJyVG9rZW5UeXBlID0gdGhpcy5nZXRUb2tlblR5cGUodG9rZW4pO1xuXG4gICAgICAgIHN3aXRjaCAoY3VyclRva2VuVHlwZSkge1xuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuRXhwcmVzc2lvblN0YXRlbWVudDpcbiAgICAgICAgICAgIGNhc2UgdG9rZW5UeXBlLlR5cGVBc3NlcnRpb25FeHByZXNzaW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFuYWx5emVUb2tlbih0b2tlbi5leHByZXNzaW9uKTtcblxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuRnVuY3Rpb25EZWNsYXJhdGlvbjpcbiAgICAgICAgICAgIGNhc2UgdG9rZW5UeXBlLkZ1bmN0aW9uRXhwcmVzc2lvbjpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FzeW5jRm4odG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZ1bmN0aW9uQm9keSh0b2tlbikubWFwKHRoaXMuYW5hbHl6ZVRva2VuLCB0aGlzKTtcblxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbjpcbiAgICAgICAgICAgIGNhc2UgdG9rZW5UeXBlLlZhcmlhYmxlU3RhdGVtZW50OiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWFibGVWYWx1ZSA9IHRoaXMuZ2V0UlZhbHVlKHRva2VuKTsgLy8gU2tpcCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgbGlrZSBgdmFyIGZvbztgXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVWYWx1ZSA/IHRoaXMuYW5hbHl6ZVRva2VuKHZhcmlhYmxlVmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdG9rZW5UeXBlLkNhbGxFeHByZXNzaW9uOlxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOlxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFuYWx5emVGbkNhbGwodG9rZW4pO1xuXG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5SZXR1cm5TdGF0ZW1lbnQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLmFyZ3VtZW50ID8gdGhpcy5hbmFseXplVG9rZW4odG9rZW4uYXJndW1lbnQpIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbGxlY3RUZXN0Q2FmZUNhbGxzIChhc3RCb2R5KSB7XG4gICAgICAgIGxldCBjYWxscyA9IFtdO1xuXG4gICAgICAgIGFzdEJvZHkuZm9yRWFjaCh0b2tlbiA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYWxsRXhwcyA9IHRoaXMuYW5hbHl6ZVRva2VuKHRva2VuKTtcblxuICAgICAgICAgICAgaWYgKGNhbGxFeHBzKVxuICAgICAgICAgICAgICAgIGNhbGxzID0gY2FsbHMuY29uY2F0KGNhbGxFeHBzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxzO1xuICAgIH1cblxuICAgIGFuYWx5emUgKGFzdEJvZHkpIHtcbiAgICAgICAgY29uc3QgZml4dHVyZXMgICAgICAgICA9IFtdO1xuICAgICAgICBjb25zdCB0ZXN0Q2FmZUFQSUNhbGxzID0gdGhpcy5jb2xsZWN0VGVzdENhZmVDYWxscyhhc3RCb2R5KTtcblxuICAgICAgICB0ZXN0Q2FmZUFQSUNhbGxzLmZvckVhY2goY2FsbCA9PiB7XG4gICAgICAgICAgICBpZiAoIWNhbGwgfHwgdHlwZW9mIGNhbGwudmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICAgICAgICAgIGlmIChjYWxsLmZuTmFtZSA9PT0gJ2ZpeHR1cmUnKSB7XG4gICAgICAgICAgICAgICAgZml4dHVyZXMucHVzaChuZXcgRml4dHVyZShjYWxsLnZhbHVlLCBjYWxsLnN0YXJ0LCBjYWxsLmVuZCwgY2FsbC5sb2MsIGNhbGwubWV0YSwgY2FsbC5pc1NraXBwZWQpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmaXh0dXJlcy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICAgICAgLy8gTk9URTogSWYgdGhlIGZpeHR1cmUgaXMgc2tpcHBlZCwgbWFyayBhbGwgdGhlIHRlc3RzIGluIHRoZSBmaXh0dXJlIHNraXBwZWQsIG90aGVyd2lzZSwgdXNlIHRoZSBjdXJyZW50IHRlc3QgaWRlbnRpZmllclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEZpeHR1cmUgPSBmaXh0dXJlc1tmaXh0dXJlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RJc1NraXBwZWQgID0gY3VycmVudEZpeHR1cmUuaXNTa2lwcGVkIHx8IGNhbGwuaXNTa2lwcGVkO1xuICAgICAgICAgICAgY29uc3QgdGVzdCAgICAgICAgICAgPSBuZXcgVGVzdChjYWxsLnZhbHVlLCBjYWxsLnN0YXJ0LCBjYWxsLmVuZCwgY2FsbC5sb2MsIGNhbGwubWV0YSwgdGVzdElzU2tpcHBlZCk7XG5cbiAgICAgICAgICAgIGN1cnJlbnRGaXh0dXJlLnRlc3RzLnB1c2godGVzdCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaXh0dXJlcztcbiAgICB9XG5cbiAgICBhc3luYyByZWFkRmlsZSAoZmlsZVBhdGgpIHtcbiAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gJyc7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpbGVDb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRTcGVjaWZpZWRUZXN0U291cmNlLCBmaWxlUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsZUNvbnRlbnQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0VGVzdExpc3QgKGZpbGVQYXRoKSB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gYXdhaXQgdGhpcy5yZWFkRmlsZShmaWxlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgIH1cblxuICAgIGdldFRlc3RMaXN0RnJvbUNvZGUgKGNvZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UoY29kZSk7XG4gICAgfVxufVxuIl19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlLXBhcnNlci1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBpbGVyL3Rlc3QtZmlsZS90ZXN0LWZpbGUtcGFyc2VyLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZEO0FBQzdELCtCQUE4QjtBQUM5QixrREFBb0Q7QUFDcEQsOENBQW9EO0FBRXBELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakQsTUFBTSxzQkFBc0IsR0FBSSwyQkFBMkIsQ0FBQztBQUM1RCxNQUFNLGtCQUFrQixHQUFRLE1BQU0sQ0FBQztBQUV2QyxTQUFTLE1BQU0sQ0FBRSxHQUFHO0lBQ2hCLHVEQUF1RDtJQUN2RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV2QyxzSEFBc0g7SUFDdEgsOEhBQThIO0lBQzlILG1EQUFtRDtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDeEIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQzlCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUV6QixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBYSxPQUFPO0lBQ2hCLFlBQWEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQU8sS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQVMsR0FBRyxDQUFDO1FBQ3JCLElB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SyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFFLFFBQVE7UUFDcEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUk7WUFDQSxXQUFXLEdBQUcsTUFBTSxJQUFBLGdDQUFRLEVBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxHQUFHLEVBQUU7WUFDUixNQUFNLElBQUksc0JBQVksQ0FBQyxzQkFBYyxDQUFDLDZCQUE2QixFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUUsUUFBUTtRQUN2QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxJQUFJO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUF4UEQsZ0RBd1BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICcuLi8uLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5cbmNvbnN0IE1FVEhPRFNfU1BFQ0lGWUlOR19OQU1FID0gWydvbmx5JywgJ3NraXAnXTtcbmNvbnN0IENPTVBVVEVEX05BTUVfVEVYVF9UTVAgID0gJzxjb21wdXRlZCBuYW1lPihsaW5lOiAlcyknO1xuY29uc3QgU0tJUF9QUk9QRVJUWV9OQU1FICAgICAgPSAnc2tpcCc7XG5cbmZ1bmN0aW9uIGdldExvYyAobG9jKSB7XG4gICAgLy8gTk9URTogRG9uJ3QgbW9kaWZ5IHRoZSBCYWJlbCdzIHBhcnNlciBkYXRhIHN0cnVjdHVyZVxuICAgIGNvbnN0IGxvY0NvcHkgPSBPYmplY3QuYXNzaWduKHt9LCBsb2MpO1xuXG4gICAgLy8gTk9URTogJ2ZpbGVOYW1lJyBhbmQgJ2lkZW50aWZpZXJOYW1lJyBmaWVsZHMgd2l0aCAndW5kZWZpbmVkJyB2YWx1ZXMgYWRkZWQgaW4gdGhlIFNvdXJjZUxvY2F0aW9uIGNsYXNzIGNvbnN0cnVjdG9yLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL2Q1MWFhNmQ3NjE3N2I1NDQ1OTBjZGZlMzg2OGY5ZjRkMzNkODgxM2QvcGFja2FnZXMvYmFiZWwtcGFyc2VyL3NyYy91dGlsL2xvY2F0aW9uLmpzI0wyMlxuICAgIC8vIFNpbmNlIHRoaXMgaXMgdXNlbGVzcyBpbmZvcm1hdGlvbiwgd2UgcmVtb3ZlIGl0LlxuICAgIGRlbGV0ZSBsb2NDb3B5LmZpbGVuYW1lO1xuICAgIGRlbGV0ZSBsb2NDb3B5LmlkZW50aWZpZXJOYW1lO1xuICAgIGRlbGV0ZSBsb2NDb3B5LnN0YXJ0LmluZGV4O1xuICAgIGRlbGV0ZSBsb2NDb3B5LmVuZC5pbmRleDtcblxuICAgIHJldHVybiBsb2NDb3B5O1xufVxuXG5leHBvcnQgY2xhc3MgRml4dHVyZSB7XG4gICAgY29uc3RydWN0b3IgKG5hbWUsIHN0YXJ0LCBlbmQsIGxvYywgbWV0YSwgaXNTa2lwcGVkKSB7XG4gICAgICAgIHRoaXMubmFtZSAgICAgID0gbmFtZTtcbiAgICAgICAgdGhpcy5sb2MgICAgICAgPSBnZXRMb2MobG9jKTtcbiAgICAgICAgdGhpcy5zdGFydCAgICAgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmQgICAgICAgPSBlbmQ7XG4gICAgICAgIHRoaXMubWV0YSAgICAgID0gbWV0YTtcbiAgICAgICAgdGhpcy50ZXN0cyAgICAgPSBbXTtcbiAgICAgICAgdGhpcy5pc1NraXBwZWQgPSAhIWlzU2tpcHBlZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0IHtcbiAgICBjb25zdHJ1Y3RvciAobmFtZSwgc3RhcnQsIGVuZCwgbG9jLCBtZXRhLCBpc1NraXBwZWQpIHtcbiAgICAgICAgdGhpcy5uYW1lICAgICAgPSBuYW1lO1xuICAgICAgICB0aGlzLmxvYyAgICAgICA9IGdldExvYyhsb2MpO1xuICAgICAgICB0aGlzLnN0YXJ0ICAgICA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmVuZCAgICAgICA9IGVuZDtcbiAgICAgICAgdGhpcy5tZXRhICAgICAgPSBtZXRhO1xuICAgICAgICB0aGlzLmlzU2tpcHBlZCA9ICEhaXNTa2lwcGVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3RGaWxlUGFyc2VyQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKHRva2VuVHlwZSkge1xuICAgICAgICB0aGlzLnRva2VuVHlwZSA9IHRva2VuVHlwZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9ybWF0Q29tcHV0ZWROYW1lIChsaW5lKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQoQ09NUFVURURfTkFNRV9URVhUX1RNUCwgbGluZSk7XG4gICAgfVxuXG4gICAgaXNBc3luY0ZuICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGdldFJWYWx1ZSAoLyogdG9rZW4gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRGdW5jdGlvbkJvZHkgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZm9ybWF0Rm5EYXRhICgvKiBuYW1lLCB2YWx1ZSwgdG9rZW4gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBhbmFseXplTWVtYmVyRXhwICgvKiB0b2tlbiAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGZvcm1hdEZuQXJnICgvKiBhcmcgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRGbkNhbGwgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0VGFnZ2VkVGVtcGxhdGVFeHAgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgYW5hbHl6ZUZuQ2FsbCAoLyogdG9rZW4gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBwYXJzZSAoLyogZmlsZVBhdGgsIGNvZGUgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRUb2tlblR5cGUgKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0Q2FsbGVlVG9rZW4gKC8qIHRva2VuICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0TWVtYmVyRm5OYW1lICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBnZXRLZXlWYWx1ZSAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgZ2V0U3RyaW5nVmFsdWUgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIGlzQXBpRm4gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbiA9PT0gJ2ZpeHR1cmUnIHx8IGZuID09PSAndGVzdCc7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplT2JqRXhwICh0b2tlbikge1xuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblR5cGUodG9rZW4pICE9PSB0aGlzLnRva2VuVHlwZS5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbilcbiAgICAgICAgICAgIHJldHVybiB7fTtcblxuICAgICAgICByZXR1cm4gdG9rZW4ucHJvcGVydGllcy5yZWR1Y2UoKG9iaiwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldEtleVZhbHVlKHByb3ApO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIHt9O1xuXG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc01ldGFBcmdzICh0b2tlbikge1xuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblR5cGUodG9rZW4pICE9PSB0aGlzLnRva2VuVHlwZS5DYWxsRXhwcmVzc2lvbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0b2tlbi5hcmd1bWVudHM7XG5cbiAgICAgICAgbGV0IG1ldGEgPSB7fTtcblxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRTdHJpbmdWYWx1ZShhcmdzWzFdKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiB7fTtcblxuICAgICAgICAgICAgbWV0YSA9IHsgW3RoaXMuZm9ybWF0Rm5BcmcoYXJnc1swXSldOiB2YWx1ZSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICBtZXRhID0gdGhpcy5zZXJpYWxpemVPYmpFeHAoYXJnc1swXSk7XG5cbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfVxuXG4gICAgZ2V0TWV0YUluZm8gKGNhbGxTdGFjaykge1xuICAgICAgICByZXR1cm4gY2FsbFN0YWNrLnJlZHVjZSgobWV0YUNhbGxzLCBleHApID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldFRva2VuVHlwZShleHApICE9PSB0aGlzLnRva2VuVHlwZS5DYWxsRXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YUNhbGxzO1xuXG4gICAgICAgICAgICBjb25zdCBjYWxsZWUgICAgICAgICAgICA9IHRoaXMuZ2V0Q2FsbGVlVG9rZW4oZXhwKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxlZVR5cGUgICAgICAgID0gdGhpcy5nZXRUb2tlblR5cGUoY2FsbGVlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FsbGVlTWVtYmVyRXhwID0gY2FsbGVlVHlwZSA9PT0gdGhpcy50b2tlblR5cGUuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uO1xuXG4gICAgICAgICAgICBpZiAoaXNDYWxsZWVNZW1iZXJFeHAgJiYgdGhpcy5nZXRNZW1iZXJGbk5hbWUoZXhwKSA9PT0gJ21ldGEnKVxuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy5wcm9jZXNzTWV0YUFyZ3MoZXhwKV0uY29uY2F0KG1ldGFDYWxscyk7XG5cbiAgICAgICAgICAgIHJldHVybiBtZXRhQ2FsbHM7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNTa2lwcGVkIChvcmlnaW5hbFRva2VuLCB0b2tlbiA9IG9yaWdpbmFsVG9rZW4pIHtcbiAgICAgICAgY29uc3QgbmVlZFNraXAgPSB0b2tlbj8ucHJvcGVydHk/Lm5hbWUgPT09IFNLSVBfUFJPUEVSVFlfTkFNRSB8fCB0b2tlbj8ubmFtZT8udGV4dCA9PT0gU0tJUF9QUk9QRVJUWV9OQU1FO1xuXG4gICAgICAgIGlmICghbmVlZFNraXApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW4uY2FsbGVlIHx8IHRva2VuLnRhZyB8fCB0b2tlbi5vYmplY3QgfHwgdG9rZW4uZXhwcmVzc2lvbjtcblxuICAgICAgICAgICAgcmV0dXJuIHRva2VuID8gVGVzdEZpbGVQYXJzZXJCYXNlLmlzU2tpcHBlZChvcmlnaW5hbFRva2VuLCB0b2tlbikgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNoZWNrRXhwRGVmaW5lVGFyZ2V0TmFtZSAodHlwZSwgYXBpRm4pIHtcbiAgICAgICAgLy9OT1RFOiBmaXh0dXJlKCdmaXh0dXJlTmFtZScpLmNoYWluRm4gb3IgdGVzdCgndGVzdE5hbWUnKS5jaGFpbkZuXG4gICAgICAgIGNvbnN0IGlzRGlyZWN0Q2FsbCA9IHR5cGUgPT09IHRoaXMudG9rZW5UeXBlLklkZW50aWZpZXI7XG5cbiAgICAgICAgLy9OT1RFOiBmaXh0dXJlLnNraXAoJ2ZpeHR1cmVOYW1lJyksIHRlc3Qub25seSgndGVzdE5hbWUnKSBldGMuXG4gICAgICAgIGNvbnN0IGlzTWVtYmVyQ2FsbCA9IHR5cGUgPT09IHRoaXMudG9rZW5UeXBlLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIT0RTX1NQRUNJRllJTkdfTkFNRS5pbmRleE9mKGFwaUZuKSA+IC0xO1xuXG4gICAgICAgIC8vTk9URTogZml4dHVyZS5iZWZvcmUoKS5hZnRlcigpKCdmaXh0dXJlTmFtZScpLCB0ZXN0LmJlZm9yZSgpYHRlc3ROYW1lYC5hZnRlcigpIGV0Yy5cbiAgICAgICAgY29uc3QgaXNUYWlsQ2FsbCA9IHR5cGUgPT09IHRoaXMudG9rZW5UeXBlLkNhbGxFeHByZXNzaW9uO1xuXG4gICAgICAgIHJldHVybiBpc0RpcmVjdENhbGwgfHwgaXNNZW1iZXJDYWxsIHx8IGlzVGFpbENhbGw7XG4gICAgfVxuXG4gICAgYW5hbHl6ZVRva2VuICh0b2tlbikge1xuICAgICAgICBjb25zdCB0b2tlblR5cGUgICAgID0gdGhpcy50b2tlblR5cGU7XG4gICAgICAgIGNvbnN0IGN1cnJUb2tlblR5cGUgPSB0aGlzLmdldFRva2VuVHlwZSh0b2tlbik7XG5cbiAgICAgICAgc3dpdGNoIChjdXJyVG9rZW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5FeHByZXNzaW9uU3RhdGVtZW50OlxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuVHlwZUFzc2VydGlvbkV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5hbHl6ZVRva2VuKHRva2VuLmV4cHJlc3Npb24pO1xuXG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uOlxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuRnVuY3Rpb25FeHByZXNzaW9uOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXN5bmNGbih0b2tlbikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RnVuY3Rpb25Cb2R5KHRva2VuKS5tYXAodGhpcy5hbmFseXplVG9rZW4sIHRoaXMpO1xuXG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5WYXJpYWJsZURlY2xhcmF0aW9uOlxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuVmFyaWFibGVTdGF0ZW1lbnQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZVZhbHVlID0gdGhpcy5nZXRSVmFsdWUodG9rZW4pOyAvLyBTa2lwIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBsaWtlIGB2YXIgZm9vO2BcblxuICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVZhbHVlID8gdGhpcy5hbmFseXplVG9rZW4odmFyaWFibGVWYWx1ZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlblR5cGUuQ2FsbEV4cHJlc3Npb246XG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246XG4gICAgICAgICAgICBjYXNlIHRva2VuVHlwZS5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5hbHl6ZUZuQ2FsbCh0b2tlbik7XG5cbiAgICAgICAgICAgIGNhc2UgdG9rZW5UeXBlLlJldHVyblN0YXRlbWVudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uYXJndW1lbnQgPyB0aGlzLmFuYWx5emVUb2tlbih0b2tlbi5hcmd1bWVudCkgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29sbGVjdFRlc3RDYWZlQ2FsbHMgKGFzdEJvZHkpIHtcbiAgICAgICAgbGV0IGNhbGxzID0gW107XG5cbiAgICAgICAgYXN0Qm9keS5mb3JFYWNoKHRva2VuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxFeHBzID0gdGhpcy5hbmFseXplVG9rZW4odG9rZW4pO1xuXG4gICAgICAgICAgICBpZiAoY2FsbEV4cHMpXG4gICAgICAgICAgICAgICAgY2FsbHMgPSBjYWxscy5jb25jYXQoY2FsbEV4cHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY2FsbHM7XG4gICAgfVxuXG4gICAgYW5hbHl6ZSAoYXN0Qm9keSkge1xuICAgICAgICBjb25zdCBmaXh0dXJlcyAgICAgICAgID0gW107XG4gICAgICAgIGNvbnN0IHRlc3RDYWZlQVBJQ2FsbHMgPSB0aGlzLmNvbGxlY3RUZXN0Q2FmZUNhbGxzKGFzdEJvZHkpO1xuXG4gICAgICAgIHRlc3RDYWZlQVBJQ2FsbHMuZm9yRWFjaChjYWxsID0+IHtcbiAgICAgICAgICAgIGlmICghY2FsbCB8fCB0eXBlb2YgY2FsbC52YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGNhbGwuZm5OYW1lID09PSAnZml4dHVyZScpIHtcbiAgICAgICAgICAgICAgICBmaXh0dXJlcy5wdXNoKG5ldyBGaXh0dXJlKGNhbGwudmFsdWUsIGNhbGwuc3RhcnQsIGNhbGwuZW5kLCBjYWxsLmxvYywgY2FsbC5tZXRhLCBjYWxsLmlzU2tpcHBlZCkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWZpeHR1cmVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBOT1RFOiBJZiB0aGUgZml4dHVyZSBpcyBza2lwcGVkLCBtYXJrIGFsbCB0aGUgdGVzdHMgaW4gdGhlIGZpeHR1cmUgc2tpcHBlZCwgb3RoZXJ3aXNlLCB1c2UgdGhlIGN1cnJlbnQgdGVzdCBpZGVudGlmaWVyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Rml4dHVyZSA9IGZpeHR1cmVzW2ZpeHR1cmVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgdGVzdElzU2tpcHBlZCAgPSBjdXJyZW50Rml4dHVyZS5pc1NraXBwZWQgfHwgY2FsbC5pc1NraXBwZWQ7XG4gICAgICAgICAgICBjb25zdCB0ZXN0ICAgICAgICAgICA9IG5ldyBUZXN0KGNhbGwudmFsdWUsIGNhbGwuc3RhcnQsIGNhbGwuZW5kLCBjYWxsLmxvYywgY2FsbC5tZXRhLCB0ZXN0SXNTa2lwcGVkKTtcblxuICAgICAgICAgICAgY3VycmVudEZpeHR1cmUudGVzdHMucHVzaCh0ZXN0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZpeHR1cmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRGaWxlIChmaWxlUGF0aCkge1xuICAgICAgICBsZXQgZmlsZUNvbnRlbnQgPSAnJztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFNwZWNpZmllZFRlc3RTb3VyY2UsIGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWxlQ29udGVudDtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUZXN0TGlzdCAoZmlsZVBhdGgpIHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCB0aGlzLnJlYWRGaWxlKGZpbGVQYXRoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShmaWxlQ29udGVudCk7XG4gICAgfVxuXG4gICAgZ2V0VGVzdExpc3RGcm9tQ29kZSAoY29kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjb2RlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -15,7 +15,7 @@ const render_template_1 = __importDefault(require("../utils/render-template"));
|
|
|
15
15
|
const warning_message_1 = __importDefault(require("../notifications/warning-message"));
|
|
16
16
|
const log_1 = __importDefault(require("../cli/log"));
|
|
17
17
|
const formats_1 = require("./formats");
|
|
18
|
-
const DEBUG_LOGGER = debug_1.default('testcafe:configuration');
|
|
18
|
+
const DEBUG_LOGGER = (0, debug_1.default)('testcafe:configuration');
|
|
19
19
|
class Configuration {
|
|
20
20
|
constructor(configurationFilesNames) {
|
|
21
21
|
var _a;
|
|
@@ -35,7 +35,7 @@ class Configuration {
|
|
|
35
35
|
log_1.default.write(message);
|
|
36
36
|
}
|
|
37
37
|
static _showWarningForError(error, warningTemplate, ...args) {
|
|
38
|
-
const message = render_template_1.default(warningTemplate, ...args);
|
|
38
|
+
const message = (0, render_template_1.default)(warningTemplate, ...args);
|
|
39
39
|
Configuration._showConsoleWarning(message);
|
|
40
40
|
DEBUG_LOGGER(message);
|
|
41
41
|
DEBUG_LOGGER(error);
|
|
@@ -43,12 +43,12 @@ class Configuration {
|
|
|
43
43
|
static _resolveFilePath(path) {
|
|
44
44
|
if (!path)
|
|
45
45
|
return null;
|
|
46
|
-
return path_1.isAbsolute(path) ? path : resolve_path_relatively_cwd_1.default(path);
|
|
46
|
+
return (0, path_1.isAbsolute)(path) ? path : (0, resolve_path_relatively_cwd_1.default)(path);
|
|
47
47
|
}
|
|
48
48
|
_resolveFilePaths(filesNames) {
|
|
49
49
|
if (!filesNames)
|
|
50
50
|
return void 0;
|
|
51
|
-
return lodash_1.castArray(filesNames).reduce((result, name) => {
|
|
51
|
+
return (0, lodash_1.castArray)(filesNames).reduce((result, name) => {
|
|
52
52
|
const resolveFilePath = Configuration._resolveFilePath(name);
|
|
53
53
|
if (resolveFilePath)
|
|
54
54
|
result.push(resolveFilePath);
|
|
@@ -67,7 +67,7 @@ class Configuration {
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
mergeDeep(option, source) {
|
|
70
|
-
lodash_1.mergeWith(option.value, source, (targetValue, sourceValue, property) => {
|
|
70
|
+
(0, lodash_1.mergeWith)(option.value, source, (targetValue, sourceValue, property) => {
|
|
71
71
|
this._addOverriddenOptionIfNecessary(targetValue, sourceValue, option.source, `${option.name}.${property}`);
|
|
72
72
|
return sourceValue !== void 0 ? sourceValue : targetValue;
|
|
73
73
|
});
|
|
@@ -91,9 +91,9 @@ class Configuration {
|
|
|
91
91
|
return result;
|
|
92
92
|
}
|
|
93
93
|
clone(nonClonedOptions) {
|
|
94
|
-
const configuration = lodash_1.cloneDeep(this);
|
|
94
|
+
const configuration = (0, lodash_1.cloneDeep)(this);
|
|
95
95
|
if (nonClonedOptions) {
|
|
96
|
-
lodash_1.castArray(nonClonedOptions).forEach(key => {
|
|
96
|
+
(0, lodash_1.castArray)(nonClonedOptions).forEach(key => {
|
|
97
97
|
if (configuration._options[key])
|
|
98
98
|
configuration._options[key].value = this._options[key].value;
|
|
99
99
|
});
|
|
@@ -129,22 +129,22 @@ class Configuration {
|
|
|
129
129
|
this._filePath = existedConfigs[0].filePath;
|
|
130
130
|
if (existedConfigs.length > 1) {
|
|
131
131
|
const configPriorityListStr = this._getConfigPriorityListString();
|
|
132
|
-
Configuration._showConsoleWarning(render_template_1.default(warning_message_1.default.multipleConfigurationFilesFound, this._filePath, configPriorityListStr));
|
|
132
|
+
Configuration._showConsoleWarning((0, render_template_1.default)(warning_message_1.default.multipleConfigurationFilesFound, this._filePath, configPriorityListStr));
|
|
133
133
|
}
|
|
134
134
|
return existedConfigs[0].options;
|
|
135
135
|
}
|
|
136
136
|
async _isConfigurationFileExists(filePath = this.filePath) {
|
|
137
137
|
try {
|
|
138
|
-
await promisified_functions_1.stat(filePath);
|
|
138
|
+
await (0, promisified_functions_1.stat)(filePath);
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
141
|
catch (error) {
|
|
142
|
-
DEBUG_LOGGER(render_template_1.default(warning_message_1.default.cannotFindConfigurationFile, filePath, error.stack));
|
|
142
|
+
DEBUG_LOGGER((0, render_template_1.default)(warning_message_1.default.cannotFindConfigurationFile, filePath, error.stack));
|
|
143
143
|
return false;
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
static _hasExtention(filePath, extention) {
|
|
147
|
-
return !!filePath && path_1.extname(filePath) === extention;
|
|
147
|
+
return !!filePath && (0, path_1.extname)(filePath) === extention;
|
|
148
148
|
}
|
|
149
149
|
_isJSConfiguration(filePath = this.filePath) {
|
|
150
150
|
return Configuration._hasExtention(filePath, formats_1.JS_CONFIGURATION_EXTENSION);
|
|
@@ -166,7 +166,7 @@ class Configuration {
|
|
|
166
166
|
}
|
|
167
167
|
async _readConfigurationFileContent(filePath = this.filePath) {
|
|
168
168
|
try {
|
|
169
|
-
return await promisified_functions_1.readFile(filePath);
|
|
169
|
+
return await (0, promisified_functions_1.readFile)(filePath);
|
|
170
170
|
}
|
|
171
171
|
catch (error) {
|
|
172
172
|
Configuration._showWarningForError(error, warning_message_1.default.cannotReadConfigFile, filePath);
|
|
@@ -188,7 +188,7 @@ class Configuration {
|
|
|
188
188
|
return;
|
|
189
189
|
// NOTE: a hack to fix lodash type definitions
|
|
190
190
|
// @ts-ignore
|
|
191
|
-
options.value = lodash_1.castArray(options.value);
|
|
191
|
+
options.value = (0, lodash_1.castArray)(options.value);
|
|
192
192
|
}
|
|
193
193
|
_ensureOption(name, value, source) {
|
|
194
194
|
let option = null;
|
|
@@ -215,7 +215,7 @@ class Configuration {
|
|
|
215
215
|
this._overriddenOptions.push(optionName);
|
|
216
216
|
}
|
|
217
217
|
_setOptionValue(option, value) {
|
|
218
|
-
if (lodash_1.isPlainObject(option.value) && lodash_1.isPlainObject(value))
|
|
218
|
+
if ((0, lodash_1.isPlainObject)(option.value) && (0, lodash_1.isPlainObject)(value))
|
|
219
219
|
this.mergeDeep(option, value);
|
|
220
220
|
else {
|
|
221
221
|
this._addOverriddenOptionIfNecessary(option.value, value, option.source, option.name);
|
|
@@ -229,4 +229,4 @@ class Configuration {
|
|
|
229
229
|
}
|
|
230
230
|
exports.default = Configuration;
|
|
231
231
|
module.exports = exports.default;
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTJDO0FBQzNDLGtEQUEwQjtBQUMxQixrREFBMEI7QUFFMUIsbUNBS2dCO0FBRWhCLDBFQUFnRTtBQUNoRSxzREFBOEI7QUFDOUIsb0VBQTJDO0FBQzNDLHVHQUE0RTtBQUM1RSwrRUFBc0Q7QUFDdEQsdUZBQWdFO0FBQ2hFLHFEQUE2QjtBQUU3Qix1Q0FBcUY7QUFFckYsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFckQsTUFBcUIsYUFBYTtJQU05QixZQUFvQix1QkFBaUQ7O1FBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQVEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFNBQVMsU0FBWSxJQUFJLENBQUMsYUFBYSwwQ0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFUyxNQUFNLENBQUMsUUFBUSxDQUFFLEdBQVc7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFD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TUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLHNCQUFhLENBQUMsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQWUsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyx1QkFBWSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRVMsNEJBQTRCLENBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZO1FBQ2xFLE9BQU8sQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQUssRUFBRSxDQUFDO0lBQ3RGLENBQUM7Q0FDSjtBQS9SRCxnQ0ErUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRuYW1lLCBpc0Fic29sdXRlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IEpTT041IGZyb20gJ2pzb241JztcblxuaW1wb3J0IHtcbiAgICBjYXN0QXJyYXksXG4gICAgY2xvbmVEZWVwLFxuICAgIGlzUGxhaW5PYmplY3QsXG4gICAgbWVyZ2VXaXRoLFxufSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyByZWFkRmlsZSwgc3RhdCB9IGZyb20gJy4uL3V0aWxzL3Byb21pc2lmaWVkLWZ1bmN0aW9ucyc7XG5pbXBvcnQgT3B0aW9uIGZyb20gJy4vb3B0aW9uJztcbmltcG9ydCBPcHRpb25Tb3VyY2UgZnJvbSAnLi9vcHRpb24tc291cmNlJztcbmltcG9ydCByZXNvbHZlUGF0aFJlbGF0aXZlbHlDd2QgZnJvbSAnLi4vdXRpbHMvcmVzb2x2ZS1wYXRoLXJlbGF0aXZlbHktY3dkJztcbmltcG9ydCByZW5kZXJUZW1wbGF0ZSBmcm9tICcuLi91dGlscy9yZW5kZXItdGVtcGxhdGUnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9jbGkvbG9nJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSlNfQ09ORklHVVJBVElPTl9FWFRFTlNJT04sIEpTT05fQ09ORklHVVJBVElPTl9FWFRFTlNJT04gfSBmcm9tICcuL2Zvcm1hdHMnO1xuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6Y29uZmlndXJhdGlvbicpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM6IERpY3Rpb25hcnk8T3B0aW9uPjtcbiAgICBwcm90ZWN0ZWQgX2ZpbGVQYXRoPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmYXVsdFBhdGhzPzogc3RyaW5nW107XG4gICAgcHJvdGVjdGVkIF9vdmVycmlkZGVuT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbmZpZ3VyYXRpb25GaWxlc05hbWVzOiBzdHJpbmcgfCBudWxsIHwgc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFBhdGhzICAgICAgPSB0aGlzLl9yZXNvbHZlRmlsZVBhdGhzKGNvbmZpZ3VyYXRpb25GaWxlc05hbWVzKTtcbiAgICAgICAgdGhpcy5fZmlsZVBhdGggICAgICAgICAgPSB0aGlzLl9kZWZhdWx0UGF0aHM/LlswXTtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9mcm9tT2JqIChvYmo6IG9iamVjdCk6IERpY3Rpb25hcnk8T3B0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbmV3IE9wdGlvbihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9zaG93Q29uc29sZVdhcm5pbmcgKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBsb2cud3JpdGUobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Nob3dXYXJuaW5nRm9yRXJyb3IgKGVycm9yOiBFcnJvciwgd2FybmluZ1RlbXBsYXRlOiBzdHJpbmcsIC4uLmFyZ3M6IFRlbXBsYXRlQXJndW1lbnRzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSByZW5kZXJUZW1wbGF0ZSh3YXJuaW5nVGVtcGxhdGUsIC4uLmFyZ3MpO1xuXG4gICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dDb25zb2xlV2FybmluZyhtZXNzYWdlKTtcblxuICAgICAgICBERUJVR19MT0dHRVIobWVzc2FnZSk7XG4gICAgICAgIERFQlVHX0xPR0dFUihlcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Jlc29sdmVGaWxlUGF0aCAocGF0aDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXBhdGgpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICByZXR1cm4gaXNBYnNvbHV0ZShwYXRoKSA/IHBhdGggOiByZXNvbHZlUGF0aFJlbGF0aXZlbHlDd2QocGF0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzb2x2ZUZpbGVQYXRocyAoZmlsZXNOYW1lczogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWZpbGVzTmFtZXMpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBjYXN0QXJyYXkoZmlsZXNOYW1lcykucmVkdWNlKChyZXN1bHQsIG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVGaWxlUGF0aCA9IENvbmZpZ3VyYXRpb24uX3Jlc29sdmVGaWxlUGF0aChuYW1lKTtcblxuICAgICAgICAgICAgaWYgKHJlc29sdmVGaWxlUGF0aClcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyZXNvbHZlRmlsZVBhdGgpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBbXSBhcyBzdHJpbmdbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBtZXJnZU9wdGlvbnMgKG9wdGlvbnM6IG9iamVjdCk6IHZvaWQge1xuICAgICAgICBPYmplY3QuZW50cmllcyhvcHRpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKGtleSwgdmFsdWUsIE9wdGlvblNvdXJjZS5JbnB1dCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgdGhpcy5fc2V0T3B0aW9uVmFsdWUob3B0aW9uLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBtZXJnZURlZXAgKG9wdGlvbjogT3B0aW9uLCBzb3VyY2U6IG9iamVjdCk6IHZvaWQge1xuICAgICAgICBtZXJnZVdpdGgob3B0aW9uLnZhbHVlLCBzb3VyY2UsICh0YXJnZXRWYWx1ZTogT3B0aW9uVmFsdWUsIHNvdXJjZVZhbHVlOiBPcHRpb25WYWx1ZSwgcHJvcGVydHk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KHRhcmdldFZhbHVlLCBzb3VyY2VWYWx1ZSwgb3B0aW9uLnNvdXJjZSwgYCR7b3B0aW9uLm5hbWV9LiR7cHJvcGVydHl9YCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzb3VyY2VWYWx1ZSAhPT0gdm9pZCAwID8gc291cmNlVmFsdWUgOiB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvbiAoa2V5OiBzdHJpbmcpOiBPcHRpb25WYWx1ZSB7XG4gICAgICAgIGlmICgha2V5KVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9vcHRpb25zW2tleV07XG5cbiAgICAgICAgaWYgKCFvcHRpb24pXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBvcHRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvbnMgKHByZWRpY2F0ZT86IChuYW1lOiBzdHJpbmcsIG9wdGlvbjogT3B0aW9uKSA9PiBib29sZWFuKTogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgICAgICAgID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGluY2x1ZGVJblJlc3VsdCA9IHRydWU7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5fb3B0aW9ucykuZm9yRWFjaCgoW25hbWUsIG9wdGlvbl0pID0+IHtcbiAgICAgICAgICAgIGluY2x1ZGVJblJlc3VsdCA9IHByZWRpY2F0ZSA/IHByZWRpY2F0ZShuYW1lLCBvcHRpb24pIDogdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGluY2x1ZGVJblJlc3VsdClcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBvcHRpb24udmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb25lIChub25DbG9uZWRPcHRpb25zPzogc3RyaW5nIHwgc3RyaW5nW10pOiBDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNsb25lRGVlcCh0aGlzKTtcblxuICAgICAgICBpZiAobm9uQ2xvbmVkT3B0aW9ucykge1xuICAgICAgICAgICAgY2FzdEFycmF5KG5vbkNsb25lZE9wdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5fb3B0aW9uc1trZXldKVxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLl9vcHRpb25zW2tleV0udmFsdWUgPSB0aGlzLl9vcHRpb25zW2tleV0udmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZVBhdGggKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRQYXRocyAoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFBhdGhzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfbG9hZCAoKTogUHJvbWlzZTxudWxsIHwgb2JqZWN0PiB7XG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0UGF0aHM/Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ3MgPSBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmRlZmF1bHRQYXRocy5tYXAoYXN5bmMgZmlsZVBhdGggPT4ge1xuICAgICAgICAgICAgaWYgKCFhd2FpdCB0aGlzLl9pc0NvbmZpZ3VyYXRpb25GaWxlRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4geyBmaWxlUGF0aCwgb3B0aW9uczogbnVsbCB9O1xuXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IG51bGwgYXMgb2JqZWN0IHwgbnVsbDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzSlNDb25maWd1cmF0aW9uKGZpbGVQYXRoKSlcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5fcmVhZEpzQ29uZmlndXJhdGlvbkZpbGVDb250ZW50KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCA9IGF3YWl0IHRoaXMuX3JlYWRDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudClcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuX3BhcnNlQ29uZmlndXJhdGlvbkZpbGVDb250ZW50KGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyBmaWxlUGF0aCwgb3B0aW9ucyB9O1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgZXhpc3RlZENvbmZpZ3MgPSBjb25maWdzLmZpbHRlcihjb25maWcgPT4gISFjb25maWcub3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKCFleGlzdGVkQ29uZmlncy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB0aGlzLl9maWxlUGF0aCA9IGV4aXN0ZWRDb25maWdzWzBdLmZpbGVQYXRoO1xuXG4gICAgICAgIGlmIChleGlzdGVkQ29uZmlncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdQcmlvcml0eUxpc3RTdHIgPSB0aGlzLl9nZXRDb25maWdQcmlvcml0eUxpc3RTdHJpbmcoKTtcblxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMubXVsdGlwbGVDb25maWd1cmF0aW9uRmlsZXNGb3VuZCwgdGhpcy5fZmlsZVBhdGgsIGNvbmZpZ1ByaW9yaXR5TGlzdFN0cikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4aXN0ZWRDb25maWdzWzBdLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIF9pc0NvbmZpZ3VyYXRpb25GaWxlRXhpc3RzIChmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHN0YXQoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIERFQlVHX0xPR0dFUihyZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdEZpbmRDb25maWd1cmF0aW9uRmlsZSwgZmlsZVBhdGgsIGVycm9yLnN0YWNrKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9oYXNFeHRlbnRpb24gKGZpbGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4dGVudGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWZpbGVQYXRoICYmIGV4dG5hbWUoZmlsZVBhdGgpID09PSBleHRlbnRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0pTQ29uZmlndXJhdGlvbiAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBDb25maWd1cmF0aW9uLl9oYXNFeHRlbnRpb24oZmlsZVBhdGgsIEpTX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lzSlNPTkNvbmZpZ3VyYXRpb24gKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQ29uZmlndXJhdGlvbi5faGFzRXh0ZW50aW9uKGZpbGVQYXRoLCBKU09OX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX3JlYWRKc0NvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogb2JqZWN0IHwgbnVsbCB7XG4gICAgICAgIGlmIChmaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtmaWxlUGF0aF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZShmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93V2FybmluZ0ZvckVycm9yKGVycm9yLCBXQVJOSU5HX01FU1NBR0VTLmNhbm5vdFJlYWRDb25maWdGaWxlLCBmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3JlYWRDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQgKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IFByb21pc2U8QnVmZmVyIHwgbnVsbD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dXYXJuaW5nRm9yRXJyb3IoZXJyb3IsIFdBUk5JTkdfTUVTU0FHRVMuY2Fubm90UmVhZENvbmZpZ0ZpbGUsIGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uZmlndXJhdGlvbkZpbGVDb250ZW50IChjb25maWd1cmF0aW9uRmlsZUNvbnRlbnQ6IEJ1ZmZlciwgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogb2JqZWN0IHwgbnVsbCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTjUucGFyc2UoY29uZmlndXJhdGlvbkZpbGVDb250ZW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd1dhcm5pbmdGb3JFcnJvcihlcnJvciwgV0FSTklOR19NRVNTQUdFUy5jYW5ub3RQYXJzZUNvbmZpZ0ZpbGUsIGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlQXJyYXlPcHRpb24gKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fb3B0aW9uc1tuYW1lXTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgLy8gTk9URTogYSBoYWNrIHRvIGZpeCBsb2Rhc2ggdHlwZSBkZWZpbml0aW9uc1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBjYXN0QXJyYXkob3B0aW9ucy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbnN1cmVPcHRpb24gKG5hbWU6IHN0cmluZywgdmFsdWU6IE9wdGlvblZhbHVlLCBzb3VyY2U6IE9wdGlvblNvdXJjZSk6IE9wdGlvbiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBudWxsO1xuXG4gICAgICAgIGlmIChuYW1lIGluIHRoaXMuX29wdGlvbnMpXG4gICAgICAgICAgICBvcHRpb24gPSB0aGlzLl9vcHRpb25zW25hbWVdO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbiA9IG5ldyBPcHRpb24obmFtZSwgdmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnNbbmFtZV0gPSBvcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlT3B0aW9uV2l0aFZhbHVlIChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIG9wdGlvbi52YWx1ZSAgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIG9wdGlvbi5zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3NhcnkgKHZhbHVlMTogT3B0aW9uVmFsdWUsIHZhbHVlMjogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlLCBvcHRpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gT3B0aW9uU291cmNlLkRlZmF1bHQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYgKHZhbHVlMSA9PT0gdm9pZCAwIHx8IHZhbHVlMiA9PT0gdm9pZCAwIHx8IHZhbHVlMSA9PT0gdmFsdWUyIHx8IHNvdXJjZSAhPT0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMucHVzaChvcHRpb25OYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbi52YWx1ZSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLm1lcmdlRGVlcChvcHRpb24sIHZhbHVlIGFzIG9iamVjdCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KG9wdGlvbi52YWx1ZSwgdmFsdWUsIG9wdGlvbi5zb3VyY2UsIG9wdGlvbi5uYW1lKTtcblxuICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb24uc291cmNlID0gT3B0aW9uU291cmNlLklucHV0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZ2V0Q29uZmlnUHJpb3JpdHlMaXN0U3RyaW5nIChmaWxlc1BhdGhzID0gdGhpcy5kZWZhdWx0UGF0aHMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZmlsZXNQYXRocz8ubWFwKChwYXRoLCBpbmRleCkgPT4gYCR7aW5kZXggKyAxfS4gJHtwYXRofWApLmpvaW4oJ1xcbicpIHx8ICcnO1xuICAgIH1cbn1cbiJdfQ==
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTJDO0FBQzNDLGtEQUEwQjtBQUMxQixrREFBMEI7QUFFMUIsbUNBS2dCO0FBRWhCLDBFQUFnRTtBQUNoRSxzREFBOEI7QUFDOUIsb0VBQTJDO0FBQzNDLHVHQUE0RTtBQUM1RSwrRUFBc0Q7QUFDdEQsdUZBQWdFO0FBQ2hFLHFEQUE2QjtBQUU3Qix1Q0FBcUY7QUFFckYsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFLLEVBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUVyRCxNQUFxQixhQUFhO0lBTTlCLFlBQW9CLHVCQUFpRDs7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFZLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRVMsTUFBTSxDQUFDLFFBQVEsQ0FBRSxHQUFXO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGdCQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7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LENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVTLGVBQWUsQ0FBRSxNQUFjLEVBQUUsS0FBa0I7UUFDekQsSUFBSSxJQUFBLHNCQUFhLEVBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUEsc0JBQWEsRUFBQyxLQUFLLENBQUM7WUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBZSxDQUFDLENBQUM7YUFDdkM7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEYsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDeEI7UUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLHVCQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyw0QkFBNEIsQ0FBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVk7UUFDbEUsT0FBTyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFJLEVBQUUsQ0FBQztJQUN0RixDQUFDO0NBQ0o7QUEvUkQsZ0NBK1JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0bmFtZSwgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBKU09ONSBmcm9tICdqc29uNSc7XG5cbmltcG9ydCB7XG4gICAgY2FzdEFycmF5LFxuICAgIGNsb25lRGVlcCxcbiAgICBpc1BsYWluT2JqZWN0LFxuICAgIG1lcmdlV2l0aCxcbn0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmVhZEZpbGUsIHN0YXQgfSBmcm9tICcuLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL29wdGlvbic7XG5pbXBvcnQgT3B0aW9uU291cmNlIGZyb20gJy4vb3B0aW9uLXNvdXJjZSc7XG5pbXBvcnQgcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkIGZyb20gJy4uL3V0aWxzL3Jlc29sdmUtcGF0aC1yZWxhdGl2ZWx5LWN3ZCc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0VTIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vY2xpL2xvZyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEpTX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OLCBKU09OX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OIH0gZnJvbSAnLi9mb3JtYXRzJztcblxuY29uc3QgREVCVUdfTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmNvbmZpZ3VyYXRpb24nKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uZmlndXJhdGlvbiB7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zOiBEaWN0aW9uYXJ5PE9wdGlvbj47XG4gICAgcHJvdGVjdGVkIF9maWxlUGF0aD86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmF1bHRQYXRocz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfb3ZlcnJpZGRlbk9wdGlvbnM6IHN0cmluZ1tdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjb25maWd1cmF0aW9uRmlsZXNOYW1lczogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgICAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMuX2RlZmF1bHRQYXRocyAgICAgID0gdGhpcy5fcmVzb2x2ZUZpbGVQYXRocyhjb25maWd1cmF0aW9uRmlsZXNOYW1lcyk7XG4gICAgICAgIHRoaXMuX2ZpbGVQYXRoICAgICAgICAgID0gdGhpcy5fZGVmYXVsdFBhdGhzPy5bMF07XG4gICAgICAgIHRoaXMuX292ZXJyaWRkZW5PcHRpb25zID0gW107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZnJvbU9iaiAob2JqOiBvYmplY3QpOiBEaWN0aW9uYXJ5PE9wdGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IG5ldyBPcHRpb24oa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfc2hvd0NvbnNvbGVXYXJuaW5nIChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbG9nLndyaXRlKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9zaG93V2FybmluZ0ZvckVycm9yIChlcnJvcjogRXJyb3IsIHdhcm5pbmdUZW1wbGF0ZTogc3RyaW5nLCAuLi5hcmdzOiBUZW1wbGF0ZUFyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gcmVuZGVyVGVtcGxhdGUod2FybmluZ1RlbXBsYXRlLCAuLi5hcmdzKTtcblxuICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93Q29uc29sZVdhcm5pbmcobWVzc2FnZSk7XG5cbiAgICAgICAgREVCVUdfTE9HR0VSKG1lc3NhZ2UpO1xuICAgICAgICBERUJVR19MT0dHRVIoZXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZXNvbHZlRmlsZVBhdGggKHBhdGg6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFwYXRoKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGlzQWJzb2x1dGUocGF0aCkgPyBwYXRoIDogcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkKHBhdGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc29sdmVGaWxlUGF0aHMgKGZpbGVzTmFtZXM6IHN0cmluZyB8IG51bGwgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFmaWxlc05hbWVzKVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICByZXR1cm4gY2FzdEFycmF5KGZpbGVzTmFtZXMpLnJlZHVjZSgocmVzdWx0LCBuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlRmlsZVBhdGggPSBDb25maWd1cmF0aW9uLl9yZXNvbHZlRmlsZVBhdGgobmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChyZXNvbHZlRmlsZVBhdGgpXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzb2x2ZUZpbGVQYXRoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSwgW10gYXMgc3RyaW5nW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VPcHRpb25zIChvcHRpb25zOiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihrZXksIHZhbHVlLCBPcHRpb25Tb3VyY2UuSW5wdXQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHZvaWQgMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuX3NldE9wdGlvblZhbHVlKG9wdGlvbiwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbWVyZ2VEZWVwIChvcHRpb246IE9wdGlvbiwgc291cmNlOiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2VXaXRoKG9wdGlvbi52YWx1ZSwgc291cmNlLCAodGFyZ2V0VmFsdWU6IE9wdGlvblZhbHVlLCBzb3VyY2VWYWx1ZTogT3B0aW9uVmFsdWUsIHByb3BlcnR5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2FkZE92ZXJyaWRkZW5PcHRpb25JZk5lY2Vzc2FyeSh0YXJnZXRWYWx1ZSwgc291cmNlVmFsdWUsIG9wdGlvbi5zb3VyY2UsIGAke29wdGlvbi5uYW1lfS4ke3Byb3BlcnR5fWApO1xuXG4gICAgICAgICAgICByZXR1cm4gc291cmNlVmFsdWUgIT09IHZvaWQgMCA/IHNvdXJjZVZhbHVlIDogdGFyZ2V0VmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcHRpb24gKGtleTogc3RyaW5nKTogT3B0aW9uVmFsdWUge1xuICAgICAgICBpZiAoIWtleSlcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fb3B0aW9uc1trZXldO1xuXG4gICAgICAgIGlmICghb3B0aW9uKVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcHRpb25zIChwcmVkaWNhdGU/OiAobmFtZTogc3RyaW5nLCBvcHRpb246IE9wdGlvbikgPT4gYm9vbGVhbik6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ICAgICAgICA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBpbmNsdWRlSW5SZXN1bHQgPSB0cnVlO1xuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX29wdGlvbnMpLmZvckVhY2goKFtuYW1lLCBvcHRpb25dKSA9PiB7XG4gICAgICAgICAgICBpbmNsdWRlSW5SZXN1bHQgPSBwcmVkaWNhdGUgPyBwcmVkaWNhdGUobmFtZSwgb3B0aW9uKSA6IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChpbmNsdWRlSW5SZXN1bHQpXG4gICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gb3B0aW9uLnZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9uZSAobm9uQ2xvbmVkT3B0aW9ucz86IHN0cmluZyB8IHN0cmluZ1tdKTogQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBjbG9uZURlZXAodGhpcyk7XG5cbiAgICAgICAgaWYgKG5vbkNsb25lZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNhc3RBcnJheShub25DbG9uZWRPcHRpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uX29wdGlvbnNba2V5XSlcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5fb3B0aW9uc1trZXldLnZhbHVlID0gdGhpcy5fb3B0aW9uc1trZXldLnZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVQYXRoICgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZVBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0UGF0aHMgKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRQYXRocztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX2xvYWQgKCk6IFByb21pc2U8bnVsbCB8IG9iamVjdD4ge1xuICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFBhdGhzPy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBjb25maWdzID0gYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5kZWZhdWx0UGF0aHMubWFwKGFzeW5jIGZpbGVQYXRoID0+IHtcbiAgICAgICAgICAgIGlmICghYXdhaXQgdGhpcy5faXNDb25maWd1cmF0aW9uRmlsZUV4aXN0cyhmaWxlUGF0aCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZmlsZVBhdGgsIG9wdGlvbnM6IG51bGwgfTtcblxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBudWxsIGFzIG9iamVjdCB8IG51bGw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0pTQ29uZmlndXJhdGlvbihmaWxlUGF0aCkpXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuX3JlYWRKc0NvbmZpZ3VyYXRpb25GaWxlQ29udGVudChmaWxlUGF0aCk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uRmlsZUNvbnRlbnQgPSBhd2FpdCB0aGlzLl9yZWFkQ29uZmlndXJhdGlvbkZpbGVDb250ZW50KGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uRmlsZUNvbnRlbnQpXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLl9wYXJzZUNvbmZpZ3VyYXRpb25GaWxlQ29udGVudChjb25maWd1cmF0aW9uRmlsZUNvbnRlbnQsIGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgZmlsZVBhdGgsIG9wdGlvbnMgfTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGV4aXN0ZWRDb25maWdzID0gY29uZmlncy5maWx0ZXIoY29uZmlnID0+ICEhY29uZmlnLm9wdGlvbnMpO1xuXG4gICAgICAgIGlmICghZXhpc3RlZENvbmZpZ3MubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgdGhpcy5fZmlsZVBhdGggPSBleGlzdGVkQ29uZmlnc1swXS5maWxlUGF0aDtcblxuICAgICAgICBpZiAoZXhpc3RlZENvbmZpZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnUHJpb3JpdHlMaXN0U3RyID0gdGhpcy5fZ2V0Q29uZmlnUHJpb3JpdHlMaXN0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dDb25zb2xlV2FybmluZyhyZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLm11bHRpcGxlQ29uZmlndXJhdGlvbkZpbGVzRm91bmQsIHRoaXMuX2ZpbGVQYXRoLCBjb25maWdQcmlvcml0eUxpc3RTdHIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleGlzdGVkQ29uZmlnc1swXS5vcHRpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBfaXNDb25maWd1cmF0aW9uRmlsZUV4aXN0cyAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzdGF0KGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIERFQlVHX0xPR0dFUihyZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdEZpbmRDb25maWd1cmF0aW9uRmlsZSwgZmlsZVBhdGgsIGVycm9yLnN0YWNrKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9oYXNFeHRlbnRpb24gKGZpbGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4dGVudGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWZpbGVQYXRoICYmIGV4dG5hbWUoZmlsZVBhdGgpID09PSBleHRlbnRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0pTQ29uZmlndXJhdGlvbiAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBDb25maWd1cmF0aW9uLl9oYXNFeHRlbnRpb24oZmlsZVBhdGgsIEpTX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lzSlNPTkNvbmZpZ3VyYXRpb24gKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQ29uZmlndXJhdGlvbi5faGFzRXh0ZW50aW9uKGZpbGVQYXRoLCBKU09OX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX3JlYWRKc0NvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogb2JqZWN0IHwgbnVsbCB7XG4gICAgICAgIGlmIChmaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtmaWxlUGF0aF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZShmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dXYXJuaW5nRm9yRXJyb3IoZXJyb3IsIFdBUk5JTkdfTUVTU0FHRVMuY2Fubm90UmVhZENvbmZpZ0ZpbGUsIGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcmVhZENvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93V2FybmluZ0ZvckVycm9yKGVycm9yLCBXQVJOSU5HX01FU1NBR0VTLmNhbm5vdFJlYWRDb25maWdGaWxlLCBmaWxlUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoY29uZmlndXJhdGlvbkZpbGVDb250ZW50OiBCdWZmZXIsIGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IG9iamVjdCB8IG51bGwge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT041LnBhcnNlKGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd1dhcm5pbmdGb3JFcnJvcihlcnJvciwgV0FSTklOR19NRVNTQUdFUy5jYW5ub3RQYXJzZUNvbmZpZ0ZpbGUsIGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlQXJyYXlPcHRpb24gKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fb3B0aW9uc1tuYW1lXTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgLy8gTk9URTogYSBoYWNrIHRvIGZpeCBsb2Rhc2ggdHlwZSBkZWZpbml0aW9uc1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBjYXN0QXJyYXkob3B0aW9ucy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbnN1cmVPcHRpb24gKG5hbWU6IHN0cmluZywgdmFsdWU6IE9wdGlvblZhbHVlLCBzb3VyY2U6IE9wdGlvblNvdXJjZSk6IE9wdGlvbiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBudWxsO1xuXG4gICAgICAgIGlmIChuYW1lIGluIHRoaXMuX29wdGlvbnMpXG4gICAgICAgICAgICBvcHRpb24gPSB0aGlzLl9vcHRpb25zW25hbWVdO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbiA9IG5ldyBPcHRpb24obmFtZSwgdmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnNbbmFtZV0gPSBvcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlT3B0aW9uV2l0aFZhbHVlIChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIG9wdGlvbi52YWx1ZSAgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIG9wdGlvbi5zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3NhcnkgKHZhbHVlMTogT3B0aW9uVmFsdWUsIHZhbHVlMjogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlLCBvcHRpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gT3B0aW9uU291cmNlLkRlZmF1bHQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYgKHZhbHVlMSA9PT0gdm9pZCAwIHx8IHZhbHVlMiA9PT0gdm9pZCAwIHx8IHZhbHVlMSA9PT0gdmFsdWUyIHx8IHNvdXJjZSAhPT0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMucHVzaChvcHRpb25OYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbi52YWx1ZSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLm1lcmdlRGVlcChvcHRpb24sIHZhbHVlIGFzIG9iamVjdCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KG9wdGlvbi52YWx1ZSwgdmFsdWUsIG9wdGlvbi5zb3VyY2UsIG9wdGlvbi5uYW1lKTtcblxuICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb24uc291cmNlID0gT3B0aW9uU291cmNlLklucHV0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZ2V0Q29uZmlnUHJpb3JpdHlMaXN0U3RyaW5nIChmaWxlc1BhdGhzID0gdGhpcy5kZWZhdWx0UGF0aHMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZmlsZXNQYXRocz8ubWFwKChwYXRoLCBpbmRleCkgPT4gYCR7aW5kZXggKyAxfS4gJHtwYXRofWApLmpvaW4oJ1xcbicpIHx8ICcnO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICB0ZXN0R3JlcD86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbiAgICBmaXh0dXJlR3JlcD86IHN0cmluZyB8IFJlZ0V4cCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRlck9wdGlvbiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG91dHB1dD86IHN0cmluZyB8IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWN0aW9uYXJ5PFQ+IHtcbiAgICBba2V5OiBzdHJpbmddOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3Qge1xuICAgIHN0YWNrPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgcGFnZVVybD86IHN0cmluZyB8IFJlZ0V4cDtcbn1cblxuZXhwb3J0IHR5cGUgU2tpcEpzRXJyb3JzQ2FsbGJhY2sgPSAob3B0cz86IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjazogc3RyaW5nOyBwYWdlVXJsOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGludGVyZmFjZSBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0IHtcbiAgICBmbjogU2tpcEpzRXJyb3JzQ2FsbGJhY2s7XG4gICAgZGVwZW5kZW5jaWVzPzogRGljdGlvbmFyeTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bm5lclJ1bk9wdGlvbnMge1xuICAgIHNraXBKc0Vycm9ycz86IFNraXBKc0Vycm9yc09wdGlvblZhbHVlIHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2sgfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0O1xuICAgIHNraXBVbmNhdWdodEVycm9ycz86IGJvb2xlYW47XG4gICAgZGVidWdNb2RlPzogYm9vbGVhbjtcbiAgICBkZWJ1Z09uRmFpbD86IGJvb2xlYW47XG4gICAgc2VsZWN0b3JUaW1lb3V0PzogbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBudW1iZXI7XG4gICAgcGFnZUxvYWRUaW1lb3V0PzogbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0PzogbnVtYmVyO1xuICAgIHNwZWVkPzogbnVtYmVyO1xuICAgIHN0b3BPbkZpcnN0RmFpbD86IGJvb2xlYW47XG4gICAgZGlzYWJsZVBhZ2VDYWNoaW5nPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlUGFnZVJlbG9hZHM/OiBib29sZWFuO1xuICAgIGRpc2FibGVTY3JlZW5zaG90cz86IGJvb2xlYW47XG4gICAgZGlzYWJsZU11bHRpcGxlV2luZG93cz86IGJvb2xlYW47XG4gICAgcGFnZVJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xuICAgIGFqYXhSZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbiAgICByZXRyeVRlc3RQYWdlcz86IGJvb2xlYW47XG4gICAgaG9va3M/OiBHbG9iYWxIb29rcztcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE9wdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIG9wdGlvbnNTZXBhcmF0b3I/OiBzdHJpbmc7XG4gICAga2V5VmFsdWVTZXBhcmF0b3I/OiBzdHJpbmc7XG4gICAgc2tpcE9wdGlvblZhbHVlVHlwZUNvbnZlcnNpb24/OiBib29sZWFuO1xuICAgIG9uT3B0aW9uUGFyc2VkPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB7XG4gICAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBjdXN0b21Db21waWxlck1vZHVsZVBhdGg/OiBzdHJpbmc7XG4gICAgb3B0aW9ucz86IERpY3Rpb25hcnk8Ym9vbGVhbiB8IG51bWJlcj47XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var SKIP_JS_ERRORS_OPTION_NAMES;
|
|
4
|
+
(function (SKIP_JS_ERRORS_OPTION_NAMES) {
|
|
5
|
+
SKIP_JS_ERRORS_OPTION_NAMES["message"] = "message";
|
|
6
|
+
SKIP_JS_ERRORS_OPTION_NAMES["stack"] = "stack";
|
|
7
|
+
SKIP_JS_ERRORS_OPTION_NAMES["pageUrl"] = "pageUrl";
|
|
8
|
+
})(SKIP_JS_ERRORS_OPTION_NAMES || (SKIP_JS_ERRORS_OPTION_NAMES = {}));
|
|
9
|
+
exports.default = SKIP_JS_ERRORS_OPTION_NAMES;
|
|
10
|
+
module.exports = exports.default;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vc2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSywyQkFJSjtBQUpELFdBQUssMkJBQTJCO0lBQzVCLGtEQUFtQixDQUFBO0lBQ25CLDhDQUFlLENBQUE7SUFDZixrREFBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSkksMkJBQTJCLEtBQTNCLDJCQUEyQixRQUkvQjtBQUVELGtCQUFlLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZW51bSBTS0lQX0pTX0VSUk9SU19PUFRJT05fTkFNRVMge1xuICAgIG1lc3NhZ2UgPSAnbWVzc2FnZScsXG4gICAgc3RhY2sgPSAnc3RhY2snLFxuICAgIHBhZ2VVcmwgPSAncGFnZVVybCcsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFNLSVBfSlNfRVJST1JTX09QVElPTl9OQU1FUztcbiJdfQ==
|
|
@@ -25,7 +25,6 @@ const BASE_CONFIGURATION_FILENAME = '.testcaferc';
|
|
|
25
25
|
const CONFIGURATION_FILENAMES = formats_1.CONFIGURATION_EXTENSIONS.map(ext => `${BASE_CONFIGURATION_FILENAME}${ext}`);
|
|
26
26
|
const DEFAULT_SCREENSHOTS_DIRECTORY = 'screenshots';
|
|
27
27
|
const OPTION_FLAG_NAMES = [
|
|
28
|
-
option_names_1.default.skipJsErrors,
|
|
29
28
|
option_names_1.default.debugMode,
|
|
30
29
|
option_names_1.default.debugOnFail,
|
|
31
30
|
option_names_1.default.skipUncaughtErrors,
|
|
@@ -72,9 +71,9 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
72
71
|
notifyAboutOverriddenOptions(warningLog) {
|
|
73
72
|
if (!this._overriddenOptions.length)
|
|
74
73
|
return;
|
|
75
|
-
const optionsStr = string_1.getConcatenatedValuesString(this._overriddenOptions);
|
|
76
|
-
const optionsSuffix = string_1.getPluralSuffix(this._overriddenOptions);
|
|
77
|
-
const renderedMessage = render_template_1.default(warning_message_1.default.configOptionsWereOverridden, optionsStr, optionsSuffix);
|
|
74
|
+
const optionsStr = (0, string_1.getConcatenatedValuesString)(this._overriddenOptions);
|
|
75
|
+
const optionsSuffix = (0, string_1.getPluralSuffix)(this._overriddenOptions);
|
|
76
|
+
const renderedMessage = (0, render_template_1.default)(warning_message_1.default.configOptionsWereOverridden, optionsStr, optionsSuffix);
|
|
78
77
|
configuration_base_1.default._showConsoleWarning(renderedMessage);
|
|
79
78
|
if (warningLog)
|
|
80
79
|
warningLog.addWarning(renderedMessage);
|
|
@@ -83,7 +82,7 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
83
82
|
notifyAboutDeprecatedOptions(warningLog) {
|
|
84
83
|
const deprecatedOptions = this.getOptions((name, option) => name in deprecated_1.DEPRECATED && option.value !== void 0);
|
|
85
84
|
for (const optionName in deprecatedOptions)
|
|
86
|
-
warningLog.addWarning(deprecated_1.getDeprecationMessage(deprecated_1.DEPRECATED[optionName]));
|
|
85
|
+
warningLog.addWarning((0, deprecated_1.getDeprecationMessage)(deprecated_1.DEPRECATED[optionName]));
|
|
87
86
|
}
|
|
88
87
|
get startOptions() {
|
|
89
88
|
const result = {
|
|
@@ -133,32 +132,37 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
133
132
|
return;
|
|
134
133
|
const filterOptionValue = filterOption.value;
|
|
135
134
|
if (filterOptionValue.testGrep)
|
|
136
|
-
filterOptionValue.testGrep = get_options_1.getGrepOptions(option_names_1.default.filterTestGrep, filterOptionValue.testGrep);
|
|
135
|
+
filterOptionValue.testGrep = (0, get_options_1.getGrepOptions)(option_names_1.default.filterTestGrep, filterOptionValue.testGrep);
|
|
137
136
|
if (filterOptionValue.fixtureGrep)
|
|
138
|
-
filterOptionValue.fixtureGrep = get_options_1.getGrepOptions(option_names_1.default.filterFixtureGrep, filterOptionValue.fixtureGrep);
|
|
139
|
-
filterOption.value = get_filter_fn_1.default(filterOption.value);
|
|
137
|
+
filterOptionValue.fixtureGrep = (0, get_options_1.getGrepOptions)(option_names_1.default.filterFixtureGrep, filterOptionValue.fixtureGrep);
|
|
138
|
+
filterOption.value = (0, get_filter_fn_1.default)(filterOption.value);
|
|
140
139
|
filterOption.source = option_source_1.default.Configuration;
|
|
141
140
|
}
|
|
142
141
|
_ensureScreenshotOptions() {
|
|
143
|
-
const path = resolve_path_relatively_cwd_1.default(DEFAULT_SCREENSHOTS_DIRECTORY);
|
|
142
|
+
const path = (0, resolve_path_relatively_cwd_1.default)(DEFAULT_SCREENSHOTS_DIRECTORY);
|
|
144
143
|
const screenshots = this._ensureOption(option_names_1.default.screenshots, {}, option_source_1.default.Configuration).value;
|
|
145
144
|
if (!screenshots.path)
|
|
146
145
|
screenshots.path = path;
|
|
147
146
|
if (screenshots.thumbnails === void 0)
|
|
148
147
|
screenshots.thumbnails = default_values_1.DEFAULT_SCREENSHOT_THUMBNAILS;
|
|
149
148
|
}
|
|
149
|
+
_ensureSkipJsOptions() {
|
|
150
|
+
const option = this._ensureOption(option_names_1.default.skipJsErrors, void 0, option_source_1.default.Configuration);
|
|
151
|
+
if (option.value === void 0)
|
|
152
|
+
option.value = !!option.value;
|
|
153
|
+
}
|
|
150
154
|
_prepareReporters() {
|
|
151
155
|
const reporterOption = this._options[option_names_1.default.reporter];
|
|
152
156
|
if (!reporterOption)
|
|
153
157
|
return;
|
|
154
|
-
const optionValue = lodash_1.castArray(reporterOption.value);
|
|
155
|
-
reporterOption.value = prepare_reporters_1.default(optionValue);
|
|
158
|
+
const optionValue = (0, lodash_1.castArray)(reporterOption.value);
|
|
159
|
+
reporterOption.value = (0, prepare_reporters_1.default)(optionValue);
|
|
156
160
|
}
|
|
157
161
|
async _prepareSslOptions() {
|
|
158
162
|
const sslOptions = this._options[option_names_1.default.ssl];
|
|
159
163
|
if (!sslOptions)
|
|
160
164
|
return;
|
|
161
|
-
sslOptions.value = await get_options_1.getSSLOptions(sslOptions.value);
|
|
165
|
+
sslOptions.value = await (0, get_options_1.getSSLOptions)(sslOptions.value);
|
|
162
166
|
}
|
|
163
167
|
_setDefaultValues() {
|
|
164
168
|
this._ensureOptionWithValue(option_names_1.default.selectorTimeout, default_values_1.DEFAULT_TIMEOUT.selector, option_source_1.default.Configuration);
|
|
@@ -173,10 +177,11 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
173
177
|
this._ensureOptionWithValue(option_names_1.default.disableHttp2, default_values_1.DEFAULT_DISABLE_HTTP2, option_source_1.default.Configuration);
|
|
174
178
|
this._ensureOptionWithValue(option_names_1.default.proxyless, default_values_1.DEFAULT_PROXYLESS, option_source_1.default.Configuration);
|
|
175
179
|
this._ensureScreenshotOptions();
|
|
180
|
+
this._ensureSkipJsOptions();
|
|
176
181
|
}
|
|
177
182
|
_prepareCompilerOptions() {
|
|
178
|
-
const compilerOptions = this._ensureOption(option_names_1.default.compilerOptions, default_values_1.getDefaultCompilerOptions(), option_source_1.default.Configuration);
|
|
179
|
-
compilerOptions.value = compilerOptions.value || default_values_1.getDefaultCompilerOptions();
|
|
183
|
+
const compilerOptions = this._ensureOption(option_names_1.default.compilerOptions, (0, default_values_1.getDefaultCompilerOptions)(), option_source_1.default.Configuration);
|
|
184
|
+
compilerOptions.value = compilerOptions.value || (0, default_values_1.getDefaultCompilerOptions)();
|
|
180
185
|
const tsConfigPath = this.getOption(option_names_1.default.tsConfigPath);
|
|
181
186
|
if (tsConfigPath) {
|
|
182
187
|
const compilerOptionValue = compilerOptions.value;
|
|
@@ -192,7 +197,7 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
192
197
|
return [];
|
|
193
198
|
const browsers = Array.isArray(this._options.browsers.value) ? [...this._options.browsers.value] : [this._options.browsers.value];
|
|
194
199
|
const browserInfo = await Promise.all(browsers.map(browser => pool_1.default.getBrowserInfo(browser)));
|
|
195
|
-
return lodash_1.flatten(browserInfo);
|
|
200
|
+
return (0, lodash_1.flatten)(browserInfo);
|
|
196
201
|
}
|
|
197
202
|
async _isConfigurationFileExists(filePath = this.filePath) {
|
|
198
203
|
const fileExists = await super._isConfigurationFileExists(filePath);
|
|
@@ -206,4 +211,4 @@ class TestCafeConfiguration extends configuration_base_1.default {
|
|
|
206
211
|
}
|
|
207
212
|
exports.default = TestCafeConfiguration;
|
|
208
213
|
module.exports = exports.default;
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGNhZmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBaUQ7QUFDakQsbUNBQTRDO0FBQzVDLHNEQUFxRTtBQUNyRSxrRUFBMEM7QUFDMUMsMkVBQWlEO0FBQ2pELG1GQUEwRDtBQUMxRCw0Q0FBK0U7QUFDL0UsK0VBQXNEO0FBQ3RELHVGQUFnRTtBQUNoRSx1R0FBNEU7QUFFNUUscURBYTBCO0FBRTFCLG9FQUEyQztBQVMzQyxzRkFBNkQ7QUFDN0QsNERBQWdGO0FBRWhGLG9FQUEyRDtBQUUzRCx1Q0FBcUQ7QUFDckQsK0NBQWlEO0FBQ2pELDJDQUFpRDtBQUVqRCxNQUFNLDJCQUEyQixHQUFHLGFBQWEsQ0FBQztBQUNsRCxNQUFNLHVCQUF1QixHQUFPLGtDQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsMkJBQTJCLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUVoSCxNQUFNLDZCQUE2QixHQUFHLGFBQWEsQ0FBQztBQUVwRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLHNCQUFZLENBQUMsWUFBWTtJQUN6QixzQkFBWSxDQUFDLFNBQVM7SUFDdEIsc0JBQVksQ0FBQyxXQUFXO0lBQ3hCLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsZUFBZTtJQUM1QixzQkFBWSxDQUFDLHNCQUFzQjtJQUNuQyxzQkFBWSxDQUFDLGtCQUFrQjtJQUMvQixzQkFBWSxDQUFDLGtCQUFrQjtJQUMvQixzQkFBWSxDQUFDLGtCQUFrQjtJQUMvQixzQkFBWSxDQUFDLHNCQUFzQjtDQUN0QyxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixzQkFBWSxDQUFDLGVBQWU7SUFDNUIsc0JBQVksQ0FBQyxjQUFjO0lBQzNCLHNCQUFZ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QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxJLE1BQU0sV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsY0FBbUIsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVHLE9BQU8sZ0JBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsS0FBSyxDQUFDLDBCQUEwQixDQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUTtRQUNoRSxNQUFNLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFDckMsTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyxtQ0FBbUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV6RixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0sTUFBTSxLQUFLLFNBQVM7UUFDdkIsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUE1TkQsd0NBNE5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uLWJhc2UnO1xuaW1wb3J0IHsgY2FzdEFycmF5LCBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldEdyZXBPcHRpb25zLCBnZXRTU0xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LW9wdGlvbnMnO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgZ2V0RmlsdGVyRm4gZnJvbSAnLi4vdXRpbHMvZ2V0LWZpbHRlci1mbic7XG5pbXBvcnQgcHJlcGFyZVJlcG9ydGVycyBmcm9tICcuLi91dGlscy9wcmVwYXJlLXJlcG9ydGVycyc7XG5pbXBvcnQgeyBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcsIGdldFBsdXJhbFN1ZmZpeCB9IGZyb20gJy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0VTIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCByZXNvbHZlUGF0aFJlbGF0aXZlbHlDd2QgZnJvbSAnLi4vdXRpbHMvcmVzb2x2ZS1wYXRoLXJlbGF0aXZlbHktY3dkJztcblxuaW1wb3J0IHtcbiAgICBERUZBVUxUX0FQUF9JTklUX0RFTEFZLFxuICAgIERFRkFVTFRfQ09OQ1VSUkVOQ1lfVkFMVUUsXG4gICAgREVGQVVMVF9ERVZFTE9QTUVOVF9NT0RFLFxuICAgIERFRkFVTFRfRElTQUJMRV9IVFRQMixcbiAgICBERUZBVUxUX0ZJTFRFUl9GTixcbiAgICBERUZBVUxUX1BST1hZTEVTUyxcbiAgICBERUZBVUxUX1JFVFJZX1RFU1RfUEFHRVMsXG4gICAgREVGQVVMVF9TQ1JFRU5TSE9UX1RIVU1CTkFJTFMsXG4gICAgREVGQVVMVF9TT1VSQ0VfRElSRUNUT1JJRVMsXG4gICAgREVGQVVMVF9TUEVFRF9WQUxVRSxcbiAgICBERUZBVUxUX1RJTUVPVVQsXG4gICAgZ2V0RGVmYXVsdENvbXBpbGVyT3B0aW9ucyxcbn0gZnJvbSAnLi9kZWZhdWx0LXZhbHVlcyc7XG5cbmltcG9ydCBPcHRpb25Tb3VyY2UgZnJvbSAnLi9vcHRpb24tc291cmNlJztcblxuaW1wb3J0IHtcbiAgICBEaWN0aW9uYXJ5LFxuICAgIEZpbHRlck9wdGlvbixcbiAgICBSZXBvcnRlck9wdGlvbixcbiAgICBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgQ3VzdG9taXphYmxlQ29tcGlsZXJzIGZyb20gJy4vY3VzdG9taXphYmxlLWNvbXBpbGVycyc7XG5pbXBvcnQgeyBERVBSRUNBVEVELCBnZXREZXByZWNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb25zL2RlcHJlY2F0ZWQnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgYnJvd3NlclByb3ZpZGVyUG9vbCBmcm9tICcuLi9icm93c2VyL3Byb3ZpZGVyL3Bvb2wnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uLCB7IEJyb3dzZXJJbmZvIH0gZnJvbSAnLi4vYnJvd3Nlci9jb25uZWN0aW9uJztcbmltcG9ydCB7IENPTkZJR1VSQVRJT05fRVhURU5TSU9OUyB9IGZyb20gJy4vZm9ybWF0cyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5cbmNvbnN0IEJBU0VfQ09ORklHVVJBVElPTl9GSUxFTkFNRSA9ICcudGVzdGNhZmVyYyc7XG5jb25zdCBDT05GSUdVUkFUSU9OX0ZJTEVOQU1FUyAgICAgPSBDT05GSUdVUkFUSU9OX0VYVEVOU0lPTlMubWFwKGV4dCA9PiBgJHtCQVNFX0NPTkZJR1VSQVRJT05fRklMRU5BTUV9JHtleHR9YCk7XG5cbmNvbnN0IERFRkFVTFRfU0NSRUVOU0hPVFNfRElSRUNUT1JZID0gJ3NjcmVlbnNob3RzJztcblxuY29uc3QgT1BUSU9OX0ZMQUdfTkFNRVMgPSBbXG4gICAgT1BUSU9OX05BTUVTLnNraXBKc0Vycm9ycyxcbiAgICBPUFRJT05fTkFNRVMuZGVidWdNb2RlLFxuICAgIE9QVElPTl9OQU1FUy5kZWJ1Z09uRmFpbCxcbiAgICBPUFRJT05fTkFNRVMuc2tpcFVuY2F1Z2h0RXJyb3JzLFxuICAgIE9QVElPTl9OQU1FUy5zdG9wT25GaXJzdEZhaWwsXG4gICAgT1BUSU9OX05BTUVTLnRha2VTY3JlZW5zaG90c09uRmFpbHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVQYWdlQ2FjaGluZyxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZVBhZ2VSZWxvYWRzLFxuICAgIE9QVElPTl9OQU1FUy5kaXNhYmxlU2NyZWVuc2hvdHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MsXG5dO1xuXG5jb25zdCBPUFRJT05fSU5JVF9GTEFHX05BTUVTID0gW1xuICAgIE9QVElPTl9OQU1FUy5kZXZlbG9wbWVudE1vZGUsXG4gICAgT1BUSU9OX05BTUVTLnJldHJ5VGVzdFBhZ2VzLFxuICAgIE9QVElPTl9OQU1FUy5jYWNoZSxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZUh0dHAyLFxuICAgIE9QVElPTl9OQU1FUy5wcm94eWxlc3MsXG5dO1xuXG5pbnRlcmZhY2UgVGVzdENhZmVBZGRpdGlvbmFsU3RhcnRPcHRpb25zIHtcbiAgICByZXRyeVRlc3RQYWdlczogYm9vbGVhbjtcbiAgICBzc2w6IHN0cmluZztcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgY2FjaGU6IGJvb2xlYW47XG4gICAgZGlzYWJsZUh0dHAyOiBib29sZWFuO1xuICAgIHByb3h5bGVzczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RDYWZlU3RhcnRPcHRpb25zIHtcbiAgICBob3N0bmFtZT86IHN0cmluZztcbiAgICBwb3J0MT86IG51bWJlcjtcbiAgICBwb3J0Mj86IG51bWJlcjtcbiAgICBvcHRpb25zOiBUZXN0Q2FmZUFkZGl0aW9uYWxTdGFydE9wdGlvbnM7XG59XG5cbnR5cGUgQnJvd3NlckluZm9Tb3VyY2UgPSBCcm93c2VySW5mbyB8IEJyb3dzZXJDb25uZWN0aW9uO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzRXhwbGljaXRDb25maWc6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbmZpZ0ZpbGUgPSAnJykge1xuICAgICAgICBzdXBlcihjb25maWdGaWxlIHx8IENPTkZJR1VSQVRJT05fRklMRU5BTUVTKTtcblxuICAgICAgICB0aGlzLl9pc0V4cGxpY2l0Q29uZmlnID0gISFjb25maWdGaWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0IChvcHRpb25zPzogRGljdGlvbmFyeTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHN1cGVyLmluaXQoKTtcblxuICAgICAgICBjb25zdCBvcHRzID0gYXdhaXQgdGhpcy5fbG9hZCgpO1xuXG4gICAgICAgIHRoaXMuX2NoZWNrVW5zZWN1cmVEYXRhSW5KU09OQ29uZmlndXJhdGlvbihvcHRzKTtcblxuICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IENvbmZpZ3VyYXRpb24uX2Zyb21PYmoob3B0cyk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX25vcm1hbGl6ZU9wdGlvbnNBZnRlckxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuYXN5bmNNZXJnZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFzeW5jTWVyZ2VPcHRpb25zIChvcHRpb25zPzogRGljdGlvbmFyeTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIHN1cGVyLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuaXNDbGkgJiYgdGhpcy5fb3B0aW9ucy5icm93c2VycylcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWUgPSBhd2FpdCB0aGlzLl9nZXRCcm93c2VySW5mbygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUZsYWdzKCk7XG4gICAgICAgIHRoaXMuX3NldERlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUNvbXBpbGVyT3B0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RpZnlBYm91dE92ZXJyaWRkZW5PcHRpb25zICh3YXJuaW5nTG9nPzogV2FybmluZ0xvZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJyaWRkZW5PcHRpb25zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBvcHRpb25zU3RyICAgID0gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKHRoaXMuX292ZXJyaWRkZW5PcHRpb25zKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1N1ZmZpeCA9IGdldFBsdXJhbFN1ZmZpeCh0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTWVzc2FnZSA9IHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMuY29uZmlnT3B0aW9uc1dlcmVPdmVycmlkZGVuLCBvcHRpb25zU3RyLCBvcHRpb25zU3VmZml4KTtcblxuICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93Q29uc29sZVdhcm5pbmcocmVuZGVyZWRNZXNzYWdlKTtcblxuICAgICAgICBpZiAod2FybmluZ0xvZylcbiAgICAgICAgICAgIHdhcm5pbmdMb2cuYWRkV2FybmluZyhyZW5kZXJlZE1lc3NhZ2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJyaWRkZW5PcHRpb25zID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeUFib3V0RGVwcmVjYXRlZE9wdGlvbnMgKHdhcm5pbmdMb2c6IFdhcm5pbmdMb2cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVwcmVjYXRlZE9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKG5hbWUsIG9wdGlvbikgPT4gbmFtZSBpbiBERVBSRUNBVEVEICYmIG9wdGlvbi52YWx1ZSAhPT0gdm9pZCAwKTtcblxuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbk5hbWUgaW4gZGVwcmVjYXRlZE9wdGlvbnMpXG4gICAgICAgICAgICB3YXJuaW5nTG9nLmFkZFdhcm5pbmcoZ2V0RGVwcmVjYXRpb25NZXNzYWdlKERFUFJFQ0FURURbb3B0aW9uTmFtZV0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXJ0T3B0aW9ucyAoKTogVGVzdENhZmVTdGFydE9wdGlvbnMge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFRlc3RDYWZlU3RhcnRPcHRpb25zID0ge1xuICAgICAgICAgICAgaG9zdG5hbWU6IHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5ob3N0bmFtZSkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgcG9ydDE6ICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MSkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgcG9ydDI6ICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MikgYXMgbnVtYmVyLFxuXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgc3NsOiAgICAgICAgICAgICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuc3NsKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuZGV2ZWxvcG1lbnRNb2RlKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIHJldHJ5VGVzdFBhZ2VzOiAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnJldHJ5VGVzdFBhZ2VzKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIGNhY2hlOiAgICAgICAgICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmNhY2hlKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIGRpc2FibGVIdHRwMjogICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmRpc2FibGVIdHRwMikgYXMgYm9vbGVhbixcbiAgICAgICAgICAgICAgICBwcm94eWxlc3M6ICAgICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wcm94eWxlc3MpIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tVbnNlY3VyZURhdGFJbkpTT05Db25maWd1cmF0aW9uIChvcHRzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0pTT05Db25maWd1cmF0aW9uKCkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYgKG9wdHM/LltPUFRJT05fTkFNRVMuZGFzaGJvYXJkXT8udG9rZW4pXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmRhc2hib2FyZFRva2VuSW5KU09OKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZsYWcgKG5hbWU6IHN0cmluZywgc291cmNlID0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKG5hbWUsIHZvaWQgMCwgc291cmNlKTtcblxuICAgICAgICBvcHRpb24udmFsdWUgPSAhIW9wdGlvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlRmxhZ3MgKCk6IHZvaWQge1xuICAgICAgICBPUFRJT05fRkxBR19OQU1FUy5mb3JFYWNoKG5hbWUgPT4gdGhpcy5fcHJlcGFyZUZsYWcobmFtZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVJbml0RmxhZ3MgKCk6IHZvaWQge1xuICAgICAgICBPUFRJT05fSU5JVF9GTEFHX05BTUVTLmZvckVhY2gobmFtZSA9PiB0aGlzLl9wcmVwYXJlRmxhZyhuYW1lLCBPcHRpb25Tb3VyY2UuRGVmYXVsdCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX25vcm1hbGl6ZU9wdGlvbnNBZnRlckxvYWQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcmVwYXJlU3NsT3B0aW9ucygpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlSW5pdEZsYWdzKCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVGaWx0ZXJGbigpO1xuICAgICAgICB0aGlzLl9lbnN1cmVBcnJheU9wdGlvbihPUFRJT05fTkFNRVMuc3JjKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmJyb3dzZXJzKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlUmVwb3J0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZpbHRlckZuICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5maWx0ZXIsIERFRkFVTFRfRklMVEVSX0ZOLCBPcHRpb25Tb3VyY2UuRGVmYXVsdCk7XG5cbiAgICAgICAgaWYgKCFmaWx0ZXJPcHRpb24udmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uVmFsdWUgPSBmaWx0ZXJPcHRpb24udmFsdWUgYXMgRmlsdGVyT3B0aW9uO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlclRlc3RHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlckZpeHR1cmVHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGZpbHRlck9wdGlvbi52YWx1ZSAgPSBnZXRGaWx0ZXJGbihmaWx0ZXJPcHRpb24udmFsdWUpIGFzIEZ1bmN0aW9uO1xuICAgICAgICBmaWx0ZXJPcHRpb24uc291cmNlID0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlU2NyZWVuc2hvdE9wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXRoICAgICAgICA9IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZChERUZBVUxUX1NDUkVFTlNIT1RTX0RJUkVDVE9SWSk7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RzID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5zY3JlZW5zaG90cywge30sIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKS52YWx1ZSBhcyBEaWN0aW9uYXJ5PHN0cmluZ3xib29sZWFuPjtcblxuICAgICAgICBpZiAoIXNjcmVlbnNob3RzLnBhdGgpXG4gICAgICAgICAgICBzY3JlZW5zaG90cy5wYXRoID0gcGF0aDtcblxuICAgICAgICBpZiAoc2NyZWVuc2hvdHMudGh1bWJuYWlscyA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgc2NyZWVuc2hvdHMudGh1bWJuYWlscyA9IERFRkFVTFRfU0NSRUVOU0hPVF9USFVNQk5BSUxTO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVSZXBvcnRlcnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXBvcnRlck9wdGlvbiA9IHRoaXMuX29wdGlvbnNbT1BUSU9OX05BTUVTLnJlcG9ydGVyXTtcblxuICAgICAgICBpZiAoIXJlcG9ydGVyT3B0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gY2FzdEFycmF5KHJlcG9ydGVyT3B0aW9uLnZhbHVlIGFzIFJlcG9ydGVyT3B0aW9uKTtcblxuICAgICAgICByZXBvcnRlck9wdGlvbi52YWx1ZSA9IHByZXBhcmVSZXBvcnRlcnMob3B0aW9uVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVTc2xPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3NsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnNbT1BUSU9OX05BTUVTLnNzbF07XG5cbiAgICAgICAgaWYgKCFzc2xPcHRpb25zKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHNzbE9wdGlvbnMudmFsdWUgPSBhd2FpdCBnZXRTU0xPcHRpb25zKHNzbE9wdGlvbnMudmFsdWUgYXMgc3RyaW5nKSBhcyBEaWN0aW9uYXJ5PHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI+O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldERlZmF1bHRWYWx1ZXMgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnNlbGVjdG9yVGltZW91dCwgREVGQVVMVF9USU1FT1VULnNlbGVjdG9yLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuYXNzZXJ0aW9uVGltZW91dCwgREVGQVVMVF9USU1FT1VULmFzc2VydGlvbiwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnBhZ2VMb2FkVGltZW91dCwgREVGQVVMVF9USU1FT1VULnBhZ2VMb2FkLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuc3BlZWQsIERFRkFVTFRfU1BFRURfVkFMVUUsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5hcHBJbml0RGVsYXksIERFRkFVTFRfQVBQX0lOSVRfREVMQVksIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5jb25jdXJyZW5jeSwgREVGQVVMVF9DT05DVVJSRU5DWV9WQUxVRSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnNyYywgREVGQVVMVF9TT1VSQ0VfRElSRUNUT1JJRVMsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5kZXZlbG9wbWVudE1vZGUsIERFRkFVTFRfREVWRUxPUE1FTlRfTU9ERSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnJldHJ5VGVzdFBhZ2VzLCBERUZBVUxUX1JFVFJZX1RFU1RfUEFHRVMsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5kaXNhYmxlSHR0cDIsIERFRkFVTFRfRElTQUJMRV9IVFRQMiwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnByb3h5bGVzcywgREVGQVVMVF9QUk9YWUxFU1MsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcblxuICAgICAgICB0aGlzLl9lbnN1cmVTY3JlZW5zaG90T3B0aW9ucygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVDb21waWxlck9wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB0aGlzLl9lbnN1cmVPcHRpb24oT1BUSU9OX05BTUVTLmNvbXBpbGVyT3B0aW9ucywgZ2V0RGVmYXVsdENvbXBpbGVyT3B0aW9ucygpLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgY29tcGlsZXJPcHRpb25zLnZhbHVlID0gY29tcGlsZXJPcHRpb25zLnZhbHVlIHx8IGdldERlZmF1bHRDb21waWxlck9wdGlvbnMoKTtcblxuICAgICAgICBjb25zdCB0c0NvbmZpZ1BhdGggPSB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMudHNDb25maWdQYXRoKTtcblxuICAgICAgICBpZiAodHNDb25maWdQYXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21waWxlck9wdGlvblZhbHVlICAgICA9IGNvbXBpbGVyT3B0aW9ucy52YWx1ZSBhcyBDb21waWxlck9wdGlvbnM7XG4gICAgICAgICAgICBsZXQgdHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyA9IGNvbXBpbGVyT3B0aW9uVmFsdWVbQ3VzdG9taXphYmxlQ29tcGlsZXJzLnR5cGVzY3JpcHRdIGFzIFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnM7XG5cbiAgICAgICAgICAgIHR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgICAgICBjb25maWdQYXRoOiB0c0NvbmZpZ1BhdGgsXG4gICAgICAgICAgICB9LCB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zKTtcblxuICAgICAgICAgICAgKGNvbXBpbGVyT3B0aW9ucy52YWx1ZSBhcyBDb21waWxlck9wdGlvbnMpW0N1c3RvbWl6YWJsZUNvbXBpbGVycy50eXBlc2NyaXB0XSA9IHR5cGVTY3JpcHRDb21waWxlck9wdGlvbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRCcm93c2VySW5mbyAoKTogUHJvbWlzZTxCcm93c2VySW5mb1NvdXJjZVtdPiB7XG4gICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5icm93c2Vycy52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCBicm93c2VycyA9IEFycmF5LmlzQXJyYXkodGhpcy5fb3B0aW9ucy5icm93c2Vycy52YWx1ZSkgPyBbLi4udGhpcy5fb3B0aW9ucy5icm93c2Vycy52YWx1ZV0gOiBbdGhpcy5fb3B0aW9ucy5icm93c2Vycy52YWx1ZV07XG5cbiAgICAgICAgY29uc3QgYnJvd3NlckluZm8gPSBhd2FpdCBQcm9taXNlLmFsbChicm93c2Vycy5tYXAoYnJvd3NlciA9PiBicm93c2VyUHJvdmlkZXJQb29sLmdldEJyb3dzZXJJbmZvKGJyb3dzZXIpKSk7XG5cbiAgICAgICAgcmV0dXJuIGZsYXR0ZW4oYnJvd3NlckluZm8pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBfaXNDb25maWd1cmF0aW9uRmlsZUV4aXN0cyAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGZpbGVFeGlzdHMgPSBhd2FpdCBzdXBlci5faXNDb25maWd1cmF0aW9uRmlsZUV4aXN0cyhmaWxlUGF0aCk7XG5cbiAgICAgICAgaWYgKCFmaWxlRXhpc3RzICYmIHRoaXMuX2lzRXhwbGljaXRDb25maWcpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRUZXN0Y2FmZUNvbmZpZ3VyYXRpb25GaWxlLCBmaWxlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIGZpbGVFeGlzdHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgRklMRU5BTUVTICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBDT05GSUdVUkFUSU9OX0ZJTEVOQU1FUztcbiAgICB9XG59XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGNhZmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBaUQ7QUFDakQsbUNBQTRDO0FBQzVDLHNEQUFxRTtBQUNyRSxrRUFBMEM7QUFDMUMsMkVBQWlEO0FBQ2pELG1GQUEwRDtBQUMxRCw0Q0FBK0U7QUFDL0UsK0VBQXNEO0FBQ3RELHVGQUFnRTtBQUNoRSx1R0FBNEU7QUFFNUUscURBYTBCO0FBRTFCLG9FQUEyQztBQVMzQyxzRkFBNkQ7QUFDN0QsNERBQWdGO0FBRWhGLG9FQUEyRDtBQUUzRCx1Q0FBcUQ7QUFDckQsK0NBQWlEO0FBQ2pELDJDQUFpRDtBQUVqRCxNQUFNLDJCQUEyQixHQUFHLGFBQWEsQ0FBQztBQUNsRCxNQUFNLHVCQUF1QixHQUFPLGtDQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsMkJBQTJCLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUVoSCxNQUFNLDZCQUE2QixHQUFHLGFBQWEsQ0FBQztBQUVwRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLHNCQUFZLENBQUMsU0FBUztJQUN0QixzQkFBWSxDQUFDLFdBQVc7SUFDeEIsc0JBQVksQ0FBQyxrQkFBa0I7SUFDL0Isc0JBQVksQ0FBQyxlQUFlO0lBQzVCLHNCQUFZLENBQUMsc0JBQXNCO0lBQ25DLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsc0JBQXNCO0NBQ3RDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHO0lBQzNCLHNCQUFZLENBQUMsZUFBZTtJQUM1QixzQkFBWSxDQUFDLGNBQWM7SUFDM0Isc0JBQVksQ0FBQyxLQUFLO0lBQ2xCLHNCQUFZ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LEtBQUssU0FBUztRQUN2QixPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7Q0FDSjtBQXBPRCx3Q0FvT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29uZmlndXJhdGlvbiBmcm9tICcuL2NvbmZpZ3VyYXRpb24tYmFzZSc7XG5pbXBvcnQgeyBjYXN0QXJyYXksIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0R3JlcE9wdGlvbnMsIGdldFNTTE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9nZXQtb3B0aW9ucyc7XG5pbXBvcnQgT1BUSU9OX05BTUVTIGZyb20gJy4vb3B0aW9uLW5hbWVzJztcbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBwcmVwYXJlUmVwb3J0ZXJzIGZyb20gJy4uL3V0aWxzL3ByZXBhcmUtcmVwb3J0ZXJzJztcbmltcG9ydCB7IGdldENvbmNhdGVuYXRlZFZhbHVlc1N0cmluZywgZ2V0UGx1cmFsU3VmZml4IH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCByZW5kZXJUZW1wbGF0ZSBmcm9tICcuLi91dGlscy9yZW5kZXItdGVtcGxhdGUnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZCBmcm9tICcuLi91dGlscy9yZXNvbHZlLXBhdGgtcmVsYXRpdmVseS1jd2QnO1xuXG5pbXBvcnQge1xuICAgIERFRkFVTFRfQVBQX0lOSVRfREVMQVksXG4gICAgREVGQVVMVF9DT05DVVJSRU5DWV9WQUxVRSxcbiAgICBERUZBVUxUX0RFVkVMT1BNRU5UX01PREUsXG4gICAgREVGQVVMVF9ESVNBQkxFX0hUVFAyLFxuICAgIERFRkFVTFRfRklMVEVSX0ZOLFxuICAgIERFRkFVTFRfUFJPWFlMRVNTLFxuICAgIERFRkFVTFRfUkVUUllfVEVTVF9QQUdFUyxcbiAgICBERUZBVUxUX1NDUkVFTlNIT1RfVEhVTUJOQUlMUyxcbiAgICBERUZBVUxUX1NPVVJDRV9ESVJFQ1RPUklFUyxcbiAgICBERUZBVUxUX1NQRUVEX1ZBTFVFLFxuICAgIERFRkFVTFRfVElNRU9VVCxcbiAgICBnZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zLFxufSBmcm9tICcuL2RlZmF1bHQtdmFsdWVzJztcblxuaW1wb3J0IE9wdGlvblNvdXJjZSBmcm9tICcuL29wdGlvbi1zb3VyY2UnO1xuXG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgRmlsdGVyT3B0aW9uLFxuICAgIFJlcG9ydGVyT3B0aW9uLFxuICAgIFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBDdXN0b21pemFibGVDb21waWxlcnMgZnJvbSAnLi9jdXN0b21pemFibGUtY29tcGlsZXJzJztcbmltcG9ydCB7IERFUFJFQ0FURUQsIGdldERlcHJlY2F0aW9uTWVzc2FnZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbnMvZGVwcmVjYXRlZCc7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCBicm93c2VyUHJvdmlkZXJQb29sIGZyb20gJy4uL2Jyb3dzZXIvcHJvdmlkZXIvcG9vbCc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24sIHsgQnJvd3NlckluZm8gfSBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgQ09ORklHVVJBVElPTl9FWFRFTlNJT05TIH0gZnJvbSAnLi9mb3JtYXRzJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcblxuY29uc3QgQkFTRV9DT05GSUdVUkFUSU9OX0ZJTEVOQU1FID0gJy50ZXN0Y2FmZXJjJztcbmNvbnN0IENPTkZJR1VSQVRJT05fRklMRU5BTUVTICAgICA9IENPTkZJR1VSQVRJT05fRVhURU5TSU9OUy5tYXAoZXh0ID0+IGAke0JBU0VfQ09ORklHVVJBVElPTl9GSUxFTkFNRX0ke2V4dH1gKTtcblxuY29uc3QgREVGQVVMVF9TQ1JFRU5TSE9UU19ESVJFQ1RPUlkgPSAnc2NyZWVuc2hvdHMnO1xuXG5jb25zdCBPUFRJT05fRkxBR19OQU1FUyA9IFtcbiAgICBPUFRJT05fTkFNRVMuZGVidWdNb2RlLFxuICAgIE9QVElPTl9OQU1FUy5kZWJ1Z09uRmFpbCxcbiAgICBPUFRJT05fTkFNRVMuc2tpcFVuY2F1Z2h0RXJyb3JzLFxuICAgIE9QVElPTl9OQU1FUy5zdG9wT25GaXJzdEZhaWwsXG4gICAgT1BUSU9OX05BTUVTLnRha2VTY3JlZW5zaG90c09uRmFpbHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVQYWdlQ2FjaGluZyxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZVBhZ2VSZWxvYWRzLFxuICAgIE9QVElPTl9OQU1FUy5kaXNhYmxlU2NyZWVuc2hvdHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MsXG5dO1xuXG5jb25zdCBPUFRJT05fSU5JVF9GTEFHX05BTUVTID0gW1xuICAgIE9QVElPTl9OQU1FUy5kZXZlbG9wbWVudE1vZGUsXG4gICAgT1BUSU9OX05BTUVTLnJldHJ5VGVzdFBhZ2VzLFxuICAgIE9QVElPTl9OQU1FUy5jYWNoZSxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZUh0dHAyLFxuICAgIE9QVElPTl9OQU1FUy5wcm94eWxlc3MsXG5dO1xuXG5pbnRlcmZhY2UgVGVzdENhZmVBZGRpdGlvbmFsU3RhcnRPcHRpb25zIHtcbiAgICByZXRyeVRlc3RQYWdlczogYm9vbGVhbjtcbiAgICBzc2w6IHN0cmluZztcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgY2FjaGU6IGJvb2xlYW47XG4gICAgZGlzYWJsZUh0dHAyOiBib29sZWFuO1xuICAgIHByb3h5bGVzczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RDYWZlU3RhcnRPcHRpb25zIHtcbiAgICBob3N0bmFtZT86IHN0cmluZztcbiAgICBwb3J0MT86IG51bWJlcjtcbiAgICBwb3J0Mj86IG51bWJlcjtcbiAgICBvcHRpb25zOiBUZXN0Q2FmZUFkZGl0aW9uYWxTdGFydE9wdGlvbnM7XG59XG5cbnR5cGUgQnJvd3NlckluZm9Tb3VyY2UgPSBCcm93c2VySW5mbyB8IEJyb3dzZXJDb25uZWN0aW9uO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzRXhwbGljaXRDb25maWc6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbmZpZ0ZpbGUgPSAnJykge1xuICAgICAgICBzdXBlcihjb25maWdGaWxlIHx8IENPTkZJR1VSQVRJT05fRklMRU5BTUVTKTtcblxuICAgICAgICB0aGlzLl9pc0V4cGxpY2l0Q29uZmlnID0gISFjb25maWdGaWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0IChvcHRpb25zPzogRGljdGlvbmFyeTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHN1cGVyLmluaXQoKTtcblxuICAgICAgICBjb25zdCBvcHRzID0gYXdhaXQgdGhpcy5fbG9hZCgpO1xuXG4gICAgICAgIHRoaXMuX2NoZWNrVW5zZWN1cmVEYXRhSW5KU09OQ29uZmlndXJhdGlvbihvcHRzKTtcblxuICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IENvbmZpZ3VyYXRpb24uX2Zyb21PYmoob3B0cyk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX25vcm1hbGl6ZU9wdGlvbnNBZnRlckxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuYXN5bmNNZXJnZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFzeW5jTWVyZ2VPcHRpb25zIChvcHRpb25zPzogRGljdGlvbmFyeTxvYmplY3Q+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIHN1cGVyLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuaXNDbGkgJiYgdGhpcy5fb3B0aW9ucy5icm93c2VycylcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWUgPSBhd2FpdCB0aGlzLl9nZXRCcm93c2VySW5mbygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUZsYWdzKCk7XG4gICAgICAgIHRoaXMuX3NldERlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUNvbXBpbGVyT3B0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RpZnlBYm91dE92ZXJyaWRkZW5PcHRpb25zICh3YXJuaW5nTG9nPzogV2FybmluZ0xvZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJyaWRkZW5PcHRpb25zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBvcHRpb25zU3RyICAgID0gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKHRoaXMuX292ZXJyaWRkZW5PcHRpb25zKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1N1ZmZpeCA9IGdldFBsdXJhbFN1ZmZpeCh0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTWVzc2FnZSA9IHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMuY29uZmlnT3B0aW9uc1dlcmVPdmVycmlkZGVuLCBvcHRpb25zU3RyLCBvcHRpb25zU3VmZml4KTtcblxuICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93Q29uc29sZVdhcm5pbmcocmVuZGVyZWRNZXNzYWdlKTtcblxuICAgICAgICBpZiAod2FybmluZ0xvZylcbiAgICAgICAgICAgIHdhcm5pbmdMb2cuYWRkV2FybmluZyhyZW5kZXJlZE1lc3NhZ2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJyaWRkZW5PcHRpb25zID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeUFib3V0RGVwcmVjYXRlZE9wdGlvbnMgKHdhcm5pbmdMb2c6IFdhcm5pbmdMb2cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVwcmVjYXRlZE9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKG5hbWUsIG9wdGlvbikgPT4gbmFtZSBpbiBERVBSRUNBVEVEICYmIG9wdGlvbi52YWx1ZSAhPT0gdm9pZCAwKTtcblxuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbk5hbWUgaW4gZGVwcmVjYXRlZE9wdGlvbnMpXG4gICAgICAgICAgICB3YXJuaW5nTG9nLmFkZFdhcm5pbmcoZ2V0RGVwcmVjYXRpb25NZXNzYWdlKERFUFJFQ0FURURbb3B0aW9uTmFtZV0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXJ0T3B0aW9ucyAoKTogVGVzdENhZmVTdGFydE9wdGlvbnMge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFRlc3RDYWZlU3RhcnRPcHRpb25zID0ge1xuICAgICAgICAgICAgaG9zdG5hbWU6IHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5ob3N0bmFtZSkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgcG9ydDE6ICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MSkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgcG9ydDI6ICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MikgYXMgbnVtYmVyLFxuXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgc3NsOiAgICAgICAgICAgICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuc3NsKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuZGV2ZWxvcG1lbnRNb2RlKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIHJldHJ5VGVzdFBhZ2VzOiAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnJldHJ5VGVzdFBhZ2VzKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIGNhY2hlOiAgICAgICAgICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmNhY2hlKSBhcyBib29sZWFuLFxuICAgICAgICAgICAgICAgIGRpc2FibGVIdHRwMjogICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmRpc2FibGVIdHRwMikgYXMgYm9vbGVhbixcbiAgICAgICAgICAgICAgICBwcm94eWxlc3M6ICAgICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wcm94eWxlc3MpIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tVbnNlY3VyZURhdGFJbkpTT05Db25maWd1cmF0aW9uIChvcHRzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0pTT05Db25maWd1cmF0aW9uKCkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYgKG9wdHM/LltPUFRJT05fTkFNRVMuZGFzaGJvYXJkXT8udG9rZW4pXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmRhc2hib2FyZFRva2VuSW5KU09OKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZsYWcgKG5hbWU6IHN0cmluZywgc291cmNlID0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKG5hbWUsIHZvaWQgMCwgc291cmNlKTtcblxuICAgICAgICBvcHRpb24udmFsdWUgPSAhIW9wdGlvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlRmxhZ3MgKCk6IHZvaWQge1xuICAgICAgICBPUFRJT05fRkxBR19OQU1FUy5mb3JFYWNoKG5hbWUgPT4gdGhpcy5fcHJlcGFyZUZsYWcobmFtZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVJbml0RmxhZ3MgKCk6IHZvaWQge1xuICAgICAgICBPUFRJT05fSU5JVF9GTEFHX05BTUVTLmZvckVhY2gobmFtZSA9PiB0aGlzLl9wcmVwYXJlRmxhZyhuYW1lLCBPcHRpb25Tb3VyY2UuRGVmYXVsdCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX25vcm1hbGl6ZU9wdGlvbnNBZnRlckxvYWQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcmVwYXJlU3NsT3B0aW9ucygpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlSW5pdEZsYWdzKCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVGaWx0ZXJGbigpO1xuICAgICAgICB0aGlzLl9lbnN1cmVBcnJheU9wdGlvbihPUFRJT05fTkFNRVMuc3JjKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmJyb3dzZXJzKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlUmVwb3J0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZpbHRlckZuICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5maWx0ZXIsIERFRkFVTFRfRklMVEVSX0ZOLCBPcHRpb25Tb3VyY2UuRGVmYXVsdCk7XG5cbiAgICAgICAgaWYgKCFmaWx0ZXJPcHRpb24udmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uVmFsdWUgPSBmaWx0ZXJPcHRpb24udmFsdWUgYXMgRmlsdGVyT3B0aW9uO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlclRlc3RHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlckZpeHR1cmVHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGZpbHRlck9wdGlvbi52YWx1ZSAgPSBnZXRGaWx0ZXJGbihmaWx0ZXJPcHRpb24udmFsdWUpIGFzIEZ1bmN0aW9uO1xuICAgICAgICBmaWx0ZXJPcHRpb24uc291cmNlID0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlU2NyZWVuc2hvdE9wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXRoICAgICAgICA9IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZChERUZBVUxUX1NDUkVFTlNIT1RTX0RJUkVDVE9SWSk7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RzID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5zY3JlZW5zaG90cywge30sIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKS52YWx1ZSBhcyBEaWN0aW9uYXJ5PHN0cmluZ3xib29sZWFuPjtcblxuICAgICAgICBpZiAoIXNjcmVlbnNob3RzLnBhdGgpXG4gICAgICAgICAgICBzY3JlZW5zaG90cy5wYXRoID0gcGF0aDtcblxuICAgICAgICBpZiAoc2NyZWVuc2hvdHMudGh1bWJuYWlscyA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgc2NyZWVuc2hvdHMudGh1bWJuYWlscyA9IERFRkFVTFRfU0NSRUVOU0hPVF9USFVNQk5BSUxTO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Vuc3VyZVNraXBKc09wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9lbnN1cmVPcHRpb24oT1BUSU9OX05BTUVTLnNraXBKc0Vycm9ycywgdm9pZCAwLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gISFvcHRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZVJlcG9ydGVycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyT3B0aW9uID0gdGhpcy5fb3B0aW9uc1tPUFRJT05fTkFNRVMucmVwb3J0ZXJdO1xuXG4gICAgICAgIGlmICghcmVwb3J0ZXJPcHRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBjYXN0QXJyYXkocmVwb3J0ZXJPcHRpb24udmFsdWUgYXMgUmVwb3J0ZXJPcHRpb24pO1xuXG4gICAgICAgIHJlcG9ydGVyT3B0aW9uLnZhbHVlID0gcHJlcGFyZVJlcG9ydGVycyhvcHRpb25WYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZVNzbE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzc2xPcHRpb25zID0gdGhpcy5fb3B0aW9uc1tPUFRJT05fTkFNRVMuc3NsXTtcblxuICAgICAgICBpZiAoIXNzbE9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgc3NsT3B0aW9ucy52YWx1ZSA9IGF3YWl0IGdldFNTTE9wdGlvbnMoc3NsT3B0aW9ucy52YWx1ZSBhcyBzdHJpbmcpIGFzIERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RGVmYXVsdFZhbHVlcyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuc2VsZWN0b3JUaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQuc2VsZWN0b3IsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5hc3NlcnRpb25UaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQuYXNzZXJ0aW9uLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMucGFnZUxvYWRUaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQucGFnZUxvYWQsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5zcGVlZCwgREVGQVVMVF9TUEVFRF9WQUxVRSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmFwcEluaXREZWxheSwgREVGQVVMVF9BUFBfSU5JVF9ERUxBWSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmNvbmN1cnJlbmN5LCBERUZBVUxUX0NPTkNVUlJFTkNZX1ZBTFVFLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuc3JjLCBERUZBVUxUX1NPVVJDRV9ESVJFQ1RPUklFUywgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmRldmVsb3BtZW50TW9kZSwgREVGQVVMVF9ERVZFTE9QTUVOVF9NT0RFLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMucmV0cnlUZXN0UGFnZXMsIERFRkFVTFRfUkVUUllfVEVTVF9QQUdFUywgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmRpc2FibGVIdHRwMiwgREVGQVVMVF9ESVNBQkxFX0hUVFAyLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMucHJveHlsZXNzLCBERUZBVUxUX1BST1hZTEVTUywgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIHRoaXMuX2Vuc3VyZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuX2Vuc3VyZVNraXBKc09wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlQ29tcGlsZXJPcHRpb25zICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5jb21waWxlck9wdGlvbnMsIGdldERlZmF1bHRDb21waWxlck9wdGlvbnMoKSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIGNvbXBpbGVyT3B0aW9ucy52YWx1ZSA9IGNvbXBpbGVyT3B0aW9ucy52YWx1ZSB8fCBnZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zKCk7XG5cbiAgICAgICAgY29uc3QgdHNDb25maWdQYXRoID0gdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnRzQ29uZmlnUGF0aCk7XG5cbiAgICAgICAgaWYgKHRzQ29uZmlnUGF0aCkge1xuICAgICAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25WYWx1ZSAgICAgPSBjb21waWxlck9wdGlvbnMudmFsdWUgYXMgQ29tcGlsZXJPcHRpb25zO1xuICAgICAgICAgICAgbGV0IHR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMgPSBjb21waWxlck9wdGlvblZhbHVlW0N1c3RvbWl6YWJsZUNvbXBpbGVycy50eXBlc2NyaXB0XSBhcyBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuXG4gICAgICAgICAgICB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgY29uZmlnUGF0aDogdHNDb25maWdQYXRoLFxuICAgICAgICAgICAgfSwgdHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIChjb21waWxlck9wdGlvbnMudmFsdWUgYXMgQ29tcGlsZXJPcHRpb25zKVtDdXN0b21pemFibGVDb21waWxlcnMudHlwZXNjcmlwdF0gPSB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0QnJvd3NlckluZm8gKCk6IFByb21pc2U8QnJvd3NlckluZm9Tb3VyY2VbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWUpXG4gICAgICAgICAgICByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgYnJvd3NlcnMgPSBBcnJheS5pc0FycmF5KHRoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWUpID8gWy4uLnRoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWVdIDogW3RoaXMuX29wdGlvbnMuYnJvd3NlcnMudmFsdWVdO1xuXG4gICAgICAgIGNvbnN0IGJyb3dzZXJJbmZvID0gYXdhaXQgUHJvbWlzZS5hbGwoYnJvd3NlcnMubWFwKGJyb3dzZXIgPT4gYnJvd3NlclByb3ZpZGVyUG9vbC5nZXRCcm93c2VySW5mbyhicm93c2VyKSkpO1xuXG4gICAgICAgIHJldHVybiBmbGF0dGVuKGJyb3dzZXJJbmZvKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMgKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBmaWxlRXhpc3RzID0gYXdhaXQgc3VwZXIuX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMoZmlsZVBhdGgpO1xuXG4gICAgICAgIGlmICghZmlsZUV4aXN0cyAmJiB0aGlzLl9pc0V4cGxpY2l0Q29uZmlnKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kVGVzdGNhZmVDb25maWd1cmF0aW9uRmlsZSwgZmlsZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiBmaWxlRXhpc3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IEZJTEVOQU1FUyAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gQ09ORklHVVJBVElPTl9GSUxFTkFNRVM7XG4gICAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const RequestHook = require('../api/request-hooks/hook');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlndXJhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSZXF1ZXN0SG9vayA9IHJlcXVpcmUoJy4uL2FwaS9yZXF1ZXN0LWhvb2tzL2hvb2snKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xudHlwZSBUZW1wbGF0ZUFyZ3VtZW50cyA9IGFueVtdO1xuXG5pbnRlcmZhY2UgU2NyZWVuc2hvdE9wdGlvblZhbHVlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdGFrZU9uRmFpbHM/OiBib29sZWFuO1xuICAgIHBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIGZ1bGxQYWdlPzogYm9vbGVhbjtcbiAgICB0aHVtYm5haWxzPzogYm9vbGVhbjtcbiAgICBhdXRvVGFrZU9uRmFpbHM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgUXVhcmFudGluZU9wdGlvblZhbHVlIHtcbiAgICBhdHRlbXB0TGltaXQ/OiBudW1iZXI7XG4gICAgc3VjY2Vzc1RocmVzaG9sZD86IG51bWJlcjtcbn1cblxudHlwZSBTa2lwSnNFcnJvcnNPcHRpb25WYWx1ZSA9IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBib29sZWFuO1xuXG5pbnRlcmZhY2UgVGVzdGluZ0VudHJ5SG9va3Mge1xuICAgIGJlZm9yZT86IEZ1bmN0aW9uO1xuICAgIGFmdGVyPzogRnVuY3Rpb247XG59XG5cbmludGVyZmFjZSBHbG9iYWxIb29rcyB7XG4gICAgdGVzdFJ1bj86IFRlc3RpbmdFbnRyeUhvb2tzO1xuICAgIGZpeHR1cmU/OiBUZXN0aW5nRW50cnlIb29rcztcbiAgICB0ZXN0PzogVGVzdGluZ0VudHJ5SG9va3M7XG4gICAgcmVxdWVzdD86IHR5cGVvZiBSZXF1ZXN0SG9va1tdIHwgdHlwZW9mIFJlcXVlc3RIb29rO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG50eXBlIE9wdGlvblZhbHVlID0gdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmdbXSB8IEZ1bmN0aW9uIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IFNjcmVlbnNob3RPcHRpb25WYWx1ZSB8IFF1YXJhbnRpbmVPcHRpb25WYWx1ZSB8IENvbXBpbGVyT3B0aW9ucyB8IEdsb2JhbEhvb2tzIHwgU2tpcEpzRXJyb3JzT3B0aW9uVmFsdWU7XG4iXX0=
|