@o3r/rules-engine 11.6.0-prerelease.2 → 11.6.0-prerelease.21
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 +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 +1 -4
- 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 +5 -5
- package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +6 -7
- package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +8 -8
- package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +5 -5
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +9 -9
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +13 -13
- package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +9 -9
- package/esm2022/components/rules-engine/shared/index.mjs +2 -2
- package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +5 -5
- 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 +8 -10
- package/esm2022/devkit/rules-engine-devtools.message.service.mjs +15 -15
- package/esm2022/devkit/rules-engine-devtools.module.mjs +11 -11
- package/esm2022/devkit/rules-engine-devtools.service.mjs +19 -19
- 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 +8 -8
- 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 +11 -11
- package/esm2022/services/runner/rules-engine.runner.service.mjs +34 -17
- package/esm2022/stores/rulesets/rulesets.actions.mjs +3 -3
- package/esm2022/stores/rulesets/rulesets.effect.mjs +10 -10
- package/esm2022/stores/rulesets/rulesets.module.mjs +11 -11
- 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 +322 -311
- 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/migration.json +5 -0
- package/package.json +5 -5
- package/public_api.d.ts +0 -1
- package/public_api.d.ts.map +1 -1
- package/schemas/rulesets.schema.json +20 -0
- 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 +5 -1
- package/schematics/ng-update/index.d.ts.map +1 -1
- package/schematics/ng-update/index.js +17 -5
- 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 +7 -0
- package/schematics/ng-update/v11.6/use-register-action-handlers.d.ts.map +1 -0
- package/schematics/ng-update/v11.6/use-register-action-handlers.js +20 -0
- 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 +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 +19 -6
- 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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmRlYnVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9kZWJ1Zy9lbmdpbmUuZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBY3pCLHlEQUF5RDtJQUN6RCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksT0FBK0I7UUFuQm5DLHVCQUFrQixHQUFtQyxFQUFFLENBQUM7UUFvQjlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBMkMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUMvQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQ3pDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFO1lBQ25ELE1BQU0sVUFBVSxHQUFlLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFDakQsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUYsSUFBSSxlQUFlLEdBQUcsQ0FB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QVMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEwsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFvQjtRQUNoRCxNQUFNLEtBQUssR0FBcUMsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgc2hhcmUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGVzRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IEJhc2VSdWxlc2V0RXhlY3V0aW9uLCBEZWJ1Z0V2ZW50LCBFdmFsdWF0aW9uUmVhc29uLCBSdWxlRXZhbHVhdGlvbiwgUnVsZUV2YWx1YXRpb25PdXRwdXQsIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50LCBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfSBmcm9tICcuLi9lbmdpbmUuaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgRmFjdHMgfSBmcm9tICcuLi9mYWN0JztcbmltcG9ydCB7IFJ1bGVzZXRFeGVjdXRvciB9IGZyb20gJy4uL3J1bGVzZXQtZXhlY3V0b3InO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25CbG9jaywgUnVsZXNldCB9IGZyb20gJy4uL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBmbGFnQ2FjaGVkUnVsZXMsIHJldHJpZXZlUnVsZXNldFRyaWdnZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMge1xuICAvKipcbiAgICogTGltaXQgb2YgZXZlbnRzIHRvIGtlZXAgaW4gdGhlIHN0YWNrIGJlZm9yZSBzdWJzY3JpYmluZyB0byB0aGUgZGVidWdFdmVudHMkIHN0cmVhbS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIG5vIGxpbWl0XG4gICAqL1xuICBldmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bGVzIGVuZ2luZSBkZWJ1Z2dlciBvYmplY3QgdG8gZW1pdCBkZWJ1ZyBldmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEVuZ2luZURlYnVnZ2VyIHtcblxuICBwcml2YXRlIHJlZ2lzdGVyZWRSdWxlRW5naW5lPzogUnVsZXNFbmdpbmU7XG5cbiAgcHJpdmF0ZSByZWdpc3RlcmVkUnVsZXNldHM6IFBpY2s8UnVsZXNldCwgJ25hbWUnIHwgJ2lkJz5bXSA9IFtdO1xuXG4gIC8vIEtlZXAgYSBzbWFsbCBoaXN0b3J5IGluIGNhc2UgdGhlIGV2ZW50cyQgc3RyZWFtIGZyb20gdGhlIGVuZ2luZSBpcyBzdWJzY3JpYmVkIGFmdGVyIHJ1bGVzIGVuZ2luZSBpbml0aWFsaXphdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRXZlbnRzU3ViamVjdCQ6IFJlcGxheVN1YmplY3Q8KCkgPT4gKFByb21pc2U8RGVidWdFdmVudD4gfCBEZWJ1Z0V2ZW50KT47XG5cbiAgcHJpdmF0ZSBwZXJmb3JtYW5jZU1lYXN1cmVzJCE6IE9ic2VydmFibGU8UGVyZm9ybWFuY2VNZWFzdXJlW10+O1xuXG4gIC8qKiBTdHJlYW0gZW1pdHRpbmcgYSBkZWJ1ZyBldmVudCB3aGVuIGlzIGZpcmVkOyB0aW1lbGluZSBpcyBrZXB0ICovXG4gIHB1YmxpYyByZWFkb25seSBkZWJ1Z0V2ZW50cyQ6IE9ic2VydmFibGU8RGVidWdFdmVudD47XG5cbiAgLyoqIFJldHJpZXZlZCB0aGUgcnVsZXMgZW5naW5lIHBsdWdnZWQgdG8gdGhlIGRlYnVnZ2VyICovXG4gIHB1YmxpYyBnZXQgcnVsZXNFbmdpbmUoKTogUnVsZXNFbmdpbmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyZWRSdWxlRW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbnRpYXRlIGEgcnVsZXMgZW5naW5lIGRlYnVnZ2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBkZWJ1Z2dlclxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEVuZ2luZURlYnVnZ2VyT3B0aW9ucykge1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PCgpID0+IChQcm9taXNlPERlYnVnRXZlbnQ+IHwgRGVidWdFdmVudCk+KG9wdGlvbnM/LmV2ZW50c1N0YWNrTGltaXQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzJCA9IHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5wZXJmb3JtYW5jZU1lYXN1cmVzJCksXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKFtldmVudEZ1bmMsIHBlcmZvcm1hbmNlTWVhc3VyZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlYnVnRXZlbnQ6IERlYnVnRXZlbnQgPSBhd2FpdCBldmVudEZ1bmMoKTtcbiAgICAgICAgaWYgKGRlYnVnRXZlbnQudHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb24nIHx8IGRlYnVnRXZlbnQudHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicpIHtcbiAgICAgICAgICBsZXQgcnVsZXNldER1cmF0aW9uID0gMDtcbiAgICAgICAgICBkZWJ1Z0V2ZW50LnJ1bGVzRXZhbHVhdGlvbnMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFyayA9IGBydWxlcy1lbmdpbmU6JHtcbiAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZT8ucnVsZXNFbmdpbmVJbnN0YW5jZU5hbWUgfHwgJydcbiAgICAgICAgICAgIH06JHtkZWJ1Z0V2ZW50LnJ1bGVzZXROYW1lfToke3J1bGUucnVsZS5uYW1lfWA7XG4gICAgICAgICAgICBjb25zdCBtZWFzdXJlcyA9IHBlcmZvcm1hbmNlTWVhc3VyZXMuZmlsdGVyKG0gPT4gbS5uYW1lID09PSBtYXJrKTtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbWVhc3VyZXNbbWVhc3VyZXMubGVuZ3RoIC0gMV0/LmR1cmF0aW9uIHx8IDA7XG4gICAgICAgICAgICBydWxlLmR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgICAgICAgICBydWxlc2V0RHVyYXRpb24gKz0gZHVyYXRpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdFdmVudC5kdXJhdGlvbiA9IHJ1bGVzZXREdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVidWdFdmVudDtcbiAgICAgIH0pLFxuICAgICAgdGFwKChkZWJ1Z0V2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJykge1xuICAgICAgICAgIHRoaXMucnVsZXNFbmdpbmU/LmxvZ2dlcj8uZGVidWc/LihgJHtkZWJ1Z0V2ZW50LnJ1bGVzZXROYW1lfSBoYXMgYmVlbiB0cmlnZ2VyZWQgYW5kIHJlc3VsdGVkIGluICR7SlNPTi5zdHJpbmdpZnkoZGVidWdFdmVudC5vdXRwdXRBY3Rpb25zKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5wZXJmb3JtYW5jZU1lYXN1cmVzJCA9IG5ldyBPYnNlcnZhYmxlPFBlcmZvcm1hbmNlTWVhc3VyZVtdPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcigobGlzdCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQobGlzdC5nZXRFbnRyaWVzKCkgYXMgUGVyZm9ybWFuY2VNZWFzdXJlW10pO1xuICAgICAgfSk7XG4gICAgICBwZXJmb3JtYW5jZU9ic2VydmVyLm9ic2VydmUoeyBlbnRyeVR5cGVzOiBbJ21lYXN1cmUnXSB9KTtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZU9ic2VydmVyLmRpc2Nvbm5lY3Q7XG4gICAgfSkucGlwZShzdGFydFdpdGgoW10pLCBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldDogUnVsZXNldCwgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSwgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PiwgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG5cbiAgICBjb25zdCBpbnB1dEZhY3RzID0gYXdhaXQgdGhpcy5nZXRGYWN0c1NuYXBzaG90KHJ1bGVzZXRJbnB1dEZhY3RzKTtcblxuICAgIGNvbnN0IGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBCYXNlUnVsZXNldEV4ZWN1dGlvbiA9IHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBleGVjdXRpb25JZDogYCR7cnVsZXNldC5pZH0tJHtleGVjdXRpb25Db3VudGVyfWAsXG4gICAgICBydWxlc2V0SWQ6IHJ1bGVzZXQuaWQsXG4gICAgICBydWxlc2V0TmFtZTogcnVsZXNldC5uYW1lLFxuICAgICAgaW5wdXRGYWN0cyxcbiAgICAgIHRyaWdnZXJzOiBydWxlc2V0VHJpZ2dlcnMsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBmbGFnQ2FjaGVkUnVsZXMocnVsZXNFeGVjdXRpb25zPy5zb3J0KChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wKSB8fCBbXSwgcnVsZXNldFRyaWdnZXJzKSxcbiAgICAgIHRlbXBvcmFyeUZhY3RzOiBydW50aW1lRmFjdFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydWxlc2V0RXhlY3V0aW9uKFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQsXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG5cbiAgICBjb25zdCBiYXNlUnVsZXNldE91dHB1dEV4ZWN1dGlvbiA9XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbicsXG4gICAgICBvdXRwdXRBY3Rpb25zOiBhbGxPdXRwdXRBY3Rpb25zLFxuICAgICAgLi4uYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVzZXRFeGVjdXRpb25FcnJvcihcbiAgICB0aW1lc3RhbXA6IG51bWJlcixcbiAgICBydWxlc2V0OiBSdWxlc2V0LFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PixcbiAgICBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW11cbiAgKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPVxuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVCYXNlRXhlY3V0aW9uT3V0cHV0T2JqZWN0KHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsIHJ1bGVzZXRJbnB1dEZhY3RzLCBydW50aW1lRmFjdFZhbHVlcywgcnVsZXNldFRyaWdnZXJzLCBydWxlc0V4ZWN1dGlvbnMpO1xuXG4gICAgY29uc3QgcnVsZXNFeGVjV2l0aEVycm9ycyA9IHJ1bGVzRXhlY3V0aW9ucy5maWx0ZXIoZXggPT4gISFleCAmJiAhIWV4LmVycm9yKTtcbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uU2tpcDogUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyxcbiAgICAgIHJ1bGVzQ2F1c2luZ1RoZUVycm9yOiBydWxlc0V4ZWNXaXRoRXJyb3JzLm1hcChlID0+IGUucnVsZSkgfHwgW10sXG4gICAgICBlcnJvcnM6IHJ1bGVzRXhlY1dpdGhFcnJvcnMubWFwKGUgPT4gZS5lcnJvciksXG4gICAgICAuLi5iYXNlUnVsZXNldE91dHB1dEV4ZWN1dGlvblxuICAgIH07XG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb25Ta2lwO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsdWcgdGhlIGRlYnVnZ2VyIHRvIGEgUnVsZSBFbmdpbmVcbiAgICogQHBhcmFtIHJ1bGVzRW5naW5lXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJSdWxlRW5naW5lKHJ1bGVzRW5naW5lOiBSdWxlc0VuZ2luZSkge1xuICAgIHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUgPSBydWxlc0VuZ2luZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgcnVsZXNldCBleGVjdXRpb24gZGVidWcgaW5mb1xuICAgKiBAcGFyYW0gY3VyclJlc1xuICAgKiBAcGFyYW0gcHJldlJlc1xuICAgKiBAcGFyYW0gYWxsRXhlY3V0aW9uc1ZhbGlkXG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIGV4ZWN1dGlvbkNvdW50ZXJcbiAgICogQHBhcmFtIHJ1bGVzZXRcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVEZWJ1Z1J1bGVzZXRFeGVjdXRpb25JbmZvKFxuICAgIGN1cnJSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10sXG4gICAgcHJldlJlczogUnVsZUV2YWx1YXRpb25PdXRwdXRbXSB8IHVuZGVmaW5lZCxcbiAgICBhbGxFeGVjdXRpb25zVmFsaWQ6IGJvb2xlYW4sXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQpIHtcblxuICAgIGNvbnN0IHJ1bGVzZXRUcmlnZ2VycyA9IHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXMsIHByZXZSZXMpO1xuICAgIGNvbnN0IHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBjdXJyUmVzLm1hcChyID0+IHIuZXZhbHVhdGlvbiEpO1xuXG4gICAgaWYgKCFhbGxFeGVjdXRpb25zVmFsaWQpIHtcbiAgICAgIHRoaXMuYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQocnVsZXNldCwgcnVsZXNldElucHV0RmFjdHMsIGV4ZWN1dGlvbkNvdW50ZXIsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRpb25Db3VudGVyLFxuICAgICAgcnVsZXNldE91dHB1dEV4ZWN1dGlvbixcbiAgICAgIGFsbEV4ZWN1dGlvbnNWYWxpZCxcbiAgICAgIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gJ0F2YWlsYWJsZVJ1bGVzZXRzJyBkZWJ1ZyBldmVudCB3aGVuIHJ1bGVzZXRzIGFyZSByZWdpc3RlcmVkIHRvIHRoZSBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIHJ1bGVzZXRzXG4gICAqL1xuICBwdWJsaWMgYWRkQXZhaWxhYmxlUnVsZXNldHMocnVsZXNldHM6IFJ1bGVzZXRbXSkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5yZWdpc3RlcmVkUnVsZXNldHMgPSBbLi4udGhpcy5yZWdpc3RlcmVkUnVsZXNldHMsIC4uLnJ1bGVzZXRzLm1hcCgocikgPT4gKHtuYW1lOiByLm5hbWUsIGlkOiByLmlkfSkpXTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQubmV4dCgoKSA9PiAoe1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZTogJ0F2YWlsYWJsZVJ1bGVzZXRzJyxcbiAgICAgIGF2YWlsYWJsZVJ1bGVzZXRzOiB0aGlzLnJlZ2lzdGVyZWRSdWxlc2V0c1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhbmQgZW1pdHMgYW4gJ0FjdGl2ZVJ1bGVzZXRzJyBkZWJ1ZyBldmVudCB3aGVuIHRoZSBhY3RpdmUgcnVsZXNldHMgYXJlIGNoYW5naW5nXG4gICAqIEBwYXJhbSBydWxlU2V0RXhlY3V0b3JNYXAgbWFwIG9mZiBhbGwgcnVsZXNldHMgZXhlY3V0b3JzXG4gICAqIEBwYXJhbSByZXN0cmljdGl2ZVJ1bGVTZXRzIGlkcyBvZiB0aGUgcnVsZXNldHMgdG8gYWN0aXZhdGU7IGlmIG5vdCBwcm92aWRlZCBhbGwgcmVnaXN0ZXJlZCBydWxlc2V0cyB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgYWN0aXZlUnVsZXNldHNDaGFuZ2UocnVsZVNldEV4ZWN1dG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0RXhlY3V0b3I+LCByZXN0cmljdGl2ZVJ1bGVTZXRzPzogc3RyaW5nW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJ1bGVzZXRzID0gT2JqZWN0LmtleXMocnVsZVNldEV4ZWN1dG9yTWFwKS5tYXAoKHJ1bGVzZXRJZCkgPT4gcnVsZVNldEV4ZWN1dG9yTWFwW3J1bGVzZXRJZF0uZW5naW5lUnVsZXNldCk7XG4gICAgY29uc3QgYWN0aXZlUnVsZXNldHMgPSByZXN0cmljdGl2ZVJ1bGVTZXRzID9cbiAgICAgIE9iamVjdC52YWx1ZXMocnVsZXNldHMpLmZpbHRlcigocnVsZVNldCkgPT4gcmVzdHJpY3RpdmVSdWxlU2V0cy5pbmRleE9mKHJ1bGVTZXQuaWQpID4gLTEpIDpcbiAgICAgIE9iamVjdC52YWx1ZXMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBY3RpdmVSdWxlc2V0cycsXG4gICAgICBydWxlc2V0czogYWN0aXZlUnVsZXNldHMubWFwKGEgPT4gKHtuYW1lOiBydWxlU2V0RXhlY3V0b3JNYXBbYS5pZF0ucnVsZXNldC5uYW1lLCBpZDogcnVsZVNldEV4ZWN1dG9yTWFwW2EuaWRdLnJ1bGVzZXQuaWR9KSlcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gJ0FsbEFjdGlvbnMnIGRlYnVnIGV2ZW50IGVhY2ggdGltZSB0aGUgcnVsZXMgZW5naW5lIG91dHB1dHMgdGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKiBAcGFyYW0gYWN0aW9ucyBsaXN0IG9mIG91dHB1dGVkIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhbGxBY3Rpb25zQ2hhbmdlKGFjdGlvbnM6IEFjdGlvbkJsb2NrW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+ICh7dGltZXN0YW1wLCB0eXBlOiAnQWxsQWN0aW9ucycsIGFjdGlvbnN9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbicgZGVidWcgZXZlbnQgYXQgdGhlIG91cHV0IG9mIGEgc3VjY2Vzc2Z1bCBydWxlc2V0IGV4ZWN1dGlvblxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldElucHV0RmFjdHNcbiAgICogQHBhcmFtIGFsbE91dHB1dEFjdGlvbnNcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwYXJhbSBydWxlc2V0VHJpZ2dlcnNcbiAgICogQHBhcmFtIHJ1bGVzRXhlY3V0aW9uc1xuICAgKiBAcGFyYW0gcmV0cmlldmVGYWN0RnVuY1xuICAgKi9cbiAgcHVibGljIGFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+IHRoaXMucnVsZXNldEV4ZWN1dGlvbih0aW1lc3RhbXAsIHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0SW5wdXRGYWN0cywgYWxsT3V0cHV0QWN0aW9ucywgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyBkZWJ1ZyBldmVudCBhdCB0aGUgb3VwdXQgb2YgYSBmYWlsaW5nIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqIEBwYXJhbSBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gcnVsZXNFeGVjdXRpb25zXG4gICAqIEBwYXJhbSByZXRyaWV2ZUZhY3RGdW5jXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQoXG4gICAgcnVsZXNldDogUnVsZXNldCxcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdXG4gICkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gdGhpcy5ydWxlc2V0RXhlY3V0aW9uRXJyb3IodGltZXN0YW1wLCBydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmFjdCBuYW1lIGFuZCB2YWx1ZSBwYWlyc1xuICAgKiBAcGFyYW0gZmFjdHNOYW1lcyBMaXN0IG9mIGZhY3RzIG5hbWVzIHRvIGdldCB0aGUgdmFsdWUgZm9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmFjdHNTbmFwc2hvdChmYWN0c05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZhY3RzOiB7ZmFjdE5hbWU6IHN0cmluZzsgdmFsdWU6IGFueX1bXSA9IFtdO1xuICAgIGlmICghdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlIGVuZ2luZSBub3QgcGx1Z2dlZCB0byB0aGUgZGVidWdnZXInKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBmYWN0TmFtZSBvZiBmYWN0c05hbWVzKSB7XG4gICAgICBmYWN0cy5wdXNoKHtmYWN0TmFtZSwgdmFsdWU6IGF3YWl0IHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUucmV0cmlldmVGYWN0VmFsdWUoZmFjdE5hbWUpfSk7XG4gICAgfVxuICAgIHJldHVybiBmYWN0cztcbiAgfVxufVxuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmRlYnVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9kZWJ1Zy9lbmdpbmUuZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEdBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQXVCeEIsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsR0FDeEIsTUFBTSxXQUFXLENBQUM7QUFVbkI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWF6Qix5REFBeUQ7SUFDekQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLE9BQStCO1FBbkJuQyx1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBb0I5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxhQUFhLENBQTJDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDL0MsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUN6QyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtZQUNuRCxNQUFNLFVBQVUsR0FBZSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ2pELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLHVCQUF1QixFQUFFLENBQUM7Z0JBQzFGLElBQUksZUFBZSxHQUFHLENB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QUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQW9CO1FBQ2hELE1BQU0sS0FBSyxHQUF1QyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGVzRW5naW5lLFxufSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHtcbiAgQmFzZVJ1bGVzZXRFeGVjdXRpb24sXG4gIERlYnVnRXZlbnQsXG4gIEV2YWx1YXRpb25SZWFzb24sXG4gIFJ1bGVFdmFsdWF0aW9uLFxuICBSdWxlRXZhbHVhdGlvbk91dHB1dCxcbiAgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQsXG4gIFJ1bGVzZXRFeGVjdXRpb25FdmVudCxcbn0gZnJvbSAnLi4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3RzLFxufSBmcm9tICcuLi9mYWN0JztcbmltcG9ydCB7XG4gIFJ1bGVzZXRFeGVjdXRvcixcbn0gZnJvbSAnLi4vcnVsZXNldC1leGVjdXRvcic7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGlvbkJsb2NrLFxuICBSdWxlc2V0LFxufSBmcm9tICcuLi9zdHJ1Y3R1cmUnO1xuaW1wb3J0IHtcbiAgZmxhZ0NhY2hlZFJ1bGVzLFxuICByZXRyaWV2ZVJ1bGVzZXRUcmlnZ2Vycyxcbn0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMge1xuICAvKipcbiAgICogTGltaXQgb2YgZXZlbnRzIHRvIGtlZXAgaW4gdGhlIHN0YWNrIGJlZm9yZSBzdWJzY3JpYmluZyB0byB0aGUgZGVidWdFdmVudHMkIHN0cmVhbS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIG5vIGxpbWl0XG4gICAqL1xuICBldmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bGVzIGVuZ2luZSBkZWJ1Z2dlciBvYmplY3QgdG8gZW1pdCBkZWJ1ZyBldmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEVuZ2luZURlYnVnZ2VyIHtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkUnVsZUVuZ2luZT86IFJ1bGVzRW5naW5lO1xuXG4gIHByaXZhdGUgcmVnaXN0ZXJlZFJ1bGVzZXRzOiBQaWNrPFJ1bGVzZXQsICduYW1lJyB8ICdpZCc+W10gPSBbXTtcblxuICAvLyBLZWVwIGEgc21hbGwgaGlzdG9yeSBpbiBjYXNlIHRoZSBldmVudHMkIHN0cmVhbSBmcm9tIHRoZSBlbmdpbmUgaXMgc3Vic2NyaWJlZCBhZnRlciBydWxlcyBlbmdpbmUgaW5pdGlhbGl6YXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0V2ZW50c1N1YmplY3QkOiBSZXBsYXlTdWJqZWN0PCgpID0+IChQcm9taXNlPERlYnVnRXZlbnQ+IHwgRGVidWdFdmVudCk+O1xuXG4gIHByaXZhdGUgcGVyZm9ybWFuY2VNZWFzdXJlcyQhOiBPYnNlcnZhYmxlPFBlcmZvcm1hbmNlTWVhc3VyZVtdPjtcblxuICAvKiogU3RyZWFtIGVtaXR0aW5nIGEgZGVidWcgZXZlbnQgd2hlbiBpcyBmaXJlZDsgdGltZWxpbmUgaXMga2VwdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVidWdFdmVudHMkOiBPYnNlcnZhYmxlPERlYnVnRXZlbnQ+O1xuXG4gIC8qKiBSZXRyaWV2ZWQgdGhlIHJ1bGVzIGVuZ2luZSBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlciAqL1xuICBwdWJsaWMgZ2V0IHJ1bGVzRW5naW5lKCk6IFJ1bGVzRW5naW5lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZSBhIHJ1bGVzIGVuZ2luZSBkZWJ1Z2dlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgZGVidWdnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbmdpbmVEZWJ1Z2dlck9wdGlvbnMpIHtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDwoKSA9PiAoUHJvbWlzZTxEZWJ1Z0V2ZW50PiB8IERlYnVnRXZlbnQpPihvcHRpb25zPy5ldmVudHNTdGFja0xpbWl0KTtcbiAgICB0aGlzLmluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50cyQgPSB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQpLFxuICAgICAgY29uY2F0TWFwKGFzeW5jIChbZXZlbnRGdW5jLCBwZXJmb3JtYW5jZU1lYXN1cmVzXSkgPT4ge1xuICAgICAgICBjb25zdCBkZWJ1Z0V2ZW50OiBEZWJ1Z0V2ZW50ID0gYXdhaXQgZXZlbnRGdW5jKCk7XG4gICAgICAgIGlmIChkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uJyB8fCBkZWJ1Z0V2ZW50LnR5cGUgPT09ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InKSB7XG4gICAgICAgICAgbGV0IHJ1bGVzZXREdXJhdGlvbiA9IDA7XG4gICAgICAgICAgZGVidWdFdmVudC5ydWxlc0V2YWx1YXRpb25zLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmsgPSBgcnVsZXMtZW5naW5lOiR7XG4gICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmU/LnJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lIHx8ICcnXG4gICAgICAgICAgICB9OiR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX06JHtydWxlLnJ1bGUubmFtZX1gO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZXMgPSBwZXJmb3JtYW5jZU1lYXN1cmVzLmZpbHRlcigobSkgPT4gbS5uYW1lID09PSBtYXJrKTtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbWVhc3VyZXMuYXQoLTEpPy5kdXJhdGlvbiB8fCAwO1xuICAgICAgICAgICAgcnVsZS5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgICAgICAgICAgcnVsZXNldER1cmF0aW9uICs9IGR1cmF0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnRXZlbnQuZHVyYXRpb24gPSBydWxlc2V0RHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlYnVnRXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoZGVidWdFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZGVidWdFdmVudC50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbicpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lPy5sb2dnZXI/LmRlYnVnPy4oYCR7ZGVidWdFdmVudC5ydWxlc2V0TmFtZX0gaGFzIGJlZW4gdHJpZ2dlcmVkIGFuZCByZXN1bHRlZCBpbiAke0pTT04uc3RyaW5naWZ5KGRlYnVnRXZlbnQub3V0cHV0QWN0aW9ucyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQZXJmb3JtYW5jZU9ic2VydmVyKCkge1xuICAgIHRoaXMucGVyZm9ybWFuY2VNZWFzdXJlcyQgPSBuZXcgT2JzZXJ2YWJsZTxQZXJmb3JtYW5jZU1lYXN1cmVbXT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcigobGlzdCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQobGlzdC5nZXRFbnRyaWVzKCkgYXMgUGVyZm9ybWFuY2VNZWFzdXJlW10pO1xuICAgICAgfSk7XG4gICAgICBwZXJmb3JtYW5jZU9ic2VydmVyLm9ic2VydmUoeyBlbnRyeVR5cGVzOiBbJ21lYXN1cmUnXSB9KTtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KS5waXBlKHN0YXJ0V2l0aChbXSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQmFzZUV4ZWN1dGlvbk91dHB1dE9iamVjdChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCBpbnB1dEZhY3RzID0gYXdhaXQgdGhpcy5nZXRGYWN0c1NuYXBzaG90KHJ1bGVzZXRJbnB1dEZhY3RzKTtcblxuICAgIGNvbnN0IGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBCYXNlUnVsZXNldEV4ZWN1dGlvbiA9IHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBleGVjdXRpb25JZDogYCR7cnVsZXNldC5pZH0tJHtleGVjdXRpb25Db3VudGVyfWAsXG4gICAgICBydWxlc2V0SWQ6IHJ1bGVzZXQuaWQsXG4gICAgICBydWxlc2V0TmFtZTogcnVsZXNldC5uYW1lLFxuICAgICAgaW5wdXRGYWN0cyxcbiAgICAgIHRyaWdnZXJzOiBydWxlc2V0VHJpZ2dlcnMsXG4gICAgICBydWxlc0V2YWx1YXRpb25zOiBmbGFnQ2FjaGVkUnVsZXMocnVsZXNFeGVjdXRpb25zPy5zb3J0KChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wKSB8fCBbXSwgcnVsZXNldFRyaWdnZXJzKSxcbiAgICAgIHRlbXBvcmFyeUZhY3RzOiBydW50aW1lRmFjdFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydWxlc2V0RXhlY3V0aW9uKFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHJ1bGVzZXQ6IFJ1bGVzZXQsXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc2V0T3V0cHV0RXhlY3V0aW9uOiBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgPSB7XG4gICAgICB0aW1lc3RhbXAsXG4gICAgICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbicsXG4gICAgICBvdXRwdXRBY3Rpb25zOiBhbGxPdXRwdXRBY3Rpb25zLFxuICAgICAgLi4uYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVzZXRFeGVjdXRpb25FcnJvcihcbiAgICB0aW1lc3RhbXA6IG51bWJlcixcbiAgICBydWxlc2V0OiBSdWxlc2V0LFxuICAgIHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXSxcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBydWxlc2V0VHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PixcbiAgICBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW11cbiAgKSB7XG4gICAgY29uc3QgYmFzZVJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2VFeGVjdXRpb25PdXRwdXRPYmplY3QocnVsZXNldCwgZXhlY3V0aW9uQ291bnRlciwgcnVsZXNldElucHV0RmFjdHMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBydWxlc2V0VHJpZ2dlcnMsIHJ1bGVzRXhlY3V0aW9ucyk7XG5cbiAgICBjb25zdCBydWxlc0V4ZWNXaXRoRXJyb3JzID0gcnVsZXNFeGVjdXRpb25zLmZpbHRlcigoZXgpID0+ICEhZXggJiYgISFleC5lcnJvcik7XG4gICAgY29uc3QgcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA6IFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50ID0ge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZTogJ1J1bGVzZXRFeGVjdXRpb25FcnJvcicsXG4gICAgICBydWxlc0NhdXNpbmdUaGVFcnJvcjogcnVsZXNFeGVjV2l0aEVycm9ycy5tYXAoKGUpID0+IGUucnVsZSkgfHwgW10sXG4gICAgICBlcnJvcnM6IHJ1bGVzRXhlY1dpdGhFcnJvcnMubWFwKChlKSA9PiBlLmVycm9yKSxcbiAgICAgIC4uLmJhc2VSdWxlc2V0T3V0cHV0RXhlY3V0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gcnVsZXNldE91dHB1dEV4ZWN1dGlvblNraXA7XG4gIH1cblxuICAvKipcbiAgICogUGx1ZyB0aGUgZGVidWdnZXIgdG8gYSBSdWxlIEVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNFbmdpbmVcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclJ1bGVFbmdpbmUocnVsZXNFbmdpbmU6IFJ1bGVzRW5naW5lKSB7XG4gICAgdGhpcy5yZWdpc3RlcmVkUnVsZUVuZ2luZSA9IHJ1bGVzRW5naW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBydWxlc2V0IGV4ZWN1dGlvbiBkZWJ1ZyBpbmZvXG4gICAqIEBwYXJhbSBjdXJyUmVzXG4gICAqIEBwYXJhbSBwcmV2UmVzXG4gICAqIEBwYXJhbSBhbGxFeGVjdXRpb25zVmFsaWRcbiAgICogQHBhcmFtIHJ1bGVzZXRJbnB1dEZhY3RzXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKi9cbiAgcHVibGljIGhhbmRsZURlYnVnUnVsZXNldEV4ZWN1dGlvbkluZm8oXG4gICAgY3VyclJlczogUnVsZUV2YWx1YXRpb25PdXRwdXRbXSxcbiAgICBwcmV2UmVzOiBSdWxlRXZhbHVhdGlvbk91dHB1dFtdIHwgdW5kZWZpbmVkLFxuICAgIGFsbEV4ZWN1dGlvbnNWYWxpZDogYm9vbGVhbixcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgICBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldDogUnVsZXNldCkge1xuICAgIGNvbnN0IHJ1bGVzZXRUcmlnZ2VycyA9IHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXMsIHByZXZSZXMpO1xuICAgIGNvbnN0IHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24gPSBjdXJyUmVzLm1hcCgocikgPT4gci5ldmFsdWF0aW9uISk7XG5cbiAgICBpZiAoIWFsbEV4ZWN1dGlvbnNWYWxpZCkge1xuICAgICAgdGhpcy5hZGRSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudChydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNldE91dHB1dEV4ZWN1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0T3V0cHV0RXhlY3V0aW9uLFxuICAgICAgYWxsRXhlY3V0aW9uc1ZhbGlkLFxuICAgICAgcnVsZXNldFRyaWdnZXJzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiAnQXZhaWxhYmxlUnVsZXNldHMnIGRlYnVnIGV2ZW50IHdoZW4gcnVsZXNldHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNldHNcbiAgICovXG4gIHB1YmxpYyBhZGRBdmFpbGFibGVSdWxlc2V0cyhydWxlc2V0czogUnVsZXNldFtdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cyA9IFsuLi50aGlzLnJlZ2lzdGVyZWRSdWxlc2V0cywgLi4ucnVsZXNldHMubWFwKChyKSA9PiAoeyBuYW1lOiByLm5hbWUsIGlkOiByLmlkIH0pKV07XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBdmFpbGFibGVSdWxlc2V0cycsXG4gICAgICBhdmFpbGFibGVSdWxlc2V0czogdGhpcy5yZWdpc3RlcmVkUnVsZXNldHNcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYW5kIGVtaXRzIGFuICdBY3RpdmVSdWxlc2V0cycgZGVidWcgZXZlbnQgd2hlbiB0aGUgYWN0aXZlIHJ1bGVzZXRzIGFyZSBjaGFuZ2luZ1xuICAgKiBAcGFyYW0gcnVsZVNldEV4ZWN1dG9yTWFwIG1hcCBvZmYgYWxsIHJ1bGVzZXRzIGV4ZWN1dG9yc1xuICAgKiBAcGFyYW0gcmVzdHJpY3RpdmVSdWxlU2V0cyBpZHMgb2YgdGhlIHJ1bGVzZXRzIHRvIGFjdGl2YXRlOyBpZiBub3QgcHJvdmlkZWQgYWxsIHJlZ2lzdGVyZWQgcnVsZXNldHMgd2lsbCBiZSBjb25zaWRlcmVkIGFzIGFjdGl2ZVxuICAgKi9cbiAgcHVibGljIGFjdGl2ZVJ1bGVzZXRzQ2hhbmdlKHJ1bGVTZXRFeGVjdXRvck1hcDogUmVjb3JkPHN0cmluZywgUnVsZXNldEV4ZWN1dG9yPiwgcmVzdHJpY3RpdmVSdWxlU2V0cz86IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBydWxlc2V0cyA9IE9iamVjdC5rZXlzKHJ1bGVTZXRFeGVjdXRvck1hcCkubWFwKChydWxlc2V0SWQpID0+IHJ1bGVTZXRFeGVjdXRvck1hcFtydWxlc2V0SWRdLmVuZ2luZVJ1bGVzZXQpO1xuICAgIGNvbnN0IGFjdGl2ZVJ1bGVzZXRzID0gcmVzdHJpY3RpdmVSdWxlU2V0c1xuICAgICAgPyBPYmplY3QudmFsdWVzKHJ1bGVzZXRzKS5maWx0ZXIoKHJ1bGVTZXQpID0+IHJlc3RyaWN0aXZlUnVsZVNldHMuaW5jbHVkZXMocnVsZVNldC5pZCkpXG4gICAgICA6IE9iamVjdC52YWx1ZXMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gKHtcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIHR5cGU6ICdBY3RpdmVSdWxlc2V0cycsXG4gICAgICBydWxlc2V0czogYWN0aXZlUnVsZXNldHMubWFwKChhKSA9PiAoeyBuYW1lOiBydWxlU2V0RXhlY3V0b3JNYXBbYS5pZF0ucnVsZXNldC5uYW1lLCBpZDogcnVsZVNldEV4ZWN1dG9yTWFwW2EuaWRdLnJ1bGVzZXQuaWQgfSkpXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuICdBbGxBY3Rpb25zJyBkZWJ1ZyBldmVudCBlYWNoIHRpbWUgdGhlIHJ1bGVzIGVuZ2luZSBvdXRwdXRzIHRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICogQHBhcmFtIGFjdGlvbnMgbGlzdCBvZiBvdXRwdXRlZCBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYWxsQWN0aW9uc0NoYW5nZShhY3Rpb25zOiBBY3Rpb25CbG9ja1tdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmRlYnVnRXZlbnRzU3ViamVjdCQubmV4dCgoKSA9PiAoeyB0aW1lc3RhbXAsIHR5cGU6ICdBbGxBY3Rpb25zJywgYWN0aW9ucyB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbicgZGVidWcgZXZlbnQgYXQgdGhlIG91cHV0IG9mIGEgc3VjY2Vzc2Z1bCBydWxlc2V0IGV4ZWN1dGlvblxuICAgKiBAcGFyYW0gcnVsZXNldFxuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVsZXNldElucHV0RmFjdHNcbiAgICogQHBhcmFtIGFsbE91dHB1dEFjdGlvbnNcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwYXJhbSBydWxlc2V0VHJpZ2dlcnNcbiAgICogQHBhcmFtIHJ1bGVzRXhlY3V0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudChydWxlc2V0OiBSdWxlc2V0LCBleGVjdXRpb25Db3VudGVyOiBudW1iZXIsXG4gICAgcnVsZXNldElucHV0RmFjdHM6IHN0cmluZ1tdLCBhbGxPdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdLCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICAgIHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+LCBydWxlc0V4ZWN1dGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10pIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuZGVidWdFdmVudHNTdWJqZWN0JC5uZXh0KCgpID0+IHRoaXMucnVsZXNldEV4ZWN1dGlvbih0aW1lc3RhbXAsIHJ1bGVzZXQsIGV4ZWN1dGlvbkNvdW50ZXIsXG4gICAgICBydWxlc2V0SW5wdXRGYWN0cywgYWxsT3V0cHV0QWN0aW9ucywgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJyBkZWJ1ZyBldmVudCBhdCB0aGUgb3VwdXQgb2YgYSBmYWlsaW5nIHJ1bGVzZXQgZXhlY3V0aW9uXG4gICAqIEBwYXJhbSBydWxlc2V0XG4gICAqIEBwYXJhbSBydWxlc2V0SW5wdXRGYWN0c1xuICAgKiBAcGFyYW0gZXhlY3V0aW9uQ291bnRlclxuICAgKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAgICogQHBhcmFtIHJ1bGVzZXRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gcnVsZXNFeGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQoXG4gICAgcnVsZXNldDogUnVsZXNldCxcbiAgICBydWxlc2V0SW5wdXRGYWN0czogc3RyaW5nW10sXG4gICAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyLFxuICAgIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sXG4gICAgcnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4sXG4gICAgcnVsZXNFeGVjdXRpb25zOiBSdWxlRXZhbHVhdGlvbltdXG4gICkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5kZWJ1Z0V2ZW50c1N1YmplY3QkLm5leHQoKCkgPT4gdGhpcy5ydWxlc2V0RXhlY3V0aW9uRXJyb3IodGltZXN0YW1wLCBydWxlc2V0LCBydWxlc2V0SW5wdXRGYWN0cywgZXhlY3V0aW9uQ291bnRlciwgcnVudGltZUZhY3RWYWx1ZXMsIHJ1bGVzZXRUcmlnZ2VycywgcnVsZXNFeGVjdXRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmFjdCBuYW1lIGFuZCB2YWx1ZSBwYWlyc1xuICAgKiBAcGFyYW0gZmFjdHNOYW1lcyBMaXN0IG9mIGZhY3RzIG5hbWVzIHRvIGdldCB0aGUgdmFsdWUgZm9yXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmFjdHNTbmFwc2hvdChmYWN0c05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGZhY3RzOiB7IGZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW107XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyZWRSdWxlRW5naW5lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGUgZW5naW5lIG5vdCBwbHVnZ2VkIHRvIHRoZSBkZWJ1Z2dlcicpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZhY3ROYW1lIG9mIGZhY3RzTmFtZXMpIHtcbiAgICAgIGZhY3RzLnB1c2goeyBmYWN0TmFtZSwgdmFsdWU6IGF3YWl0IHRoaXMucmVnaXN0ZXJlZFJ1bGVFbmdpbmUucmV0cmlldmVGYWN0VmFsdWUoZmFjdE5hbWUpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFjdHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,18 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export function retrieveRulesetTriggers(currRes, prevRes) {
|
|
8
8
|
let rulesetTriggers = {};
|
|
9
|
-
const allCurrRulesetTriggersList = currRes.map(r => r.evaluation).filter((e) => !!e).map(e => e.triggers);
|
|
9
|
+
const allCurrRulesetTriggersList = currRes.map((r) => r.evaluation).filter((e) => !!e).map((e) => e.triggers);
|
|
10
10
|
const allCurrRulesetTriggers = {};
|
|
11
11
|
allCurrRulesetTriggersList.forEach((rTrig) => {
|
|
12
12
|
Object.keys(rTrig).forEach((ruleId) => {
|
|
13
13
|
allCurrRulesetTriggers[ruleId] = rTrig[ruleId];
|
|
14
14
|
});
|
|
15
15
|
});
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const allPrevRulesetTriggersList = prevRes.map(r => r.evaluation).filter((e) => !!e).map(e => e.triggers);
|
|
16
|
+
if (prevRes) {
|
|
17
|
+
const allPrevRulesetTriggersList = prevRes.map((r) => r.evaluation).filter((e) => !!e).map((e) => e.triggers);
|
|
21
18
|
const allPrevRulesetTriggers = {};
|
|
22
19
|
allPrevRulesetTriggersList.forEach((rTrig) => {
|
|
23
20
|
Object.keys(rTrig).forEach((ruleId) => {
|
|
@@ -26,14 +23,17 @@ export function retrieveRulesetTriggers(currRes, prevRes) {
|
|
|
26
23
|
});
|
|
27
24
|
Object.entries(allCurrRulesetTriggers).forEach(([ruleId, ruleTriggers]) => {
|
|
28
25
|
Object.keys(ruleTriggers).forEach((factName) => {
|
|
29
|
-
if (!allPrevRulesetTriggers[ruleId]
|
|
30
|
-
!allPrevRulesetTriggers[ruleId][factName]
|
|
31
|
-
ruleTriggers[factName].newValue !== allPrevRulesetTriggers[ruleId][factName].newValue) {
|
|
26
|
+
if (!allPrevRulesetTriggers[ruleId]
|
|
27
|
+
|| !allPrevRulesetTriggers[ruleId][factName]
|
|
28
|
+
|| ruleTriggers[factName].newValue !== allPrevRulesetTriggers[ruleId][factName].newValue) {
|
|
32
29
|
(rulesetTriggers[ruleId] ||= {})[factName] = ruleTriggers[factName];
|
|
33
30
|
}
|
|
34
31
|
});
|
|
35
32
|
});
|
|
36
33
|
}
|
|
34
|
+
else {
|
|
35
|
+
rulesetTriggers = allCurrRulesetTriggers;
|
|
36
|
+
}
|
|
37
37
|
return rulesetTriggers;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
@@ -45,7 +45,7 @@ export function retrieveRulesetTriggers(currRes, prevRes) {
|
|
|
45
45
|
export function flagCachedRules(rulesEvaluations, triggers) {
|
|
46
46
|
const rulesWhichTriggeredExecution = Object.keys(triggers);
|
|
47
47
|
return rulesEvaluations.map((e) => {
|
|
48
|
-
if (e && rulesWhichTriggeredExecution.
|
|
48
|
+
if (e && !rulesWhichTriggeredExecution.includes(e.rule.id)) {
|
|
49
49
|
return { ...e, cached: true };
|
|
50
50
|
}
|
|
51
51
|
return { ...e };
|
|
@@ -88,4 +88,4 @@ export function handleRuleEvaluationDebug(rule, rulesetName, outputActions, outp
|
|
|
88
88
|
};
|
|
89
89
|
return ruleEvaluation;
|
|
90
90
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZGVidWcvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUErQixFQUFFLE9BQTJDO0lBRWxILElBQUksZUFBZSxHQUFxRCxFQUFFLENBQUM7SUFFM0UsTUFBTSwwQkFBMEIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0gsTUFBTSxzQkFBc0IsR0FBcUQsRUFBRSxDQUFDO0lBRXBGLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixlQUFlLEdBQUcsc0JBQXNCLENBQUM7SUFDM0MsQ0FBQztTQUFNLENBQUM7UUFFTixNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdB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LGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZhbHVhdGlvblJlYXNvbiwgUnVsZUV2YWx1YXRpb24sIFJ1bGVFdmFsdWF0aW9uT3V0cHV0IH0gZnJvbSAnLi4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IEZhY3RzIH0gZnJvbSAnLi4vZmFjdCc7XG5pbXBvcnQgeyBBY3Rpb25CbG9jaywgUnVsZSB9IGZyb20gJy4uL3N0cnVjdHVyZSc7XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcmV0cml2ZSBmcm9tIDIgc2VxdWVudGlhbCBleGVjdXRpb25zIG9ubHkgdGhlIHRyaWdnZXJzIHdoaWNoIGFjdGl2YXRlZCB0aGUgbGFzdCBydWxlc2V0IGV4ZWN1dGlvblxuICogQHBhcmFtIGN1cnJSZXMgQ3VycmVudCBydWxlc2V0IGV4ZWN1dGlvbiBvYmplY3RcbiAqIEBwYXJhbSBwcmV2UmVzIFByZXZpb3VzIHJ1bGVzZXQgZXhlY3V0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIHRyaWdnZXJzIGxpc3Qgd2hpY2ggYWN0aXZhdGVzIHRoZSBsYXN0IHJ1bGVzZXQgZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRyaWV2ZVJ1bGVzZXRUcmlnZ2VycyhjdXJyUmVzOiBSdWxlRXZhbHVhdGlvbk91dHB1dFtdLCBwcmV2UmVzOiBSdWxlRXZhbHVhdGlvbk91dHB1dFtdIHwgdW5kZWZpbmVkKSB7XG5cbiAgbGV0IHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgY29uc3QgYWxsQ3VyclJ1bGVzZXRUcmlnZ2Vyc0xpc3QgPSBjdXJyUmVzLm1hcChyID0+IHIuZXZhbHVhdGlvbikuZmlsdGVyKChlKTogZSBpcyBSdWxlRXZhbHVhdGlvbiA9PiAhIWUpLm1hcChlID0+IGUudHJpZ2dlcnMpO1xuICBjb25zdCBhbGxDdXJyUnVsZXNldFRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4gPSB7fTtcblxuICBhbGxDdXJyUnVsZXNldFRyaWdnZXJzTGlzdC5mb3JFYWNoKChyVHJpZykgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJUcmlnKS5mb3JFYWNoKChydWxlSWQpID0+IHtcbiAgICAgIGFsbEN1cnJSdWxlc2V0VHJpZ2dlcnNbcnVsZUlkXSA9IHJUcmlnW3J1bGVJZF07XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghcHJldlJlcykge1xuICAgIHJ1bGVzZXRUcmlnZ2VycyA9IGFsbEN1cnJSdWxlc2V0VHJpZ2dlcnM7XG4gIH0gZWxzZSB7XG5cbiAgICBjb25zdCBhbGxQcmV2UnVsZXNldFRyaWdnZXJzTGlzdCA9IHByZXZSZXMubWFwKHIgPT4gci5ldmFsdWF0aW9uKS5maWx0ZXIoKGUpOiBlIGlzIFJ1bGVFdmFsdWF0aW9uID0+ICEhZSkubWFwKGUgPT4gZS50cmlnZ2Vycyk7XG4gICAgY29uc3QgYWxsUHJldlJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzTGlzdC5mb3JFYWNoKChyVHJpZykgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoclRyaWcpLmZvckVhY2goKHJ1bGVJZCkgPT4ge1xuICAgICAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF0gPSByVHJpZ1tydWxlSWRdO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QuZW50cmllcyhhbGxDdXJyUnVsZXNldFRyaWdnZXJzKS5mb3JFYWNoKChbcnVsZUlkLCBydWxlVHJpZ2dlcnNdKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhydWxlVHJpZ2dlcnMpLmZvckVhY2goKGZhY3ROYW1lKSA9PiB7XG4gICAgICAgIGlmICghYWxsUHJldlJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdIHx8XG4gICAgICAgICAgIWFsbFByZXZSdWxlc2V0VHJpZ2dlcnNbcnVsZUlkXVtmYWN0TmFtZV0gfHxcbiAgICAgICAgICBydWxlVHJpZ2dlcnNbZmFjdE5hbWVdLm5ld1ZhbHVlICE9PSBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF1bZmFjdE5hbWVdLm5ld1ZhbHVlKSB7XG4gICAgICAgICAgKHJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdIHx8PSB7fSlbZmFjdE5hbWVdID0gcnVsZVRyaWdnZXJzW2ZhY3ROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgfVxuICByZXR1cm4gcnVsZXNldFRyaWdnZXJzO1xufVxuXG4vKipcbiAqIEZsYWcgYXMgY2FjaGVkIHRoZSBydWxlcyBldmFsdWF0aW9ucyB3aGljaCBhcmUgZnJvbSBwcmV2aW91cyBydWxlc2V0IGV4ZWN1dGlvbnNcbiAqIEBwYXJhbSBydWxlc0V2YWx1YXRpb25zIGFsbCBydWxlcyBldmFsdWF0aW9ucyBsaXN0XG4gKiBAcGFyYW0gdHJpZ2dlcnMgUnVsZXNldCB0cmlnZ2VycyBvYmplY3RcbiAqIEByZXR1cm5zIFJ1bGVzIGV2YWx1YXRpb24gbGlzdCB3aXRoIGZsYWdnZWQgcnVsZXMgZXZhbHVhdGlvbiBmcm9tIHByZXZpb3VzIHJ1bGVzZXQgZXhlY3V0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhZ0NhY2hlZFJ1bGVzKHJ1bGVzRXZhbHVhdGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10sIHRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4pOiAoUnVsZUV2YWx1YXRpb24gJiB7Y2FjaGVkPzogYm9vbGVhbn0pW10ge1xuICBjb25zdCBydWxlc1doaWNoVHJpZ2dlcmVkRXhlY3V0aW9uID0gT2JqZWN0LmtleXModHJpZ2dlcnMpO1xuXG4gIHJldHVybiBydWxlc0V2YWx1YXRpb25zLm1hcCgoZSkgPT4ge1xuICAgIGlmIChlICYmIHJ1bGVzV2hpY2hUcmlnZ2VyZWRFeGVjdXRpb24uaW5kZXhPZihlLnJ1bGUuaWQpID09PSAtMSkge1xuICAgICAgcmV0dXJuIHsuLi5lLCBjYWNoZWQ6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gey4uLmV9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGRlYnVnIHJ1bGUgZXZhbHVhdGlvbiBvYmplY3RcbiAqIEBwYXJhbSBydWxlXG4gKiBAcGFyYW0gcnVsZXNldE5hbWVcbiAqIEBwYXJhbSBvdXRwdXRBY3Rpb25zXG4gKiBAcGFyYW0gb3V0cHV0RXJyb3JcbiAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICogQHBhcmFtIGZhY3RWYWx1ZXNcbiAqIEBwYXJhbSBvbGRGYWN0VmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVSdWxlRXZhbHVhdGlvbkRlYnVnKFxuICBydWxlOiBSdWxlLFxuICBydWxlc2V0TmFtZTogc3RyaW5nLFxuICBvdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdIHwgdW5kZWZpbmVkLFxuICBvdXRwdXRFcnJvcjogYW55LFxuICBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+LFxuICBmYWN0VmFsdWVzOiBhbnlbXSB8IHVuZGVmaW5lZCxcbiAgb2xkRmFjdFZhbHVlczogYW55W10gfCB1bmRlZmluZWQpIHtcblxuICBjb25zdCBleGVjdXRpb25JZCA9IGAke3J1bGVzZXROYW1lfSAtICR7cnVsZS5uYW1lfWA7XG5cbiAgY29uc3QgcmVhc29uczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmYWN0VmFsdWVzIS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpZiAoIW9sZEZhY3RWYWx1ZXMpIHtcbiAgICAgIChyZWFzb25zW3J1bGUuaWRdIHx8PSB7fSlbcnVsZS5pbnB1dEZhY3RzW2luZGV4XV0gPSB7IGZhY3ROYW1lOiBydWxlLmlucHV0RmFjdHNbaW5kZXhdLCBuZXdWYWx1ZTogZmFjdFZhbHVlcyFbaW5kZXhdIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKG9sZEZhY3RWYWx1ZXNbaW5kZXhdPy50b1N0cmluZygpICE9PSBmYWN0VmFsdWVzIVtpbmRleF0/LnRvU3RyaW5nKCkpIHtcbiAgICAgIChyZWFzb25zW3J1bGUuaWRdIHx8PSB7fSlbcnVsZS5pbnB1dEZhY3RzW2luZGV4XV0gPSB7IGZhY3ROYW1lOiBydWxlLmlucHV0RmFjdHNbaW5kZXhdLCBvbGRWYWx1ZTogb2xkRmFjdFZhbHVlc1tpbmRleF0sIG5ld1ZhbHVlOiBmYWN0VmFsdWVzIVtpbmRleF0gfTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBydWxlRXZhbHVhdGlvbjogUnVsZUV2YWx1YXRpb24gPSB7XG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIG91dHB1dEFjdGlvbnMsXG4gICAgaWQ6IGV4ZWN1dGlvbklkLFxuICAgIHRyaWdnZXJzOiByZWFzb25zLFxuICAgIHRlbXBvcmFyeUZhY3RzOiBydWxlLm91dHB1dFJ1bnRpbWVGYWN0cy5jb25jYXQocnVsZS5pbnB1dFJ1bnRpbWVGYWN0cykucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZhY3RzPj4oKGFjYywgcnVudGltZUZhY3ROYW1lKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0VmFsdWVzW3J1bnRpbWVGYWN0TmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjY1tydW50aW1lRmFjdE5hbWVdID0gcnVudGltZUZhY3RWYWx1ZXNbcnVudGltZUZhY3ROYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge31cbiAgICApLFxuICAgIHJ1bGU6IHsgaWQ6IHJ1bGUuaWQsIG5hbWU6IHJ1bGUubmFtZSB9LFxuICAgIC4uLihvdXRwdXRFcnJvciA/IHsgZXJyb3I6IG91dHB1dEVycm9yIH0gOiB7fSlcbiAgfTtcbiAgcmV0dXJuIHJ1bGVFdmFsdWF0aW9uO1xufVxuIl19
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZGVidWcvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxPQUErQixFQUFFLE9BQTJDO0lBQ2xILElBQUksZUFBZSxHQUFxRCxFQUFFLENBQUM7SUFFM0UsTUFBTSwwQkFBMEIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25JLE1BQU0sc0JBQXNCLEdBQXFELEVBQUUsQ0FBQztJQUVwRiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMs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LE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFdmFsdWF0aW9uUmVhc29uLFxuICBSdWxlRXZhbHVhdGlvbixcbiAgUnVsZUV2YWx1YXRpb25PdXRwdXQsXG59IGZyb20gJy4uL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUge1xuICBGYWN0cyxcbn0gZnJvbSAnLi4vZmFjdCc7XG5pbXBvcnQge1xuICBBY3Rpb25CbG9jayxcbiAgUnVsZSxcbn0gZnJvbSAnLi4vc3RydWN0dXJlJztcblxuLyoqXG4gKiBGdW5jdGlvbiB0byByZXRyaXZlIGZyb20gMiBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMgb25seSB0aGUgdHJpZ2dlcnMgd2hpY2ggYWN0aXZhdGVkIHRoZSBsYXN0IHJ1bGVzZXQgZXhlY3V0aW9uXG4gKiBAcGFyYW0gY3VyclJlcyBDdXJyZW50IHJ1bGVzZXQgZXhlY3V0aW9uIG9iamVjdFxuICogQHBhcmFtIHByZXZSZXMgUHJldmlvdXMgcnVsZXNldCBleGVjdXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgdHJpZ2dlcnMgbGlzdCB3aGljaCBhY3RpdmF0ZXMgdGhlIGxhc3QgcnVsZXNldCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlUnVsZXNldFRyaWdnZXJzKGN1cnJSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10sIHByZXZSZXM6IFJ1bGVFdmFsdWF0aW9uT3V0cHV0W10gfCB1bmRlZmluZWQpIHtcbiAgbGV0IHJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgY29uc3QgYWxsQ3VyclJ1bGVzZXRUcmlnZ2Vyc0xpc3QgPSBjdXJyUmVzLm1hcCgocikgPT4gci5ldmFsdWF0aW9uKS5maWx0ZXIoKGUpOiBlIGlzIFJ1bGVFdmFsdWF0aW9uID0+ICEhZSkubWFwKChlKSA9PiBlLnRyaWdnZXJzKTtcbiAgY29uc3QgYWxsQ3VyclJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgYWxsQ3VyclJ1bGVzZXRUcmlnZ2Vyc0xpc3QuZm9yRWFjaCgoclRyaWcpID0+IHtcbiAgICBPYmplY3Qua2V5cyhyVHJpZykuZm9yRWFjaCgocnVsZUlkKSA9PiB7XG4gICAgICBhbGxDdXJyUnVsZXNldFRyaWdnZXJzW3J1bGVJZF0gPSByVHJpZ1tydWxlSWRdO1xuICAgIH0pO1xuICB9KTtcblxuICBpZiAocHJldlJlcykge1xuICAgIGNvbnN0IGFsbFByZXZSdWxlc2V0VHJpZ2dlcnNMaXN0ID0gcHJldlJlcy5tYXAoKHIpID0+IHIuZXZhbHVhdGlvbikuZmlsdGVyKChlKTogZSBpcyBSdWxlRXZhbHVhdGlvbiA9PiAhIWUpLm1hcCgoZSkgPT4gZS50cmlnZ2Vycyk7XG4gICAgY29uc3QgYWxsUHJldlJ1bGVzZXRUcmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+ID0ge307XG5cbiAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzTGlzdC5mb3JFYWNoKChyVHJpZykgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoclRyaWcpLmZvckVhY2goKHJ1bGVJZCkgPT4ge1xuICAgICAgICBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF0gPSByVHJpZ1tydWxlSWRdO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBPYmplY3QuZW50cmllcyhhbGxDdXJyUnVsZXNldFRyaWdnZXJzKS5mb3JFYWNoKChbcnVsZUlkLCBydWxlVHJpZ2dlcnNdKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhydWxlVHJpZ2dlcnMpLmZvckVhY2goKGZhY3ROYW1lKSA9PiB7XG4gICAgICAgIGlmICghYWxsUHJldlJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdXG4gICAgICAgICAgfHwgIWFsbFByZXZSdWxlc2V0VHJpZ2dlcnNbcnVsZUlkXVtmYWN0TmFtZV1cbiAgICAgICAgICB8fCBydWxlVHJpZ2dlcnNbZmFjdE5hbWVdLm5ld1ZhbHVlICE9PSBhbGxQcmV2UnVsZXNldFRyaWdnZXJzW3J1bGVJZF1bZmFjdE5hbWVdLm5ld1ZhbHVlKSB7XG4gICAgICAgICAgKHJ1bGVzZXRUcmlnZ2Vyc1tydWxlSWRdIHx8PSB7fSlbZmFjdE5hbWVdID0gcnVsZVRyaWdnZXJzW2ZhY3ROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcnVsZXNldFRyaWdnZXJzID0gYWxsQ3VyclJ1bGVzZXRUcmlnZ2VycztcbiAgfVxuICByZXR1cm4gcnVsZXNldFRyaWdnZXJzO1xufVxuXG4vKipcbiAqIEZsYWcgYXMgY2FjaGVkIHRoZSBydWxlcyBldmFsdWF0aW9ucyB3aGljaCBhcmUgZnJvbSBwcmV2aW91cyBydWxlc2V0IGV4ZWN1dGlvbnNcbiAqIEBwYXJhbSBydWxlc0V2YWx1YXRpb25zIGFsbCBydWxlcyBldmFsdWF0aW9ucyBsaXN0XG4gKiBAcGFyYW0gdHJpZ2dlcnMgUnVsZXNldCB0cmlnZ2VycyBvYmplY3RcbiAqIEByZXR1cm5zIFJ1bGVzIGV2YWx1YXRpb24gbGlzdCB3aXRoIGZsYWdnZWQgcnVsZXMgZXZhbHVhdGlvbiBmcm9tIHByZXZpb3VzIHJ1bGVzZXQgZXhlY3V0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhZ0NhY2hlZFJ1bGVzKHJ1bGVzRXZhbHVhdGlvbnM6IFJ1bGVFdmFsdWF0aW9uW10sIHRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4pOiAoUnVsZUV2YWx1YXRpb24gJiB7IGNhY2hlZD86IGJvb2xlYW4gfSlbXSB7XG4gIGNvbnN0IHJ1bGVzV2hpY2hUcmlnZ2VyZWRFeGVjdXRpb24gPSBPYmplY3Qua2V5cyh0cmlnZ2Vycyk7XG5cbiAgcmV0dXJuIHJ1bGVzRXZhbHVhdGlvbnMubWFwKChlKSA9PiB7XG4gICAgaWYgKGUgJiYgIXJ1bGVzV2hpY2hUcmlnZ2VyZWRFeGVjdXRpb24uaW5jbHVkZXMoZS5ydWxlLmlkKSkge1xuICAgICAgcmV0dXJuIHsgLi4uZSwgY2FjaGVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiB7IC4uLmUgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBkZWJ1ZyBydWxlIGV2YWx1YXRpb24gb2JqZWN0XG4gKiBAcGFyYW0gcnVsZVxuICogQHBhcmFtIHJ1bGVzZXROYW1lXG4gKiBAcGFyYW0gb3V0cHV0QWN0aW9uc1xuICogQHBhcmFtIG91dHB1dEVycm9yXG4gKiBAcGFyYW0gcnVudGltZUZhY3RWYWx1ZXNcbiAqIEBwYXJhbSBmYWN0VmFsdWVzXG4gKiBAcGFyYW0gb2xkRmFjdFZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUnVsZUV2YWx1YXRpb25EZWJ1ZyhcbiAgcnVsZTogUnVsZSxcbiAgcnVsZXNldE5hbWU6IHN0cmluZyxcbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXSB8IHVuZGVmaW5lZCxcbiAgb3V0cHV0RXJyb3I6IGFueSxcbiAgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPixcbiAgZmFjdFZhbHVlczogYW55W10gfCB1bmRlZmluZWQsXG4gIG9sZEZhY3RWYWx1ZXM6IGFueVtdIHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gYCR7cnVsZXNldE5hbWV9IC0gJHtydWxlLm5hbWV9YDtcblxuICBjb25zdCByZWFzb25zOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj4gPSB7fTtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZhY3RWYWx1ZXMhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICghb2xkRmFjdFZhbHVlcykge1xuICAgICAgKHJlYXNvbnNbcnVsZS5pZF0gfHw9IHt9KVtydWxlLmlucHV0RmFjdHNbaW5kZXhdXSA9IHsgZmFjdE5hbWU6IHJ1bGUuaW5wdXRGYWN0c1tpbmRleF0sIG5ld1ZhbHVlOiBmYWN0VmFsdWVzIVtpbmRleF0gfTtcbiAgICB9IGVsc2UgaWYgKG9sZEZhY3RWYWx1ZXNbaW5kZXhdPy50b1N0cmluZygpICE9PSBmYWN0VmFsdWVzIVtpbmRleF0/LnRvU3RyaW5nKCkpIHtcbiAgICAgIChyZWFzb25zW3J1bGUuaWRdIHx8PSB7fSlbcnVsZS5pbnB1dEZhY3RzW2luZGV4XV0gPSB7IGZhY3ROYW1lOiBydWxlLmlucHV0RmFjdHNbaW5kZXhdLCBvbGRWYWx1ZTogb2xkRmFjdFZhbHVlc1tpbmRleF0sIG5ld1ZhbHVlOiBmYWN0VmFsdWVzIVtpbmRleF0gfTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBydWxlRXZhbHVhdGlvbjogUnVsZUV2YWx1YXRpb24gPSB7XG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIG91dHB1dEFjdGlvbnMsXG4gICAgaWQ6IGV4ZWN1dGlvbklkLFxuICAgIHRyaWdnZXJzOiByZWFzb25zLFxuICAgIHRlbXBvcmFyeUZhY3RzOiBydWxlLm91dHB1dFJ1bnRpbWVGYWN0cy5jb25jYXQocnVsZS5pbnB1dFJ1bnRpbWVGYWN0cykucmVkdWNlPFJlY29yZDxzdHJpbmcsIEZhY3RzPj4oKGFjYywgcnVudGltZUZhY3ROYW1lKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHJ1bnRpbWVGYWN0VmFsdWVzW3J1bnRpbWVGYWN0TmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjY1tydW50aW1lRmFjdE5hbWVdID0gcnVudGltZUZhY3RWYWx1ZXNbcnVudGltZUZhY3ROYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge31cbiAgICApLFxuICAgIHJ1bGU6IHsgaWQ6IHJ1bGUuaWQsIG5hbWU6IHJ1bGUubmFtZSB9LFxuICAgIC4uLihvdXRwdXRFcnJvciA/IHsgZXJyb3I6IG91dHB1dEVycm9yIH0gOiB7fSlcbiAgfTtcbiAgcmV0dXJuIHJ1bGVFdmFsdWF0aW9uO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJdGVtSWRlbnRpZmllciwgTG9nZ2VyIH0gZnJvbSAnQG8zci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBFbmdpbmVEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcvZW5naW5lLmRlYnVnJztcbmltcG9ydCB0eXBlIHsgRmFjdCwgRmFjdHMgfSBmcm9tICcuL2ZhY3QnO1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRvciB9IGZyb20gJy4vb3BlcmF0b3InO1xuaW1wb3J0IHsgQWN0aW9uQmxvY2ssIFJ1bGUsIFJ1bGVzZXQgfSBmcm9tICcuL3N0cnVjdHVyZSc7XG5cbi8qKiBQZXJmb3JtYW5jZSBvYmplY3Qgc3VwcG9ydGluZyBOb2RlSnMgUGVyZm9ybWFuY2UgYW5kIFdlYiBQZXJmb3JtYW5jZSByZXBvcnRpbmcgICovXG5leHBvcnQgdHlwZSBDcm9zc1BsYXRmb3JtUGVyZm9ybWFuY2UgPSB7XG4gIC8qKiBAc2VlIFBlcmZvcm1hbmNlLm1hcmsgKi9cbiAgbWFyazogKC4uLng6IFBhcmFtZXRlcnM8UGVyZm9ybWFuY2VbJ21hcmsnXT4pID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21hcmsnXT4gfCB2b2lkO1xuICAvKiogQHNlZSBQZXJmb3JtYW5jZS5tZWFzdXJlICovXG4gIG1lYXN1cmU6IChtZWFzdXJlTmFtZTogc3RyaW5nLCBzdGFydE9yTWVhc3VyZU9wdGlvbnM/OiBzdHJpbmcsIGVuZE1hcms/OiBzdHJpbmcpID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21lYXN1cmUnXT4gfCB2b2lkO1xufTtcblxuLyoqIEZhY3Qgc3RyZWFtIG9iamVjdCB0byBoYW5kbGUgZmFjdCByZWZlcmVuY2UgY2hhbmdlICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RPYmplY3Q8VD4ge1xuICAvKiogU3ViamVjdCBvZiBmYWN0IHN0cmVhbSAqL1xuICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxUPiB8IHVuZGVmaW5lZD47XG4gIC8qKiBTdHJlYW0gb2YgdGhlIGZhY3QgdmFsdWUgKi9cbiAgdmFsdWUkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xufVxuXG4vKiogUnVsZSBFbmdpbmUgY29uc3RydWN0b3Igb3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlc0VuZ2luZU9wdGlvbnMge1xuICAvKiogTGlzdCBvZiBmYWN0cyAqL1xuICBmYWN0cz86IEZhY3Q8RmFjdHM+W107XG5cbiAgLyoqIExpc3Qgb2YgcnVsZXMgKi9cbiAgcnVsZXM/OiBSdWxlc2V0W107XG5cbiAgLyoqIExpc3Qgb2YgY3VzdG9tIG9wZXJhdG9ycyAqL1xuICBvcGVyYXRvcnM/OiBPcGVyYXRvcjxhbnksIGFueT5bXTtcblxuICAvKiogRGVsYXkgYmVmb3JlIGZhY3Qgc3RyZWFtIGRlZmF1bHRpbmcgdmFsdWUgKi9cbiAgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2tpcCB0aGUgcnVsZSBhbmQgZmFjdCBjaXJjdWxhciBkZXBlbmRlbmN5IGNoZWNrc1xuICAgKiBUdXJuIHRvIHRydWUgdG8gaW5jcmVhc2UgdGhlIHNwZWVkIG9mIHRoZSB1cHNlcnRpb24gb2YgYSBydWxlXG4gICAqL1xuICBza2lwQ2lyY3VsYXJEZXBlbmRlbmN5Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvdmlkZSBkZWJ1Z2dlciBpbnN0YW5jZSB0byB0aGUgcnVsZXMgZW5naW5lXG4gICAqL1xuICBkZWJ1Z2dlcj86IEVuZ2luZURlYnVnZ2VyO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBvZiB0aGUgcGVyZm9ybWFuY2UgcmVwb3J0ZXIgdG8gdXNlIGZvciBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuXG4gICAqIEBkZWZhdWx0IHdpbmRvdy5wZXJmb3JtYW5jZSBvbiBicm93c2VyIG9ubHksIHVuZGVmaW5lZCBvbiBub2RlXG4gICAqL1xuICBwZXJmb3JtYW5jZT86IENyb3NzUGxhdGZvcm1QZXJmb3JtYW5jZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcnVsZXMgZW5naW5lIGluc3RhbmNlXG4gICAqIEBkZWZhdWx0IFJ1bGVzRW5naW5lXG4gICAqL1xuICBydWxlc0VuZ2luZUluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xpZW50IHRvIGxvZyB0aGUgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZVxuICAgKi9cbiAgbG9nZ2VyPzogTG9nZ2VyO1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlIGV4dGVuZHMgUnVsZSB7XG4gIC8qKiBzdHJlYW0gb2YgdGhlIHJ1bGUgY29uZGl0aW9ucyByZXN1bHQgKi9cbiAgcmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkJsb2NrW10+O1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlc2V0IHtcbiAgLyoqIE9wdGlvbmFsIGRhdGUgcmFuZ2Ugd2hlcmUgdGhlIHJ1bGVzZXQgd2lsbCBiZSBleGVjdXRlZCwgaXQgc3VwcG9ydHMgYSBkYXRlU3RyaW5nIG9yIGEgdGltZXN0YW1wIGFzIG51bWJlciwgbW9yZSBpbmZvIG9uIGphdmFzY3JpcHQgRGF0ZSgpIGRvY3VtZW50YXRpb24gKi9cbiAgdmFsaWRpdHlSYW5nZT86IHsgZnJvbT86IHN0cmluZyB8IG51bWJlcjsgdG8/OiBzdHJpbmcgfCBudW1iZXIgfTtcbiAgLyoqXG4gICAqIENvbXBvbmVudHMgbGlua2VkIHRvIHRoZSBydWxlc2V0LiBJZiBwcmVzZW50IHRoZSBydWxlc2V0IHdpbGwgbm90IGJlIGFjdGl2ZSBieSBkZWZhdWx0LlxuICAgKiAnb3InIGNvbmRpdGlvbjogSWYgYXQgbGVhc3Qgb25lIGNvbXBvbmVudCBoYXMgc3Vic2NyaWJlZCwgdGhlIHJ1bGVzZXQgd2lsbCBiZWNvbWUgYWN0aXZlLlxuICAgKiBJZiBwcmVzZW50LCB0aGUge0BsaW5rIGxpbmtlZENvbXBvbmVudH0gcHJvcGVydHkgd2lsbCBub3QgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnRzPzoge29yOiBJdGVtSWRlbnRpZmllcltdfTtcbiAgLyoqXG4gICAqIENvbXBvbmVudCBsaW5rZWQgdG8gdGhlIHJ1bGVzZXQsIGlmIHNldCBpdCB3aWxsIGRpc2FibGUgdGhlIHJ1bGVzZXQgZXhlY3V0aW9uIHBlciBkZWZhdWx0LCB3YWl0aW5nIHRvIGEgc3Vic2NyaXB0aW9uXG4gICAqIEBkZXByZWNhdGVkIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTIsIHVzZSB7QGxpbmsgbGlua2VkQ29tcG9uZW50c30gaW5zdGVhZFxuICAgKi9cbiAgbGlua2VkQ29tcG9uZW50PzogSXRlbUlkZW50aWZpZXI7XG4gIC8qKiBVbmlxdWUgaWQgb2YgdGhlIHJ1bGVzZXQqL1xuICBpZDogc3RyaW5nO1xuICAvKiogU3RvcmVzIHRoZSByZXN1bHQgb2YgZWFjaCBydWxlcyBmcm9tIHRoZSBydWxlc2V0ICovXG4gIHJ1bGVzUmVzdWx0c1N1YmplY3QkOiBPYnNlcnZhYmxlPEFjdGlvbkJsb2NrW10+O1xufVxuLyoqIFRpbWVzdGFtcCBvZiBhIHJ1bGVzIGVuZ2luZSBvdXRwdXQgZXZlbnQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltZWRFdmVudCB7XG4gIC8qKiBUaW1lc3RhbXAgdmFsdWUgd2hlbiB0aGUgZXZlbnQgb2NjdXJzICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogRHVyYXRpb24gb2YgdGhlIGV4ZWN1dGlvbiAqL1xuICBkdXJhdGlvbj86IG51bWJlcjtcbn1cblxuLyoqIEZhY3QgY2hhbmdlIHRyaWdnZXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgYSBydWxlL2V4ZWN1dGlvbiBvZiBhIHJ1bGVzZXQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGlvblJlYXNvbiB7XG4gIC8qKiBOYW1lIG9mIHRoZSBmYWN0IHRoYXQgY2hhbmdlZCAqL1xuICBmYWN0TmFtZTogc3RyaW5nO1xuICAvKiogTmV3IHZhbHVlIG9mIHRoZSBmYWN0ICovXG4gIG5ld1ZhbHVlPzogRmFjdHM7XG4gIC8qKiBPbGQgdmFsdWUgb2YgdGhlIGZhY3QgKi9cbiAgb2xkVmFsdWU/OiBGYWN0cztcbn1cblxuLyoqIFJlc3VsdCBvYmplY3QgcmVzdWx0ZWQgYXQgdGhlIGVuZCBvZiBhIHJ1bGUgZXZhbHVhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlRXZhbHVhdGlvbiBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogSWRlbnRpZmllciBvZiB0aGUgZXZhbHVhdGlvbiAocnVsZXNldCBuYW1lICsgcnVsZSBuYW1lKSAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogRXZhbHVhdGVkIHJ1bGUgaWRlbnRpZmllciAqL1xuICBydWxlOiBQaWNrPFJ1bGUsICdpZCcgfCAnbmFtZSc+O1xuICAvKiogQWN0aW9ucyBvdXRwdXRlZCBieSB0aGUgcnVsZSBldmFsdWF0aW9uICovXG4gIG91dHB1dEFjdGlvbnM6IEFjdGlvbkJsb2NrW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBNYXAgY29udGFpbmluZyB0aGUgZmFjdHMgY2hhbmdlcyB0cmlnZ2VyaW5nIHRoZSBydWxlIGV2YWx1YXRpb24gKi9cbiAgdHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PjtcbiAgLyoqIEVycm9yIG9iamVjdCBpbiBjYXNlIG9mIHJ1bGUgZXZhbHVhdGlvbiBmYWlsdXJlICovXG4gIGVycm9yPzogYW55O1xuICAvKiogUnVudGltZSBmYWN0cyB3aXRoIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHJ1bGUgZXZhbHVhdGlvbiAgKi9cbiAgdGVtcG9yYXJ5RmFjdHM/OiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz47XG4gIC8qKiBGbGFnIHRvIG5vdGlmeSBpZiB0aGUgcnVsZXMgZXZhbHVhdGlvbiBjb21lcyBmcm9tIGFuIG9sZCBydWxlc2V0IGV4ZWN1dGlvbiAqL1xuICBjYWNoZWQ/OiBib29sZWFuO1xufVxuXG4vKiogV3JhcHBlZCBydWxlIGV2YWx1YXRpb24gb3V0cHV0ICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVFdmFsdWF0aW9uT3V0cHV0IHtcbiAgLyoqIEFjdGlvbnMgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHJ1bGUgZXZhbHVhdGlvbiAqL1xuICBhY3Rpb25zOiBBY3Rpb25CbG9ja1tdIHwgdW5kZWZpbmVkO1xuICAvKiogUnVsZSBldmFsdWF0aW9uIG91dHB1dCBvYmplY3QgKi9cbiAgZXZhbHVhdGlvbj86IFJ1bGVFdmFsdWF0aW9uO1xuICAvKiogRXJyb3Igb2JqZWN0IGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiBydWxlIGV2YWx1YXRpb24sIGlmIGFueSAqL1xuICBlcnJvcj86IGFueTtcbn1cblxuLyoqIEJhc2Ugb2JlamVjdCByZXN1bHRlZCBhdCB0aGUgZW5kIG9mIGEgcnVsZXNldCBleGVjdXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVJ1bGVzZXRFeGVjdXRpb24ge1xuICAvKiogSWQgb2YgdGhlIHJ1bGVzZXQgZXhlY3V0aW9uICovXG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIC8qKiBJZCBvZiB0aGUgcnVsZXNldCB3aGljaCB3YXMgZXhlY3V0ZWQgKi9cbiAgcnVsZXNldElkOiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSBleGVjdXRlZCBydWxlc2V0ICovXG4gIHJ1bGVzZXROYW1lOiBzdHJpbmc7XG4gIC8qKiBDb3VudGVyIG9mIGV4ZWN1dGlvbnMgZm9yIHRoZSBydWxlc2V0ICovXG4gIGV4ZWN1dGlvbkNvdW50ZXI6IG51bWJlcjtcbiAgLyoqIEFsbCBpbnB1dCBmYWN0cyBhZmZlY3RpbmcgdGhlIHJ1bGVzZXQgKi9cbiAgaW5wdXRGYWN0czoge2ZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBGYWN0c31bXTtcbiAgLyoqIFJ1bnRpbWUgZmFjdHMgdXNlZCBhY2Nyb3MgdGhlIHJ1bGVzZXQgKi9cbiAgdGVtcG9yYXJ5RmFjdHM/OiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz47XG4gIC8qKiBGYWN0cyBjaGFuZ2VzIHRoYXQgdHJpZ2dlcmVkIHRoZSBleGVjdXRpb24gb2YgdGhlIHJ1bGVzZXQgKi9cbiAgdHJpZ2dlcnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PjtcbiAgLyoqIExpc3Qgb2YgZXZhbHVhdGVkIHJ1bGVzIGFjY3JvcyBydWxlc2V0IGV4ZWN1dGlvbiAqL1xuICBydWxlc0V2YWx1YXRpb25zOiBSdWxlRXZhbHVhdGlvbltdO1xufVxuXG4vKiogRGVidWcgZXZlbnQgZW1pdHRlZCBpbiBjYXNlIG9mIHN1Y2Nlc3NmdWwgcnVsZXNldCBleGVjdXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXNldEV4ZWN1dGlvbkV2ZW50IGV4dGVuZHMgQmFzZVJ1bGVzZXRFeGVjdXRpb24sIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbic7XG4gIC8qKiBMaXN0IG9mIHRoZSBhY3Rpb25zIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiBydWxlc2V0IGV4ZWN1dGlvbiAqL1xuICBvdXRwdXRBY3Rpb25zOiBBY3Rpb25CbG9ja1tdO1xufVxuXG4vKiogRGVidWcgZXZlbnQgZW1pdHRlZCBpbiBjYXNlIG9mIHJ1bGVzZXQgZXhlY3V0aW9uIGZhaWx1cmUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQgZXh0ZW5kcyBCYXNlUnVsZXNldEV4ZWN1dGlvbiwgVGltZWRFdmVudCB7XG4gIC8qKiBFdmVudCB0eXBlICovXG4gIHR5cGU6ICdSdWxlc2V0RXhlY3V0aW9uRXJyb3InO1xuICAvKiogTGlzdCBvZiBydWxlcyBjYXVzaW5nIHRoZSBleGVjdXRpb24gZXJyb3IqL1xuICBydWxlc0NhdXNpbmdUaGVFcnJvcjogUGljazxSdWxlLCAnbmFtZScgfCAnaWQnPltdO1xuICAvKiogTGlzdCBvZiBvdXRwdXR0ZWQgZXJyb3JzICovXG4gIGVycm9yczogYW55W107XG59XG5cbi8qKiBEZWJ1ZyBldmVudCBlbWl0dGVkIHdoZW4gYWN0aXZlIHJ1bGVzZXRzIGFyZSBjaGFuZ2luZyAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVSdWxlc2V0c0V2ZW50IGV4dGVuZHMgVGltZWRFdmVudCB7XG4gIC8qKiBFdmVudCB0eXBlICovXG4gIHR5cGU6ICdBY3RpdmVSdWxlc2V0cyc7XG4gIC8qKiBMaXN0IG9mIGFjdGl2ZSBydWxlc2V0cyAqL1xuICBydWxlc2V0czogUGljazxSdWxlc2V0LCAnbmFtZScgfCAnaWQnPltdO1xufVxuXG4vKiogRGVidWcgZXZlbnQgZW1pdHRlZCBlYWNoIHRpbWUgdGhlIFJ1bGVzIEVuZ2luZSBvdXRwdXRzIGEgbGlzdCBvZiBhY3Rpb25zICovXG5leHBvcnQgaW50ZXJmYWNlIEFsbEFjdGlvbnNFdmVudCBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogZXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnQWxsQWN0aW9ucyc7XG4gIC8qKiBMaXN0IG9mIGVtaXR0ZWQgYWN0aW9ucyAqL1xuICBhY3Rpb25zOiBBY3Rpb25CbG9ja1tdO1xufVxuXG4vKiogIERlYnVnIGV2ZW50IGVtaXR0ZWQgd2hlbiBydWxlc2V0cyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgcnVsZXMgZW5naW5lICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZVJ1bGVzZXRzIGV4dGVuZHMgVGltZWRFdmVudCB7XG4gIC8qKiBFdmVudCB0eXBlICovXG4gIHR5cGU6ICdBdmFpbGFibGVSdWxlc2V0cyc7XG4gIC8qKiBSZWdpc3RlcmVkIHJ1bGVzZXRzIGxpc3QgKi9cbiAgYXZhaWxhYmxlUnVsZXNldHM6IFBpY2s8UnVsZXNldCwgJ25hbWUnIHwgJ2lkJz5bXTtcbn1cblxuLyoqIFR5cGUgb2YgcG9zc2libGUgZGVidWcgZXZlbnRzIGVtaXRlZCBieSBSdWxlcyBFbmdpbmUgKi9cbmV4cG9ydCB0eXBlIERlYnVnRXZlbnQgPSBSdWxlc2V0RXhlY3V0aW9uRXZlbnQgfCBSdWxlc2V0RXhlY3V0aW9uRXJyb3JFdmVudCB8IEFjdGl2ZVJ1bGVzZXRzRXZlbnQgfCBBbGxBY3Rpb25zRXZlbnQgfCBBdmFpbGFibGVSdWxlc2V0cztcbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBJdGVtSWRlbnRpZmllcixcbiAgTG9nZ2VyLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHtcbiAgRW5naW5lRGVidWdnZXIsXG59IGZyb20gJy4vZGVidWcvZW5naW5lLmRlYnVnJztcbmltcG9ydCB0eXBlIHtcbiAgRmFjdCxcbiAgRmFjdHMsXG59IGZyb20gJy4vZmFjdCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9wZXJhdG9yLFxufSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7XG4gIEFjdGlvbkJsb2NrLFxuICBSdWxlLFxuICBSdWxlc2V0LFxufSBmcm9tICcuL3N0cnVjdHVyZSc7XG5cbi8qKiBQZXJmb3JtYW5jZSBvYmplY3Qgc3VwcG9ydGluZyBOb2RlSnMgUGVyZm9ybWFuY2UgYW5kIFdlYiBQZXJmb3JtYW5jZSByZXBvcnRpbmcgICovXG5leHBvcnQgdHlwZSBDcm9zc1BsYXRmb3JtUGVyZm9ybWFuY2UgPSB7XG4gIC8qKiBAc2VlIFBlcmZvcm1hbmNlLm1hcmsgKi9cbiAgbWFyazogKC4uLng6IFBhcmFtZXRlcnM8UGVyZm9ybWFuY2VbJ21hcmsnXT4pID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21hcmsnXT4gfCB2b2lkO1xuICAvKiogQHNlZSBQZXJmb3JtYW5jZS5tZWFzdXJlICovXG4gIG1lYXN1cmU6IChtZWFzdXJlTmFtZTogc3RyaW5nLCBzdGFydE9yTWVhc3VyZU9wdGlvbnM/OiBzdHJpbmcsIGVuZE1hcms/OiBzdHJpbmcpID0+IFJldHVyblR5cGU8UGVyZm9ybWFuY2VbJ21lYXN1cmUnXT4gfCB2b2lkO1xufTtcblxuLyoqIEZhY3Qgc3RyZWFtIG9iamVjdCB0byBoYW5kbGUgZmFjdCByZWZlcmVuY2UgY2hhbmdlICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RPYmplY3Q8VD4ge1xuICAvKiogU3ViamVjdCBvZiBmYWN0IHN0cmVhbSAqL1xuICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxUPiB8IHVuZGVmaW5lZD47XG4gIC8qKiBTdHJlYW0gb2YgdGhlIGZhY3QgdmFsdWUgKi9cbiAgdmFsdWUkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xufVxuXG4vKiogUnVsZSBFbmdpbmUgY29uc3RydWN0b3Igb3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlc0VuZ2luZU9wdGlvbnMge1xuICAvKiogTGlzdCBvZiBmYWN0cyAqL1xuICBmYWN0cz86IEZhY3Q8RmFjdHM+W107XG5cbiAgLyoqIExpc3Qgb2YgcnVsZXMgKi9cbiAgcnVsZXM/OiBSdWxlc2V0W107XG5cbiAgLyoqIExpc3Qgb2YgY3VzdG9tIG9wZXJhdG9ycyAqL1xuICBvcGVyYXRvcnM/OiBPcGVyYXRvcjxhbnksIGFueT5bXTtcblxuICAvKiogRGVsYXkgYmVmb3JlIGZhY3Qgc3RyZWFtIGRlZmF1bHRpbmcgdmFsdWUgKi9cbiAgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2tpcCB0aGUgcnVsZSBhbmQgZmFjdCBjaXJjdWxhciBkZXBlbmRlbmN5IGNoZWNrc1xuICAgKiBUdXJuIHRvIHRydWUgdG8gaW5jcmVhc2UgdGhlIHNwZWVkIG9mIHRoZSB1cHNlcnRpb24gb2YgYSBydWxlXG4gICAqL1xuICBza2lwQ2lyY3VsYXJEZXBlbmRlbmN5Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvdmlkZSBkZWJ1Z2dlciBpbnN0YW5jZSB0byB0aGUgcnVsZXMgZW5naW5lXG4gICAqL1xuICBkZWJ1Z2dlcj86IEVuZ2luZURlYnVnZ2VyO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBvZiB0aGUgcGVyZm9ybWFuY2UgcmVwb3J0ZXIgdG8gdXNlIGZvciBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuXG4gICAqIEBkZWZhdWx0IHdpbmRvdy5wZXJmb3JtYW5jZSBvbiBicm93c2VyIG9ubHksIHVuZGVmaW5lZCBvbiBub2RlXG4gICAqL1xuICBwZXJmb3JtYW5jZT86IENyb3NzUGxhdGZvcm1QZXJmb3JtYW5jZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcnVsZXMgZW5naW5lIGluc3RhbmNlXG4gICAqIEBkZWZhdWx0IFJ1bGVzRW5naW5lXG4gICAqL1xuICBydWxlc0VuZ2luZUluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xpZW50IHRvIGxvZyB0aGUgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZVxuICAgKi9cbiAgbG9nZ2VyPzogTG9nZ2VyO1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlIGV4dGVuZHMgUnVsZSB7XG4gIC8qKiBzdHJlYW0gb2YgdGhlIHJ1bGUgY29uZGl0aW9ucyByZXN1bHQgKi9cbiAgcmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkJsb2NrW10+O1xufVxuXG4vKiogUnVsZSBhcyBzdG9yZWQgaW4gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmdpbmVSdWxlc2V0IHtcbiAgLyoqIE9wdGlvbmFsIGRhdGUgcmFuZ2Ugd2hlcmUgdGhlIHJ1bGVzZXQgd2lsbCBiZSBleGVjdXRlZCwgaXQgc3VwcG9ydHMgYSBkYXRlU3RyaW5nIG9yIGEgdGltZXN0YW1wIGFzIG51bWJlciwgbW9yZSBpbmZvIG9uIGphdmFzY3JpcHQgRGF0ZSgpIGRvY3VtZW50YXRpb24gKi9cbiAgdmFsaWRpdHlSYW5nZT86IHsgZnJvbT86IHN0cmluZyB8IG51bWJlcjsgdG8/OiBzdHJpbmcgfCBudW1iZXIgfTtcbiAgLyoqXG4gICAqIENvbXBvbmVudHMgbGlua2VkIHRvIHRoZSBydWxlc2V0LiBJZiBwcmVzZW50IHRoZSBydWxlc2V0IHdpbGwgbm90IGJlIGFjdGl2ZSBieSBkZWZhdWx0LlxuICAgKiAnb3InIGNvbmRpdGlvbjogSWYgYXQgbGVhc3Qgb25lIGNvbXBvbmVudCBoYXMgc3Vic2NyaWJlZCwgdGhlIHJ1bGVzZXQgd2lsbCBiZWNvbWUgYWN0aXZlLlxuICAgKiBJZiBwcmVzZW50LCB0aGUge0BsaW5rIGxpbmtlZENvbXBvbmVudH0gcHJvcGVydHkgd2lsbCBub3QgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnRzPzogeyBvcjogSXRlbUlkZW50aWZpZXJbXSB9O1xuICAvKipcbiAgICogQ29tcG9uZW50IGxpbmtlZCB0byB0aGUgcnVsZXNldCwgaWYgc2V0IGl0IHdpbGwgZGlzYWJsZSB0aGUgcnVsZXNldCBleGVjdXRpb24gcGVyIGRlZmF1bHQsIHdhaXRpbmcgdG8gYSBzdWJzY3JpcHRpb25cbiAgICogQGRlcHJlY2F0ZWQgSXQgd2lsbCBiZSByZW1vdmVkIGluIHYxMiwgdXNlIHtAbGluayBsaW5rZWRDb21wb25lbnRzfSBpbnN0ZWFkXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnQ/OiBJdGVtSWRlbnRpZmllcjtcbiAgLyoqIFVuaXF1ZSBpZCBvZiB0aGUgcnVsZXNldCovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBTdG9yZXMgdGhlIHJlc3VsdCBvZiBlYWNoIHJ1bGVzIGZyb20gdGhlIHJ1bGVzZXQgKi9cbiAgcnVsZXNSZXN1bHRzU3ViamVjdCQ6IE9ic2VydmFibGU8QWN0aW9uQmxvY2tbXT47XG59XG4vKiogVGltZXN0YW1wIG9mIGEgcnVsZXMgZW5naW5lIG91dHB1dCBldmVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1lZEV2ZW50IHtcbiAgLyoqIFRpbWVzdGFtcCB2YWx1ZSB3aGVuIHRoZSBldmVudCBvY2N1cnMgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBvZiB0aGUgZXhlY3V0aW9uICovXG4gIGR1cmF0aW9uPzogbnVtYmVyO1xufVxuXG4vKiogRmFjdCBjaGFuZ2UgdHJpZ2dlcmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIHJ1bGUvZXhlY3V0aW9uIG9mIGEgcnVsZXNldCAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0aW9uUmVhc29uIHtcbiAgLyoqIE5hbWUgb2YgdGhlIGZhY3QgdGhhdCBjaGFuZ2VkICovXG4gIGZhY3ROYW1lOiBzdHJpbmc7XG4gIC8qKiBOZXcgdmFsdWUgb2YgdGhlIGZhY3QgKi9cbiAgbmV3VmFsdWU/OiBGYWN0cztcbiAgLyoqIE9sZCB2YWx1ZSBvZiB0aGUgZmFjdCAqL1xuICBvbGRWYWx1ZT86IEZhY3RzO1xufVxuXG4vKiogUmVzdWx0IG9iamVjdCByZXN1bHRlZCBhdCB0aGUgZW5kIG9mIGEgcnVsZSBldmFsdWF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVFdmFsdWF0aW9uIGV4dGVuZHMgVGltZWRFdmVudCB7XG4gIC8qKiBJZGVudGlmaWVyIG9mIHRoZSBldmFsdWF0aW9uIChydWxlc2V0IG5hbWUgKyBydWxlIG5hbWUpICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBFdmFsdWF0ZWQgcnVsZSBpZGVudGlmaWVyICovXG4gIHJ1bGU6IFBpY2s8UnVsZSwgJ2lkJyB8ICduYW1lJz47XG4gIC8qKiBBY3Rpb25zIG91dHB1dGVkIGJ5IHRoZSBydWxlIGV2YWx1YXRpb24gKi9cbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXSB8IHVuZGVmaW5lZDtcbiAgLyoqIE1hcCBjb250YWluaW5nIHRoZSBmYWN0cyBjaGFuZ2VzIHRyaWdnZXJpbmcgdGhlIHJ1bGUgZXZhbHVhdGlvbiAqL1xuICB0cmlnZ2VyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXZhbHVhdGlvblJlYXNvbj4+O1xuICAvKiogRXJyb3Igb2JqZWN0IGluIGNhc2Ugb2YgcnVsZSBldmFsdWF0aW9uIGZhaWx1cmUgKi9cbiAgZXJyb3I/OiBhbnk7XG4gIC8qKiBSdW50aW1lIGZhY3RzIHdpdGggdmFsdWVzIGF0IHRoZSBlbmQgb2YgcnVsZSBldmFsdWF0aW9uICAqL1xuICB0ZW1wb3JhcnlGYWN0cz86IFJlY29yZDxzdHJpbmcsIEZhY3RzPjtcbiAgLyoqIEZsYWcgdG8gbm90aWZ5IGlmIHRoZSBydWxlcyBldmFsdWF0aW9uIGNvbWVzIGZyb20gYW4gb2xkIHJ1bGVzZXQgZXhlY3V0aW9uICovXG4gIGNhY2hlZD86IGJvb2xlYW47XG59XG5cbi8qKiBXcmFwcGVkIHJ1bGUgZXZhbHVhdGlvbiBvdXRwdXQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUV2YWx1YXRpb25PdXRwdXQge1xuICAvKiogQWN0aW9ucyBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgcnVsZSBldmFsdWF0aW9uICovXG4gIGFjdGlvbnM6IEFjdGlvbkJsb2NrW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBSdWxlIGV2YWx1YXRpb24gb3V0cHV0IG9iamVjdCAqL1xuICBldmFsdWF0aW9uPzogUnVsZUV2YWx1YXRpb247XG4gIC8qKiBFcnJvciBvYmplY3QgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHJ1bGUgZXZhbHVhdGlvbiwgaWYgYW55ICovXG4gIGVycm9yPzogYW55O1xufVxuXG4vKiogQmFzZSBvYmVqZWN0IHJlc3VsdGVkIGF0IHRoZSBlbmQgb2YgYSBydWxlc2V0IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlUnVsZXNldEV4ZWN1dGlvbiB7XG4gIC8qKiBJZCBvZiB0aGUgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgLyoqIElkIG9mIHRoZSBydWxlc2V0IHdoaWNoIHdhcyBleGVjdXRlZCAqL1xuICBydWxlc2V0SWQ6IHN0cmluZztcbiAgLyoqIE5hbWUgb2YgdGhlIGV4ZWN1dGVkIHJ1bGVzZXQgKi9cbiAgcnVsZXNldE5hbWU6IHN0cmluZztcbiAgLyoqIENvdW50ZXIgb2YgZXhlY3V0aW9ucyBmb3IgdGhlIHJ1bGVzZXQgKi9cbiAgZXhlY3V0aW9uQ291bnRlcjogbnVtYmVyO1xuICAvKiogQWxsIGlucHV0IGZhY3RzIGFmZmVjdGluZyB0aGUgcnVsZXNldCAqL1xuICBpbnB1dEZhY3RzOiB7IGZhY3ROYW1lOiBzdHJpbmc7IHZhbHVlOiBGYWN0cyB9W107XG4gIC8qKiBSdW50aW1lIGZhY3RzIHVzZWQgYWNjcm9zIHRoZSBydWxlc2V0ICovXG4gIHRlbXBvcmFyeUZhY3RzPzogUmVjb3JkPHN0cmluZywgRmFjdHM+O1xuICAvKiogRmFjdHMgY2hhbmdlcyB0aGF0IHRyaWdnZXJlZCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBydWxlc2V0ICovXG4gIHRyaWdnZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFdmFsdWF0aW9uUmVhc29uPj47XG4gIC8qKiBMaXN0IG9mIGV2YWx1YXRlZCBydWxlcyBhY2Nyb3MgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgcnVsZXNFdmFsdWF0aW9uczogUnVsZUV2YWx1YXRpb25bXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgaW4gY2FzZSBvZiBzdWNjZXNzZnVsIHJ1bGVzZXQgZXhlY3V0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzZXRFeGVjdXRpb25FdmVudCBleHRlbmRzIEJhc2VSdWxlc2V0RXhlY3V0aW9uLCBUaW1lZEV2ZW50IHtcbiAgLyoqIEV2ZW50IHR5cGUgKi9cbiAgdHlwZTogJ1J1bGVzZXRFeGVjdXRpb24nO1xuICAvKiogTGlzdCBvZiB0aGUgYWN0aW9ucyBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgcnVsZXNldCBleGVjdXRpb24gKi9cbiAgb3V0cHV0QWN0aW9uczogQWN0aW9uQmxvY2tbXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgaW4gY2FzZSBvZiBydWxlc2V0IGV4ZWN1dGlvbiBmYWlsdXJlICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzZXRFeGVjdXRpb25FcnJvckV2ZW50IGV4dGVuZHMgQmFzZVJ1bGVzZXRFeGVjdXRpb24sIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJztcbiAgLyoqIExpc3Qgb2YgcnVsZXMgY2F1c2luZyB0aGUgZXhlY3V0aW9uIGVycm9yKi9cbiAgcnVsZXNDYXVzaW5nVGhlRXJyb3I6IFBpY2s8UnVsZSwgJ25hbWUnIHwgJ2lkJz5bXTtcbiAgLyoqIExpc3Qgb2Ygb3V0cHV0dGVkIGVycm9ycyAqL1xuICBlcnJvcnM6IGFueVtdO1xufVxuXG4vKiogRGVidWcgZXZlbnQgZW1pdHRlZCB3aGVuIGFjdGl2ZSBydWxlc2V0cyBhcmUgY2hhbmdpbmcgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlUnVsZXNldHNFdmVudCBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnQWN0aXZlUnVsZXNldHMnO1xuICAvKiogTGlzdCBvZiBhY3RpdmUgcnVsZXNldHMgKi9cbiAgcnVsZXNldHM6IFBpY2s8UnVsZXNldCwgJ25hbWUnIHwgJ2lkJz5bXTtcbn1cblxuLyoqIERlYnVnIGV2ZW50IGVtaXR0ZWQgZWFjaCB0aW1lIHRoZSBSdWxlcyBFbmdpbmUgb3V0cHV0cyBhIGxpc3Qgb2YgYWN0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxBY3Rpb25zRXZlbnQgZXh0ZW5kcyBUaW1lZEV2ZW50IHtcbiAgLyoqIGV2ZW50IHR5cGUgKi9cbiAgdHlwZTogJ0FsbEFjdGlvbnMnO1xuICAvKiogTGlzdCBvZiBlbWl0dGVkIGFjdGlvbnMgKi9cbiAgYWN0aW9uczogQWN0aW9uQmxvY2tbXTtcbn1cblxuLyoqICBEZWJ1ZyBldmVudCBlbWl0dGVkIHdoZW4gcnVsZXNldHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIHJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmFpbGFibGVSdWxlc2V0cyBleHRlbmRzIFRpbWVkRXZlbnQge1xuICAvKiogRXZlbnQgdHlwZSAqL1xuICB0eXBlOiAnQXZhaWxhYmxlUnVsZXNldHMnO1xuICAvKiogUmVnaXN0ZXJlZCBydWxlc2V0cyBsaXN0ICovXG4gIGF2YWlsYWJsZVJ1bGVzZXRzOiBQaWNrPFJ1bGVzZXQsICduYW1lJyB8ICdpZCc+W107XG59XG5cbi8qKiBUeXBlIG9mIHBvc3NpYmxlIGRlYnVnIGV2ZW50cyBlbWl0ZWQgYnkgUnVsZXMgRW5naW5lICovXG5leHBvcnQgdHlwZSBEZWJ1Z0V2ZW50ID0gUnVsZXNldEV4ZWN1dGlvbkV2ZW50IHwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQgfCBBY3RpdmVSdWxlc2V0c0V2ZW50IHwgQWxsQWN0aW9uc0V2ZW50IHwgQXZhaWxhYmxlUnVsZXNldHM7XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BehaviorSubject, firstValueFrom, merge, of } from 'rxjs';
|
|
2
|
-
import { delay, distinctUntilChanged, shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
3
|
-
import { filterRulesetsEventStream } from './helpers/filter-ruleset-event.operator';
|
|
4
|
-
import { operatorList } from './operator/index';
|
|
5
|
-
import { RulesetExecutor } from './ruleset-executor';
|
|
1
|
+
import { BehaviorSubject, firstValueFrom, merge, of, } from 'rxjs';
|
|
2
|
+
import { delay, distinctUntilChanged, shareReplay, switchMap, takeUntil, tap, } from 'rxjs/operators';
|
|
3
|
+
import { filterRulesetsEventStream, } from './helpers/filter-ruleset-event.operator';
|
|
4
|
+
import { operatorList, } from './operator/index';
|
|
5
|
+
import { RulesetExecutor, } from './ruleset-executor';
|
|
6
6
|
/** Rules engine */
|
|
7
7
|
export class RulesEngine {
|
|
8
8
|
/**
|
|
@@ -14,14 +14,13 @@ export class RulesEngine {
|
|
|
14
14
|
/**
|
|
15
15
|
* Rules engine
|
|
16
16
|
* @param options rules engine options
|
|
17
|
-
* @param logger
|
|
18
17
|
*/
|
|
19
18
|
constructor(options) {
|
|
20
19
|
/** Map of registered fact stream, this map is mutated by the ruleset executors */
|
|
21
20
|
this.factMap = {};
|
|
22
21
|
/** Subject containing the rulesets and the results stream*/
|
|
23
22
|
this.rulesetMapSubject = new BehaviorSubject({});
|
|
24
|
-
this.performance = options?.performance || (typeof window
|
|
23
|
+
this.performance = options?.performance || (typeof window === 'undefined' ? undefined : window.performance);
|
|
25
24
|
this.engineDebug = options?.debugger;
|
|
26
25
|
this.engineDebug?.registerRuleEngine(this);
|
|
27
26
|
this.logger = options?.logger;
|
|
@@ -45,7 +44,6 @@ export class RulesEngine {
|
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
47
46
|
* Attach debug events to actions stream if debug engine is activated
|
|
48
|
-
* @param actionsStream
|
|
49
47
|
*/
|
|
50
48
|
handleActionsStreamOutput() {
|
|
51
49
|
return (actionsStream$) => this.engineDebug ? actionsStream$.pipe(tap((allActions) => this.engineDebug.allActionsChange(allActions))) : actionsStream$;
|
|
@@ -55,8 +53,8 @@ export class RulesEngine {
|
|
|
55
53
|
* @param ruleSets
|
|
56
54
|
*/
|
|
57
55
|
prepareActionsStream(ruleSets) {
|
|
58
|
-
return (rulesetMapSubject$) => (this.engineDebug
|
|
59
|
-
rulesetMapSubject$.pipe(tap((ruleSetExecutorMap) => this.engineDebug.activeRulesetsChange(ruleSetExecutorMap, ruleSets)), filterRulesetsEventStream(ruleSets))
|
|
56
|
+
return (rulesetMapSubject$) => (this.engineDebug
|
|
57
|
+
? rulesetMapSubject$.pipe(tap((ruleSetExecutorMap) => this.engineDebug.activeRulesetsChange(ruleSetExecutorMap, ruleSets)), filterRulesetsEventStream(ruleSets))
|
|
60
58
|
: rulesetMapSubject$.pipe(filterRulesetsEventStream(ruleSets)));
|
|
61
59
|
}
|
|
62
60
|
/**
|
|
@@ -67,9 +65,9 @@ export class RulesEngine {
|
|
|
67
65
|
*/
|
|
68
66
|
retrieveOrCreateFactStream(id, factValue$) {
|
|
69
67
|
// trick to emit undefined if the observable is not immediately emitting (to not bloc execution)
|
|
70
|
-
const obs$ = factValue$
|
|
71
|
-
merge(factValue$, of(undefined).pipe(delay(this.factDefaultDelay || 0), takeUntil(factValue$)))
|
|
72
|
-
factValue$;
|
|
68
|
+
const obs$ = factValue$
|
|
69
|
+
? merge(factValue$, of(undefined).pipe(delay(this.factDefaultDelay || 0), takeUntil(factValue$)))
|
|
70
|
+
: factValue$;
|
|
73
71
|
const factObj = this.factMap[id];
|
|
74
72
|
if (factObj) {
|
|
75
73
|
if (factValue$) {
|
|
@@ -102,7 +100,6 @@ export class RulesEngine {
|
|
|
102
100
|
}
|
|
103
101
|
/**
|
|
104
102
|
* Update or insert rule in rules engine
|
|
105
|
-
* @param rules rule list to add / update
|
|
106
103
|
* @param rulesets
|
|
107
104
|
*/
|
|
108
105
|
upsertRulesets(rulesets) {
|
|
@@ -134,4 +131,4 @@ export class RulesEngine {
|
|
|
134
131
|
return Object.keys(this.factMap);
|
|
135
132
|
}
|
|
136
133
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VuZ2luZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFBWSxZQUFZLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JELG1CQUFtQjtBQUNuQixNQUFNLE9BQU8sV0FBVztJQW1DdEI7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksT0FBNEI7UUE3Q3hDLGtGQUFrRjtRQUNqRSxZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUUvRCw0REFBNEQ7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQWtDLEVBQUUsQ0FBQyxDQUFDO1FBMEM1RixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUks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LE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxTQUF1QztRQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDbEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDOUIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjO1FBQ25CLE9BQU8sQ0FBQyxZQUE4QyxFQUFFLEVBQUUsQ0FDeEQsWUFBWSxDQUFDLElBQUksQ0FDZixTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDNUYsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQ2pDLENBQUM7SUFDTixDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLHVCQUF1QjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSAnQG8zci9sb2dnZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW5naW5lRGVidWdnZXIgfSBmcm9tICcuL2RlYnVnL2VuZ2luZS5kZWJ1Zyc7XG5pbXBvcnQgeyBGYWN0T2JqZWN0LCBSdWxlc0VuZ2luZU9wdGlvbnMgfSBmcm9tICcuL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBGYWN0LCBGYWN0cyB9IGZyb20gJy4vZmFjdC9pbmRleCc7XG5pbXBvcnQgeyBmaWx0ZXJSdWxlc2V0c0V2ZW50U3RyZWFtIH0gZnJvbSAnLi9oZWxwZXJzL2ZpbHRlci1ydWxlc2V0LWV2ZW50Lm9wZXJhdG9yJztcbmltcG9ydCB7IE9wZXJhdG9yLCBvcGVyYXRvckxpc3QsIFVuYXJ5T3BlcmF0b3IgfSBmcm9tICcuL29wZXJhdG9yL2luZGV4JztcbmltcG9ydCB7IFJ1bGVzZXRFeGVjdXRvciB9IGZyb20gJy4vcnVsZXNldC1leGVjdXRvcic7XG5pbXBvcnQgeyBBY3Rpb25CbG9jaywgUnVsZXNldCB9IGZyb20gJy4vc3RydWN0dXJlJztcblxuLyoqIFJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGNsYXNzIFJ1bGVzRW5naW5lIHtcblxuICAvKiogTWFwIG9mIHJlZ2lzdGVyZWQgZmFjdCBzdHJlYW0sIHRoaXMgbWFwIGlzIG11dGF0ZWQgYnkgdGhlIHJ1bGVzZXQgZXhlY3V0b3JzICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdE1hcDogUmVjb3JkPHN0cmluZywgRmFjdE9iamVjdDxhbnk+PiA9IHt9O1xuXG4gIC8qKiBTdWJqZWN0IGNvbnRhaW5pbmcgdGhlIHJ1bGVzZXRzIGFuZCB0aGUgcmVzdWx0cyBzdHJlYW0qL1xuICBwcml2YXRlIHJlYWRvbmx5IHJ1bGVzZXRNYXBTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0RXhlY3V0b3I+Pih7fSk7XG5cbiAgLyoqIE1hcCBvZiBhdmFpbGFibGUgb3BlcmF0b3JzICovXG4gIHB1YmxpYyBvcGVyYXRvcnM6IFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yPHVua25vd24sIHVua25vd24+PjtcblxuICAvKiogTGlzdCBvZiBldmVudHMgZm9yIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBydWxlcyBlbmdpbmUgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8QWN0aW9uQmxvY2tbXT47XG5cbiAgLyoqIERlbGF5IGJlZm9yZSBmYWN0IHN0cmVhbSBkZWZhdWx0aW5nIHZhbHVlICovXG4gIHB1YmxpYyBmYWN0RGVmYXVsdERlbGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBvZiBlbmdpbmUgZGVidWcgb2JqZWN0OyBVbmRlZmluZWQgaWYgZGVidWdNb2RlIGlzIG5vdCBhY3RpdmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmVEZWJ1Zz86IEVuZ2luZURlYnVnZ2VyO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBydWxlcyBlbmdpbmUgaW5zdGFuY2UgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1hbmNlIHJlcG9ydGVyIHRvIHVzZSBmb3IgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnRzLlxuICAgKiBAZGVmYXVsdCB3aW5kb3cucGVyZm9ybWFuY2Ugb24gYnJvd3NlciBvbmx5LCB1bmRlZmluZWQgb24gbm9kZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcmZvcm1hbmNlO1xuXG4gIC8qKlxuICAgKiBMb2cgdGhlIGVuZ2luZSBlcnJvcnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2dnZXI/OiBMb2dnZXI7XG4gIC8qKlxuICAgKiBGbGFnIHRvIGNoZWNrIGlmIHRoZSBydW4gaXMgaW4gZGVidWcgbW9kZSBvciBub3RcbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZW5naW5lRGVidWc7XG4gIH1cblxuICAvKipcbiAgICogUnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBvcHRpb25zIHJ1bGVzIGVuZ2luZSBvcHRpb25zXG4gICAqIEBwYXJhbSBsb2dnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBSdWxlc0VuZ2luZU9wdGlvbnMpIHtcbiAgICB0aGlzLnBlcmZvcm1hbmNlID0gb3B0aW9ucz8ucGVyZm9ybWFuY2UgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmVuZ2luZURlYnVnID0gb3B0aW9ucz8uZGVidWdnZXI7XG4gICAgdGhpcy5lbmdpbmVEZWJ1Zz8ucmVnaXN0ZXJSdWxlRW5naW5lKHRoaXMpO1xuICAgIHRoaXMubG9nZ2VyID0gb3B0aW9ucz8ubG9nZ2VyO1xuICAgIHRoaXMucnVsZXNFbmdpbmVJbnN0YW5jZU5hbWUgPSBvcHRpb25zPy5ydWxlc0VuZ2luZUluc3RhbmNlTmFtZSB8fCAnUnVsZXNFbmdpbmUnO1xuICAgIHRoaXMuZmFjdERlZmF1bHREZWxheSA9IG9wdGlvbnM/LmZhY3REZWZhdWx0RGVsYXk7XG4gICAgLy8gTG9hZCBkZWZhdWx0IG9wZXJhdG9yc1xuICAgIHRoaXMub3BlcmF0b3JzID0gb3BlcmF0b3JMaXN0LnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBPcGVyYXRvcjxhbnksIGFueT4+PigoYWNjLCBvcGVyYXRvcikgPT4ge1xuICAgICAgYWNjW29wZXJhdG9yLm5hbWVdID0gb3BlcmF0b3I7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLnJ1bGVzZXRNYXBTdWJqZWN0LnBpcGUoXG4gICAgICB0aGlzLnByZXBhcmVBY3Rpb25zU3RyZWFtKCksXG4gICAgICB0aGlzLmhhbmRsZUFjdGlvbnNTdHJlYW1PdXRwdXQoKVxuICAgICk7XG4gICAgaWYgKG9wdGlvbnM/LmZhY3RzKSB7XG4gICAgICB0aGlzLnVwc2VydEZhY3RzKG9wdGlvbnMuZmFjdHMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ucnVsZXMpIHtcbiAgICAgIHRoaXMudXBzZXJ0UnVsZXNldHMob3B0aW9ucy5ydWxlcyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5vcGVyYXRvcnMpIHtcbiAgICAgIHRoaXMudXBzZXJ0T3BlcmF0b3JzKG9wdGlvbnMub3BlcmF0b3JzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGRlYnVnIGV2ZW50cyB0byBhY3Rpb25zIHN0cmVhbSBpZiBkZWJ1ZyBlbmdpbmUgaXMgYWN0aXZhdGVkXG4gICAqIEBwYXJhbSBhY3Rpb25zU3RyZWFtXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUFjdGlvbnNTdHJlYW1PdXRwdXQ8VCBleHRlbmRzIEFjdGlvbkJsb2NrID0gQWN0aW9uQmxvY2s+KCk6IChhY3Rpb25zU3RyZWFtJDogT2JzZXJ2YWJsZTxUW10+KSA9PiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiAoYWN0aW9uc1N0cmVhbSQ6IE9ic2VydmFibGU8VFtdPikgPT4gdGhpcy5lbmdpbmVEZWJ1ZyA/IGFjdGlvbnNTdHJlYW0kLnBpcGUodGFwKChhbGxBY3Rpb25zKSA9PiB0aGlzLmVuZ2luZURlYnVnIS5hbGxBY3Rpb25zQ2hhbmdlKGFsbEFjdGlvbnMpKSkgOiBhY3Rpb25zU3RyZWFtJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGFjdGlvbnMgc3RyZWFtIGV2ZW50IGJhc2VkIG9uIHByb3ZpZGVkIGFjdGl2ZSBydWxlc2V0cyBpZHM7IEhhbmRsZSBkZWJ1ZyB0b29cbiAgICogQHBhcmFtIHJ1bGVTZXRzXG4gICAqL1xuICBwcml2YXRlIHByZXBhcmVBY3Rpb25zU3RyZWFtPFQgZXh0ZW5kcyBBY3Rpb25CbG9jayA9IEFjdGlvbkJsb2NrPihydWxlU2V0cz86IHN0cmluZ1tdKTogKHJ1bGVzZXRNYXBTdWJqZWN0JDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0RXhlY3V0b3I+PikgPT4gT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gKHJ1bGVzZXRNYXBTdWJqZWN0JDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBSdWxlc2V0RXhlY3V0b3I+PikgPT4gKHRoaXMuZW5naW5lRGVidWcgP1xuICAgICAgcnVsZXNldE1hcFN1YmplY3QkLnBpcGUoXG4gICAgICAgIHRhcCgocnVsZVNldEV4ZWN1dG9yTWFwKSA9PiB0aGlzLmVuZ2luZURlYnVnIS5hY3RpdmVSdWxlc2V0c0NoYW5nZShydWxlU2V0RXhlY3V0b3JNYXAsIHJ1bGVTZXRzKSksXG4gICAgICAgIGZpbHRlclJ1bGVzZXRzRXZlbnRTdHJlYW0ocnVsZVNldHMpKVxuICAgICAgOiBydWxlc2V0TWFwU3ViamVjdCQucGlwZShmaWx0ZXJSdWxlc2V0c0V2ZW50U3RyZWFtKHJ1bGVTZXRzKSkpIGFzIE9ic2VydmFibGU8VFtdPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgb3IgcmV0cmlldmUgYSBmYWN0IHN0cmVhbVxuICAgKiBUaGUgZmFjdCBzdHJlYW0gY3JlYXRlZCB3aWxsIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGVuZ2luZVxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGZhY3QgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtIGZhY3RWYWx1ZSQgVmFsdWUgc3RyZWFtIGZvciB0aGUgZmFjdFxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlT3JDcmVhdGVGYWN0U3RyZWFtPFQgPSBGYWN0cz4oaWQ6IHN0cmluZywgZmFjdFZhbHVlJD86IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyB0cmljayB0byBlbWl0IHVuZGVmaW5lZCBpZiB0aGUgb2JzZXJ2YWJsZSBpcyBub3QgaW1tZWRpYXRlbHkgZW1pdHRpbmcgKHRvIG5vdCBibG9jIGV4ZWN1dGlvbilcbiAgICBjb25zdCBvYnMkID0gZmFjdFZhbHVlJCA/XG4gICAgICBtZXJnZShmYWN0VmFsdWUkLCBvZih1bmRlZmluZWQpLnBpcGUoZGVsYXkodGhpcy5mYWN0RGVmYXVsdERlbGF5IHx8IDApLCB0YWtlVW50aWwoZmFjdFZhbHVlJCkpKSA6XG4gICAgICBmYWN0VmFsdWUkO1xuICAgIGNvbnN0IGZhY3RPYmogPSB0aGlzLmZhY3RNYXBbaWRdO1xuICAgIGlmIChmYWN0T2JqKSB7XG4gICAgICBpZiAoZmFjdFZhbHVlJCkge1xuICAgICAgICBmYWN0T2JqLnN1YmplY3QubmV4dChvYnMkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWN0T2JqLnZhbHVlJDtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkPihvYnMkKTtcbiAgICBjb25zdCB2YWx1ZSQgPSBzdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB2YWx1ZSB8fCBvZih1bmRlZmluZWQpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLmZhY3RNYXBbaWRdID0ge1xuICAgICAgc3ViamVjdCxcbiAgICAgIHZhbHVlJFxuICAgIH07XG5cbiAgICByZXR1cm4gdmFsdWUkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBwcm9taXNlIG9mIHRoZSBsYXRlc3QgdmFsdWUgb2YgYSBmYWN0LlxuICAgKiBSZXR1cm4gdW5kZWZpbmVkIGlmIHRoZSBmYWN0IGlzIG5vdCBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGZhY3QgdG8gcmV0cmlldmVcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUZhY3RWYWx1ZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZhY3RNYXBbaWRdLnZhbHVlJCAmJiBmaXJzdFZhbHVlRnJvbSh0aGlzLnJldHJpZXZlT3JDcmVhdGVGYWN0U3RyZWFtPFQ+KGlkKSwgeyBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3IgaW5zZXJ0IGZhY3QgaW4gcnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBmYWN0cyBmYWN0IGxpc3QgdG8gYWRkIC8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgdXBzZXJ0RmFjdHM8VCA9IHVua25vd24+KGZhY3RzOiBGYWN0PFQ+IHwgRmFjdDxUPltdKSB7XG4gICAgKEFycmF5LmlzQXJyYXkoZmFjdHMpID8gZmFjdHMgOiBbZmFjdHNdKS5mb3JFYWNoKCh7aWQsIHZhbHVlJH0pID0+XG4gICAgICB0aGlzLnJldHJpZXZlT3JDcmVhdGVGYWN0U3RyZWFtKGlkLCB2YWx1ZSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3IgaW5zZXJ0IHJ1bGUgaW4gcnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBydWxlcyBydWxlIGxpc3QgdG8gYWRkIC8gdXBkYXRlXG4gICAqIEBwYXJhbSBydWxlc2V0c1xuICAgKi9cbiAgcHVibGljIHVwc2VydFJ1bGVzZXRzKHJ1bGVzZXRzOiBSdWxlc2V0W10pIHtcbiAgICB0aGlzLmVuZ2luZURlYnVnPy5hZGRBdmFpbGFibGVSdWxlc2V0cyhydWxlc2V0cyk7XG5cbiAgICB0aGlzLnJ1bGVzZXRNYXBTdWJqZWN0Lm5leHQoXG4gICAgICBydWxlc2V0cy5yZWR1Y2UoKGFjY1J1bGVzZXQsIHJ1bGVzZXQpID0+IHtcbiAgICAgICAgYWNjUnVsZXNldFtydWxlc2V0LmlkXSA9IG5ldyBSdWxlc2V0RXhlY3V0b3IocnVsZXNldCwgdGhpcyk7XG4gICAgICAgIHJldHVybiBhY2NSdWxlc2V0O1xuICAgICAgfSwgey4uLnRoaXMucnVsZXNldE1hcFN1YmplY3QudmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBvcGVyYXRvciBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIG9wZXJhdG9ycyBvcGVyYXRvciBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9ycyhvcGVyYXRvcnM6IChPcGVyYXRvciB8IFVuYXJ5T3BlcmF0b3IpW10pIHtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IG9wZXJhdG9ycy5yZWR1Y2UoKGFjYywgb3BlcmF0b3IpID0+IHtcbiAgICAgIGFjY1tvcGVyYXRvci5uYW1lXSA9IG9wZXJhdG9yO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7Li4udGhpcy5vcGVyYXRvcnN9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVyYXRvciB0byBhcHBseSBvbiBhIHN0cmVhbSBvZiBydWxlc2V0cyBpZHNcbiAgICogUmV0dXJucyBhIHN0cmVhbSBvZiBhY3Rpb25zIG91dHB1dHRlZCBieSB0aGUgcnVsZXMgZW5naW5lLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBydWxlc2V0c0lkc1xuICAgKi9cbiAgcHVibGljIGdldEV2ZW50U3RyZWFtPFQgZXh0ZW5kcyBBY3Rpb25CbG9jayA9IEFjdGlvbkJsb2NrPigpOiAocnVsZXNldHNJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPikgPT4gT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gKHJ1bGVzZXRzSWRzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IHVuZGVmaW5lZD4pID0+XG4gICAgICBydWxlc2V0c0lkcyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChydWxlU2V0cykgPT4gdGhpcy5ydWxlc2V0TWFwU3ViamVjdC5waXBlKHRoaXMucHJlcGFyZUFjdGlvbnNTdHJlYW08VD4ocnVsZVNldHMpKSksXG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aW9uc1N0cmVhbU91dHB1dCgpXG4gICAgICApO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIGZhY3RzIG5hbWVzICovXG4gIHB1YmxpYyBnZXRSZWdpc3RlcmVkRmFjdHNOYW1lcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mYWN0TWFwKTtcbiAgfVxuXG59XG4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VuZ2luZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBQ2QsS0FBSyxFQUVMLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBWXhCLE9BQU8sRUFDTCx5QkFBeUIsR0FDMUIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBRUwsWUFBWSxHQUViLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQU01QixtQkFBbUI7QUFDbkIsTUFBTSxPQUFPLFdBQVc7SUFrQ3RCOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksT0FBNEI7UUE1Q3hDLGtGQUFrRjtRQUNqRSxZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUUvRCw0REFBNEQ7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQWtDLEVBQUUsQ0FBQyxDQUFDO1FBeUM1RixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxFQUFFLHVCQUF1QixJQUFJLGFBQWEsQ0FBQztRQUNqRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1FBQ2xELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQXFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3pGLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN4QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFDM0IsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQ2pDLENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx5QkFBeUI7UUFDL0IsT0FBTyxDQUFDLGNBQStCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzNLLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0IsQ0FBc0MsUUFBbUI7UUFDbkYsT0FBTyxDQUFDLGtCQUErRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQzNGLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBWSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQ2pHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBb0IsQ0FBQztJQUN2RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSwwQkFBMEIsQ0FBWSxFQUFVLEVBQUUsVUFBMEI7UUFDakYsZ0dBQWdHO1FBQ2hHLE1BQU0sSUFBSSxHQUFHLFVBQVU7WUFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUF3QyxJQUFJLENBQUMsQ0FBQztRQUNqRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUN6QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDNUMsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHO1lBQ2pCLE9BQU87WUFDUCxNQUFNO1NBQ1AsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQWMsRUFBVTtRQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFjLEtBQTBCO1FBQ3hELENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNsRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxRQUFtQjtRQUN2QyxJQUFJLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlLENBQUMsU0FBc0Q7UUFDM0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2xELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYztRQUNuQixPQUFPLENBQUMsWUFBOEMsRUFBRSxFQUFFLENBQ3hELFlBQVksQ0FBQyxJQUFJLENBQ2YsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQzVGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUNqQyxDQUFDO0lBQ04sQ0FBQztJQUVELDZDQUE2QztJQUN0Qyx1QkFBdUI7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIExvZ2dlcixcbn0gZnJvbSAnQG8zci9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlbGF5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEVuZ2luZURlYnVnZ2VyLFxufSBmcm9tICcuL2RlYnVnL2VuZ2luZS5kZWJ1Zyc7XG5pbXBvcnQge1xuICBGYWN0T2JqZWN0LFxuICBSdWxlc0VuZ2luZU9wdGlvbnMsXG59IGZyb20gJy4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3QsXG4gIEZhY3RzLFxufSBmcm9tICcuL2ZhY3QvaW5kZXgnO1xuaW1wb3J0IHtcbiAgZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbSxcbn0gZnJvbSAnLi9oZWxwZXJzL2ZpbHRlci1ydWxlc2V0LWV2ZW50Lm9wZXJhdG9yJztcbmltcG9ydCB7XG4gIE9wZXJhdG9yLFxuICBvcGVyYXRvckxpc3QsXG4gIFVuYXJ5T3BlcmF0b3IsXG59IGZyb20gJy4vb3BlcmF0b3IvaW5kZXgnO1xuaW1wb3J0IHtcbiAgUnVsZXNldEV4ZWN1dG9yLFxufSBmcm9tICcuL3J1bGVzZXQtZXhlY3V0b3InO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmxvY2ssXG4gIFJ1bGVzZXQsXG59IGZyb20gJy4vc3RydWN0dXJlJztcblxuLyoqIFJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGNsYXNzIFJ1bGVzRW5naW5lIHtcbiAgLyoqIE1hcCBvZiByZWdpc3RlcmVkIGZhY3Qgc3RyZWFtLCB0aGlzIG1hcCBpcyBtdXRhdGVkIGJ5IHRoZSBydWxlc2V0IGV4ZWN1dG9ycyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZhY3RNYXA6IFJlY29yZDxzdHJpbmcsIEZhY3RPYmplY3Q8YW55Pj4gPSB7fTtcblxuICAvKiogU3ViamVjdCBjb250YWluaW5nIHRoZSBydWxlc2V0cyBhbmQgdGhlIHJlc3VsdHMgc3RyZWFtKi9cbiAgcHJpdmF0ZSByZWFkb25seSBydWxlc2V0TWFwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgUnVsZXNldEV4ZWN1dG9yPj4oe30pO1xuXG4gIC8qKiBNYXAgb2YgYXZhaWxhYmxlIG9wZXJhdG9ycyAqL1xuICBwdWJsaWMgb3BlcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRvcjx1bmtub3duLCB1bmtub3duPj47XG5cbiAgLyoqIExpc3Qgb2YgZXZlbnRzIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcnVsZXMgZW5naW5lICovXG4gIHB1YmxpYyByZWFkb25seSBldmVudHMkOiBPYnNlcnZhYmxlPEFjdGlvbkJsb2NrW10+O1xuXG4gIC8qKiBEZWxheSBiZWZvcmUgZmFjdCBzdHJlYW0gZGVmYXVsdGluZyB2YWx1ZSAqL1xuICBwdWJsaWMgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5zdGFuY2Ugb2YgZW5naW5lIGRlYnVnIG9iamVjdDsgVW5kZWZpbmVkIGlmIGRlYnVnTW9kZSBpcyBub3QgYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lRGVidWc/OiBFbmdpbmVEZWJ1Z2dlcjtcblxuICAvKiogTmFtZSBvZiB0aGUgcnVsZXMgZW5naW5lIGluc3RhbmNlICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZUluc3RhbmNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtYW5jZSByZXBvcnRlciB0byB1c2UgZm9yIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy5cbiAgICogQGRlZmF1bHQgd2luZG93LnBlcmZvcm1hbmNlIG9uIGJyb3dzZXIgb25seSwgdW5kZWZpbmVkIG9uIG5vZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZTtcblxuICAvKipcbiAgICogTG9nIHRoZSBlbmdpbmUgZXJyb3JzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xuICAvKipcbiAgICogRmxhZyB0byBjaGVjayBpZiB0aGUgcnVuIGlzIGluIGRlYnVnIG1vZGUgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlYnVnTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmVuZ2luZURlYnVnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBydWxlcyBlbmdpbmUgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IFJ1bGVzRW5naW5lT3B0aW9ucykge1xuICAgIHRoaXMucGVyZm9ybWFuY2UgPSBvcHRpb25zPy5wZXJmb3JtYW5jZSB8fCAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiB3aW5kb3cucGVyZm9ybWFuY2UpO1xuICAgIHRoaXMuZW5naW5lRGVidWcgPSBvcHRpb25zPy5kZWJ1Z2dlcjtcbiAgICB0aGlzLmVuZ2luZURlYnVnPy5yZWdpc3RlclJ1bGVFbmdpbmUodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIgPSBvcHRpb25zPy5sb2dnZXI7XG4gICAgdGhpcy5ydWxlc0VuZ2luZUluc3RhbmNlTmFtZSA9IG9wdGlvbnM/LnJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lIHx8ICdSdWxlc0VuZ2luZSc7XG4gICAgdGhpcy5mYWN0RGVmYXVsdERlbGF5ID0gb3B0aW9ucz8uZmFjdERlZmF1bHREZWxheTtcbiAgICAvLyBMb2FkIGRlZmF1bHQgb3BlcmF0b3JzXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBvcGVyYXRvckxpc3QucmVkdWNlPFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yPGFueSwgYW55Pj4+KChhY2MsIG9wZXJhdG9yKSA9PiB7XG4gICAgICBhY2Nbb3BlcmF0b3IubmFtZV0gPSBvcGVyYXRvcjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMucnVsZXNldE1hcFN1YmplY3QucGlwZShcbiAgICAgIHRoaXMucHJlcGFyZUFjdGlvbnNTdHJlYW0oKSxcbiAgICAgIHRoaXMuaGFuZGxlQWN0aW9uc1N0cmVhbU91dHB1dCgpXG4gICAgKTtcbiAgICBpZiAob3B0aW9ucz8uZmFjdHMpIHtcbiAgICAgIHRoaXMudXBzZXJ0RmFjdHMob3B0aW9ucy5mYWN0cyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5ydWxlcykge1xuICAgICAgdGhpcy51cHNlcnRSdWxlc2V0cyhvcHRpb25zLnJ1bGVzKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/Lm9wZXJhdG9ycykge1xuICAgICAgdGhpcy51cHNlcnRPcGVyYXRvcnMob3B0aW9ucy5vcGVyYXRvcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggZGVidWcgZXZlbnRzIHRvIGFjdGlvbnMgc3RyZWFtIGlmIGRlYnVnIGVuZ2luZSBpcyBhY3RpdmF0ZWRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlQWN0aW9uc1N0cmVhbU91dHB1dDxUIGV4dGVuZHMgQWN0aW9uQmxvY2sgPSBBY3Rpb25CbG9jaz4oKTogKGFjdGlvbnNTdHJlYW0kOiBPYnNlcnZhYmxlPFRbXT4pID0+IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIChhY3Rpb25zU3RyZWFtJDogT2JzZXJ2YWJsZTxUW10+KSA9PiB0aGlzLmVuZ2luZURlYnVnID8gYWN0aW9uc1N0cmVhbSQucGlwZSh0YXAoKGFsbEFjdGlvbnMpID0+IHRoaXMuZW5naW5lRGVidWchLmFsbEFjdGlvbnNDaGFuZ2UoYWxsQWN0aW9ucykpKSA6IGFjdGlvbnNTdHJlYW0kO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgYWN0aW9ucyBzdHJlYW0gZXZlbnQgYmFzZWQgb24gcHJvdmlkZWQgYWN0aXZlIHJ1bGVzZXRzIGlkczsgSGFuZGxlIGRlYnVnIHRvb1xuICAgKiBAcGFyYW0gcnVsZVNldHNcbiAgICovXG4gIHByaXZhdGUgcHJlcGFyZUFjdGlvbnNTdHJlYW08VCBleHRlbmRzIEFjdGlvbkJsb2NrID0gQWN0aW9uQmxvY2s+KHJ1bGVTZXRzPzogc3RyaW5nW10pOiAocnVsZXNldE1hcFN1YmplY3QkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiAocnVsZXNldE1hcFN1YmplY3QkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiAodGhpcy5lbmdpbmVEZWJ1Z1xuICAgICAgPyBydWxlc2V0TWFwU3ViamVjdCQucGlwZShcbiAgICAgICAgdGFwKChydWxlU2V0RXhlY3V0b3JNYXApID0+IHRoaXMuZW5naW5lRGVidWchLmFjdGl2ZVJ1bGVzZXRzQ2hhbmdlKHJ1bGVTZXRFeGVjdXRvck1hcCwgcnVsZVNldHMpKSxcbiAgICAgICAgZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbShydWxlU2V0cykpXG4gICAgICA6IHJ1bGVzZXRNYXBTdWJqZWN0JC5waXBlKGZpbHRlclJ1bGVzZXRzRXZlbnRTdHJlYW0ocnVsZVNldHMpKSkgYXMgT2JzZXJ2YWJsZTxUW10+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBvciByZXRyaWV2ZSBhIGZhY3Qgc3RyZWFtXG4gICAqIFRoZSBmYWN0IHN0cmVhbSBjcmVhdGVkIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgZW5naW5lXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZmFjdCB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gZmFjdFZhbHVlJCBWYWx1ZSBzdHJlYW0gZm9yIHRoZSBmYWN0XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW08VCA9IEZhY3RzPihpZDogc3RyaW5nLCBmYWN0VmFsdWUkPzogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIHRyaWNrIHRvIGVtaXQgdW5kZWZpbmVkIGlmIHRoZSBvYnNlcnZhYmxlIGlzIG5vdCBpbW1lZGlhdGVseSBlbWl0dGluZyAodG8gbm90IGJsb2MgZXhlY3V0aW9uKVxuICAgIGNvbnN0IG9icyQgPSBmYWN0VmFsdWUkXG4gICAgICA/IG1lcmdlKGZhY3RWYWx1ZSQsIG9mKHVuZGVmaW5lZCkucGlwZShkZWxheSh0aGlzLmZhY3REZWZhdWx0RGVsYXkgfHwgMCksIHRha2VVbnRpbChmYWN0VmFsdWUkKSkpXG4gICAgICA6IGZhY3RWYWx1ZSQ7XG4gICAgY29uc3QgZmFjdE9iaiA9IHRoaXMuZmFjdE1hcFtpZF07XG4gICAgaWYgKGZhY3RPYmopIHtcbiAgICAgIGlmIChmYWN0VmFsdWUkKSB7XG4gICAgICAgIGZhY3RPYmouc3ViamVjdC5uZXh0KG9icyQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhY3RPYmoudmFsdWUkO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ+KG9icyQpO1xuICAgIGNvbnN0IHZhbHVlJCA9IHN1YmplY3QucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHZhbHVlIHx8IG9mKHVuZGVmaW5lZCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMuZmFjdE1hcFtpZF0gPSB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdmFsdWUkXG4gICAgfTtcblxuICAgIHJldHVybiB2YWx1ZSQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHByb21pc2Ugb2YgdGhlIGxhdGVzdCB2YWx1ZSBvZiBhIGZhY3QuXG4gICAqIFJldHVybiB1bmRlZmluZWQgaWYgdGhlIGZhY3QgaXMgbm90IGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZmFjdCB0byByZXRyaWV2ZVxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlRmFjdFZhbHVlPFQgPSB1bmtub3duPihpZDogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdE1hcFtpZF0udmFsdWUkICYmIGZpcnN0VmFsdWVGcm9tKHRoaXMucmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW08VD4oaWQpLCB7IGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBvciBpbnNlcnQgZmFjdCBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIGZhY3RzIGZhY3QgbGlzdCB0byBhZGQgLyB1cGRhdGVcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRGYWN0czxUID0gdW5rbm93bj4oZmFjdHM6IEZhY3Q8VD4gfCBGYWN0PFQ+W10pIHtcbiAgICAoQXJyYXkuaXNBcnJheShmYWN0cykgPyBmYWN0cyA6IFtmYWN0c10pLmZvckVhY2goKHsgaWQsIHZhbHVlJCB9KSA9PlxuICAgICAgdGhpcy5yZXRyaWV2ZU9yQ3JlYXRlRmFjdFN0cmVhbShpZCwgdmFsdWUkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBydWxlIGluIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNldHNcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRSdWxlc2V0cyhydWxlc2V0czogUnVsZXNldFtdKSB7XG4gICAgdGhpcy5lbmdpbmVEZWJ1Zz8uYWRkQXZhaWxhYmxlUnVsZXNldHMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5ydWxlc2V0TWFwU3ViamVjdC5uZXh0KFxuICAgICAgcnVsZXNldHMucmVkdWNlKChhY2NSdWxlc2V0LCBydWxlc2V0KSA9PiB7XG4gICAgICAgIGFjY1J1bGVzZXRbcnVsZXNldC5pZF0gPSBuZXcgUnVsZXNldEV4ZWN1dG9yKHJ1bGVzZXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gYWNjUnVsZXNldDtcbiAgICAgIH0sIHsgLi4udGhpcy5ydWxlc2V0TWFwU3ViamVjdC52YWx1ZSB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBvcGVyYXRvciBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIG9wZXJhdG9ycyBvcGVyYXRvciBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9ycyhvcGVyYXRvcnM6IChPcGVyYXRvcjxhbnksIGFueT4gfCBVbmFyeU9wZXJhdG9yPGFueT4pW10pIHtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IG9wZXJhdG9ycy5yZWR1Y2UoKGFjYywgb3BlcmF0b3IpID0+IHtcbiAgICAgIGFjY1tvcGVyYXRvci5uYW1lXSA9IG9wZXJhdG9yO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7IC4uLnRoaXMub3BlcmF0b3JzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZXJhdG9yIHRvIGFwcGx5IG9uIGEgc3RyZWFtIG9mIHJ1bGVzZXRzIGlkc1xuICAgKiBSZXR1cm5zIGEgc3RyZWFtIG9mIGFjdGlvbnMgb3V0cHV0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJ1bGVzZXRzSWRzXG4gICAqL1xuICBwdWJsaWMgZ2V0RXZlbnRTdHJlYW08VCBleHRlbmRzIEFjdGlvbkJsb2NrID0gQWN0aW9uQmxvY2s+KCk6IChydWxlc2V0c0lkcyQ6IE9ic2VydmFibGU8c3RyaW5nW10gfCB1bmRlZmluZWQ+KSA9PiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiAocnVsZXNldHNJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPikgPT5cbiAgICAgIHJ1bGVzZXRzSWRzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJ1bGVTZXRzKSA9PiB0aGlzLnJ1bGVzZXRNYXBTdWJqZWN0LnBpcGUodGhpcy5wcmVwYXJlQWN0aW9uc1N0cmVhbTxUPihydWxlU2V0cykpKSxcbiAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25zU3RyZWFtT3V0cHV0KClcbiAgICAgICk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgZmFjdHMgbmFtZXMgKi9cbiAgcHVibGljIGdldFJlZ2lzdGVyZWRGYWN0c05hbWVzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZhY3RNYXApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9mYWN0L2ZhY3QuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5cbi8qKiBSZXByZXNlbnRzIGFsbCB0aGUgc3VwcG9ydGVkIGZhY3RzIHR5cGVzIFRPQ0hFQ0sgdXRpbHMuRGF0ZSB2cyBEYXRlICovXG5leHBvcnQgdHlwZSBGYWN0cyA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgRGF0ZSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xuXG4vKiogRmFjdCBiYXNpYyB2YWx1ZSB0eXBlICovXG5leHBvcnQgdHlwZSBGYWN0QmFzaWNWYWx1ZXMgPSBudW1iZXIgfCBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXIgW10gfCB1bmRlZmluZWQ7XG5cbi8qKiBNYXAgb2YgZmFjdCBuYW1lIC8gdHlwZSBwYWlycyAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0RGVmaW5pdGlvbnMge1xuICBbZmFjdE5hbWU6IHN0cmluZ106IHVua25vd247XG59XG5cbi8qKiBSZXR1cm4gdHlwZSBvZiBhIGZhY3QgZmFjdG9yeSAqL1xuZXhwb3J0IHR5cGUgRmFjdEZhY3RvcnlSZXR1cm48VD4gPSBPYnNlcnZhYmxlPFQ+IHwgUHJvbWlzZTxUPiB8IFQ7XG5cbi8qKiBTZXQgb2YgZmFjdHMgKi9cbmV4cG9ydCB0eXBlIEZhY3RTZXQ8VCBleHRlbmRzIEZhY3REZWZpbml0aW9ucz4gPSB7XG4gIFtQIGluIGtleW9mIFRdOiBGYWN0RmFjdG9yeVJldHVybjxUW1BdIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59O1xuXG4vKiogRmFjdCBzdHJlYW0gdHlwZSAqL1xuZXhwb3J0IHR5cGUgRmFjdFZhbHVlU3RyZWFtPFQgPSB1bmtub3duPiA9IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG5cbi8qKiBGYWN0IHN0cmVhbSAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0PFQgPSB1bmtub3duPiB7XG4gIC8qKiBGYWN0IElEICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFN0cmVhbSBvZiB0aGUgZmFjdCBmYWN0IHZhbHVlICovXG4gIHZhbHVlJDogRmFjdFZhbHVlU3RyZWFtPFQ+O1xufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { combineLatest } from 'rxjs';
|
|
2
|
-
import { map, shareReplay, switchMap } from 'rxjs/operators';
|
|
1
|
+
import { combineLatest, } from 'rxjs';
|
|
2
|
+
import { map, shareReplay, switchMap, } from 'rxjs/operators';
|
|
3
3
|
/**
|
|
4
4
|
* Filter the actions outputted by the rules engine, based on active rulesets
|
|
5
5
|
* @param restrictiveRuleSets list of rules sets to get the event stream for
|
|
@@ -7,13 +7,13 @@ import { map, shareReplay, switchMap } from 'rxjs/operators';
|
|
|
7
7
|
export function filterRulesetsEventStream(restrictiveRuleSets) {
|
|
8
8
|
return (source$) => source$.pipe(switchMap((ruleSetExecutorMap) => {
|
|
9
9
|
const rulesets = Object.keys(ruleSetExecutorMap).map((rulesetId) => ruleSetExecutorMap[rulesetId].engineRuleset);
|
|
10
|
-
const activeRulesets = restrictiveRuleSets
|
|
11
|
-
Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.
|
|
12
|
-
Object.values(rulesets);
|
|
10
|
+
const activeRulesets = restrictiveRuleSets
|
|
11
|
+
? Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.includes(ruleSet.id))
|
|
12
|
+
: Object.values(rulesets);
|
|
13
13
|
return combineLatest(activeRulesets.map((ruleset) => ruleset.rulesResultsSubject$)).pipe(map((item) => item.reduce((acc, currentValue) => {
|
|
14
14
|
acc.push(...currentValue);
|
|
15
15
|
return acc;
|
|
16
16
|
}, [])));
|
|
17
17
|
}), shareReplay(1));
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJ1bGVzZXQtZXZlbnQub3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2hlbHBlcnMvZmlsdGVyLXJ1bGVzZXQtZXZlbnQub3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGFBQWEsR0FFZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBS3hCOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxtQkFBOEI7SUFDdEUsT0FBTyxDQUFDLE9BQW9ELEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNFLFNBQVMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakgsTUFBTSxjQUFjLEdBQUcsbUJBQW1CO1lBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QixPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEYsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQzlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgUnVsZXNldEV4ZWN1dG9yLFxufSBmcm9tICcuLi9ydWxlc2V0LWV4ZWN1dG9yJztcblxuLyoqXG4gKiBGaWx0ZXIgdGhlIGFjdGlvbnMgb3V0cHV0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUsIGJhc2VkIG9uIGFjdGl2ZSBydWxlc2V0c1xuICogQHBhcmFtIHJlc3RyaWN0aXZlUnVsZVNldHMgbGlzdCBvZiBydWxlcyBzZXRzIHRvIGdldCB0aGUgZXZlbnQgc3RyZWFtIGZvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbShyZXN0cmljdGl2ZVJ1bGVTZXRzPzogc3RyaW5nW10pIHtcbiAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiBzb3VyY2UkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChydWxlU2V0RXhlY3V0b3JNYXApID0+IHtcbiAgICAgIGNvbnN0IHJ1bGVzZXRzID0gT2JqZWN0LmtleXMocnVsZVNldEV4ZWN1dG9yTWFwKS5tYXAoKHJ1bGVzZXRJZCkgPT4gcnVsZVNldEV4ZWN1dG9yTWFwW3J1bGVzZXRJZF0uZW5naW5lUnVsZXNldCk7XG4gICAgICBjb25zdCBhY3RpdmVSdWxlc2V0cyA9IHJlc3RyaWN0aXZlUnVsZVNldHNcbiAgICAgICAgPyBPYmplY3QudmFsdWVzKHJ1bGVzZXRzKS5maWx0ZXIoKHJ1bGVTZXQpID0+IHJlc3RyaWN0aXZlUnVsZVNldHMuaW5jbHVkZXMocnVsZVNldC5pZCkpXG4gICAgICAgIDogT2JqZWN0LnZhbHVlcyhydWxlc2V0cyk7XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFjdGl2ZVJ1bGVzZXRzLm1hcCgocnVsZXNldCkgPT4gcnVsZXNldC5ydWxlc1Jlc3VsdHNTdWJqZWN0JCkpLnBpcGUoXG4gICAgICAgIG1hcCgoaXRlbSkgPT4gaXRlbS5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgYWNjLnB1c2goLi4uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSkpKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuIl19
|