@o3r/rules-engine 11.6.0-prerelease.7 → 11.6.0-prerelease.8
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/builders/rules-engine-extractor/helpers/rules-engine.extractor.d.ts +1 -10
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.d.ts.map +1 -1
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.d.ts +1 -2
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.d.ts.map +1 -1
- package/builders/rules-engine-extractor/helpers/rules-engine.extractor.js +27 -36
- package/builders/rules-engine-extractor/index.d.ts.map +1 -1
- package/builders/rules-engine-extractor/index.js +15 -20
- package/builders/rules-engine-extractor/schema.d.ts.map +1 -1
- package/components/rules-engine/index.d.ts +1 -1
- package/components/rules-engine/index.d.ts.map +1 -1
- package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts.map +1 -1
- package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
- package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts.map +1 -1
- package/components/rules-engine/shared/fallback-to.pipe.d.ts.map +1 -1
- package/components/rules-engine/shared/index.d.ts +1 -1
- package/components/rules-engine/shared/index.d.ts.map +1 -1
- package/components/rules-engine/shared/json-or-string.pipe.d.ts.map +1 -1
- package/components/rules-engine/shared/ruleset-history.helper.d.ts.map +1 -1
- package/devkit/rules-engine-devkit.interface.d.ts.map +1 -1
- package/devkit/rules-engine-devtools.console.service.d.ts.map +1 -1
- package/devkit/rules-engine-devtools.message.service.d.ts +1 -1
- package/devkit/rules-engine-devtools.message.service.d.ts.map +1 -1
- package/devkit/rules-engine-devtools.module.d.ts.map +1 -1
- package/devkit/rules-engine-devtools.service.d.ts.map +1 -1
- package/devkit/rules-engine-devtools.token.d.ts.map +1 -1
- package/engine/debug/engine.debug.d.ts +0 -2
- package/engine/debug/engine.debug.d.ts.map +1 -1
- package/engine/debug/helpers.d.ts.map +1 -1
- package/engine/engine.d.ts +0 -3
- package/engine/engine.d.ts.map +1 -1
- package/engine/engine.interface.d.ts.map +1 -1
- package/engine/fact/fact.interfaces.d.ts.map +1 -1
- package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
- package/engine/operator/operator.helpers.d.ts +1 -3
- package/engine/operator/operator.helpers.d.ts.map +1 -1
- package/engine/operator/operator.interface.d.ts.map +1 -1
- package/engine/operator/operators/array-based.operators.d.ts.map +1 -1
- package/engine/operator/operators/basic.operators.d.ts.map +1 -1
- package/engine/operator/operators/date-based.operators.d.ts.map +1 -1
- package/engine/operator/operators/index.d.ts +2 -2
- package/engine/operator/operators/index.d.ts.map +1 -1
- package/engine/operator/operators/number-based.operators.d.ts.map +1 -1
- package/engine/ruleset-executor.d.ts +7 -2
- package/engine/ruleset-executor.d.ts.map +1 -1
- package/engine/structure.d.ts.map +1 -1
- package/esm2022/components/rules-engine/index.mjs +2 -2
- package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +2 -2
- package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +3 -4
- package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +6 -6
- package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +2 -2
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +7 -7
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +9 -9
- package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +3 -3
- package/esm2022/components/rules-engine/shared/index.mjs +2 -2
- package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +2 -2
- package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +5 -5
- package/esm2022/devkit/index.mjs +1 -1
- package/esm2022/devkit/rules-engine-devkit.interface.mjs +4 -4
- package/esm2022/devkit/rules-engine-devtools.console.service.mjs +5 -7
- package/esm2022/devkit/rules-engine-devtools.message.service.mjs +12 -12
- package/esm2022/devkit/rules-engine-devtools.module.mjs +7 -7
- package/esm2022/devkit/rules-engine-devtools.service.mjs +16 -16
- package/esm2022/devkit/rules-engine-devtools.token.mjs +2 -2
- package/esm2022/engine/debug/engine.debug.mjs +16 -18
- package/esm2022/engine/debug/helpers.mjs +11 -11
- package/esm2022/engine/engine.interface.mjs +1 -1
- package/esm2022/engine/engine.mjs +12 -15
- package/esm2022/engine/fact/fact.interfaces.mjs +1 -1
- package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +6 -6
- package/esm2022/engine/operator/operator.helpers.mjs +15 -17
- package/esm2022/engine/operator/operator.interface.mjs +1 -1
- package/esm2022/engine/operator/operators/array-based.operators.mjs +11 -11
- package/esm2022/engine/operator/operators/basic.operators.mjs +8 -8
- package/esm2022/engine/operator/operators/date-based.operators.mjs +3 -3
- package/esm2022/engine/operator/operators/index.mjs +6 -6
- package/esm2022/engine/operator/operators/number-based.operators.mjs +2 -2
- package/esm2022/engine/rule/index.mjs +1 -1
- package/esm2022/engine/rule/rule.helpers.mjs +1 -1
- package/esm2022/engine/ruleset-executor.mjs +27 -23
- package/esm2022/engine/structure.mjs +1 -1
- package/esm2022/fact/fact.abstract-service.mjs +1 -1
- package/esm2022/fact/reserved.facts.mjs +1 -1
- package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +1 -1
- package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +1 -1
- package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +5 -5
- package/esm2022/inner-facts/current-time/current-time.facts.mjs +1 -1
- package/esm2022/inner-facts/current-time/index.mjs +2 -2
- package/esm2022/interfaces/action.interfaces.mjs +1 -1
- package/esm2022/interfaces/index.mjs +1 -1
- package/esm2022/public_api.mjs +1 -2
- package/esm2022/services/index.mjs +2 -2
- package/esm2022/services/rules-engine.token.mjs +2 -2
- package/esm2022/services/runner/rules-engine.runner.module.mjs +7 -7
- package/esm2022/services/runner/rules-engine.runner.service.mjs +10 -10
- package/esm2022/stores/rulesets/rulesets.actions.mjs +3 -3
- package/esm2022/stores/rulesets/rulesets.effect.mjs +7 -7
- package/esm2022/stores/rulesets/rulesets.module.mjs +7 -7
- package/esm2022/stores/rulesets/rulesets.reducer.mjs +4 -4
- package/esm2022/stores/rulesets/rulesets.selectors.mjs +10 -10
- package/esm2022/stores/rulesets/rulesets.state.mjs +1 -1
- package/esm2022/stores/rulesets/rulesets.sync.mjs +3 -3
- package/fact/fact.abstract-service.d.ts.map +1 -1
- package/fact/reserved.facts.d.ts.map +1 -1
- package/fesm2022/o3r-rules-engine-fixtures-jasmine.mjs.map +1 -1
- package/fesm2022/o3r-rules-engine-fixtures-jest.mjs.map +1 -1
- package/fesm2022/o3r-rules-engine.mjs +248 -254
- package/fesm2022/o3r-rules-engine.mjs.map +1 -1
- package/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.d.ts.map +1 -1
- package/fixtures/jest/rules-engine.runner.service.fixture.jest.d.ts.map +1 -1
- package/fixtures/jest/rules-engine.runner.service.fixture.jest.js.map +1 -1
- package/inner-facts/current-time/current-time-fact.service.d.ts +1 -1
- package/inner-facts/current-time/current-time-fact.service.d.ts.map +1 -1
- package/inner-facts/current-time/current-time.facts.d.ts.map +1 -1
- package/inner-facts/current-time/index.d.ts +1 -1
- package/inner-facts/current-time/index.d.ts.map +1 -1
- package/interfaces/action.interfaces.d.ts.map +1 -1
- package/package.json +5 -5
- package/public_api.d.ts +0 -1
- package/public_api.d.ts.map +1 -1
- package/schematics/cms-adapter/index.d.ts.map +1 -1
- package/schematics/cms-adapter/index.js +1 -3
- package/schematics/facts-service/index.d.ts.map +1 -1
- package/schematics/facts-service/index.js +2 -2
- package/schematics/facts-service/schema.d.ts.map +1 -1
- package/schematics/ng-add/helpers/devtools-registration.d.ts +0 -2
- package/schematics/ng-add/helpers/devtools-registration.d.ts.map +1 -1
- package/schematics/ng-add/helpers/devtools-registration.js +2 -4
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +8 -11
- package/schematics/ng-add/schema.d.ts.map +1 -1
- package/schematics/ng-update/index.d.ts +0 -4
- package/schematics/ng-update/index.d.ts.map +1 -1
- package/schematics/ng-update/index.js +0 -4
- package/schematics/ng-update/v10.0/action-module-split.d.ts.map +1 -1
- package/schematics/ng-update/v10.0/action-module-split.js +0 -2
- package/schematics/ng-update/v11.6/use-register-action-handlers.d.ts.map +1 -1
- package/schematics/operator/index.d.ts.map +1 -1
- package/schematics/operator/index.js +2 -2
- package/schematics/operator/schema.d.ts.map +1 -1
- package/schematics/rules-engine-to-component/index.d.ts.map +1 -1
- package/schematics/rules-engine-to-component/schema.d.ts.map +1 -1
- package/services/index.d.ts +1 -1
- package/services/index.d.ts.map +1 -1
- package/services/rules-engine.token.d.ts.map +1 -1
- package/services/runner/rules-engine.runner.module.d.ts.map +1 -1
- package/services/runner/rules-engine.runner.service.d.ts +2 -2
- package/services/runner/rules-engine.runner.service.d.ts.map +1 -1
- package/stores/rulesets/rulesets.actions.d.ts.map +1 -1
- package/stores/rulesets/rulesets.effect.d.ts.map +1 -1
- package/stores/rulesets/rulesets.module.d.ts.map +1 -1
- package/stores/rulesets/rulesets.reducer.d.ts.map +1 -1
- package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
- package/stores/rulesets/rulesets.state.d.ts.map +1 -1
- package/stores/rulesets/rulesets.sync.d.ts.map +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { filterMessageContent, sendOtterMessage } from '@o3r/core';
|
|
3
|
-
import { LoggerService } from '@o3r/logger';
|
|
4
|
-
import { BehaviorSubject, combineLatest, fromEvent, Subscription } from 'rxjs';
|
|
5
|
-
import { isRulesEngineMessage } from './rules-engine-devkit.interface';
|
|
6
|
-
import { OtterRulesEngineDevtools } from './rules-engine-devtools.service';
|
|
7
|
-
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS } from './rules-engine-devtools.token';
|
|
1
|
+
import { Inject, Injectable, Optional, } from '@angular/core';
|
|
2
|
+
import { filterMessageContent, sendOtterMessage, } from '@o3r/core';
|
|
3
|
+
import { LoggerService, } from '@o3r/logger';
|
|
4
|
+
import { BehaviorSubject, combineLatest, fromEvent, Subscription, } from 'rxjs';
|
|
5
|
+
import { isRulesEngineMessage, } from './rules-engine-devkit.interface';
|
|
6
|
+
import { OtterRulesEngineDevtools, } from './rules-engine-devtools.service';
|
|
7
|
+
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, } from './rules-engine-devtools.token';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "./rules-engine-devtools.service";
|
|
10
10
|
import * as i2 from "@o3r/logger";
|
|
@@ -15,6 +15,7 @@ export class RulesEngineDevtoolsMessageService {
|
|
|
15
15
|
this.subscriptions = new Subscription();
|
|
16
16
|
this.forceEmitRulesEngineReport = new BehaviorSubject(undefined);
|
|
17
17
|
this.sendMessage = (sendOtterMessage);
|
|
18
|
+
this.serializeError = (error) => error instanceof Error ? error.toString() : error;
|
|
18
19
|
this.options = {
|
|
19
20
|
...OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS,
|
|
20
21
|
...options
|
|
@@ -34,7 +35,6 @@ export class RulesEngineDevtoolsMessageService {
|
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Function to handle the incoming messages from Otter Chrome DevTools extension
|
|
37
|
-
* @param event Event coming from the Otter Chrome DevTools extension
|
|
38
38
|
* @param message
|
|
39
39
|
*/
|
|
40
40
|
handleEvents(message) {
|
|
@@ -58,7 +58,6 @@ export class RulesEngineDevtoolsMessageService {
|
|
|
58
58
|
* @param debugEvent
|
|
59
59
|
*/
|
|
60
60
|
serializeReportEvent(debugEvent) {
|
|
61
|
-
const serializeError = (error) => error instanceof Error ? error.toString() : error;
|
|
62
61
|
if (debugEvent.type !== 'RulesetExecutionError') {
|
|
63
62
|
return debugEvent;
|
|
64
63
|
}
|
|
@@ -66,9 +65,10 @@ export class RulesEngineDevtoolsMessageService {
|
|
|
66
65
|
...debugEvent,
|
|
67
66
|
rulesEvaluations: debugEvent.rulesEvaluations.map((ruleEvaluation) => ({
|
|
68
67
|
...ruleEvaluation,
|
|
69
|
-
error: serializeError(ruleEvaluation.error)
|
|
68
|
+
error: this.serializeError(ruleEvaluation.error)
|
|
70
69
|
})),
|
|
71
|
-
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return -- type is explicitly `any`
|
|
71
|
+
errors: debugEvent.errors.map((error) => this.serializeError(error))
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
112
112
|
type: Inject,
|
|
113
113
|
args: [OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS]
|
|
114
114
|
}] }] });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXZraXQvcnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUE0QixvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJDQUEyQyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFLakksTUFBTSxPQUFPLGlDQUFpQztJQVM1QyxZQUNtQixtQkFBNkMsRUFDN0MsTUFBcUIsRUFDbUIsT0FBMkM7UUFGbkYsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEwQjtRQUM3QyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBUnZCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQywrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUVsRSxnQkFBVyxHQUFHLENBQUEsZ0JBQXFELENBQUEsQ0FBQztRQU1uRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRywyQ0FBMkM7WUFDOUMsR0FBRyxPQUFPO1NBQ1gsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FB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LGtDQUFrQztJQUMzQixRQUFRO1FBQ2IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckgsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztrSUEvR1UsaUNBQWlDLHVGQVl0QixtQ0FBbUM7c0lBWjlDLGlDQUFpQyxjQUZoQyxNQUFNOzs0RkFFUCxpQ0FBaUM7a0JBSDdDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFhSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV2dG9vbHNTZXJ2aWNlSW50ZXJmYWNlLCBmaWx0ZXJNZXNzYWdlQ29udGVudCwgc2VuZE90dGVyTWVzc2FnZSB9IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnQG8zci9sb2dnZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBEZWJ1Z0V2ZW50IH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IEF2YWlsYWJsZVJ1bGVzRW5naW5lTWVzc2FnZUNvbnRlbnRzLCBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMsIFJ1bGVzRW5naW5lTWVzc2FnZURhdGFUeXBlcyB9IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldmtpdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNSdWxlc0VuZ2luZU1lc3NhZ2UgfSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZraXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE90dGVyUnVsZXNFbmdpbmVEZXZ0b29scyB9IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUywgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX09QVElPTlMgfSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZ0b29scy50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVzRW5naW5lRGV2dG9vbHNNZXNzYWdlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgRGV2dG9vbHNTZXJ2aWNlSW50ZXJmYWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9yY2VFbWl0UnVsZXNFbmdpbmVSZXBvcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZW5kTWVzc2FnZSA9IHNlbmRPdHRlck1lc3NhZ2U8QXZhaWxhYmxlUnVsZXNFbmdpbmVNZXNzYWdlQ29udGVudHM+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXNFbmdpbmVEZXZ0b29sczogT3R0ZXJSdWxlc0VuZ2luZURldnRvb2xzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX09QVElPTlMpIG9wdGlvbnM/OiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5PVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmlzQWN0aXZhdGVkT25Cb290c3RyYXApIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gdHJpZ2dlciBhIHJlLXNlbmQgYSByZXF1ZXN0ZWQgbWVzc2FnZXMgdG8gdGhlIE90dGVyIENocm9tZSBEZXZUb29scyBleHRlbnNpb25cbiAgICogQHBhcmFtIG9ubHkgcmVzdHJpY3RlZCBsaXN0IG9mIG1lc3NhZ2VzIHRvIHJlLXNlbmRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVFbWl0UmVxdWVzdChvbmx5PzogUnVsZXNFbmdpbmVNZXNzYWdlRGF0YVR5cGVzW10pIHtcbiAgICBpZiAoIW9ubHkgfHwgb25seS5pbmNsdWRlcygncnVsZXNFbmdpbmVFdmVudHMnKSkge1xuICAgICAgdGhpcy5mb3JjZUVtaXRSdWxlc0VuZ2luZVJlcG9ydC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSBPdHRlciBDaHJvbWUgRGV2VG9vbHMgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSBldmVudCBFdmVudCBjb21pbmcgZnJvbSB0aGUgT3R0ZXIgQ2hyb21lIERldlRvb2xzIGV4dGVuc2lvblxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudHMobWVzc2FnZTogQXZhaWxhYmxlUnVsZXNFbmdpbmVNZXNzYWdlQ29udGVudHMpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTWVzc2FnZSBoYW5kbGluZyBieSB0aGUgY29uZmlndXJhdGlvbiBzZXJ2aWNlJywgbWVzc2FnZSk7XG5cbiAgICBzd2l0Y2ggKG1lc3NhZ2UuZGF0YVR5cGUpIHtcbiAgICAgIGNhc2UgJ2Nvbm5lY3QnOiB7XG4gICAgICAgIHRoaXMuY29ubmVjdFBsdWdpbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3JlcXVlc3RNZXNzYWdlcyc6IHtcbiAgICAgICAgdGhpcy5oYW5kbGVSZUVtaXRSZXF1ZXN0KG1lc3NhZ2Uub25seSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdNZXNzYWdlIGlnbm9yZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24gc2VydmljZScsIG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgZXhjZXB0aW9ucyBpbiBhIHdheSB0aGF0IHdpbGwgZGlzcGxheSB0aGUgZXJyb3IgbWVzc2FnZSBhZnRlciBhIEpTT04uc3RyaW5naWZ5KClcbiAgICogQHBhcmFtIGRlYnVnRXZlbnRcbiAgICovXG4gIHByaXZhdGUgc2VyaWFsaXplUmVwb3J0RXZlbnQoZGVidWdFdmVudDogRGVidWdFdmVudCkge1xuICAgIGNvbnN0IHNlcmlhbGl6ZUVycm9yID0gKGVycm9yOiBhbnkpID0+IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci50b1N0cmluZygpIDogZXJyb3I7XG4gICAgaWYgKGRlYnVnRXZlbnQudHlwZSAhPT0gJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicpIHtcbiAgICAgIHJldHVybiBkZWJ1Z0V2ZW50O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVidWdFdmVudCxcbiAgICAgIHJ1bGVzRXZhbHVhdGlvbnM6IGRlYnVnRXZlbnQucnVsZXNFdmFsdWF0aW9ucy5tYXAoKHJ1bGVFdmFsdWF0aW9uKSA9PiAoe1xuICAgICAgICAuLi5ydWxlRXZhbHVhdGlvbixcbiAgICAgICAgZXJyb3I6IHNlcmlhbGl6ZUVycm9yKHJ1bGVFdmFsdWF0aW9uLmVycm9yKVxuICAgICAgfSkpLFxuICAgICAgZXJyb3JzOiBkZWJ1Z0V2ZW50LmVycm9ycy5tYXAoc2VyaWFsaXplRXJyb3IpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzdGFydCB0aGUgcnVsZXMgZW5naW5lIHJlcG9ydGluZyB0byB0aGUgT3R0ZXIgQ2hyb21lIERldlRvb2xzIGV4dGVuc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFJ1bGVzRW5naW5lUmVwb3J0KCkge1xuICAgIGlmICh0aGlzLnJ1bGVzRW5naW5lRGV2dG9vbHMucnVsZXNFbmdpbmVSZXBvcnQkKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZvcmNlRW1pdFJ1bGVzRW5naW5lUmVwb3J0LCB0aGlzLnJ1bGVzRW5naW5lRGV2dG9vbHMucnVsZXNFbmdpbmVSZXBvcnQkXSkuc3Vic2NyaWJlKFxuICAgICAgICAgIChbLHJlcG9ydF0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFJlcG9ydCA9IHsuLi5yZXBvcnQsIGV2ZW50czogcmVwb3J0LmV2ZW50cy5tYXAoKHJlcG9ydEV2ZW50cykgPT4gdGhpcy5zZXJpYWxpemVSZXBvcnRFdmVudChyZXBvcnRFdmVudHMpKX07XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKCdydWxlc0VuZ2luZUV2ZW50cycsIHNhbml0aXplZFJlcG9ydCk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjb25uZWN0IHRoZSBwbHVnaW4gdG8gdGhlIE90dGVyIERldlRvb2xzIGV4dGVuc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBjb25uZWN0UGx1Z2luKCkge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oJ090dGVyIERldlRvb2xzIGlzIHBsdWdnZWQgdG8gdGhlIGFwcGxpY2F0aW9uJyk7XG4gICAgdGhpcy5mb3JjZUVtaXRSdWxlc0VuZ2luZVJlcG9ydC5uZXh0KCk7XG4gIH1cblxuICAvKiogQWN0aXZhdGUgdGhlIE90dGVyIERldlRvb2xzICovXG4gIHB1YmxpYyBhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLnN0YXJ0UnVsZXNFbmdpbmVSZXBvcnQoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnbWVzc2FnZScpLnBpcGUoZmlsdGVyTWVzc2FnZUNvbnRlbnQoaXNSdWxlc0VuZ2luZU1lc3NhZ2UpKS5zdWJzY3JpYmUoKGUpID0+IHRoaXMuaGFuZGxlRXZlbnRzKGUpKVxuICAgICk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXZraXQvcnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFFVixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGFBQWEsR0FDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBSWQsT0FBTyxFQUVMLG9CQUFvQixHQUdyQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsMkNBQTJDLEVBQzNDLG1DQUFtQyxHQUNwQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBS3ZDLE1BQU0sT0FBTyxpQ0FBaUM7SUFTNUMsWUFDbUIsbUJBQTZDLEVBQzdDLE1BQXFCLEVBQ21CLE9BQTJDO1FBRm5GLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEI7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVJ2QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsK0JBQTBCLEdBQUcsSUFBSSxlQUFlLENBQU8sU0FBUyxDQUFDLENBQUM7UUFFbEUsZ0JBQVcsR0FBRyxDQUFBLGdCQUFxRCxDQUFBLENBQUM7UUFnRHBFLG1CQUFjLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUs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Q0FBOEMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0NBQWtDO0lBQzNCLFFBQVE7UUFDYixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNySCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO2tJQWhIVSxpQ0FBaUMsdUZBWXRCLG1DQUFtQztzSUFaOUMsaUNBQWlDLGNBRmhDLE1BQU07OzRGQUVQLGlDQUFpQztrQkFIN0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERldnRvb2xzU2VydmljZUludGVyZmFjZSxcbiAgZmlsdGVyTWVzc2FnZUNvbnRlbnQsXG4gIHNlbmRPdHRlck1lc3NhZ2UsXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBMb2dnZXJTZXJ2aWNlLFxufSBmcm9tICdAbzNyL2xvZ2dlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb21FdmVudCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHtcbiAgRGVidWdFdmVudCxcbn0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7XG4gIEF2YWlsYWJsZVJ1bGVzRW5naW5lTWVzc2FnZUNvbnRlbnRzLFxuICBpc1J1bGVzRW5naW5lTWVzc2FnZSxcbiAgUnVsZXNFbmdpbmVEZXZ0b29sc1NlcnZpY2VPcHRpb25zLFxuICBSdWxlc0VuZ2luZU1lc3NhZ2VEYXRhVHlwZXMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldmtpdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgT3R0ZXJSdWxlc0VuZ2luZURldnRvb2xzLFxufSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZ0b29scy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19ERUZBVUxUX09QVElPTlMsXG4gIE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TLFxufSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZ0b29scy50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVzRW5naW5lRGV2dG9vbHNNZXNzYWdlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgRGV2dG9vbHNTZXJ2aWNlSW50ZXJmYWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9yY2VFbWl0UnVsZXNFbmdpbmVSZXBvcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZW5kTWVzc2FnZSA9IHNlbmRPdHRlck1lc3NhZ2U8QXZhaWxhYmxlUnVsZXNFbmdpbmVNZXNzYWdlQ29udGVudHM+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXNFbmdpbmVEZXZ0b29sczogT3R0ZXJSdWxlc0VuZ2luZURldnRvb2xzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX09QVElPTlMpIG9wdGlvbnM/OiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5PVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmlzQWN0aXZhdGVkT25Cb290c3RyYXApIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gdHJpZ2dlciBhIHJlLXNlbmQgYSByZXF1ZXN0ZWQgbWVzc2FnZXMgdG8gdGhlIE90dGVyIENocm9tZSBEZXZUb29scyBleHRlbnNpb25cbiAgICogQHBhcmFtIG9ubHkgcmVzdHJpY3RlZCBsaXN0IG9mIG1lc3NhZ2VzIHRvIHJlLXNlbmRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVFbWl0UmVxdWVzdChvbmx5PzogUnVsZXNFbmdpbmVNZXNzYWdlRGF0YVR5cGVzW10pIHtcbiAgICBpZiAoIW9ubHkgfHwgb25seS5pbmNsdWRlcygncnVsZXNFbmdpbmVFdmVudHMnKSkge1xuICAgICAgdGhpcy5mb3JjZUVtaXRSdWxlc0VuZ2luZVJlcG9ydC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSBPdHRlciBDaHJvbWUgRGV2VG9vbHMgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUV2ZW50cyhtZXNzYWdlOiBBdmFpbGFibGVSdWxlc0VuZ2luZU1lc3NhZ2VDb250ZW50cykge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdNZXNzYWdlIGhhbmRsaW5nIGJ5IHRoZSBjb25maWd1cmF0aW9uIHNlcnZpY2UnLCBtZXNzYWdlKTtcblxuICAgIHN3aXRjaCAobWVzc2FnZS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSAnY29ubmVjdCc6IHtcbiAgICAgICAgdGhpcy5jb25uZWN0UGx1Z2luKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAncmVxdWVzdE1lc3NhZ2VzJzoge1xuICAgICAgICB0aGlzLmhhbmRsZVJlRW1pdFJlcXVlc3QobWVzc2FnZS5vbmx5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ01lc3NhZ2UgaWdub3JlZCBieSB0aGUgY29uZmlndXJhdGlvbiBzZXJ2aWNlJywgbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJpYWxpemVFcnJvciA9IChlcnJvcjogYW55KSA9PiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IudG9TdHJpbmcoKSA6IGVycm9yO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgZXhjZXB0aW9ucyBpbiBhIHdheSB0aGF0IHdpbGwgZGlzcGxheSB0aGUgZXJyb3IgbWVzc2FnZSBhZnRlciBhIEpTT04uc3RyaW5naWZ5KClcbiAgICogQHBhcmFtIGRlYnVnRXZlbnRcbiAgICovXG4gIHByaXZhdGUgc2VyaWFsaXplUmVwb3J0RXZlbnQoZGVidWdFdmVudDogRGVidWdFdmVudCkge1xuICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgIT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKSB7XG4gICAgICByZXR1cm4gZGVidWdFdmVudDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlYnVnRXZlbnQsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBkZWJ1Z0V2ZW50LnJ1bGVzRXZhbHVhdGlvbnMubWFwKChydWxlRXZhbHVhdGlvbikgPT4gKHtcbiAgICAgICAgLi4ucnVsZUV2YWx1YXRpb24sXG4gICAgICAgIGVycm9yOiB0aGlzLnNlcmlhbGl6ZUVycm9yKHJ1bGVFdmFsdWF0aW9uLmVycm9yKVxuICAgICAgfSkpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuIC0tIHR5cGUgaXMgZXhwbGljaXRseSBgYW55YFxuICAgICAgZXJyb3JzOiBkZWJ1Z0V2ZW50LmVycm9ycy5tYXAoKGVycm9yKSA9PiB0aGlzLnNlcmlhbGl6ZUVycm9yKGVycm9yKSlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHN0YXJ0IHRoZSBydWxlcyBlbmdpbmUgcmVwb3J0aW5nIHRvIHRoZSBPdHRlciBDaHJvbWUgRGV2VG9vbHMgZXh0ZW5zaW9uXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0UnVsZXNFbmdpbmVSZXBvcnQoKSB7XG4gICAgaWYgKHRoaXMucnVsZXNFbmdpbmVEZXZ0b29scy5ydWxlc0VuZ2luZVJlcG9ydCQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9yY2VFbWl0UnVsZXNFbmdpbmVSZXBvcnQsIHRoaXMucnVsZXNFbmdpbmVEZXZ0b29scy5ydWxlc0VuZ2luZVJlcG9ydCRdKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKFsscmVwb3J0XSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2FuaXRpemVkUmVwb3J0ID0geyAuLi5yZXBvcnQsIGV2ZW50czogcmVwb3J0LmV2ZW50cy5tYXAoKHJlcG9ydEV2ZW50cykgPT4gdGhpcy5zZXJpYWxpemVSZXBvcnRFdmVudChyZXBvcnRFdmVudHMpKSB9O1xuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSgncnVsZXNFbmdpbmVFdmVudHMnLCBzYW5pdGl6ZWRSZXBvcnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gY29ubmVjdCB0aGUgcGx1Z2luIHRvIHRoZSBPdHRlciBEZXZUb29scyBleHRlbnNpb25cbiAgICovXG4gIHByaXZhdGUgY29ubmVjdFBsdWdpbigpIHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdPdHRlciBEZXZUb29scyBpcyBwbHVnZ2VkIHRvIHRoZSBhcHBsaWNhdGlvbicpO1xuICAgIHRoaXMuZm9yY2VFbWl0UnVsZXNFbmdpbmVSZXBvcnQubmV4dCgpO1xuICB9XG5cbiAgLyoqIEFjdGl2YXRlIHRoZSBPdHRlciBEZXZUb29scyAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKSB7XG4gICAgdGhpcy5zdGFydFJ1bGVzRW5naW5lUmVwb3J0KCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ21lc3NhZ2UnKS5waXBlKGZpbHRlck1lc3NhZ2VDb250ZW50KGlzUnVsZXNFbmdpbmVNZXNzYWdlKSkuc3Vic2NyaWJlKChlKSA9PiB0aGlzLmhhbmRsZUV2ZW50cyhlKSlcbiAgICApO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { StoreModule } from '@ngrx/store';
|
|
3
|
-
import { RulesetsStoreModule } from '../stores/index';
|
|
4
|
-
import { RulesEngineDevtoolsConsoleService } from './rules-engine-devtools.console.service';
|
|
5
|
-
import { RulesEngineDevtoolsMessageService } from './rules-engine-devtools.message.service';
|
|
6
|
-
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS } from './rules-engine-devtools.token';
|
|
1
|
+
import { NgModule, } from '@angular/core';
|
|
2
|
+
import { StoreModule, } from '@ngrx/store';
|
|
3
|
+
import { RulesetsStoreModule, } from '../stores/index';
|
|
4
|
+
import { RulesEngineDevtoolsConsoleService, } from './rules-engine-devtools.console.service';
|
|
5
|
+
import { RulesEngineDevtoolsMessageService, } from './rules-engine-devtools.message.service';
|
|
6
|
+
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, } from './rules-engine-devtools.token';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class RulesEngineDevtoolsModule {
|
|
9
9
|
/**
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
44
44
|
]
|
|
45
45
|
}]
|
|
46
46
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXZraXQvcnVsZXMtZW5naW5lLWRldnRvb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEdBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLG1CQUFtQixHQUNwQixNQUFNLGlCQUFpQixDQUFDO0FBSXpCLE9BQU8sRUFDTCxpQ0FBaUMsR0FDbEMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUNBQWlDLEdBQ2xDLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyxtQ0FBbUMsR0FDcEMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFhdkMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQW1EO1FBQzFFLE9BQU87WUFDTCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLDJDQUEyQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDeEksaUNBQWlDO2dCQUNqQyxpQ0FBaUM7YUFDbEM7U0FDRixDQUFDO0lBQ0osQ0FBQztrSUFkVSx5QkFBeUI7bUlBQXpCLHlCQUF5QixZQVRsQyxXQUFXO1lBQ1gsbUJBQW1CO21JQVFWLHlCQUF5QixhQU56QjtZQUNULEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSwyQ0FBMkMsRUFBRTtZQUN2RyxpQ0FBaUM7WUFDakMsaUNBQWlDO1NBQ2xDLFlBUEMsV0FBVztZQUNYLG1CQUFtQjs7NEZBUVYseUJBQXlCO2tCQVhyQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLFFBQVEsRUFBRSwyQ0FBMkMsRUFBRTt3QkFDdkcsaUNBQWlDO3dCQUNqQyxpQ0FBaUM7cUJBQ2xDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RvcmVNb2R1bGUsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIFJ1bGVzZXRzU3RvcmVNb2R1bGUsXG59IGZyb20gJy4uL3N0b3Jlcy9pbmRleCc7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGVzRW5naW5lRGV2dG9vbHNTZXJ2aWNlT3B0aW9ucyxcbn0gZnJvbSAnLi9ydWxlcy1lbmdpbmUtZGV2a2l0LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2UsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLmNvbnNvbGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzTWVzc2FnZVNlcnZpY2UsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLm1lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLFxuICBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUyxcbn0gZnJvbSAnLi9ydWxlcy1lbmdpbmUtZGV2dG9vbHMudG9rZW4nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU3RvcmVNb2R1bGUsXG4gICAgUnVsZXNldHNTdG9yZU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TLCB1c2VWYWx1ZTogT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyB9LFxuICAgIFJ1bGVzRW5naW5lRGV2dG9vbHNNZXNzYWdlU2VydmljZSxcbiAgICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlc0VuZ2luZURldnRvb2xzTW9kdWxlIHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgT3R0ZXIgRGV2dG9vbHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5zdHJ1bWVudChvcHRpb25zOiBQYXJ0aWFsPFJ1bGVzRW5naW5lRGV2dG9vbHNTZXJ2aWNlT3B0aW9ucz4pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJ1bGVzRW5naW5lRGV2dG9vbHNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJ1bGVzRW5naW5lRGV2dG9vbHNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUywgdXNlVmFsdWU6IHsgLi4uT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9LCBtdWx0aTogZmFsc2UgfSxcbiAgICAgICAgUnVsZXNFbmdpbmVEZXZ0b29sc01lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBSdWxlc0VuZ2luZURldnRvb2xzQ29uc29sZVNlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { select, Store } from '@ngrx/store';
|
|
3
|
-
import { combineLatest, firstValueFrom } from 'rxjs';
|
|
4
|
-
import { map, scan, shareReplay } from 'rxjs/operators';
|
|
5
|
-
import { RulesEngineRunnerService } from '../services';
|
|
6
|
-
import { selectRulesetsEntities } from '../stores';
|
|
7
|
-
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS } from './rules-engine-devtools.token';
|
|
1
|
+
import { Inject, Injectable, Optional, } from '@angular/core';
|
|
2
|
+
import { select, Store, } from '@ngrx/store';
|
|
3
|
+
import { combineLatest, firstValueFrom, } from 'rxjs';
|
|
4
|
+
import { map, scan, shareReplay, } from 'rxjs/operators';
|
|
5
|
+
import { RulesEngineRunnerService, } from '../services';
|
|
6
|
+
import { selectRulesetsEntities, } from '../stores';
|
|
7
|
+
import { OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS, OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS, } from './rules-engine-devtools.token';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@ngrx/store";
|
|
10
10
|
import * as i2 from "../services";
|
|
@@ -40,17 +40,17 @@ export class OtterRulesEngineDevtools {
|
|
|
40
40
|
}
|
|
41
41
|
/** Returns the list of active rulesets (name and id) at the moment when the function is called */
|
|
42
42
|
async getActiveRulesets() {
|
|
43
|
-
const lastActiveRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter(e => e.type === 'ActiveRulesets').reverse()[0];
|
|
43
|
+
const lastActiveRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'ActiveRulesets').reverse()[0];
|
|
44
44
|
return lastActiveRulesetsEvent?.rulesets;
|
|
45
45
|
}
|
|
46
46
|
/** Returns the list of available rulesets (name and id) at the moment when the function is called */
|
|
47
47
|
async getAvailableRulesets() {
|
|
48
|
-
const lastAvailableRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter(e => e.type === 'AvailableRulesets').reverse()[0];
|
|
48
|
+
const lastAvailableRulesetsEvent = (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'AvailableRulesets').reverse()[0];
|
|
49
49
|
return lastAvailableRulesetsEvent?.availableRulesets;
|
|
50
50
|
}
|
|
51
51
|
/** Returns the list of output actions emitted by the rules engine at the moment when the function is called */
|
|
52
52
|
async getAllOutputActions() {
|
|
53
|
-
return (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter(e => e.type === 'AllActions')?.reverse()[0];
|
|
53
|
+
return (this.rulesEngineEvents$ && await firstValueFrom(this.rulesEngineEvents$))?.filter((e) => e.type === 'AllActions')?.reverse()[0];
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Get the list of executions for the given ruleset
|
|
@@ -66,7 +66,7 @@ export class OtterRulesEngineDevtools {
|
|
|
66
66
|
* @returns True if the ruleset is active; False if the ruleset is inactive or it does not exist
|
|
67
67
|
*/
|
|
68
68
|
async isRulesetActive(rulesetId) {
|
|
69
|
-
return !!(await this.getActiveRulesets())?.find(r => r.id === rulesetId);
|
|
69
|
+
return !!(await this.getActiveRulesets())?.find((r) => r.id === rulesetId);
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* Get the list of rules executed for the specified ruleset
|
|
@@ -74,7 +74,7 @@ export class OtterRulesEngineDevtools {
|
|
|
74
74
|
*/
|
|
75
75
|
async getRulesEvaluationsForRuleset(rulesetId) {
|
|
76
76
|
const rulesetExec = await this.getRulesetExecutions(rulesetId);
|
|
77
|
-
return rulesetExec?.map(e => e?.rulesEvaluations?.filter(re => !re.cached)).flat();
|
|
77
|
+
return rulesetExec?.map((e) => e?.rulesEvaluations?.filter((re) => !re.cached)).flat();
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* Get the list of input facts (name, current value) for the specified ruleset, at the moment when the function is called
|
|
@@ -82,14 +82,14 @@ export class OtterRulesEngineDevtools {
|
|
|
82
82
|
*/
|
|
83
83
|
async getInputFactsForRuleset(rulesetId) {
|
|
84
84
|
const rulesetExecutions = await this.getRulesetExecutions(rulesetId);
|
|
85
|
-
return rulesetExecutions ? rulesetExecutions
|
|
85
|
+
return rulesetExecutions ? rulesetExecutions.at(-1).inputFacts : undefined;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
88
|
* Get the list of triggers for the specified ruleset
|
|
89
89
|
* @param rulesetId
|
|
90
90
|
*/
|
|
91
91
|
async getTriggersForRuleset(rulesetId) {
|
|
92
|
-
return (await this.getRulesEvaluationsForRuleset(rulesetId))?.map(e => e.triggers).flat().
|
|
92
|
+
return (await this.getRulesEvaluationsForRuleset(rulesetId))?.map((e) => e.triggers).flat().flatMap((triggersMap) => Object.values(triggersMap));
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* Get the list of outputed actions emitted by the given ruleset, at the moment when the function is called
|
|
@@ -97,7 +97,7 @@ export class OtterRulesEngineDevtools {
|
|
|
97
97
|
*/
|
|
98
98
|
async getOutputActionsForRuleset(rulesetId) {
|
|
99
99
|
const rulesetExecutions = await this.getRulesetExecutions(rulesetId);
|
|
100
|
-
return rulesetExecutions ? rulesetExecutions
|
|
100
|
+
return rulesetExecutions ? rulesetExecutions.at(-1).outputActions : undefined;
|
|
101
101
|
}
|
|
102
102
|
/** Get the list of fact names and corresponding values */
|
|
103
103
|
getAllFactsSnapshot() {
|
|
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
127
127
|
type: Inject,
|
|
128
128
|
args: [OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS]
|
|
129
129
|
}] }] });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2a2l0L3J1bGVzLWVuZ2luZS1kZXZ0b29scy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFnQyxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRixPQUFPLEVBQUUsMkNBQTJDLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUtqSSxNQUFNLE9BQU8sd0JBQXdCO0lBUW5DOztPQUVHO0lBQ0gsSUFBVywyQkFBMkI7UUFDcEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDcEQsQ0FBQztJQUVELFlBQ1ksS0FBMkIsRUFDcEIsa0JBQTRDLEVBQ0osT0FBMEM7UUFGekYsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtRQUc3RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBTyxJQUFJLDJDQUEyQyxDQUFDLENBQUMscUJBQXFCLENBQUM7UUFDeEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVks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LEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQXdCLENBQUMsQ0FDOUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztrSUExSVUsd0JBQXdCLCtFQWtCYixtQ0FBbUM7c0lBbEI5Qyx3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBbUJJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNjYW4sIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHR5cGUgeyBBY3RpdmVSdWxlc2V0c0V2ZW50LCBBdmFpbGFibGVSdWxlc2V0cywgQmFzZVJ1bGVzZXRFeGVjdXRpb24sIERlYnVnRXZlbnQsIFJ1bGVzZXQsIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50LCBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHsgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgUnVsZXNldHNNb2RlbCwgUnVsZXNldHNTdG9yZSwgc2VsZWN0UnVsZXNldHNFbnRpdGllcyB9IGZyb20gJy4uL3N0b3Jlcyc7XG5pbXBvcnQgeyBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMgfSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZraXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19ERUZBVUxUX09QVElPTlMsIE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TIH0gZnJvbSAnLi9ydWxlcy1lbmdpbmUtZGV2dG9vbHMudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPdHRlclJ1bGVzRW5naW5lRGV2dG9vbHMge1xuXG4gIC8qKiBTdHJlYW0gb2YgcnVsZXMgZW5naW5lIHJlcG9ydCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcnVsZXNFbmdpbmVSZXBvcnQkPzogT2JzZXJ2YWJsZTx7IGV2ZW50czogRGVidWdFdmVudFtdOyBydWxlc2V0TWFwOiBSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0PiB9PjtcblxuICAvKiogU3RyZWFtIG9mIHJ1bGVzIGVuZ2luZSBldmVudCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcnVsZXNFbmdpbmVFdmVudHMkPzogT2JzZXJ2YWJsZTxEZWJ1Z0V2ZW50W10+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcnVsZXMgZW5naW5lIGRlYnVnIG9wdGlvbiBpcyBhY3RpdmF0ZWRcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNSdWxlc0VuZ2luZURlYnVnQWN0aXZhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucnVsZXNFbmdpbmVTZXJ2aWNlLmVuZ2luZS5kZWJ1Z01vZGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPFJ1bGVzZXRzU3RvcmU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXNFbmdpbmVTZXJ2aWNlOiBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUykgb3B0aW9uczogUnVsZXNFbmdpbmVEZXZ0b29sc1NlcnZpY2VPcHRpb25zKSB7XG5cbiAgICBjb25zdCBldmVudHNTdGFja0xpbWl0ID0gKG9wdGlvbnMgfHwgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUykucnVsZXNFbmdpbmVTdGFja0xpbWl0O1xuICAgIHRoaXMucnVsZXNFbmdpbmVFdmVudHMkID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2UuZW5naW5lLmVuZ2luZURlYnVnPy5kZWJ1Z0V2ZW50cyQucGlwZShcbiAgICAgIHNjYW4oKHByZXZpb3VzRXZlbnRzLCBjdXJyZW50RXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBldmVudHNTdGFja0xpbWl0ICYmIHByZXZpb3VzRXZlbnRzLmxlbmd0aCA9PT0gZXZlbnRzU3RhY2tMaW1pdCA/IHByZXZpb3VzRXZlbnRzLnNsaWNlKDEpIDogcHJldmlvdXNFdmVudHM7XG4gICAgICAgIHJldHVybiBbLi4uc3RhY2ssIGN1cnJlbnRFdmVudF07XG4gICAgICB9LCBbXSBhcyBEZWJ1Z0V2ZW50W10pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5ydWxlc0VuZ2luZVJlcG9ydCQgPSB0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCAmJiBjb21iaW5lTGF0ZXN0KFt0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCwgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RSdWxlc2V0c0VudGl0aWVzKSldKS5waXBlKFxuICAgICAgbWFwKChbZXZlbnRzLCBydWxlc2V0RW50aXRpZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVzZXRNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bGVzZXQ+ID0gT2JqZWN0LmVudHJpZXMocnVsZXNldEVudGl0aWVzKVxuICAgICAgICAgIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVsZXNldHNNb2RlbD4+KChhY2MsIFtpZCwgcnVsZXNldF0pID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlc2V0KSB7XG4gICAgICAgICAgICAgIGFjY1tpZF0gPSBydWxlc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIHJldHVybiB7IGV2ZW50cywgcnVsZXNldE1hcCB9O1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGRlYnVnIGV2ZW50cyBlbWl0dGVkIGJ5IHJ1bGVzIGVuZ2luZSAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVudFJ1bGVzRW5naW5lRXZlbnRzU3RhY2soKTogUHJvbWlzZTxEZWJ1Z0V2ZW50W10gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aXZlIHJ1bGVzZXRzIChuYW1lIGFuZCBpZCkgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEFjdGl2ZVJ1bGVzZXRzKCkge1xuICAgIGNvbnN0IGxhc3RBY3RpdmVSdWxlc2V0c0V2ZW50ID0gKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkICYmIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkKSk/LmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ0FjdGl2ZVJ1bGVzZXRzJykucmV2ZXJzZSgpWzBdO1xuICAgIHJldHVybiAobGFzdEFjdGl2ZVJ1bGVzZXRzRXZlbnQgYXMgQWN0aXZlUnVsZXNldHNFdmVudCk/LnJ1bGVzZXRzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHJ1bGVzZXRzIChuYW1lIGFuZCBpZCkgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVJ1bGVzZXRzKCkge1xuICAgIGNvbnN0IGxhc3RBdmFpbGFibGVSdWxlc2V0c0V2ZW50ID0gKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkICYmIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkKSk/LmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ0F2YWlsYWJsZVJ1bGVzZXRzJykucmV2ZXJzZSgpWzBdO1xuICAgIHJldHVybiAobGFzdEF2YWlsYWJsZVJ1bGVzZXRzRXZlbnQgYXMgQXZhaWxhYmxlUnVsZXNldHMpPy5hdmFpbGFibGVSdWxlc2V0cztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBsaXN0IG9mIG91dHB1dCBhY3Rpb25zIGVtaXR0ZWQgYnkgdGhlIHJ1bGVzIGVuZ2luZSBhdCB0aGUgbW9tZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWxsT3V0cHV0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkICYmIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkKSk/LmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ0FsbEFjdGlvbnMnKT8ucmV2ZXJzZSgpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBleGVjdXRpb25zIGZvciB0aGUgZ2l2ZW4gcnVsZXNldFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UnVsZXNldEV4ZWN1dGlvbnMocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPChSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudClbXSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAodGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpKT8uZmlsdGVyKFxuICAgICAgKGUpOiBlIGlzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCB8IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0+XG4gICAgICAgIChlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKVxuICAgICAgICAmJiAoZSBhcyBCYXNlUnVsZXNldEV4ZWN1dGlvbikucnVsZXNldElkID09PSBydWxlc2V0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBydWxlc2V0IGlzIGFjdGl2IGluIHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcnVsZXNldCBpcyBhY3RpdmU7IEZhbHNlIGlmIHRoZSBydWxlc2V0IGlzIGluYWN0aXZlIG9yIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNSdWxlc2V0QWN0aXZlKHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuZ2V0QWN0aXZlUnVsZXNldHMoKSk/LmZpbmQociA9PiByLmlkID09PSBydWxlc2V0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBydWxlcyBleGVjdXRlZCBmb3IgdGhlIHNwZWNpZmllZCBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRSdWxlc0V2YWx1YXRpb25zRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJ1bGVzZXRFeGVjID0gYXdhaXQgdGhpcy5nZXRSdWxlc2V0RXhlY3V0aW9ucyhydWxlc2V0SWQpO1xuICAgIHJldHVybiBydWxlc2V0RXhlYz8ubWFwKGUgPT4gKGUgYXMgQmFzZVJ1bGVzZXRFeGVjdXRpb24pPy5ydWxlc0V2YWx1YXRpb25zPy5maWx0ZXIocmUgPT4gIXJlLmNhY2hlZCkpLmZsYXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgaW5wdXQgZmFjdHMgKG5hbWUsIGN1cnJlbnQgdmFsdWUpIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXQsIGF0IHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJbnB1dEZhY3RzRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJ1bGVzZXRFeGVjdXRpb25zID0gYXdhaXQgdGhpcy5nZXRSdWxlc2V0RXhlY3V0aW9ucyhydWxlc2V0SWQpO1xuICAgIHJldHVybiBydWxlc2V0RXhlY3V0aW9ucyA/IChydWxlc2V0RXhlY3V0aW9uc1tydWxlc2V0RXhlY3V0aW9ucy5sZW5ndGggLSAxXSBhcyBCYXNlUnVsZXNldEV4ZWN1dGlvbikuaW5wdXRGYWN0cyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgdHJpZ2dlcnMgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXNldFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VHJpZ2dlcnNGb3JSdWxlc2V0KHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldFJ1bGVzRXZhbHVhdGlvbnNGb3JSdWxlc2V0KHJ1bGVzZXRJZCkpPy5tYXAoZSA9PiBlLnRyaWdnZXJzKS5mbGF0KCkubWFwKHRyaWdnZXJzTWFwID0+IE9iamVjdC52YWx1ZXModHJpZ2dlcnNNYXApKS5mbGF0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIG91dHB1dGVkIGFjdGlvbnMgZW1pdHRlZCBieSB0aGUgZ2l2ZW4gcnVsZXNldCwgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWRcbiAgICogQHBhcmFtIHJ1bGVzZXRJZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldE91dHB1dEFjdGlvbnNGb3JSdWxlc2V0KHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcnVsZXNldEV4ZWN1dGlvbnMgPSBhd2FpdCB0aGlzLmdldFJ1bGVzZXRFeGVjdXRpb25zKHJ1bGVzZXRJZCk7XG4gICAgcmV0dXJuIHJ1bGVzZXRFeGVjdXRpb25zID8gKHJ1bGVzZXRFeGVjdXRpb25zW3J1bGVzZXRFeGVjdXRpb25zLmxlbmd0aCAtIDFdIGFzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCkub3V0cHV0QWN0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgZmFjdCBuYW1lcyBhbmQgY29ycmVzcG9uZGluZyB2YWx1ZXMgKi9cbiAgcHVibGljIGdldEFsbEZhY3RzU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmVnaXN0ZXJlZEZhY3RzID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2U/LmVuZ2luZS5nZXRSZWdpc3RlcmVkRmFjdHNOYW1lcygpO1xuICAgIGlmIChyZWdpc3RlcmVkRmFjdHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bGVzRW5naW5lU2VydmljZS5lbmdpbmUuZW5naW5lRGVidWc/LmdldEZhY3RzU25hcHNob3QocmVnaXN0ZXJlZEZhY3RzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHJ1bGVzZXQgaW5mb3JtYXRpb24gKHJ1bGVzLCBsaW5rZWRDb21wb25lbnRzLCB2YWxpZGl0eSByYW5nZSBldGMuKSBmb3IgYSBydWxlc2V0IGlkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBnZXRSdWxlc2V0SW5mb3JtYXRpb24ocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPFJ1bGVzZXQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXNbcnVsZXNldElkXSBhcyBSdWxlc2V0IHwgdW5kZWZpbmVkKVxuICAgICkpO1xuICB9XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2a2l0L3J1bGVzLWVuZ2luZS1kZXZ0b29scy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsR0FFZixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsSUFBSSxFQUNKLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBVXhCLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUdMLHNCQUFzQixHQUN2QixNQUFNLFdBQVcsQ0FBQztBQUluQixPQUFPLEVBQ0wsMkNBQTJDLEVBQzNDLG1DQUFtQyxHQUNwQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBS3ZDLE1BQU0sT0FBTyx3QkFBd0I7SUFPbkM7O09BRUc7SUFDSCxJQUFXLDJCQUEyQjtRQUNwQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFDWSxLQUEyQixFQUNwQixrQkFBNEMsRUFDSixPQUEwQztRQUZ6RixVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTBCO1FBRTdELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLElBQUksMkNBQTJDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FDckYsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUN4SCxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxFQUFFLEVBQWtCLENBQUMsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pKLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxVQUFVLEdBQTRCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO2lCQUN4RSxNQUFNLENBQWdDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7Z0JBQzVELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztnQkFDcEIsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNULE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsOERBQThEO0lBQ3ZELEtBQUssQ0FBQyxnQ0FBZ0M7UUFDM0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxrR0FBa0c7SUFDM0YsS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixNQUFNLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEssT0FBUSx1QkFBK0MsRUFBRSxRQUFRLENBQUM7SUFDcEUsQ0FBQztJQUVELHFHQUFxRztJQUM5RixLQUFLLENBQUMsb0JBQW9CO1FBQy9CLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxSyxPQUFRLDBCQUFnRCxFQUFFLGlCQUFpQixDQUFDO0lBQzlFLENBQUM7SUFFRCwrR0FBK0c7SUFDeEcsS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsU0FBaUI7UUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FDdkYsQ0FBQyxDQUFDLEVBQTJELEVBQUUsQ0FDN0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUM7ZUFDakUsQ0FBMEIsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLDZCQUE2QixDQUFDLFNBQWlCO1FBQzFELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBMEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkgsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFpQjtRQUNwRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxDQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBMEIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQWlCO1FBQ2xELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBaUI7UUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0csQ0FBQztJQUVELDBEQUEwRDtJQUNuRCxtQkFBbUI7UUFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2xGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQixDQUFDLFNBQWlCO1FBQzVDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNuQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUF3QixDQUFDLENBQzlELENBQUMsQ0FBQztJQUNMLENBQUM7a0lBeElVLHdCQUF3QiwrRUFpQmIsbUNBQW1DO3NJQWpCOUMsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWtCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2VsZWN0LFxuICBTdG9yZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIE9ic2VydmFibGUsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgbWFwLFxuICBzY2FuLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHR5cGUge1xuICBBY3RpdmVSdWxlc2V0c0V2ZW50LFxuICBBdmFpbGFibGVSdWxlc2V0cyxcbiAgQmFzZVJ1bGVzZXRFeGVjdXRpb24sXG4gIERlYnVnRXZlbnQsXG4gIFJ1bGVzZXQsXG4gIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50LFxuICBSdWxlc2V0RXhlY3V0aW9uRXZlbnQsXG59IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UsXG59IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIFJ1bGVzZXRzTW9kZWwsXG4gIFJ1bGVzZXRzU3RvcmUsXG4gIHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMsXG59IGZyb20gJy4uL3N0b3Jlcyc7XG5pbXBvcnQge1xuICBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldmtpdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyxcbiAgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX09QVElPTlMsXG59IGZyb20gJy4vcnVsZXMtZW5naW5lLWRldnRvb2xzLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3R0ZXJSdWxlc0VuZ2luZURldnRvb2xzIHtcbiAgLyoqIFN0cmVhbSBvZiBydWxlcyBlbmdpbmUgcmVwb3J0ICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZVJlcG9ydCQ/OiBPYnNlcnZhYmxlPHsgZXZlbnRzOiBEZWJ1Z0V2ZW50W107IHJ1bGVzZXRNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bGVzZXQ+IH0+O1xuXG4gIC8qKiBTdHJlYW0gb2YgcnVsZXMgZW5naW5lIGV2ZW50ICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZUV2ZW50cyQ/OiBPYnNlcnZhYmxlPERlYnVnRXZlbnRbXT47XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBydWxlcyBlbmdpbmUgZGVidWcgb3B0aW9uIGlzIGFjdGl2YXRlZFxuICAgKi9cbiAgcHVibGljIGdldCBpc1J1bGVzRW5naW5lRGVidWdBY3RpdmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2UuZW5naW5lLmRlYnVnTW9kZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8UnVsZXNldHNTdG9yZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBydWxlc0VuZ2luZVNlcnZpY2U6IFJ1bGVzRW5naW5lUnVubmVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19PUFRJT05TKSBvcHRpb25zOiBSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnMpIHtcbiAgICBjb25zdCBldmVudHNTdGFja0xpbWl0ID0gKG9wdGlvbnMgfHwgT1RURVJfUlVMRVNfRU5HSU5FX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUykucnVsZXNFbmdpbmVTdGFja0xpbWl0O1xuICAgIHRoaXMucnVsZXNFbmdpbmVFdmVudHMkID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2UuZW5naW5lLmVuZ2luZURlYnVnPy5kZWJ1Z0V2ZW50cyQucGlwZShcbiAgICAgIHNjYW4oKHByZXZpb3VzRXZlbnRzLCBjdXJyZW50RXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBldmVudHNTdGFja0xpbWl0ICYmIHByZXZpb3VzRXZlbnRzLmxlbmd0aCA9PT0gZXZlbnRzU3RhY2tMaW1pdCA/IHByZXZpb3VzRXZlbnRzLnNsaWNlKDEpIDogcHJldmlvdXNFdmVudHM7XG4gICAgICAgIHJldHVybiBbLi4uc3RhY2ssIGN1cnJlbnRFdmVudF07XG4gICAgICB9LCBbXSBhcyBEZWJ1Z0V2ZW50W10pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5ydWxlc0VuZ2luZVJlcG9ydCQgPSB0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCAmJiBjb21iaW5lTGF0ZXN0KFt0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCwgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RSdWxlc2V0c0VudGl0aWVzKSldKS5waXBlKFxuICAgICAgbWFwKChbZXZlbnRzLCBydWxlc2V0RW50aXRpZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVzZXRNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bGVzZXQ+ID0gT2JqZWN0LmVudHJpZXMocnVsZXNldEVudGl0aWVzKVxuICAgICAgICAgIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVsZXNldHNNb2RlbD4+KChhY2MsIFtpZCwgcnVsZXNldF0pID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlc2V0KSB7XG4gICAgICAgICAgICAgIGFjY1tpZF0gPSBydWxlc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIHJldHVybiB7IGV2ZW50cywgcnVsZXNldE1hcCB9O1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGRlYnVnIGV2ZW50cyBlbWl0dGVkIGJ5IHJ1bGVzIGVuZ2luZSAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVudFJ1bGVzRW5naW5lRXZlbnRzU3RhY2soKTogUHJvbWlzZTxEZWJ1Z0V2ZW50W10gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aXZlIHJ1bGVzZXRzIChuYW1lIGFuZCBpZCkgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEFjdGl2ZVJ1bGVzZXRzKCkge1xuICAgIGNvbnN0IGxhc3RBY3RpdmVSdWxlc2V0c0V2ZW50ID0gKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkICYmIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucnVsZXNFbmdpbmVFdmVudHMkKSk/LmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAnQWN0aXZlUnVsZXNldHMnKS5yZXZlcnNlKClbMF07XG4gICAgcmV0dXJuIChsYXN0QWN0aXZlUnVsZXNldHNFdmVudCBhcyBBY3RpdmVSdWxlc2V0c0V2ZW50KT8ucnVsZXNldHM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgcnVsZXNldHMgKG5hbWUgYW5kIGlkKSBhdCB0aGUgbW9tZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QXZhaWxhYmxlUnVsZXNldHMoKSB7XG4gICAgY29uc3QgbGFzdEF2YWlsYWJsZVJ1bGVzZXRzRXZlbnQgPSAodGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpKT8uZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdBdmFpbGFibGVSdWxlc2V0cycpLnJldmVyc2UoKVswXTtcbiAgICByZXR1cm4gKGxhc3RBdmFpbGFibGVSdWxlc2V0c0V2ZW50IGFzIEF2YWlsYWJsZVJ1bGVzZXRzKT8uYXZhaWxhYmxlUnVsZXNldHM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbGlzdCBvZiBvdXRwdXQgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgKi9cbiAgcHVibGljIGFzeW5jIGdldEFsbE91dHB1dEFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCAmJiBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJ1bGVzRW5naW5lRXZlbnRzJCkpPy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ0FsbEFjdGlvbnMnKT8ucmV2ZXJzZSgpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBleGVjdXRpb25zIGZvciB0aGUgZ2l2ZW4gcnVsZXNldFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UnVsZXNldEV4ZWN1dGlvbnMocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPChSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudClbXSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAodGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQgJiYgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5ydWxlc0VuZ2luZUV2ZW50cyQpKT8uZmlsdGVyKFxuICAgICAgKGUpOiBlIGlzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCB8IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0+XG4gICAgICAgIChlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBlLnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKVxuICAgICAgICAmJiAoZSBhcyBCYXNlUnVsZXNldEV4ZWN1dGlvbikucnVsZXNldElkID09PSBydWxlc2V0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBydWxlc2V0IGlzIGFjdGl2IGluIHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcnVsZXNldCBpcyBhY3RpdmU7IEZhbHNlIGlmIHRoZSBydWxlc2V0IGlzIGluYWN0aXZlIG9yIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNSdWxlc2V0QWN0aXZlKHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuZ2V0QWN0aXZlUnVsZXNldHMoKSk/LmZpbmQoKHIpID0+IHIuaWQgPT09IHJ1bGVzZXRJZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHJ1bGVzIGV4ZWN1dGVkIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXRcbiAgICogQHBhcmFtIHJ1bGVzZXRJZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFJ1bGVzRXZhbHVhdGlvbnNGb3JSdWxlc2V0KHJ1bGVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcnVsZXNldEV4ZWMgPSBhd2FpdCB0aGlzLmdldFJ1bGVzZXRFeGVjdXRpb25zKHJ1bGVzZXRJZCk7XG4gICAgcmV0dXJuIHJ1bGVzZXRFeGVjPy5tYXAoKGUpID0+IChlIGFzIEJhc2VSdWxlc2V0RXhlY3V0aW9uKT8ucnVsZXNFdmFsdWF0aW9ucz8uZmlsdGVyKChyZSkgPT4gIXJlLmNhY2hlZCkpLmZsYXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgaW5wdXQgZmFjdHMgKG5hbWUsIGN1cnJlbnQgdmFsdWUpIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXQsIGF0IHRoZSBtb21lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJbnB1dEZhY3RzRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJ1bGVzZXRFeGVjdXRpb25zID0gYXdhaXQgdGhpcy5nZXRSdWxlc2V0RXhlY3V0aW9ucyhydWxlc2V0SWQpO1xuICAgIHJldHVybiBydWxlc2V0RXhlY3V0aW9ucyA/IChydWxlc2V0RXhlY3V0aW9ucy5hdCgtMSkgYXMgQmFzZVJ1bGVzZXRFeGVjdXRpb24pLmlucHV0RmFjdHMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHRyaWdnZXJzIGZvciB0aGUgc3BlY2lmaWVkIHJ1bGVzZXRcbiAgICogQHBhcmFtIHJ1bGVzZXRJZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRyaWdnZXJzRm9yUnVsZXNldChydWxlc2V0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRSdWxlc0V2YWx1YXRpb25zRm9yUnVsZXNldChydWxlc2V0SWQpKT8ubWFwKChlKSA9PiBlLnRyaWdnZXJzKS5mbGF0KCkuZmxhdE1hcCgodHJpZ2dlcnNNYXApID0+IE9iamVjdC52YWx1ZXModHJpZ2dlcnNNYXApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2Ygb3V0cHV0ZWQgYWN0aW9ucyBlbWl0dGVkIGJ5IHRoZSBnaXZlbiBydWxlc2V0LCBhdCB0aGUgbW9tZW50IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZFxuICAgKiBAcGFyYW0gcnVsZXNldElkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0T3V0cHV0QWN0aW9uc0ZvclJ1bGVzZXQocnVsZXNldElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBydWxlc2V0RXhlY3V0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UnVsZXNldEV4ZWN1dGlvbnMocnVsZXNldElkKTtcbiAgICByZXR1cm4gcnVsZXNldEV4ZWN1dGlvbnMgPyAocnVsZXNldEV4ZWN1dGlvbnMuYXQoLTEpIGFzIFJ1bGVzZXRFeGVjdXRpb25FdmVudCkub3V0cHV0QWN0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgZmFjdCBuYW1lcyBhbmQgY29ycmVzcG9uZGluZyB2YWx1ZXMgKi9cbiAgcHVibGljIGdldEFsbEZhY3RzU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmVnaXN0ZXJlZEZhY3RzID0gdGhpcy5ydWxlc0VuZ2luZVNlcnZpY2U/LmVuZ2luZS5nZXRSZWdpc3RlcmVkRmFjdHNOYW1lcygpO1xuICAgIGlmIChyZWdpc3RlcmVkRmFjdHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bGVzRW5naW5lU2VydmljZS5lbmdpbmUuZW5naW5lRGVidWc/LmdldEZhY3RzU25hcHNob3QocmVnaXN0ZXJlZEZhY3RzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHJ1bGVzZXQgaW5mb3JtYXRpb24gKHJ1bGVzLCBsaW5rZWRDb21wb25lbnRzLCB2YWxpZGl0eSByYW5nZSBldGMuKSBmb3IgYSBydWxlc2V0IGlkXG4gICAqIEBwYXJhbSBydWxlc2V0SWRcbiAgICovXG4gIHB1YmxpYyBnZXRSdWxlc2V0SW5mb3JtYXRpb24ocnVsZXNldElkOiBzdHJpbmcpOiBQcm9taXNlPFJ1bGVzZXQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KHNlbGVjdFJ1bGVzZXRzRW50aXRpZXMpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT4gZW50aXRpZXNbcnVsZXNldElkXSBhcyBSdWxlc2V0IHwgdW5kZWZpbmVkKVxuICAgICkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
1
|
+
import { InjectionToken, } from '@angular/core';
|
|
2
2
|
export const OTTER_RULES_ENGINE_DEVTOOLS_DEFAULT_OPTIONS = {
|
|
3
3
|
isActivatedOnBootstrap: false
|
|
4
4
|
};
|
|
5
5
|
export const OTTER_RULES_ENGINE_DEVTOOLS_OPTIONS = new InjectionToken('Otter RulesEngine Devtools options');
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLWRldnRvb2xzLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RldmtpdC9ydWxlcy1lbmdpbmUtZGV2dG9vbHMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUt2QixNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBc0M7SUFDNUYsc0JBQXNCLEVBQUUsS0FBSztDQUM5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQXNELElBQUksY0FBYyxDQUFvQyxvQ0FBb0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0aW9uVG9rZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUnVsZXNFbmdpbmVEZXZ0b29sc1NlcnZpY2VPcHRpb25zLFxufSBmcm9tICcuL3J1bGVzLWVuZ2luZS1kZXZraXQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IE9UVEVSX1JVTEVTX0VOR0lORV9ERVZUT09MU19ERUZBVUxUX09QVElPTlM6IFJ1bGVzRW5naW5lRGV2dG9vbHNTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcDogZmFsc2Vcbn07XG5cbmV4cG9ydCBjb25zdCBPVFRFUl9SVUxFU19FTkdJTkVfREVWVE9PTFNfT1BUSU9OUzogSW5qZWN0aW9uVG9rZW48UnVsZXNFbmdpbmVEZXZ0b29sc1NlcnZpY2VPcHRpb25zPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSdWxlc0VuZ2luZURldnRvb2xzU2VydmljZU9wdGlvbnM+KCdPdHRlciBSdWxlc0VuZ2luZSBEZXZ0b29scyBvcHRpb25zJyk7XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Observable, ReplaySubject } from 'rxjs';
|
|
2
|
-
import { concatMap, share, shareReplay, startWith, tap, withLatestFrom } from 'rxjs/operators';
|
|
3
|
-
import { flagCachedRules, retrieveRulesetTriggers } from './helpers';
|
|
1
|
+
import { Observable, ReplaySubject, } from 'rxjs';
|
|
2
|
+
import { concatMap, share, shareReplay, startWith, tap, withLatestFrom, } from 'rxjs/operators';
|
|
3
|
+
import { flagCachedRules, retrieveRulesetTriggers, } from './helpers';
|
|
4
4
|
/**
|
|
5
5
|
* Rules engine debugger object to emit debug events
|
|
6
6
|
*/
|
|
@@ -23,8 +23,8 @@ export class EngineDebugger {
|
|
|
23
23
|
let rulesetDuration = 0;
|
|
24
24
|
debugEvent.rulesEvaluations.forEach((rule) => {
|
|
25
25
|
const mark = `rules-engine:${this.registeredRuleEngine?.rulesEngineInstanceName || ''}:${debugEvent.rulesetName}:${rule.rule.name}`;
|
|
26
|
-
const measures = performanceMeasures.filter(m => m.name === mark);
|
|
27
|
-
const duration = measures
|
|
26
|
+
const measures = performanceMeasures.filter((m) => m.name === mark);
|
|
27
|
+
const duration = measures.at(-1)?.duration || 0;
|
|
28
28
|
rule.duration = duration;
|
|
29
29
|
rulesetDuration += duration;
|
|
30
30
|
});
|
|
@@ -38,12 +38,12 @@ export class EngineDebugger {
|
|
|
38
38
|
}), share());
|
|
39
39
|
}
|
|
40
40
|
initializePerformanceObserver() {
|
|
41
|
-
this.performanceMeasures$ = new Observable(subscriber => {
|
|
41
|
+
this.performanceMeasures$ = new Observable((subscriber) => {
|
|
42
42
|
const performanceObserver = new PerformanceObserver((list) => {
|
|
43
43
|
subscriber.next(list.getEntries());
|
|
44
44
|
});
|
|
45
45
|
performanceObserver.observe({ entryTypes: ['measure'] });
|
|
46
|
-
return performanceObserver.disconnect;
|
|
46
|
+
return performanceObserver.disconnect();
|
|
47
47
|
}).pipe(startWith([]), shareReplay(1));
|
|
48
48
|
}
|
|
49
49
|
async createBaseExecutionOutputObject(ruleset, executionCounter, rulesetInputFacts, runtimeFactValues, rulesetTriggers, rulesExecutions) {
|
|
@@ -72,12 +72,12 @@ export class EngineDebugger {
|
|
|
72
72
|
}
|
|
73
73
|
async rulesetExecutionError(timestamp, ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesExecutions) {
|
|
74
74
|
const baseRulesetOutputExecution = await this.createBaseExecutionOutputObject(ruleset, executionCounter, rulesetInputFacts, runtimeFactValues, rulesetTriggers, rulesExecutions);
|
|
75
|
-
const rulesExecWithErrors = rulesExecutions.filter(ex => !!ex && !!ex.error);
|
|
75
|
+
const rulesExecWithErrors = rulesExecutions.filter((ex) => !!ex && !!ex.error);
|
|
76
76
|
const rulesetOutputExecutionSkip = {
|
|
77
77
|
timestamp,
|
|
78
78
|
type: 'RulesetExecutionError',
|
|
79
|
-
rulesCausingTheError: rulesExecWithErrors.map(e => e.rule) || [],
|
|
80
|
-
errors: rulesExecWithErrors.map(e => e.error),
|
|
79
|
+
rulesCausingTheError: rulesExecWithErrors.map((e) => e.rule) || [],
|
|
80
|
+
errors: rulesExecWithErrors.map((e) => e.error),
|
|
81
81
|
...baseRulesetOutputExecution
|
|
82
82
|
};
|
|
83
83
|
return rulesetOutputExecutionSkip;
|
|
@@ -101,7 +101,7 @@ export class EngineDebugger {
|
|
|
101
101
|
*/
|
|
102
102
|
handleDebugRulesetExecutionInfo(currRes, prevRes, allExecutionsValid, rulesetInputFacts, runtimeFactValues, executionCounter, ruleset) {
|
|
103
103
|
const rulesetTriggers = retrieveRulesetTriggers(currRes, prevRes);
|
|
104
|
-
const rulesetOutputExecution = currRes.map(r => r.evaluation);
|
|
104
|
+
const rulesetOutputExecution = currRes.map((r) => r.evaluation);
|
|
105
105
|
if (!allExecutionsValid) {
|
|
106
106
|
this.addRulesetExecutionErrorEvent(ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesetOutputExecution);
|
|
107
107
|
}
|
|
@@ -133,13 +133,13 @@ export class EngineDebugger {
|
|
|
133
133
|
activeRulesetsChange(ruleSetExecutorMap, restrictiveRuleSets) {
|
|
134
134
|
const timestamp = Date.now();
|
|
135
135
|
const rulesets = Object.keys(ruleSetExecutorMap).map((rulesetId) => ruleSetExecutorMap[rulesetId].engineRuleset);
|
|
136
|
-
const activeRulesets = restrictiveRuleSets
|
|
137
|
-
Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.
|
|
138
|
-
Object.values(rulesets);
|
|
136
|
+
const activeRulesets = restrictiveRuleSets
|
|
137
|
+
? Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.includes(ruleSet.id))
|
|
138
|
+
: Object.values(rulesets);
|
|
139
139
|
this.debugEventsSubject$.next(() => ({
|
|
140
140
|
timestamp,
|
|
141
141
|
type: 'ActiveRulesets',
|
|
142
|
-
rulesets: activeRulesets.map(a => ({ name: ruleSetExecutorMap[a.id].ruleset.name, id: ruleSetExecutorMap[a.id].ruleset.id }))
|
|
142
|
+
rulesets: activeRulesets.map((a) => ({ name: ruleSetExecutorMap[a.id].ruleset.name, id: ruleSetExecutorMap[a.id].ruleset.id }))
|
|
143
143
|
}));
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
@@ -159,7 +159,6 @@ export class EngineDebugger {
|
|
|
159
159
|
* @param runtimeFactValues
|
|
160
160
|
* @param rulesetTriggers
|
|
161
161
|
* @param rulesExecutions
|
|
162
|
-
* @param retrieveFactFunc
|
|
163
162
|
*/
|
|
164
163
|
addRulesetExecutionEvent(ruleset, executionCounter, rulesetInputFacts, allOutputActions, runtimeFactValues, rulesetTriggers, rulesExecutions) {
|
|
165
164
|
const timestamp = Date.now();
|
|
@@ -173,7 +172,6 @@ export class EngineDebugger {
|
|
|
173
172
|
* @param runtimeFactValues
|
|
174
173
|
* @param rulesetTriggers
|
|
175
174
|
* @param rulesExecutions
|
|
176
|
-
* @param retrieveFactFunc
|
|
177
175
|
*/
|
|
178
176
|
addRulesetExecutionErrorEvent(ruleset, rulesetInputFacts, executionCounter, runtimeFactValues, rulesetTriggers, rulesExecutions) {
|
|
179
177
|
const timestamp = Date.now();
|
|
@@ -194,4 +192,4 @@ export class EngineDebugger {
|
|
|
194
192
|
return facts;
|
|
195
193
|
}
|
|
196
194
|
}
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmRlYnVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9kZWJ1Zy9lbmdpbmUuZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBY3pCLHlEQUF5RDtJQUN6RCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksT0FBK0I7UUFuQm5DLHVCQUFrQixHQUFtQyxFQUFFLENBQUM7UUFvQjlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBMkMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUMvQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQ3pDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFO1lBQ25ELE1BQU0sVUFBVSxHQUFlLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFDakQsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUYsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sSUFBSSxHQUFHLGdCQUNYLElBQUksQ0FBQyxvQkFBb0IsRUFBRSx1QkFBdUIsSUFBSSxFQUN4RCxJQUFJLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDbEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ3pCLGVBQWUsSUFBSSxRQUFRLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO1lBQ3hDLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsV0FBVyx1Q0FBdUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hKLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxVQUFVLENBQXVCLFVBQVUsQ0FBQyxFQUFFO1lBQzVFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUMzRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQTBCLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RCxPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxLQUFLLENBQUMsK0JBQStCLENBQUMsT0FBZ0IsRUFBRSxnQkFBd0IsRUFDdEYsaUJBQTJCLEVBQUUsaUJBQXdDLEVBQ3JFLGVBQWlFLEVBQUUsZUFBaUM7UUFFcEcsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVsRSxNQUFNLDBCQUEwQixHQUF5QjtZQUN2RCxnQkFBZ0I7WUFDaEIsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTtZQUNoRCxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDckIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3pCLFVBQVU7WUFDVixRQUFRLEVBQUUsZUFBZTtZQUN6QixnQkFBZ0IsRUFBRSxlQUFlLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxlQUFlLENBQUM7WUFDcEgsY0FBYyxFQUFFLGlCQUFpQjtTQUNsQyxDQUFDO1FBQ0YsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUM1QixTQUFpQixFQUNqQixPQUFnQixFQUNoQixnQkFBd0IsRUFDeEIsaUJBQTJCLEVBQzNCLGdCQUErQixFQUMvQixpQkFBd0MsRUFDeEMsZUFBaUUsRUFDakUsZUFBaUM7UUFFakMsTUFBTSwwQkFBMEIsR0FDOUIsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVoSixNQUFNLHNCQUFzQixHQUEwQjtZQUNwRCxTQUFTO1lBQ1QsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixhQUFhLEVBQUUsZ0JBQWdCO1lBQy9CLEdBQUcsMEJBQTBCO1NBQzlCLENBQUM7UUFFRixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTyxLQUFLLENBQUMscUJBQXFCLENBQ2pDLFNBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGlCQUEyQixFQUMzQixnQkFBd0IsRUFDeEIsaUJBQXdDLEVBQ3hDLGVBQWlFLEVBQ2pFLGVBQWlDO1FBRWpDLE1BQU0sMEJBQTBCLEdBQzlCLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFaEosTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFLE1BQU0sMEJBQTBCLEdBQStCO1lBQzdELFNBQVM7WUFDVCxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzdDLEdBQUcsMEJBQTBCO1NBQzlCLENBQUM7UUFDRixPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSwrQkFBK0IsQ0FDcEMsT0FBK0IsRUFDL0IsT0FBMkMsRUFDM0Msa0JBQTJCLEVBQzNCLGlCQUEyQixFQUMzQixpQkFBd0MsRUFDeEMsZ0JBQXdCLEVBQ3hCLE9BQWdCO1FBRWhCLE1BQU0sZUFBZSxHQUFHLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVyxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUMvSSxDQUFDO1FBRUQsT0FBTztZQUNMLGdCQUFnQjtZQUNoQixzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLGVBQWU7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxRQUFtQjtRQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkMsU0FBUztZQUNULElBQUksRUFBRSxtQkFBbUI7WUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksb0JBQW9CLENBQUMsa0JBQW1ELEVBQUUsbUJBQThCO1FBQzdHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqSCxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNuQyxTQUFTO1lBQ1QsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixRQUFRLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztTQUM1SCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFzQjtRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxnQkFBd0IsRUFDeEUsaUJBQTJCLEVBQUUsZ0JBQStCLEVBQUUsaUJBQXdDLEVBQ3RHLGVBQWlFLEVBQUUsZUFBaUM7UUFDcEcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQzVGLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSw2QkFBNkIsQ0FDbEMsT0FBZ0IsRUFDaEIsaUJBQTJCLEVBQzNCLGdCQUF3QixFQUN4QixpQkFBd0MsRUFDeEMsZUFBaUUsRUFDakUsZUFBaUM7UUFFakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEwsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFvQjtRQUNoRCxNQUFNLEtBQUssR0FBcUMsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgc2hhcmUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGVzRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IEJhc2VSdWxlc2V0RXhlY3V0aW9uLCBEZWJ1Z0V2ZW50LCBFdmFsdWF0aW9uUmVhc29uLCBSdWxlRXZhbHVhdGlvbiwgUnVsZUV2YWx1YXRpb25PdXRwdXQsIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50LCBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfSBmcm9tICcuLi9lbmdpbmUuaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgRmFjdHMgfSBmcm9tICcuLi9mYWN0JztcbmltcG9ydCB7IFJ1bGVzZXRFeGVjdXRvciB9IGZyb20gJy4uL3J1bGVzZXQtZXhlY3V0b3InO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25CbG9jaywgUnVsZXNldCB9IGZyb20gJy4uL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBmbGFnQ2FjaGVkUnVsZXMsIHJldHJpZXZlUnVsZXNldFRyaWdnZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMge1xuICAvKipcbiAgICogTGltaXQgb2YgZXZlbnRzIHRvIGtlZXAgaW4gdGhlIHN0YWNrIGJlZm9yZSBzdWJzY3JpYmluZyB0byB0aGUgZGVidWdFdmVudHMkIHN0cmVhbS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIG5vIGxpbWl0XG4gICAqL1xuICBldmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bGVzIGVuZ2luZSBkZWJ1Z2dlciBvYmplY3QgdG8gZW1pdCBkZWJ1ZyBldmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEVuZ2luZURlYnVnZ2VyIHtcblxuICBwcml2YXRlIHJlZ2lzdGVyZWRSdWxlRW5naW5lPzogUnVsZXNFbmdpbmU7XG5cbiAgcHJpdmF0ZSByZWdpc3RlcmVkUnVsZXNldHM6IFBpY2s8UnVsZXNldCwgJ25hbWUnIHwgJ2lkJz5bXSA9IFtdO1xuXG4gIC8vIEtlZXAgYSBzbWFsbCBoaXN0b3J5IGluIGNhc2UgdGhlIGV2ZW50cyQgc3RyZWFtIGZyb20gdGhlIGVuZ2luZSBpcyBzdWJzY3JpYmVkIGFmdGVyIHJ1bGVzIGVuZ2luZSBpbml0aWFsaXphdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRXZlbnRzU3ViamVjdCQ6IFJlcGxheVN1YmplY3Q8KCkgPT4gKFByb21pc2U8RGVidWdFdmVudD4gfCBEZWJ1Z0V2ZW50KT47XG5cbiAgcHJpdmF0ZSBwZXJmb3JtYW5jZU1lYXN1cmVzJCE6IE9ic2VydmFibGU8UGVyZm9ybWFuY2VNZWFzdXJlW10+O1xuXG4gIC8qKiBTdHJlYW0gZW1pdHRpbmcgYSBkZWJ1ZyBldmVudCB3aGVuIGlzIGZpcmVkOyB0aW1lbGluZSBpcyBrZXB0ICovXG4gIHB1YmxpYyByZWFkb25seSBkZWJ1Z0V2ZW50cyQ6IE9ic2VydmFibGU8RGVidWdFdmVudD47XG5cbiAgLyoqIFJldHJpZXZlZCB0aGUgcnVsZXMgZW5naW5lIHBsdWdnZWQgdG8gdGhlIGRlYnVnZ2VyICovXG4gIHB1YmxpYyBnZXQgcnVsZXNFbmdpbmUoKTogUnVsZXNFbmdpbmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyZWRSdWxlRW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbnRpYXRlIGEgcnVsZXMgZW5naW5lIGRlYnVnZ2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBkZWJ1Z2dlclxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEVuZ2luZURlYnVnZ2VyT3B0aW9ucykge1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PCgpID0+IChQcm9taXNlPERlYnVnRXZlbnQ+IHwgRGVidWdFdmVudCk+KG9wdGlvbnM/LmV2ZW50c1N0YWNrTGltaXQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzJCA9IHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5wZXJmb3JtYW5jZU1lYXN1cmVzJCksXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKFtldmVudEZ1bmMsIHBlcmZvcm1hbmNlTWVhc3VyZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlYnVnRXZlbnQ6IERlYnVnRXZlbnQgPSBhd2FpdCBldmVudEZ1bmMoKTtcbiAgICAgICAgaWYgKGRlYnVnRXZlbnQudHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb24nIHx8IGRlYnVnRXZlbnQudHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicpIHtcbiAgICAgICAgICBsZXQgcnVsZXNldER1cmF0aW9uID0gMDtcbiAgICAgICAgICBkZWJ1Z0V2ZW50LnJ1bGVzRXZhbHVhdGlvbnMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFyayA9IGBydWxlcy1lbmdpbmU6JHtcbiAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZT8ucnVsZXNFbmdpbmVJbnN0YW5jZU5hbWUgfHwgJydcbiAgICAgICAgICAgIH06JHtkZWJ1Z0V2ZW50LnJ1bGVzZXROYW1lfToke3J1bGUucnVsZS5uYW1lfWA7XG4gICAgICAgICAgICBjb25zdCBtZWFzdXJlcyA9IHBlcmZvcm1hbmNlTWVhc3VyZXMuZmlsdGVyKG0gPT4gbS5uYW1lID09PSBtYXJrKTtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbWVhc3VyZXNbbWVhc3VyZXMubGVuZ3RoIC0gMV0/LmR1cmF0aW9uIHx8IDA7XG4gICAgICAgICAgICBydWxlLmR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgICAgICAgICBydWxlc2V0RHVyYXRpb24gKz0gZHVyYXRpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdFdmVudC5kdXJhdGlvbiA9IHJ1bGVzZXREdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVidWdFdmVudDtcbiAgICAgIH0pLFxuICAgICAgdGFwKChkZWJ1Z0V2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJykge1xuICAgICAgICAgIHRoaXMucnVsZXNFbmdpbmU/LmxvZ2dlcj8uZGVidWc/LihgJHtkZWJ1Z0V2ZW50LnJ1bGVzZXROYW1lfSBoYXMgYmVlbiB0cmlnZ2VyZWQgYW5kIHJlc3VsdGVkIGluICR7SlNPTi5zdHJpbmdpZnkoZGVidWdFdmVudC5vdXRwdXRBY3Rpb25zKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5wZXJmb3JtYW5jZU1lYXN1cmVzJCA9IG5ldyBPYnNlcnZhYmxlPFBlcmZvcm1hbmNlTWVhc3VyZVtdPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcigobGlzdCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQobGlzdC5nZXRFbnRyaWVzKCkgYXMgUGVyZm9ybWFuY2VNZWFzdXJlW10pO1xuICAgICAgfSk7XG4gICAgICBwZXJmb3JtYW5jZU9ic2VydmVyLm9ic2VydmUoeyBlbnRyeVR5cGVzOiBbJ21lYXN1cmUnXSB9KTtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZU9ic2VydmVyLmRpc2Nvbm5lY3Q7XG4gICAgfSkucGlwZShzdGFydFdpdGgoW10pLCBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldDogUnVsZXNldCwgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSwgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PiwgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG5cbiAgICBjb25zdCBpbnB1dEZhY3RzID0gYXdhaXQgdGhpcy5nZXRGYWN0c1NuYXBzaG90KHJ1bGVzZXRJbnB1dEZhY3RzKTtcblxuICAgIGNvbnN0IGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBCYXNlUnVsZXNldEV4ZWN1dGlvbiA9IHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBleGVjdXRpb25JZDogYCR7cnVsZXNldC5pZH0tJHtleGVjdXRpb25Db3VudGVyfWAsXG4gICAgICBydWxlc2V0SWQ6IHJ1bGVzZXQuaWQsXG4gICAgICBydWxlc2V0TmFtZTogcnVsZXNldC5uYW1lLFxuICAgICAgaW5wdXRGYWN0cyxcbiAgICAgIHRyaWdnZXJzOiBydWxlc2V0VHJpZ2dlcnMsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBmbGFnQ2FjaGVkUnVsZXMocnVsZXNFeGVjdXRpb25zPy5zb3J0KChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wKSB8fCBbXSwgcnVsZXNldFRyaWdnZXJzKSxcbiAgICAgIHRlbXBvcmFyeUZhY3RzOiBydW50aW1lRmFjdFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydWxlc2V0RXhlY3V0aW9uKFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQsXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG5cbiAgICBjb25zdCBiYXNlUnVsZXNldE91dHB1dEV4ZWN1dGlvbiA9XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbicsXG4gICAgICBvdXRwdXRBY3Rpb25zOiBhbGxPdXRwdXRBY3Rpb25zLFxuICAgICAgLi4uYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVzZXRFeGVjdXRpb25FcnJvcihcbiAgICB0aW1lc3RhbXA6IG51bWJlcixcbiAgICBydWxlc2V0OiBSdWxlc2V0LFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PixcbiAgICBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW11cbiAgKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPVxuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVCYXNlRXhlY3V0aW9uT3V0cHV0T2JqZWN0KHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsIHJ1bGVzZXRJbnB1dEZhY3RzLCBydW50aW1lRmFjdFZhbHVlcywgcnVsZXNldFRyaWdnZXJzLCBydWxlc0V4ZWN1dGlvbnMpO1xuXG4gICAgY29uc3QgcnVsZXNFeGVjV2l0aEVycm9ycyA9IHJ1bGVzRXhlY3V0aW9ucy5maWx0ZXIoZXggPT4gISFleCAmJiAhIWV4LmVycm9yKTtcbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uU2tpcDogUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyxcbiAgICAgIHJ1bGVzQ2F1c2luZ1RoZUVycm9yOiBydWxlc0V4ZWNXaXRoRXJyb3JzLm1hcChlID0+IGUucnVsZSkgfHwgW10sXG4gICAgICBlcnJvcnM6IHJ1bGVzRXhlY1dpdGhFcnJvcnMubWFwKGUgPT4gZS5lcnJvciksXG4gICAgICAuLi5iYXNlUnVsZXNldE91dHB1dEV4ZWN1dGlvblxuICAgIH07XG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb25Ta2lwO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsdWcgdGhlIGRlYnVnZ2VyIHRvIGEgUnVsZSBFbmdpbmVcbiAgICogQHBhcmFtIHJ1bGVzRW5naW5lXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJSdWxlRW5naW5lKHJ1bGVzRW5naW5lOiBSdWxlc0VuZ2luZSkge1xuICAgIHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUgPSBydWxlc0VuZ2luZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgcnVsZXNldCBleGVjdXRpb24gZGVidWcgaW5mb1xuICAgKiBAcGFyYW0gY3VyclJlc1xuICAgKiBAcGFyYW0gcHJldlJlc1xuICAgKiBAcGFyYW0gYWxsRXhlY3V0aW9uc1ZhbGlkXG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIGV4ZWN1dGlvbkNvdW50ZXJcbiAgICogQHBhcmFtIHJ1bGVzZXRcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVEZWJ1Z1J1bGVzZXRFeGVjdXRpb25JbmZvKFxuICAgIGN1cnJSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10sXG4gICAgcHJldlJlczogUnVsZUV2YWx1YXRpb25PdXRwdXRbXSB8IHVuZGVmaW5lZCxcbiAgICBhbGxFeGVjdXRpb25zVmFsaWQ6IGJvb2xlYW4sXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQpIHtcblxuICAgIGNvbnN0IHJ1bGVzZXRUcmlnZ2VycyA9IHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXMsIHByZXZSZXMpO1xuICAgIGNvbnN0IHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBjdXJyUmVzLm1hcChyID0+IHIuZXZhbHVhdGlvbiEpO1xuXG4gICAgaWYgKCFhbGxFeGVjdXRpb25zVmFsaWQpIHtcbiAgICAgIHRoaXMuYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQocnVsZXNldCwgcnVsZXNldElucHV0RmFjdHMsIGV4ZWN1dGlvbkNvdW50ZXIsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRpb25Db3VudGVyLFxuICAgICAgcnVsZXNldE91dHB1dEV4ZWN1dGlvbixcbiAgICAgIGFsbEV4ZWN1dGlvbnNWYWxpZCxcbiAgICAgIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gJ0F2YWlsYWJsZVJ1bGVzZXRzJyBkZWJ1ZyBldmVudCB3aGVuIHJ1bGVzZXRzIGFyZSByZWdpc3RlcmVkIHRvIHRoZSBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIHJ1bGVzZXRzXG4gICAqL1xuICBwdWJsaWMgYWRkQXZhaWxhYmxlUnVsZXNldHMocnVsZXNldHM6IFJ1bGVzZXRbXSkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5yZWdpc3RlcmVkUnVsZXNldHMgPSBbLi4udGhpcy5yZWdpc3RlcmVkUnVsZXNldHMsIC4uLnJ1bGVzZXRzLm1hcCgocikgPT4gKHtuYW1lOiByLm5hbWUsIGlkOiByLmlkfSkpXTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQubmV4dCgoKSA9PiAoe1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZTogJ0F2YWlsYWJsZVJ1bGVzZXRzJyxcbiAgICAgIGF2YWlsYWJsZVJ1bGVzZXRzOiB0aGlzLnJlZ2lzdGVyZWRSdWxlc2V0c1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhbmQgZW1pdHMgYW4gJ0FjdGl2ZVJ1bGVzZXRzJyBkZWJ1ZyBldmVudCB3aGVuIHRoZSBhY3RpdmUgcnVsZXNldHMgYXJlIGNoYW5naW5nXG4gICAqIEBwYXJhbSBydWxlU2V0RXhlY3V0b3JNYXAgbWFwIG9mZiBhbGwgcnVsZXNldHMgZXhlY3V0b3JzXG4gICAqIEBwYXJhbSByZXN0cmljdGl2ZVJ1bGVTZXRzIGlkcyBvZiB0aGUgcnVsZXNldHMgdG8gYWN0aXZhdGU7IGlmIG5vdCBwcm92aWRlZCBhbGwgcmVnaXN0ZXJlZCBydWxlc2V0cyB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgYWN0aXZlUnVsZXNldHNDaGFuZ2UocnVsZVNldEV4ZWN1dG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0RXhlY3V0b3I+LCByZXN0cmljdGl2ZVJ1bGVTZXRzPzogc3RyaW5nW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJ1bGVzZXRzID0gT2JqZWN0LmtleXMocnVsZVNldEV4ZWN1dG9yTWFwKS5tYXAoKHJ1bGVzZXRJZCkgPT4gcnVsZVNldEV4ZWN1dG9yTWFwW3J1bGVzZXRJZF0uZW5naW5lUnVsZXNldCk7XG4gICAgY29uc3QgYWN0aXZlUnVsZXNldHMgPSByZXN0cmljdGl2ZVJ1bGVTZXRzID9cbiAgICAgIE9iamVjdC52YWx1ZXMocnVsZXNldHMpLmZpbHRlcigocnVsZVNldCkgPT4gcmVzdHJpY3RpdmVSdWxlU2V0cy5pbmRleE9mKHJ1bGVTZXQuaWQpID4gLTEpIDpcbiAgICAgIE9iamVjdC52YWx1ZXMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBY3RpdmVSdWxlc2V0cycsXG4gICAgICBydWxlc2V0czogYWN0aXZlUnVsZXNldHMubWFwKGEgPT4gKHtuYW1lOiBydWxlU2V0RXhlY3V0b3JNYXBbYS5pZF0ucnVsZXNldC5uYW1lLCBpZDogcnVsZVNldEV4ZWN1dG9yTWFwW2EuaWRdLnJ1bGVzZXQuaWR9KSlcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gJ0FsbEFjdGlvbnMnIGRlYnVnIGV2ZW50IGVhY2ggdGltZSB0aGUgcnVsZXMgZW5naW5lIG91dHB1dHMgdGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKiBAcGFyYW0gYWN0aW9ucyBsaXN0IG9mIG91dHB1dGVkIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhbGxBY3Rpb25zQ2hhbmdlKGFjdGlvbnM6IEFjdGlvbkJsb2NrW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+ICh7dGltZXN0YW1wLCB0eXBlOiAnQWxsQWN0aW9ucycsIGFjdGlvbnN9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbicgZGVidWcgZXZlbnQgYXQgdGhlIG91cHV0IG9mIGEgc3VjY2Vzc2Z1bCBydWxlc2V0IGV4ZWN1dGlvblxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldElucHV0RmFjdHNcbiAgICogQHBhcmFtIGFsbE91dHB1dEFjdGlvbnNcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwYXJhbSBydWxlc2V0VHJpZ2dlcnNcbiAgICogQHBhcmFtIHJ1bGVzRXhlY3V0aW9uc1xuICAgKiBAcGFyYW0gcmV0cmlldmVGYWN0RnVuY1xuICAgKi9cbiAgcHVibGljIGFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+IHRoaXMucnVsZXNldEV4ZWN1dGlvbih0aW1lc3RhbXAsIHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0SW5wdXRGYWN0cywgYWxsT3V0cHV0QWN0aW9ucywgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyBkZWJ1ZyBldmVudCBhdCB0aGUgb3VwdXQgb2YgYSBmYWlsaW5nIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqIEBwYXJhbSBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gcnVsZXNFeGVjdXRpb25zXG4gICAqIEBwYXJhbSByZXRyaWV2ZUZhY3RGdW5jXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQoXG4gICAgcnVsZXNldDogUnVsZXNldCxcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdXG4gICkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gdGhpcy5ydWxlc2V0RXhlY3V0aW9uRXJyb3IodGltZXN0YW1wLCBydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmFjdCBuYW1lIGFuZCB2YWx1ZSBwYWlyc1xuICAgKiBAcGFyYW0gZmFjdHNOYW1lcyBMaXN0IG9mIGZhY3RzIG5hbWVzIHRvIGdldCB0aGUgdmFsdWUgZm9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmFjdHNTbmFwc2hvdChmYWN0c05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZhY3RzOiB7ZmFjdE5hbWU6IHN0cmluZzsgdmFsdWU6IGFueX1bXSA9IFtdO1xuICAgIGlmICghdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlIGVuZ2luZSBub3QgcGx1Z2dlZCB0byB0aGUgZGVidWdnZXInKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBmYWN0TmFtZSBvZiBmYWN0c05hbWVzKSB7XG4gICAgICBmYWN0cy5wdXNoKHtmYWN0TmFtZSwgdmFsdWU6IGF3YWl0IHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUucmV0cmlldmVGYWN0VmFsdWUoZmFjdE5hbWUpfSk7XG4gICAgfVxuICAgIHJldHVybiBmYWN0cztcbiAgfVxufVxuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmRlYnVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9kZWJ1Zy9lbmdpbmUuZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEdBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQXVCeEIsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsR0FDeEIsTUFBTSxXQUFXLENBQUM7QUFVbkI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWF6Qix5REFBeUQ7SUFDekQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLE9BQStCO1FBbkJuQyx1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBb0I5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxhQUFhLENBQTJDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDL0MsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUN6QyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtZQUNuRCxNQUFNLFVBQVUsR0FBZSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ2pELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFLENBQUM7Z0JBQzFGLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMzQyxNQUFNLElBQUksR0FBRyxnQkFDWCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsdUJBQXVCLElBQUksRUFDeEQsSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQy9DLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDcEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO29CQUN6QixlQUFlLElBQUksUUFBUSxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDakIsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsdUNBQXVDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksVUFBVSxDQUF1QixDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzlFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUMzRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQTBCLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RCxPQUFPLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxPQUFnQixFQUFFLGdCQUF3QixFQUN0RixpQkFBMkIsRUFBRSxpQkFBd0MsRUFDckUsZUFBaUUsRUFBRSxlQUFpQztRQUNwRyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sMEJBQTBCLEdBQXlCO1lBQ3ZELGdCQUFnQjtZQUNoQixXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLGdCQUFnQixFQUFFO1lBQ2hELFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDekIsVUFBVTtZQUNWLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsQ0FBQztZQUNwSCxjQUFjLEVBQUUsaUJBQWlCO1NBQ2xDLENBQUM7UUFDRixPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQzVCLFNBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGdCQUF3QixFQUN4QixpQkFBMkIsRUFDM0IsZ0JBQStCLEVBQy9CLGlCQUF3QyxFQUN4QyxlQUFpRSxFQUNqRSxlQUFpQztRQUNqQyxNQUFNLDBCQUEwQixHQUFHLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakwsTUFBTSxzQkFBc0IsR0FBMEI7WUFDcEQsU0FBUztZQUNULElBQUksRUFBRSxrQkFBa0I7WUFDeEIsYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixHQUFHLDBCQUEwQjtTQUM5QixDQUFDO1FBRUYsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRU8sS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxTQUFpQixFQUNqQixPQUFnQixFQUNoQixpQkFBMkIsRUFDM0IsZ0JBQXdCLEVBQ3hCLGlCQUF3QyxFQUN4QyxlQUFpRSxFQUNqRSxlQUFpQztRQUVqQyxNQUFNLDBCQUEwQixHQUFHLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakwsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0UsTUFBTSwwQkFBMEIsR0FBK0I7WUFDN0QsU0FBUztZQUNULElBQUksRUFBRSx1QkFBdUI7WUFDN0Isb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQy9DLEdBQUcsMEJBQTBCO1NBQzlCLENBQUM7UUFDRixPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSwrQkFBK0IsQ0FDcEMsT0FBK0IsRUFDL0IsT0FBMkMsRUFDM0Msa0JBQTJCLEVBQzNCLGlCQUEyQixFQUMzQixpQkFBd0MsRUFDeEMsZ0JBQXdCLEVBQ3hCLE9BQWdCO1FBQ2hCLE1BQU0sZUFBZSxHQUFHLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFXLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQy9JLENBQUM7UUFFRCxPQUFPO1lBQ0wsZ0JBQWdCO1lBQ2hCLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsZUFBZTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9CQUFvQixDQUFDLFFBQW1CO1FBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNuQyxTQUFTO1lBQ1QsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxvQkFBb0IsQ0FBQyxrQkFBbUQsRUFBRSxtQkFBOEI7UUFDN0csTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pILE1BQU0sY0FBYyxHQUFHLG1CQUFtQjtZQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLFNBQVM7WUFDVCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFFBQVEsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDaEksQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQUMsT0FBc0I7UUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksd0JBQXdCLENBQUMsT0FBZ0IsRUFBRSxnQkFBd0IsRUFDeEUsaUJBQTJCLEVBQUUsZ0JBQStCLEVBQUUsaUJBQXdDLEVBQ3RHLGVBQWlFLEVBQUUsZUFBaUM7UUFDcEcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQzVGLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLDZCQUE2QixDQUNsQyxPQUFnQixFQUNoQixpQkFBMkIsRUFDM0IsZ0JBQXdCLEVBQ3hCLGlCQUF3QyxFQUN4QyxlQUFpRSxFQUNqRSxlQUFpQztRQUVqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQW9CO1FBQ2hELE1BQU0sS0FBSyxHQUF1QyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGVzRW5naW5lLFxufSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHtcbiAgQmFzZVJ1bGVzZXRFeGVjdXRpb24sXG4gIERlYnVnRXZlbnQsXG4gIEV2YWx1YXRpb25SZWFzb24sXG4gIFJ1bGVFdmFsdWF0aW9uLFxuICBSdWxlRXZhbHVhdGlvbk91dHB1dCxcbiAgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQsXG4gIFJ1bGVzZXRFeGVjdXRpb25FdmVudCxcbn0gZnJvbSAnLi4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3RzLFxufSBmcm9tICcuLi9mYWN0JztcbmltcG9ydCB7XG4gIFJ1bGVzZXRFeGVjdXRvcixcbn0gZnJvbSAnLi4vcnVsZXNldC1leGVjdXRvcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGlvbkJsb2NrLFxuICBSdWxlc2V0LFxufSBmcm9tICcuLi9zdHJ1Y3R1cmUnO1xuaW1wb3J0IHtcbiAgZmxhZ0NhY2hlZFJ1bGVzLFxuICByZXRyaWV2ZVJ1bGVzZXRUcmlnZ2Vycyxcbn0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMge1xuICAvKipcbiAgICogTGltaXQgb2YgZXZlbnRzIHRvIGtlZXAgaW4gdGhlIHN0YWNrIGJlZm9yZSBzdWJzY3JpYmluZyB0byB0aGUgZGVidWdFdmVudHMkIHN0cmVhbS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIG5vIGxpbWl0XG4gICAqL1xuICBldmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bGVzIGVuZ2luZSBkZWJ1Z2dlciBvYmplY3QgdG8gZW1pdCBkZWJ1ZyBldmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEVuZ2luZURlYnVnZ2VyIHtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkUnVsZUVuZ2luZT86IFJ1bGVzRW5naW5lO1xuXG4gIHByaXZhdGUgcmVnaXN0ZXJlZFJ1bGVzZXRzOiBQaWNrPFJ1bGVzZXQsICduYW1lJyB8ICdpZCc+W10gPSBbXTtcblxuICAvLyBLZWVwIGEgc21hbGwgaGlzdG9yeSBpbiBjYXNlIHRoZSBldmVudHMkIHN0cmVhbSBmcm9tIHRoZSBlbmdpbmUgaXMgc3Vic2NyaWJlZCBhZnRlciBydWxlcyBlbmdpbmUgaW5pdGlhbGl6YXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0V2ZW50c1N1YmplY3QkOiBSZXBsYXlTdWJqZWN0PCgpID0+IChQcm9taXNlPERlYnVnRXZlbnQ+IHwgRGVidWdFdmVudCk+O1xuXG4gIHByaXZhdGUgcGVyZm9ybWFuY2VNZWFzdXJlcyQhOiBPYnNlcnZhYmxlPFBlcmZvcm1hbmNlTWVhc3VyZVtdPjtcblxuICAvKiogU3RyZWFtIGVtaXR0aW5nIGEgZGVidWcgZXZlbnQgd2hlbiBpcyBmaXJlZDsgdGltZWxpbmUgaXMga2VwdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVidWdFdmVudHMkOiBPYnNlcnZhYmxlPERlYnVnRXZlbnQ+O1xuXG4gIC8qKiBSZXRyaWV2ZWQgdGhlIHJ1bGVzIGVuZ2luZSBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlciAqL1xuICBwdWJsaWMgZ2V0IHJ1bGVzRW5naW5lKCk6IFJ1bGVzRW5naW5lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZSBhIHJ1bGVzIGVuZ2luZSBkZWJ1Z2dlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgZGVidWdnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMpIHtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDwoKSA9PiAoUHJvbWlzZTxEZWJ1Z0V2ZW50PiB8IERlYnVnRXZlbnQpPihvcHRpb25zPy5ldmVudHNTdGFja0xpbWl0KTtcbiAgICB0aGlzLmluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50cyQgPSB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQpLFxuICAgICAgY29uY2F0TWFwKGFzeW5jIChbZXZlbnRGdW5jLCBwZXJmb3JtYW5jZU1lYXN1cmVzXSkgPT4ge1xuICAgICAgICBjb25zdCBkZWJ1Z0V2ZW50OiBEZWJ1Z0V2ZW50ID0gYXdhaXQgZXZlbnRGdW5jKCk7XG4gICAgICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKSB7XG4gICAgICAgICAgbGV0IHJ1bGVzZXREdXJhdGlvbiA9IDA7XG4gICAgICAgICAgZGVidWdFdmVudC5ydWxlc0V2YWx1YXRpb25zLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmsgPSBgcnVsZXMtZW5naW5lOiR7XG4gICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmU/LnJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lIHx8ICcnXG4gICAgICAgICAgICB9OiR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX06JHtydWxlLnJ1bGUubmFtZX1gO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZXMgPSBwZXJmb3JtYW5jZU1lYXN1cmVzLmZpbHRlcigobSkgPT4gbS5uYW1lID09PSBtYXJrKTtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbWVhc3VyZXMuYXQoLTEpPy5kdXJhdGlvbiB8fCAwO1xuICAgICAgICAgICAgcnVsZS5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgICAgICAgICAgcnVsZXNldER1cmF0aW9uICs9IGR1cmF0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnRXZlbnQuZHVyYXRpb24gPSBydWxlc2V0RHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlYnVnRXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoZGVidWdFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZGVidWdFdmVudC50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbicpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lPy5sb2dnZXI/LmRlYnVnPy4oYCR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX0gaGFzIGJlZW4gdHJpZ2dlcmVkIGFuZCByZXN1bHRlZCBpbiAke0pTT04uc3RyaW5naWZ5KGRlYnVnRXZlbnQub3V0cHV0QWN0aW9ucyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCkge1xuICAgIHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQgPSBuZXcgT2JzZXJ2YWJsZTxQZXJmb3JtYW5jZU1lYXN1cmVbXT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcigobGlzdCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQobGlzdC5nZXRFbnRyaWVzKCkgYXMgUGVyZm9ybWFuY2VNZWFzdXJlW10pO1xuICAgICAgfSk7XG4gICAgICBwZXJmb3JtYW5jZU9ic2VydmVyLm9ic2VydmUoeyBlbnRyeVR5cGVzOiBbJ21lYXN1cmUnXSB9KTtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KS5waXBlKHN0YXJ0V2l0aChbXSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQmFzZUV4ZWN1dGlvbk91dHB1dE9iamVjdChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCBpbnB1dEZhY3RzID0gYXdhaXQgdGhpcy5nZXRGYWN0c1NuYXBzaG90KHJ1bGVzZXRJbnB1dEZhY3RzKTtcblxuICAgIGNvbnN0IGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBCYXNlUnVsZXNldEV4ZWN1dGlvbiA9IHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBleGVjdXRpb25JZDogYCR7cnVsZXNldC5pZH0tJHtleGVjdXRpb25Db3VudGVyfWAsXG4gICAgICBydWxlc2V0SWQ6IHJ1bGVzZXQuaWQsXG4gICAgICBydWxlc2V0TmFtZTogcnVsZXNldC5uYW1lLFxuICAgICAgaW5wdXRGYWN0cyxcbiAgICAgIHRyaWdnZXJzOiBydWxlc2V0VHJpZ2dlcnMsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBmbGFnQ2FjaGVkUnVsZXMocnVsZXNFeGVjdXRpb25zPy5zb3J0KChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wKSB8fCBbXSwgcnVsZXNldFRyaWdnZXJzKSxcbiAgICAgIHRlbXBvcmFyeUZhY3RzOiBydW50aW1lRmFjdFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydWxlc2V0RXhlY3V0aW9uKFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQsXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbicsXG4gICAgICBvdXRwdXRBY3Rpb25zOiBhbGxPdXRwdXRBY3Rpb25zLFxuICAgICAgLi4uYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVzZXRFeGVjdXRpb25FcnJvcihcbiAgICB0aW1lc3RhbXA6IG51bWJlcixcbiAgICBydWxlc2V0OiBSdWxlc2V0LFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PixcbiAgICBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW11cbiAgKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc0V4ZWNXaXRoRXJyb3JzID0gcnVsZXNFeGVjdXRpb25zLmZpbHRlcigoZXgpID0+ICEhZXggJiYgISFleC5lcnJvcik7XG4gICAgY29uc3QgcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA6IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0ge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZTogJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicsXG4gICAgICBydWxlc0NhdXNpbmdUaGVFcnJvcjogcnVsZXNFeGVjV2l0aEVycm9ycy5tYXAoKGUpID0+IGUucnVsZSkgfHwgW10sXG4gICAgICBlcnJvcnM6IHJ1bGVzRXhlY1dpdGhFcnJvcnMubWFwKChlKSA9PiBlLmVycm9yKSxcbiAgICAgIC4uLmJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA7XG4gIH1cblxuICAvKipcbiAgICogUGx1ZyB0aGUgZGVidWdnZXIgdG8gYSBSdWxlIEVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNFbmdpbmVcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclJ1bGVFbmdpbmUocnVsZXNFbmdpbmU6IFJ1bGVzRW5naW5lKSB7XG4gICAgdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZSA9IHJ1bGVzRW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBydWxlc2V0IGV4ZWN1dGlvbiBkZWJ1ZyBpbmZvXG4gICAqIEBwYXJhbSBjdXJyUmVzXG4gICAqIEBwYXJhbSBwcmV2UmVzXG4gICAqIEBwYXJhbSBhbGxFeGVjdXRpb25zVmFsaWRcbiAgICogQHBhcmFtIHJ1bGVzZXRJbnB1dEZhY3RzXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKi9cbiAgcHVibGljIGhhbmRsZURlYnVnUnVsZXNldEV4ZWN1dGlvbkluZm8oXG4gICAgY3VyclJlczogUnVsZUV2YWx1YXRpb25PdXRwdXRbXSxcbiAgICBwcmV2UmVzOiBSdWxlRXZhbHVhdGlvbk91dHB1dFtdIHwgdW5kZWZpbmVkLFxuICAgIGFsbEV4ZWN1dGlvbnNWYWxpZDogYm9vbGVhbixcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldDogUnVsZXNldCkge1xuICAgIGNvbnN0IHJ1bGVzZXRUcmlnZ2VycyA9IHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXMsIHByZXZSZXMpO1xuICAgIGNvbnN0IHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBjdXJyUmVzLm1hcCgocikgPT4gci5ldmFsdWF0aW9uISk7XG5cbiAgICBpZiAoIWFsbEV4ZWN1dGlvbnNWYWxpZCkge1xuICAgICAgdGhpcy5hZGRSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudChydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNldE91dHB1dEV4ZWN1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0T3V0cHV0RXhlY3V0aW9uLFxuICAgICAgYWxsRXhlY3V0aW9uc1ZhbGlkLFxuICAgICAgcnVsZXNldFRyaWdnZXJzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiAnQXZhaWxhYmxlUnVsZXNldHMnIGRlYnVnIGV2ZW50IHdoZW4gcnVsZXNldHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNldHNcbiAgICovXG4gIHB1YmxpYyBhZGRBdmFpbGFibGVSdWxlc2V0cyhydWxlc2V0czogUnVsZXNldFtdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cyA9IFsuLi50aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cywgLi4ucnVsZXNldHMubWFwKChyKSA9PiAoeyBuYW1lOiByLm5hbWUsIGlkOiByLmlkIH0pKV07XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBdmFpbGFibGVSdWxlc2V0cycsXG4gICAgICBhdmFpbGFibGVSdWxlc2V0czogdGhpcy5yZWdpc3RlcmVkUnVsZXNldHNcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYW5kIGVtaXRzIGFuICdBY3RpdmVSdWxlc2V0cycgZGVidWcgZXZlbnQgd2hlbiB0aGUgYWN0aXZlIHJ1bGVzZXRzIGFyZSBjaGFuZ2luZ1xuICAgKiBAcGFyYW0gcnVsZVNldEV4ZWN1dG9yTWFwIG1hcCBvZmYgYWxsIHJ1bGVzZXRzIGV4ZWN1dG9yc1xuICAgKiBAcGFyYW0gcmVzdHJpY3RpdmVSdWxlU2V0cyBpZHMgb2YgdGhlIHJ1bGVzZXRzIHRvIGFjdGl2YXRlOyBpZiBub3QgcHJvdmlkZWQgYWxsIHJlZ2lzdGVyZWQgcnVsZXNldHMgd2lsbCBiZSBjb25zaWRlcmVkIGFzIGFjdGl2ZVxuICAgKi9cbiAgcHVibGljIGFjdGl2ZVJ1bGVzZXRzQ2hhbmdlKHJ1bGVTZXRFeGVjdXRvck1hcDogUmVjb3JkPHN0cmluZywgUnVsZXNldEV4ZWN1dG9yPiwgcmVzdHJpY3RpdmVSdWxlU2V0cz86IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBydWxlc2V0cyA9IE9iamVjdC5rZXlzKHJ1bGVTZXRFeGVjdXRvck1hcCkubWFwKChydWxlc2V0SWQpID0+IHJ1bGVTZXRFeGVjdXRvck1hcFtydWxlc2V0SWRdLmVuZ2luZVJ1bGVzZXQpO1xuICAgIGNvbnN0IGFjdGl2ZVJ1bGVzZXRzID0gcmVzdHJpY3RpdmVSdWxlU2V0c1xuICAgICAgPyBPYmplY3QudmFsdWVzKHJ1bGVzZXRzKS5maWx0ZXIoKHJ1bGVTZXQpID0+IHJlc3RyaWN0aXZlUnVsZVNldHMuaW5jbHVkZXMocnVsZVNldC5pZCkpXG4gICAgICA6IE9iamVjdC52YWx1ZXMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBY3RpdmVSdWxlc2V0cycsXG4gICAgICBydWxlc2V0czogYWN0aXZlUnVsZXNldHMubWFwKChhKSA9PiAoeyBuYW1lOiBydWxlU2V0RXhlY3V0b3JNYXBbYS5pZF0ucnVsZXNldC5uYW1lLCBpZDogcnVsZVNldEV4ZWN1dG9yTWFwW2EuaWRdLnJ1bGVzZXQuaWQgfSkpXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuICdBbGxBY3Rpb25zJyBkZWJ1ZyBldmVudCBlYWNoIHRpbWUgdGhlIHJ1bGVzIGVuZ2luZSBvdXRwdXRzIHRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICogQHBhcmFtIGFjdGlvbnMgbGlzdCBvZiBvdXRwdXRlZCBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYWxsQWN0aW9uc0NoYW5nZShhY3Rpb25zOiBBY3Rpb25CbG9ja1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQubmV4dCgoKSA9PiAoeyB0aW1lc3RhbXAsIHR5cGU6ICdBbGxBY3Rpb25zJywgYWN0aW9ucyB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbicgZGVidWcgZXZlbnQgYXQgdGhlIG91cHV0IG9mIGEgc3VjY2Vzc2Z1bCBydWxlc2V0IGV4ZWN1dGlvblxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldElucHV0RmFjdHNcbiAgICogQHBhcmFtIGFsbE91dHB1dEFjdGlvbnNcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwYXJhbSBydWxlc2V0VHJpZ2dlcnNcbiAgICogQHBhcmFtIHJ1bGVzRXhlY3V0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+IHRoaXMucnVsZXNldEV4ZWN1dGlvbih0aW1lc3RhbXAsIHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0SW5wdXRGYWN0cywgYWxsT3V0cHV0QWN0aW9ucywgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyBkZWJ1ZyBldmVudCBhdCB0aGUgb3VwdXQgb2YgYSBmYWlsaW5nIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqIEBwYXJhbSBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gcnVsZXNFeGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQoXG4gICAgcnVsZXNldDogUnVsZXNldCxcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdXG4gICkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gdGhpcy5ydWxlc2V0RXhlY3V0aW9uRXJyb3IodGltZXN0YW1wLCBydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmFjdCBuYW1lIGFuZCB2YWx1ZSBwYWlyc1xuICAgKiBAcGFyYW0gZmFjdHNOYW1lcyBMaXN0IG9mIGZhY3RzIG5hbWVzIHRvIGdldCB0aGUgdmFsdWUgZm9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmFjdHNTbmFwc2hvdChmYWN0c05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZhY3RzOiB7IGZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW107XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyZWRSdWxlRW5naW5lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGUgZW5naW5lIG5vdCBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlcicpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZhY3ROYW1lIG9mIGZhY3RzTmFtZXMpIHtcbiAgICAgIGZhY3RzLnB1c2goeyBmYWN0TmFtZSwgdmFsdWU6IGF3YWl0IHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUucmV0cmlldmVGYWN0VmFsdWUoZmFjdE5hbWUpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFjdHM7XG4gIH1cbn1cbiJdfQ==
|