@wemake4u/form-player-se 1.0.44 → 1.0.45
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/esm2022/lib/controls/control.mjs +8 -3
- package/esm2022/lib/controls/factory.mjs +33 -33
- package/esm2022/lib/directives/grid.directive.mjs +10 -2
- package/esm2022/lib/directives/tabcontrol.directive.mjs +17 -5
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +12 -7
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +27 -7
- package/esm2022/lib/services/compute.service.mjs +2 -2
- package/esm2022/lib/services/disable.service.mjs +2 -2
- package/esm2022/lib/services/programmability.service.mjs +4 -3
- package/esm2022/lib/services/validation.service.mjs +2 -2
- package/esm2022/lib/utils/groupByRow.mjs +2 -1
- package/esm2022/public-api.mjs +33 -1
- package/fesm2022/wemake4u-form-player-se.mjs +76 -24
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/controls/factory.d.ts +1 -1
- package/lib/directives/tabcontrol.directive.d.ts +3 -1
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +2 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +3 -0
- package/lib/services/programmability.service.d.ts +1 -1
- package/lib/utils/groupByRow.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +32 -0
- package/esm2022/lib/utils/patch.mjs +0 -17
- package/lib/utils/patch.d.ts +0 -1
|
@@ -52,7 +52,7 @@ export class ComputeService {
|
|
|
52
52
|
const result = this.programmability.evaluate(formGroup, expression, { cacheable: false });
|
|
53
53
|
assignValue(result);
|
|
54
54
|
};
|
|
55
|
-
const dependencies = this.programmability.getDependencies(toFeelable({
|
|
55
|
+
const dependencies = this.programmability.getDependencies(formGroup, toFeelable({
|
|
56
56
|
expression: expression,
|
|
57
57
|
deactivate: deactivate
|
|
58
58
|
})).filter(dep => dep !== key);
|
|
@@ -74,4 +74,4 @@ export class ComputeService {
|
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService, decorators: [{
|
|
75
75
|
type: Injectable
|
|
76
76
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvY29tcHV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBR2Y7SUFDRTtJQUZaLFlBQ1UsZUFBdUMsRUFDckMsV0FBd0I7UUFEMUIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFtQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBNkIsRUFBRSxPQUF3QixFQUNuRSxXQUFzQixFQUFFLFNBQWM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUE2QjtRQUMzQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsU0FBUyxFQUFFLFVBQVUsQ0FBQztRQUN6QyxPQUFP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OzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29tcHV0ZVNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBDb21wdXRlQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXB1dGVDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbXB1dGVDb2xsZWN0aW9uLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwgcGFyZW50R3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50OiBhbnkpXHJcbiAge1xyXG4gICAgaWYgKCFjb2xsZWN0aW9uLmhhcyhjb250cm9sKSAmJiB0aGlzLmNhbkFkZFRvQ29sbGVjdGlvbihjb21wb25lbnQpKSB7XHJcbiAgICAgIGNvbGxlY3Rpb24uc2V0KGNvbnRyb2wsIHsgY29tcG9uZW50LCBwYXJlbnRHcm91cCB9KTtcclxuICAgIH0gICAgICBcclxuICB9XHJcblxyXG4gIHNldHVwQ29sbGVjdGlvbihjb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvbikge1xyXG4gICAgY29sbGVjdGlvbi5mb3JFYWNoKChjb21wdXRlQ29udGV4dCwgY29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLmFwcGx5RXhwcmVzc2lvbihjb250cm9sLCBjb21wdXRlQ29udGV4dCk7ICAgICAgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FuQWRkVG9Db2xsZWN0aW9uKGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleHByZXNzaW9uID0gY29tcG9uZW50Py5leHByZXNzaW9uO1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlFeHByZXNzaW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29udGV4dDogQ29tcHV0ZUNvbnRleHQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRleHQucGFyZW50R3JvdXA7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBrZXlcclxuICAgICAgLCBleHByZXNzaW9uXHJcbiAgICAgICwgY29uZGl0aW9uYWwgfSA9IGNvbnRleHQuY29tcG9uZW50ID8/IHt9O1xyXG5cclxuICAgIGNvbnN0IGRlYWN0aXZhdGUgPSBjb25kaXRpb25hbD8uaGlkZTtcclxuXHJcbiAgICBjb25zdCBsb2dDb21wdXRlZCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkNvbXB1dGVcIiwgY29udHJvbCwgeyB2YWx1ZTogdmFsdWUsIHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGFzc2lnblZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgbG9nQ29tcHV0ZWQodmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLnBhdGNoKGNvbnRyb2wsIHZhbHVlLCB7IHN0cmljdDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGV4cHJlc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcclxuICAgICAgICBjb25zdCBhcHBseUV4cHJlc3Npb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGRlYWN0aXZhdGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRGVhY3RpdmF0ZSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXAsIGRlYWN0aXZhdGUsIHsgY2FjaGVhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgaWYgKCEhaXNEZWFjdGl2YXRlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGV4cHJlc3Npb24sIHsgY2FjaGVhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCB0b0ZlZWxhYmxlKHtcclxuICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24sXHJcbiAgICAgICAgICBkZWFjdGl2YXRlOiBkZWFjdGl2YXRlXHJcbiAgICAgICAgfSkpLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVDb250ZXh0IHtcclxuICBwYXJlbnRHcm91cDogRm9ybUdyb3VwO1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb21wdXRlQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXB1dGVDb250ZXh0PjtcclxuIl19
|
|
@@ -51,7 +51,7 @@ export class DisableService {
|
|
|
51
51
|
else if (typeof disabled === 'string') {
|
|
52
52
|
if (this.programmability.isExpression(disabled)) {
|
|
53
53
|
const expression = this.programmability.getExpression(disabled);
|
|
54
|
-
const dependencies = this.programmability.getDependencies(expression)
|
|
54
|
+
const dependencies = this.programmability.getDependencies(formGroup, expression)
|
|
55
55
|
.filter(dep => dep !== key);
|
|
56
56
|
const applyExpression = () => {
|
|
57
57
|
const result = this.programmability.evaluateBoolean(formGroup, disabled, { cacheable: false });
|
|
@@ -80,4 +80,4 @@ export class DisableService {
|
|
|
80
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisableService, decorators: [{
|
|
81
81
|
type: Injectable
|
|
82
82
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZGlzYWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFHZjtJQUNFO0lBRlosWUFDVSxlQUF1QyxFQUNyQyxXQUF3QjtRQUQxQixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDcEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxHQUFHLEVBQW1DLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUE2QixFQUFFLE9BQXdCLEVBQUUsV0FBc0IsRUFDM0YsU0FBYztRQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQTZCO1FBQzNDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTLENBQUMsU0FBb0IsRUFBRSxPQUF3QixFQUFFLE9BQXVCO1FBQ3ZGLDhEQUE4RDtRQUM5RCxrRkFBa0Y7UUFDbEYsTUFBTSxFQUNKLEdBQUcsRUFDRCxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUV6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRyxDQUFDLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxPQUFPLENBQUMsUUFBUTtvQkFBRSxPQUFPO2dCQUM3QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxPQUFPLENBQUMsT0FBTztvQkFBRSxPQUFPO2dCQUM1QixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pCLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUNJLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztxQkFDN0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7b0JBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDL0YsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUM7Z0JBQ0YsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTt3QkFDdkQsZUFBZSxFQUFFLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBYztRQUN2QyxNQUFNLFFBQVEsR0FBRyxTQUFTLEVBQUUsUUFBUSxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxRQUFRLEtBQUssU0FBUztlQUMvQixPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQTVFVSxjQUFjOzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGlzYWJsZVNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBEaXNhYmxlQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIERpc2FibGVDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhcmVudEdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICghY29sbGVjdGlvbi5oYXMoY29udHJvbCkgJiYgdGhpcy5jYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50KSkge1xyXG4gICAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IHBhcmVudEdyb3VwLCBjb21wb25lbnQgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogRGlzYWJsZUNvbGxlY3Rpb24pIHtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaCgoZGlzYWJsZUNvbnRleHQsIGNvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5hcHBseVJ1bGUoZGlzYWJsZUNvbnRleHQucGFyZW50R3JvdXAsIGNvbnRyb2wsIGRpc2FibGVDb250ZXh0KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVJ1bGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29udGV4dDogRGlzYWJsZUNvbnRleHQpOiB2b2lkIHtcclxuICAgIC8vIHNlIHJpYWJpbGl0byB1biBGb3JtR3JvdXAgdmVuZ29ubyByaWFiaWxpdGF0byB0dXR0aSBpIGNoaWxkXHJcbiAgICAvLyBtZW50cmUgZG92cmViYmVybyBlc3NlcmUgcml2YWx1dGF0aSBzZSBoYW5ubyB1bmEgY29uZGl6aW9uZSBvIHVuIHZhbG9yZSBzdGF0aWMuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGtleVxyXG4gICAgICAsIGRpc2FibGVkIH0gPSBjb250ZXh0LmNvbXBvbmVudCA/PyB7fTtcclxuXHJcbiAgICBjb25zdCBsb2dEaXNhYmxlZCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSA/IFwiRGlzYWJsZVwiIDogXCJFbmFibGVcIiwgY29udHJvbCwgeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCksIGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBkaXNhYmxlQ29udHJvbCA9ICh2YWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICBsb2dEaXNhYmxlZCh2YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuZW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgbG9nRGlzYWJsZWQodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGRpc2FibGVkID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgZGlzYWJsZUNvbnRyb2woZGlzYWJsZWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGRpc2FibGVkID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGRpc2FibGVkKSkge1xyXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXRFeHByZXNzaW9uKGRpc2FibGVkKTtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCBleHByZXNzaW9uKVxyXG4gICAgICAgICAgLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG4gICAgICAgIGNvbnN0IGFwcGx5RXhwcmVzc2lvbiA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXAsIGRpc2FibGVkLCB7IGNhY2hlYWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgICBkaXNhYmxlQ29udHJvbChyZXN1bHQpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS53YXRjaChmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBhcHBseUV4cHJlc3Npb24oKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcHBseUV4cHJlc3Npb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRpc2FibGVkID0gY29tcG9uZW50Py5kaXNhYmxlZDtcclxuICAgIHJldHVybiB0eXBlb2YgZGlzYWJsZWQgPT09ICdib29sZWFuJ1xyXG4gICAgICB8fCB0eXBlb2YgZGlzYWJsZWQgPT09ICdzdHJpbmcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXNhYmxlQ29udGV4dCB7XHJcbiAgcGFyZW50R3JvdXA6IEZvcm1Hcm91cDtcclxuICBjb21wb25lbnQ6IGFueVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaXNhYmxlQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIERpc2FibGVDb250ZXh0PjtcclxuIl19
|
|
@@ -140,8 +140,9 @@ export class ProgrammabilityService {
|
|
|
140
140
|
watch(formGroup, dependencies, callback) {
|
|
141
141
|
this.watchingDependencies(formGroup, dependencies, callback);
|
|
142
142
|
}
|
|
143
|
-
getDependencies(expression) {
|
|
144
|
-
|
|
143
|
+
getDependencies(formGroup, expression) {
|
|
144
|
+
const context = this.getContext(formGroup);
|
|
145
|
+
return this.feelService.getDependencies(expression, context);
|
|
145
146
|
}
|
|
146
147
|
get verbose() {
|
|
147
148
|
return this._verbose;
|
|
@@ -475,4 +476,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
475
476
|
}] }, { type: i12.ScopeService, decorators: [{
|
|
476
477
|
type: Optional
|
|
477
478
|
}] }] });
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW1CLFNBQVMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQWExRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUdoRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUduQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNZO0lBQ0E7SUFaeEIsWUFBb0IsV0FBd0IsRUFDaEMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFdBQXlCLEVBQ3pCLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxVQUFzQixFQUNWLFFBQXlCLEVBQ3pCLEtBQW1CO1FBWnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVC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amVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGZWVsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZlZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjb3BlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnNvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9qc29uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWFrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlYWsuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmliZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpYmUuc2VydmljZSc7XHJcbmltcG9ydCB7IHRvUHJveHkgfSBmcm9tICcuLi91dGlscy9wcm94eSc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUGF0aCwgbWF0Y2hQYXRoIH0gZnJvbSAnLi4vY29tbW9uL3BhdGgnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5cclxuY29uc3QgU3RhdHVzRGVwZW5kZW5jeSA9IFwiJHN0YXR1c1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVlbFNlcnZpY2U6IEZlZWxTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgd2Vha1NlcnZpY2U6IFdlYWtTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybWF0dGVyU2VydmljZTogRm9ybWF0dGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIEpzb25TZXJ2aWNlIDogSnNvblNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmdW5jdGlvblNlcnZpY2U6IEZ1bmN0aW9uU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGdsb2JhbFNlcnZpY2U6IEdsb2JhbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBzdWJzY3JpYmVTZXJ2aWNlOiBTdWJzY3JpYmVTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmV2YWx1YXRvclByb3ZpZGVycyA9IFtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZSxcclxuICAgICAgdGhpcy5mdW5jdGlvblNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZSxcclxuICAgICAgdGhpcy5Kc29uU2VydmljZSxcclxuICAgICAgdGhpcy5yZWdpc3RlciAgIFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBHbG9iYWwgUHJvcGVydGllczpcclxuICAgIC0gZmVlbC1kaWFnbm9zdGljczogXCJvblwiLCBcIm9mZlwiXHJcbiAgICAtIGZlZWwtY2FjaGVhYmxlOiBcIm9uXCIsIFwib2ZmXCJcclxuICAqL1xyXG5cclxuICBwcml2YXRlIHByZWRlZmluZWRGdW5jdGlvbnMhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBwcml2YXRlIGV2YWx1YXRvclByb3ZpZGVyczogSUV2YWx1YXRvclByb3ZpZGVyW10gPSBbXTtcclxuXHJcbiAgYWRkRXZhbHVhdG9yUHJvdmlkZXJzKGV2YWx1YXRvclByb3ZpZGVyOiBJRXZhbHVhdG9yUHJvdmlkZXIpOiB2b2lkIHtcclxuICAgIGlmIChldmFsdWF0b3JQcm92aWRlcikge1xyXG4gICAgICB0aGlzLmV2YWx1YXRvclByb3ZpZGVycy5wdXNoKGV2YWx1YXRvclByb3ZpZGVyKTtcclxuICAgICAgdGhpcy5wcmVkZWZpbmVkRnVuY3Rpb25zID0gdGhpcy5nZXRQcmVkZWZpbmVkRnVuY3Rpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0V4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0LnN0YXJ0c1dpdGgoXCI9XCIpO1xyXG4gIH07XHJcblxyXG4gIGdldEV4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odGV4dCkpXHJcbiAgICAgIHJldHVybiB0ZXh0IS5zdWJzdHJpbmcoMSk7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9O1xyXG5cclxuICBldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKSBhcyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWUgPz8gXCJcIjtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKSBhcyBib29sZWFuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZU51bWJlcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKSBhcyBudW1iZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0geyB9KTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcblxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGVtcGxhdGUpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWxUZW1wbGF0ZShmb3JtR3JvdXAsIHRlbXBsYXRlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBpbnB1dDogYW55LCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBpbnB1dCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGludmFsaWRhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbih0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpKTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGludmFsaWRhdGVBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmludmFsaWRhdGVBbGxFeHByZXNzaW9uKCk7ICAgICAgXHJcbiAgfVxyXG5cclxuICB3YXRjaChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbjogc3RyaW5nKTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIGdldCB2ZXJib3NlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZlcmJvc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FjaGVhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlYWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ZlcmJvc2UgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY2FjaGVhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9ySGFuZGxlcjogYW55ID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XHJcblxyXG4gIHByaXZhdGUgSW5pdCgpIHtcclxuICAgIHRoaXMuX2NhY2hlYWJsZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtY2FjaGVhYmxlXCIsIFwib25cIikgPT09IFwib25cIjtcclxuICAgIHRoaXMuX3ZlcmJvc2UgPSB0aGlzLmdsb2JhbFNlcnZpY2UuZ2V0UHJvcGVydHkoXCJmZWVsLWRpYWdub3N0aWNzXCIsIFwib2ZmXCIpID09PSBcIm9uXCI7XHJcbiAgICBpZiAodGhpcy52ZXJib3NlKVxyXG4gICAgICBjb25zb2xlLmxvZyhcIlByb2dyYW1tYWJpbGl0eSBTZXJ2aWNlIEluaXRpYWxpemVkXCIsIHsgY2FjaGVhYmxlOiB0aGlzLmNhY2hlYWJsZSwgdmVyYm9zZTogdGhpcy52ZXJib3NlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsVW5hcnlUZXN0KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGlucHV0OiBhbnksIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nRXZhbHVhdGlvbiA9IChleHByZXNzaW9uOiBzdHJpbmcsIHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXZhbHVhdGUgVW5hcnlUZXN0OlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxVbmFyeVRlc3QoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucylcclxuICAgICAgICAsIGlucHV0KTtcclxuICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nSW52YWxpZGF0ZSA9IChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkYXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBFeHByZXNzaW9uOlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxFeHByZXNzaW9uKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucykpO1xyXG4gICAgICAgIGxvZ0V2YWx1YXRpb24oZXhwcmVzc2lvbiwgcmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbG9nRXJyb3IoZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcblxyXG4gICAgaWYgKGNhY2hlYWJsZSkge1xyXG5cclxuICAgICAgY29uc3QgaWdub3JlRGVwcyA9IG9wdGlvbnMuaWdub3JlRGVwcyA/PyBmYWxzZTtcclxuXHJcbiAgICAgIGlmICghaWdub3JlRGVwcykge1xyXG4gICAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaCgke2V4cHJlc3Npb259KWA7XHJcblxyXG4gICAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53YXRjaGluZ0V4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgbG9nSW52YWxpZGF0ZShleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSwgbnVsbCwgdGhpcy5vbkVycm9ySGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcblxyXG4gICAgY29uc3QgbG9nRXJyb3IgPSAoZXhwcmVzc2lvbjogc3RyaW5nLCBlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUud2FybihleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucywgZXJyb3IgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0ludmFsaWRhdGUgPSAoZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZGF0ZSBUZW1wbGF0ZTpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxUZW1wbGF0ZShleHByZXNzaW9uXHJcbiAgICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKTtcclxuICAgICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhY2hlYWJsZSA9IG9wdGlvbnMuY2FjaGVhYmxlID8/IHRoaXMuY2FjaGVhYmxlO1xyXG4gICAgXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaFRlbXBsYXRlKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgbG9nSW52YWxpZGF0ZShleHByZXNzaW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgZXhwcmVzc2lvbiwgZXZhbHVhdGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmFsdWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9yKHJlc3VsdDogYW55KTogYW55IHtcclxuICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0LnBpcGUoXHJcbiAgICAgICAgdGFwKHtcclxuICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmVkZWZpbmVkRnVuY3Rpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzLnJlZHVjZSgoYWNjLCBwcm92aWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmFjYyxcclxuICAgICAgICAuLi5wcm92aWRlci5nZXRDb250ZXh0KClcclxuICAgICAgfTtcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmVlbEZ1bmN0aW9ucygpXHJcbiAge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNWYWxpZEV4cHJlc3Npb246IHRoaXMuZmVlbFNlcnZpY2UuaXNWYWxpZEV4cHJlc3Npb24sXHJcbiAgICAgIGlzVmFsaWRVbmFyeVRlc3Q6IHRoaXMuZmVlbFNlcnZpY2UuaXNWYWxpZFVuYXJ5VGVzdFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUZ1bmN0aW9ucyhmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChmb3JtR3JvdXApO1xyXG5cclxuICAgIGlmICghcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnBhcmVudC52YWx1ZSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiB0b1Byb3h5KHBhcmVudCksICAgICAgXHJcbiAgICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiBzZWxmLmdldFBhcmVudENvbnRleHQocGFyZW50KTsgfSxcclxuICAgIH07ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb290Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCByb290ID0gZm9ybUdyb3VwPy5yb290O1xyXG5cclxuICAgIGlmICghcm9vdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcm9vdC52YWx1ZTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgOiBGb3JtR3JvdXAgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBmb3JtR3JvdXAucGFyZW50O1xyXG5cclxuICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcGFyZW50ID0gcGFyZW50Py5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcblxyXG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSBmb3JtR3JvdXA/LnZhbHVlID8/IHsgfTtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgZ2V0IGNvbnNvbGUoKSB7IHJldHVybiB0b1Byb3h5KGNvbnNvbGUpOyB9LFxyXG4gICAgICBnZXQgcGFyZW50KCkgeyByZXR1cm4gc2VsZi5nZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cCk7IH0sXHJcbiAgICAgIGdldCByb290KCkgeyByZXR1cm4gc2VsZi5nZXRSb290Q29udGV4dChmb3JtR3JvdXApOyB9LFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IHRvUHJveHkoZm9ybUdyb3VwKSxcclxuICAgICAgXzogdGhpcy5zY29wZT8uZ2V0Q29udGV4dCgpLFxyXG4gICAgICAuLi5iYXNlQ29udGV4dCxcclxuICAgICAgZm46IHtcclxuICAgICAgICAuLi50aGlzLnByZWRlZmluZWRGdW5jdGlvbnMsXHJcbiAgICAgICAgLi4udGhpcy5nZXRGb3JtRnVuY3Rpb25zKGZvcm1Hcm91cCksXHJcbiAgICAgICAgLi4udGhpcy5nZXRGZWVsRnVuY3Rpb25zKClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zLmV4dGVuZENvbnRleHQpIHtcclxuICAgICAgY29uc3QgZXh0ZW5kZWQgPSBvcHRpb25zLmV4dGVuZENvbnRleHQoKTtcclxuICAgICAgaWYgKGV4dGVuZGVkKSB7XHJcbiAgICAgICAgY29udGV4dCA9IHtcclxuICAgICAgICAgIC4uLmNvbnRleHQsXHJcbiAgICAgICAgICAuLi5leHRlbmRlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaGluZ0V4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvZ0RlcGVuZGVuY2llcyA9IChkZXBlbmRlbmNpZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkdldCBEZXBlbmRlbmNpZXM6XCIsIGV4cHJlc3Npb24sIGRlcGVuZGVuY2llcywgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgICBsb2dEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcclxuICAgIHRoaXMud2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCBkZXBlbmRlbmNpZXMsIGNhbGxiYWNrKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHdhdGNoaW5nVGVtcGxhdGVFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dEZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jaWVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJHZXQgVGVtcGxhdGUgRGVwZW5kZW5jaWVzOlwiLCBleHByZXNzaW9uLCBkZXBlbmRlbmNpZXMsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0VGVtcGxhdGVEZXBlbmRlbmNpZXMoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgICBsb2dEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcclxuICAgIHRoaXMud2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCBkZXBlbmRlbmNpZXMsIGNhbGxiYWNrKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHdhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBkZXBlbmRlbmNpZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvZ1dhdGNoaW5nID0gKGRlcGVuZGVuY2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCB0ZXh0ID0gQXJyYXkuaXNBcnJheShkZXBlbmRlbmNlKSA/IGRlcGVuZGVuY2Uuam9pbihcIi5cIikgOiBkZXBlbmRlbmNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIldhdGNoaW5nIGRlcGVuZGVuY2U6XCIsIHRleHQsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dWYWx1ZUNoYW5nZWQgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVmFsdWUgQ2hhbmdlZDpcIiwgY29udHJvbC52YWx1ZSwgeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCksIGNvbnRyb2wgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1N0YXR1c0NoYW5nZWQgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU3RhdHVzIENoYW5nZWQ6XCIsIGNvbnRyb2wuc3RhdHVzLCB7IHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgY29udHJvbCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nU2NvcGVSZWZyZXNoZWQgPSAocGF0aDogUGF0aCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlNjb3BlIFJlZnJlc2hlZDogXCIsIHBhdGgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB2YWx1ZVN1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVTZXJ2aWNlLnN1YnNjcmliZUNoYW5nZXMoY29udHJvbC52YWx1ZUNoYW5nZXMsIGNvbnRyb2wsIGNvbnRyb2wudmFsdWUsIHRoaXMuZGVzdHJveVJlZiwgY2FsbGJhY2ssIGxvZ1ZhbHVlQ2hhbmdlZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN0YXR1c1N1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVTZXJ2aWNlLnN1YnNjcmliZUNoYW5nZXM8Rm9ybUNvbnRyb2xTdGF0dXM+KHRoaXMuZm9ybVNlcnZpY2Uuc3RhdHVzQ2hhbmdlcyhjb250cm9sLCBjYWxsYmFjayksIGNvbnRyb2wsIGNvbnRyb2wuc3RhdHVzLCB0aGlzLmRlc3Ryb3lSZWYsIGNhbGxiYWNrLCBsb2dTdGF0dXNDaGFuZ2VkKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc3Vic2NyaWJlU2NvcGUgPSAoZGVwZW5kZW5jZTogUGF0aCkgPT4ge1xyXG4gICAgICB0aGlzLnNjb3BlLm9uUmVmcmVzaFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHBhdGgpID0+IHtcclxuICAgICAgICAgIGlmIChtYXRjaFBhdGgocGF0aCwgZGVwZW5kZW5jZSkpe1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICBsb2dTY29wZVJlZnJlc2hlZChkZXBlbmRlbmNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZUNvbnRyb2wgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAgICwgc3RhdHVzOiBib29sZWFuXHJcbiAgICAgICwgZGVwZW5kZW5jZTogc3RyaW5nIHwgc3RyaW5nW11cclxuICAgICkgPT4ge1xyXG4gICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgIHZhbHVlU3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN0YXR1c1N1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBpc1Njb3BlID0gKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogcGF0aCBpcyBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhdGgpICYmIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSBcIl9cIjtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBjb25zdCBbcGF0aCwgc3RhdHVzXSA9IHRoaXMucHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmNlKTtcclxuICAgICAgaWYgKGlzU2NvcGUocGF0aCkpIHtcclxuICAgICAgICBzdWJzY3JpYmVTY29wZShwYXRoLnNwbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2VydmljZS53YWl0Rm9yQ29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgICAgIHN1YnNjcmliZUNvbnRyb2woY29udHJvbCwgc3RhdHVzLCBkZXBlbmRlbmNlKTtcclxuICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRhdGVFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlKHRoaXMsIGV4cHJlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkYXRlQWxsRXhwcmVzc2lvbigpOiB2b2lkIHtcclxuICAgIHRoaXMud2Vha1NlcnZpY2UuaW52YWxpZGF0ZUFsbCh0aGlzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmN5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFtzdHJpbmcgfCBzdHJpbmdbXSwgYm9vbGVhbl0ge1xyXG4gICAgY29uc3Qgc3RhdHVzRGVwZW5kZW5jeSA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSlcclxuICAgICAgJiYgZGVwZW5kZW5jeS5sZW5ndGggPiAxXHJcbiAgICAgICYmIGRlcGVuZGVuY3lbMF0gPT09IFN0YXR1c0RlcGVuZGVuY3k7XHJcblxyXG4gICAgcmV0dXJuIHN0YXR1c0RlcGVuZGVuY3lcclxuICAgICAgPyBbZGVwZW5kZW5jeS5zbGljZSgxKSwgdHJ1ZV1cclxuICAgICAgOiBbZGVwZW5kZW5jeSwgZmFsc2VdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIGdldENvbnRleHQoc2NvcGU/OiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBpZ25vcmVEZXBzPzogYm9vbGVhbjtcclxuICBleHRlbmRDb250ZXh0PzogRXh0ZW5kQ29udGV4dEZuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRDb250ZXh0Rm4gPSAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4iXX0=
|
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW1CLFNBQVMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQWExRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUdoRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUduQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNZO0lBQ0E7SUFaeEIsWUFBb0IsV0FBd0IsRUFDaEMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFdBQXlCLEVBQ3pCLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxVQUFzQixFQUNWLFFBQXlCLEVBQ3pCLEtBQW1CO1FBWnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVC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QURsQyxVQUFVOzswQkFjSixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sU3RhdHVzLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtYXR0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWF0dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBKc29uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2pzb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYWtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2Vhay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaWJlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YnNjcmliZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdG9Qcm94eSB9IGZyb20gJy4uL3V0aWxzL3Byb3h5JztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQYXRoLCBtYXRjaFBhdGggfSBmcm9tICcuLi9jb21tb24vcGF0aCc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcblxyXG5jb25zdCBTdGF0dXNEZXBlbmRlbmN5ID0gXCIkc3RhdHVzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmZWVsU2VydmljZTogRmVlbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB3ZWFrU2VydmljZTogV2Vha1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmb3JtYXR0ZXJTZXJ2aWNlOiBGb3JtYXR0ZXJTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgSnNvblNlcnZpY2UgOiBKc29uU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZ1bmN0aW9uU2VydmljZTogRnVuY3Rpb25TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHN1YnNjcmliZVNlcnZpY2U6IFN1YnNjcmliZVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVnaXN0ZXI6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHNjb3BlOiBTY29wZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzID0gW1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmZ1bmN0aW9uU2VydmljZSxcclxuICAgICAgdGhpcy5mb3JtYXR0ZXJTZXJ2aWNlLFxyXG4gICAgICB0aGlzLkpzb25TZXJ2aWNlLFxyXG4gICAgICB0aGlzLnJlZ2lzdGVyICAgXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyA9IHRoaXMuZ2V0UHJlZGVmaW5lZEZ1bmN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIEdsb2JhbCBQcm9wZXJ0aWVzOlxyXG4gICAgLSBmZWVsLWRpYWdub3N0aWNzOiBcIm9uXCIsIFwib2ZmXCJcclxuICAgIC0gZmVlbC1jYWNoZWFibGU6IFwib25cIiwgXCJvZmZcIlxyXG4gICovXHJcblxyXG4gIHByaXZhdGUgcHJlZGVmaW5lZEZ1bmN0aW9ucyE6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gIHByaXZhdGUgZXZhbHVhdG9yUHJvdmlkZXJzOiBJRXZhbHVhdG9yUHJvdmlkZXJbXSA9IFtdO1xyXG5cclxuICBhZGRFdmFsdWF0b3JQcm92aWRlcnMoZXZhbHVhdG9yUHJvdmlkZXI6IElFdmFsdWF0b3JQcm92aWRlcik6IHZvaWQge1xyXG4gICAgaWYgKGV2YWx1YXRvclByb3ZpZGVyKSB7XHJcbiAgICAgIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzLnB1c2goZXZhbHVhdG9yUHJvdmlkZXIpO1xyXG4gICAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQuc3RhcnRzV2l0aChcIj1cIik7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih0ZXh0KSlcclxuICAgICAgcmV0dXJuIHRleHQhLnN1YnN0cmluZygxKTtcclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH07XHJcblxyXG4gIGV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIGJvb2xlYW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIG51bWJlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7IH0pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGVtcGxhdGUgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0ZW1wbGF0ZSlcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbFRlbXBsYXRlKGZvcm1Hcm91cCwgdGVtcGxhdGUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVVbmFyeShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0OiBhbnksIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIGlucHV0LCBvcHRpb25zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW52YWxpZGF0ZUFsbEV4cHJlc3Npb24oKTsgICAgICBcclxuICB9XHJcblxyXG4gIHdhdGNoKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBkZXBlbmRlbmNpZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcclxuICAgIHRoaXMud2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCBkZXBlbmRlbmNpZXMsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIGdldERlcGVuZGVuY2llcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nKTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKVxyXG4gICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZlcmJvc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmVyYm9zZTtcclxuICB9XHJcblxyXG4gIGdldCBjYWNoZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmVyYm9zZSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9jYWNoZWFibGUgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIG9uRXJyb3JIYW5kbGVyOiBhbnkgPSB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKTtcclxuXHJcbiAgcHJpdmF0ZSBJbml0KCkge1xyXG4gICAgdGhpcy5fY2FjaGVhYmxlID0gdGhpcy5nbG9iYWxTZXJ2aWNlLmdldFByb3BlcnR5KFwiZmVlbC1jYWNoZWFibGVcIiwgXCJvblwiKSA9PT0gXCJvblwiO1xyXG4gICAgdGhpcy5fdmVyYm9zZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtZGlhZ25vc3RpY3NcIiwgXCJvZmZcIikgPT09IFwib25cIjtcclxuICAgIGlmICh0aGlzLnZlcmJvc2UpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUHJvZ3JhbW1hYmlsaXR5IFNlcnZpY2UgSW5pdGlhbGl6ZWRcIiwgeyBjYWNoZWFibGU6IHRoaXMuY2FjaGVhYmxlLCB2ZXJib3NlOiB0aGlzLnZlcmJvc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgaW5wdXQ6IGFueSwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBVbmFyeVRlc3Q6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKVxyXG4gICAgICAgICwgaW5wdXQpO1xyXG4gICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dJbnZhbGlkYXRlID0gKGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkludmFsaWRhdGUgRXhwcmVzc2lvbjpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSk7XHJcbiAgICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcblxyXG4gICAgICBjb25zdCBpZ25vcmVEZXBzID0gb3B0aW9ucy5pZ25vcmVEZXBzID8/IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKCFpZ25vcmVEZXBzKSB7XHJcbiAgICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIGV4cHJlc3Npb24sIGV2YWx1YXRlLCBudWxsLCB0aGlzLm9uRXJyb3JIYW5kbGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbHVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbFRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nSW52YWxpZGF0ZSA9IChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkYXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nRXZhbHVhdGlvbiA9IChleHByZXNzaW9uOiBzdHJpbmcsIHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXZhbHVhdGUgVGVtcGxhdGU6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFRlbXBsYXRlKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCkpO1xyXG4gICAgICAgIGxvZ0V2YWx1YXRpb24oZXhwcmVzc2lvbiwgcmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbG9nRXJyb3IoZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcbiAgICBcclxuICAgIGlmIChjYWNoZWFibGUpIHtcclxuICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoVGVtcGxhdGUoJHtleHByZXNzaW9ufSlgO1xyXG5cclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXRjaGluZ1RlbXBsYXRlRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRXJyb3IocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQucGlwZShcclxuICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZWRlZmluZWRGdW5jdGlvbnMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ldmFsdWF0b3JQcm92aWRlcnMucmVkdWNlKChhY2MsIHByb3ZpZGVyKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uYWNjLFxyXG4gICAgICAgIC4uLnByb3ZpZGVyLmdldENvbnRleHQoKVxyXG4gICAgICB9O1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGZWVsRnVuY3Rpb25zKClcclxuICB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc1ZhbGlkRXhwcmVzc2lvbjogdGhpcy5mZWVsU2VydmljZS5pc1ZhbGlkRXhwcmVzc2lvbixcclxuICAgICAgaXNWYWxpZFVuYXJ5VGVzdDogdGhpcy5mZWVsU2VydmljZS5pc1ZhbGlkVW5hcnlUZXN0XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtRnVuY3Rpb25zKGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcclxuICAgIGlmIChmb3JtR3JvdXAgPT09IG51bGwpIHsgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGZvcm1Hcm91cCk7XHJcblxyXG4gICAgaWYgKCFwYXJlbnQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4ucGFyZW50LnZhbHVlLFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IHRvUHJveHkocGFyZW50KSwgICAgICBcclxuICAgICAgZ2V0IHBhcmVudCgpIHsgcmV0dXJuIHNlbGYuZ2V0UGFyZW50Q29udGV4dChwYXJlbnQpOyB9LFxyXG4gICAgfTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJvb3RDb250ZXh0KGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcclxuICAgIGlmIChmb3JtR3JvdXAgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IHJvb3QgPSBmb3JtR3JvdXA/LnJvb3Q7XHJcblxyXG4gICAgaWYgKCFyb290KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByb290LnZhbHVlOyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50KGZvcm1Hcm91cDogRm9ybUdyb3VwKSA6IEZvcm1Hcm91cCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGZvcm1Hcm91cC5wYXJlbnQ7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQ/LnBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRleHQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IGZvcm1Hcm91cD8udmFsdWUgPz8geyB9O1xyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICBnZXQgY29uc29sZSgpIHsgcmV0dXJuIHRvUHJveHkoY29uc29sZSk7IH0sXHJcbiAgICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiBzZWxmLmdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwKTsgfSxcclxuICAgICAgZ2V0IHJvb3QoKSB7IHJldHVybiBzZWxmLmdldFJvb3RDb250ZXh0KGZvcm1Hcm91cCk7IH0sXHJcbiAgICAgIGZvcm1Hcm91cDogKCkgPT4gdG9Qcm94eShmb3JtR3JvdXApLFxyXG4gICAgICBfOiB0aGlzLnNjb3BlPy5nZXRDb250ZXh0KCksXHJcbiAgICAgIC4uLmJhc2VDb250ZXh0LFxyXG4gICAgICBmbjoge1xyXG4gICAgICAgIC4uLnRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyxcclxuICAgICAgICAuLi50aGlzLmdldEZvcm1GdW5jdGlvbnMoZm9ybUdyb3VwKSxcclxuICAgICAgICAuLi50aGlzLmdldEZlZWxGdW5jdGlvbnMoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZXh0ZW5kQ29udGV4dCkge1xyXG4gICAgICBjb25zdCBleHRlbmRlZCA9IG9wdGlvbnMuZXh0ZW5kQ29udGV4dCgpO1xyXG4gICAgICBpZiAoZXh0ZW5kZWQpIHtcclxuICAgICAgICBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgLi4uY29udGV4dCxcclxuICAgICAgICAgIC4uLmV4dGVuZGVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY2llczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiR2V0IERlcGVuZGVuY2llczpcIiwgZXhwcmVzc2lvbiwgZGVwZW5kZW5jaWVzLCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvZ0RlcGVuZGVuY2llcyA9IChkZXBlbmRlbmNpZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkdldCBUZW1wbGF0ZSBEZXBlbmRlbmNpZXM6XCIsIGV4cHJlc3Npb24sIGRlcGVuZGVuY2llcywgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXRUZW1wbGF0ZURlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nV2F0Y2hpbmcgPSAoZGVwZW5kZW5jZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGRlcGVuZGVuY2UpID8gZGVwZW5kZW5jZS5qb2luKFwiLlwiKSA6IGRlcGVuZGVuY2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiV2F0Y2hpbmcgZGVwZW5kZW5jZTpcIiwgdGV4dCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1ZhbHVlQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJWYWx1ZSBDaGFuZ2VkOlwiLCBjb250cm9sLnZhbHVlLCB7IHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgY29udHJvbCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nU3RhdHVzQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJTdGF0dXMgQ2hhbmdlZDpcIiwgY29udHJvbC5zdGF0dXMsIHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBjb250cm9sIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dTY29wZVJlZnJlc2hlZCA9IChwYXRoOiBQYXRoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU2NvcGUgUmVmcmVzaGVkOiBcIiwgcGF0aCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZhbHVlU3Vic2NyaWJlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVNlcnZpY2Uuc3Vic2NyaWJlQ2hhbmdlcyhjb250cm9sLnZhbHVlQ2hhbmdlcywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgdGhpcy5kZXN0cm95UmVmLCBjYWxsYmFjaywgbG9nVmFsdWVDaGFuZ2VkKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc3RhdHVzU3Vic2NyaWJlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVNlcnZpY2Uuc3Vic2NyaWJlQ2hhbmdlczxGb3JtQ29udHJvbFN0YXR1cz4odGhpcy5mb3JtU2VydmljZS5zdGF0dXNDaGFuZ2VzKGNvbnRyb2wsIGNhbGxiYWNrKSwgY29udHJvbCwgY29udHJvbC5zdGF0dXMsIHRoaXMuZGVzdHJveVJlZiwgY2FsbGJhY2ssIGxvZ1N0YXR1c0NoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmVTY29wZSA9IChkZXBlbmRlbmNlOiBQYXRoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2NvcGUub25SZWZyZXNoXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocGF0aCkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1hdGNoUGF0aChwYXRoLCBkZXBlbmRlbmNlKSl7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIGxvZ1Njb3BlUmVmcmVzaGVkKGRlcGVuZGVuY2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc3Vic2NyaWJlQ29udHJvbCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICAgLCBzdGF0dXM6IGJvb2xlYW5cclxuICAgICAgLCBkZXBlbmRlbmNlOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgdmFsdWVTdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3RhdHVzU3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGlzU2NvcGUgPSAocGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBwYXRoIGlzIHN0cmluZ1tdID0+IHtcclxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGF0aCkgJiYgcGF0aC5sZW5ndGggPiAwICYmIHBhdGhbMF0gPT09IFwiX1wiO1xyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY2Ugb2YgZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgIGNvbnN0IFtwYXRoLCBzdGF0dXNdID0gdGhpcy5wcm9jZXNzRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2UpO1xyXG4gICAgICBpZiAoaXNTY29wZShwYXRoKSkge1xyXG4gICAgICAgIHN1YnNjcmliZVNjb3BlKHBhdGguc3BsaWNlKDEpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtU2VydmljZS5nZXRDb250cm9sKGZvcm1Hcm91cCwgcGF0aCwgeyBicmVha09uQXJyYXk6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgIHN1YnNjcmliZUNvbnRyb2woY29udHJvbCwgc3RhdHVzLCBkZXBlbmRlbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLndhaXRGb3JDb250cm9sKGZvcm1Hcm91cCwgcGF0aCwgeyBicmVha09uQXJyYXk6IHRydWUgfSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlQ29udHJvbChjb250cm9sLCBzdGF0dXMsIGRlcGVuZGVuY2UpO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52YWxpZGF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLndlYWtTZXJ2aWNlLmludmFsaWRhdGUodGhpcywgZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRhdGVBbGxFeHByZXNzaW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlQWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRGVwZW5kZW5jaWVzKGRlcGVuZGVuY3k6IHN0cmluZyB8IHN0cmluZ1tdKTogW3N0cmluZyB8IHN0cmluZ1tdLCBib29sZWFuXSB7XHJcbiAgICBjb25zdCBzdGF0dXNEZXBlbmRlbmN5ID0gQXJyYXkuaXNBcnJheShkZXBlbmRlbmN5KVxyXG4gICAgICAmJiBkZXBlbmRlbmN5Lmxlbmd0aCA+IDFcclxuICAgICAgJiYgZGVwZW5kZW5jeVswXSA9PT0gU3RhdHVzRGVwZW5kZW5jeTtcclxuXHJcbiAgICByZXR1cm4gc3RhdHVzRGVwZW5kZW5jeVxyXG4gICAgICA/IFtkZXBlbmRlbmN5LnNsaWNlKDEpLCB0cnVlXVxyXG4gICAgICA6IFtkZXBlbmRlbmN5LCBmYWxzZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFdmFsdWF0b3JQcm92aWRlciB7XHJcbiAgZ2V0Q29udGV4dChzY29wZT86IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVPcHRpb25zIHtcclxuICBjYWNoZWFibGU/OiBib29sZWFuO1xyXG4gIGlnbm9yZURlcHM/OiBib29sZWFuO1xyXG4gIGV4dGVuZENvbnRleHQ/OiBFeHRlbmRDb250ZXh0Rm47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEV4dGVuZENvbnRleHRGbiA9ICgpID0+IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiJdfQ==
|
|
@@ -158,7 +158,7 @@ export class ValidationService {
|
|
|
158
158
|
if (expressions.length === 0)
|
|
159
159
|
return;
|
|
160
160
|
const feelable = toFeelable(expressions);
|
|
161
|
-
const dependencies = this.programmability.getDependencies(feelable)
|
|
161
|
+
const dependencies = this.programmability.getDependencies(formGroup, feelable)
|
|
162
162
|
.filter(dep => dep !== key);
|
|
163
163
|
if (dependencies.length === 0)
|
|
164
164
|
return;
|
|
@@ -219,4 +219,4 @@ export class ValidationService {
|
|
|
219
219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ValidationService, decorators: [{
|
|
220
220
|
type: Injectable
|
|
221
221
|
}], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.ProgrammabilityService }] });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBR2xCO0lBQ0E7SUFGVixZQUNVLGVBQWdDLEVBQ2hDLGVBQXVDO1FBRHZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7SUFDakQsQ0FBQztJQUVPLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFbkMsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0MsRUFBRSxPQUF3QixFQUFFLFNBQW9CLEVBQUUsU0FB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QUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0lBQzVELENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUF3QjtRQUNwRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUE7SUFDNUQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFjO1FBQ3BDLE9BQU8sU0FBUyxFQUFFLElBQUksS0FBSyxVQUFVLENBQUM7SUFDeEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7d0dBOVFVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5pbXBvcnQgeyBDYWxsYmFja1JlZ2lzdHJ5IH0gZnJvbSAnLi4vdXRpbHMvQ2FsbGJhY2tSZWdpc3RyeSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3VwcHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2V0IHN1cHByZXNzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zdXBwcmVzcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1cHByZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1cHByZXNzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBWYWxpZGF0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+KCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAoIWNvbGxlY3Rpb24uaGFzKGNvbnRyb2wpICYmIHRoaXMuY2FuQWRkVG9Db2xsZWN0aW9uKGNvbXBvbmVudCkpIHsgXHJcbiAgICAgIGNvbGxlY3Rpb24uc2V0KGNvbnRyb2wsIHsgY29tcG9uZW50LCBmb3JtR3JvdXAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24pIHtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaCgoY29tcG9uZW50VmFsaWRhdGlvbiwgY29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRWYWxpZGF0aW9uLmNvbXBvbmVudDtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gY29tcG9uZW50VmFsaWRhdGlvbi5mb3JtR3JvdXA7XHJcbiAgICAgIGNvbnN0IHJlcXVpcmVkID0gY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQ7XHJcbiAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlcyhjb21wb25lbnQpO1xyXG4gICAgICBjb25zdCBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCB3YXRjaGluZ10gPSB0aGlzLnZhbGlkYXRlUnVsZXMoY3VycmVudEdyb3VwLCBjb21wb25lbnQsIHJlcXVpcmVkLCBydWxlcyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgICAgd2F0Y2hpbmcoY29udHJvbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmVxdWlyZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkVmFsaWRhdG9yKGNvbnRyb2wpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbkFkZFRvQ29sbGVjdGlvbihjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVxdWlyZWQgPSBjb21wb25lbnQ/LnZhbGlkYXRlPy5yZXF1aXJlZDtcclxuICAgIGNvbnN0IGhhc1J1bGVzID0gQXJyYXkuaXNBcnJheShjb21wb25lbnQ/LnZhbGlkYXRpb25zKSAmJiBjb21wb25lbnQudmFsaWRhdGlvbnMubGVuZ3RoID4gMDtcclxuICAgIHJldHVybiByZXF1aXJlZCA9PT0gdHJ1ZSB8fCBoYXNSdWxlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UnVsZXMoY29tcG9uZW50OiBhbnkpOiBWYWxpZGF0aW9uUnVsZVtdIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wb25lbnQudmFsaWRhdGlvbnMpKSByZXR1cm4gW107XHJcbiAgICByZXR1cm4gY29tcG9uZW50LnZhbGlkYXRpb25zPy5tYXAoKHJ1bGU6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGV4cHJlc3Npb246IHJ1bGUuZXhwcmVzc2lvbixcclxuICAgICAgICB0eXBlOiBydWxlLnR5cGUsXHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5sb2NhbGUocnVsZSwgJ21lc3NhZ2UnKSxcclxuICAgICAgICBhc3luYzogcnVsZS5hc3luYyA9PT0gdHJ1ZVxyXG4gICAgICB9IGFzIFZhbGlkYXRpb25SdWxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlUnVsZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50OiBhbnlcclxuICAgICwgcmVxdWlyZWQ/OiBib29sZWFuXHJcbiAgICAsIHZhbGlkYXRpb25zPzogVmFsaWRhdGlvblJ1bGVbXSk6IFtWYWxpZGF0b3JGbltdLCBBc3luY1ZhbGlkYXRvckZuW10sIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWRdIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IG5vV2F0Y2hpbmcgPSAoKSA9PiB7IH07XHJcblxyXG4gICAgaWYgKHJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmdldFJlcXVpcmVkVmFsaWRhdG9yKGNvbXBvbmVudCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWxpZGF0aW9ucykpIHtcclxuICAgICAgcmV0dXJuIFt2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIG5vV2F0Y2hpbmddO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbGxiYWNrcyA9IG5ldyBDYWxsYmFja1JlZ2lzdHJ5KCk7XHJcblxyXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgoaXRlbTogVmFsaWRhdGlvblJ1bGUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBsb2dnZXI6IFZhbGlkYXRpb25DYWxsYmFjayA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwpID0+XHJcbiAgICAgICAgdGhpcy5sb2dWYWxpZGF0aW9uKGNvbXBvbmVudCwgaXRlbSwgY29udHJvbCwgcmVzdWx0KTtcclxuICAgICAgXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIiB8fCBpdGVtLnR5cGUgPT09IFwiaW52YWxpZGF0ZVwiKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZGljYXRlID0gaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCJcclxuICAgICAgICAgID8gKHJlc3VsdDogYW55KSA9PiByZXN1bHRcclxuICAgICAgICAgIDogKHJlc3VsdDogYW55KSA9PiAhcmVzdWx0O1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5hc3luYykge1xyXG4gICAgICAgICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy5jcmVhdGVBc3luY1ZhbGlkYXRvcihmb3JtR3JvdXAsIGl0ZW0sIGNhbGxiYWNrcywgcHJlZGljYXRlLCBsb2dnZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5jcmVhdGVWYWxpZGF0b3IoZm9ybUdyb3VwLCBpdGVtLCBwcmVkaWNhdGUsIGxvZ2dlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgd2F0Y2hpbmcgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCA9PiB7XHJcbiAgICAgIHRoaXMud2F0Y2hGb3JWYWxpZGF0aW9uKGZvcm1Hcm91cCwgY29udHJvbCwgY29tcG9uZW50LmtleSwgdmFsaWRhdGlvbnMsIGNhbGxiYWNrcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCB3YXRjaGluZ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtOiBWYWxpZGF0aW9uUnVsZVxyXG4gICAgLCBwcmVkaWNhdGU6IChyZXN1bHQ6IGFueSkgPT4gYm9vbGVhblxyXG4gICAgLCBjYWxsYmFjazogVmFsaWRhdGlvbkNhbGxiYWNrKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN1cHByZXNzKSByZXR1cm4gbnVsbDtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVVbmFyeShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwgY29udHJvbC52YWx1ZSlcclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgXCJbVmFsaWRhdG9yXSBVbmV4cGVjdGVkIG9ic2VydmFibGUgcmVzdWx0IGluIGNyZWF0ZVZhbGlkYXRvclwiLFxyXG4gICAgICAgICAgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIHZhbHVlOiBjb250cm9sLnZhbHVlLCBydWxlOiBpdGVtIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gcHJlZGljYXRlKHJlc3VsdCkgPyBudWxsIDogdGhpcy52YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cCwgaXRlbSk7XHJcbiAgICAgIGNhbGxiYWNrKGNvbnRyb2wsIHZhbGlkYXRlKTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQXN5bmNWYWxpZGF0b3IoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgaXRlbTogVmFsaWRhdGlvblJ1bGVcclxuICAgICwgY2FsbGJhY2tzOiBDYWxsYmFja1JlZ2lzdHJ5XHJcbiAgICAsIHByZWRpY2F0ZTogKHJlc3VsdDogYW55KSA9PiBib29sZWFuXHJcbiAgICAsIGNhbGxiYWNrOiBWYWxpZGF0aW9uQ2FsbGJhY2spOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuXHJcbiAgICBjb25zdCB1bnNldFN0YXRlID0gKCkgPT4gKHsgdmFsdWU6IFN5bWJvbCgndW5zZXQnKSwgcmVzdWx0OiBudWxsIH0pO1xyXG5cclxuICAgIGxldCBzdGF0ZSA9IHVuc2V0U3RhdGUoKTtcclxuXHJcbiAgICBjYWxsYmFja3MucmVnaXN0ZXIoKCkgPT4gc3RhdGUgPSB1bnNldFN0YXRlKCkpO1xyXG5cclxuICAgIGNvbnN0IGdldFJlc3VsdCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBhbnkgPT4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4geyByZXR1cm4geyBcIj9cIjogY29udHJvbC52YWx1ZSB9IH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVPbmNlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSA9PiB7XHJcbiAgICAgIGNvbnN0IHYgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAoc3RhdGUudmFsdWUgIT09IHYpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0UmVzdWx0KGNvbnRyb2wpO1xyXG4gICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlID0gcHJlZGljYXRlKHZhbHVlKSA/IG51bGwgOiB0aGlzLnZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwLCBpdGVtKTtcclxuICAgICAgICAgICAgICBjYWxsYmFjayhjb250cm9sLCB2YWxpZGF0ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbQXN5bmNWYWxpZGF0b3JdIEV2YWx1YXRpb24gZXJyb3JcIiwgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIGVyciB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0ZSA9IHsgdmFsdWU6IHYsIHJlc3VsdDogcmVzdWx0IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gY29tcHV0ZU9uY2UoY29udHJvbCk7ICAgICAgXHJcbiAgICAgIGlmICghaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIltBc3luY1ZhbGlkYXRvcl0gRXhwZWN0ZWQgb2JzZXJ2YWJsZSBidXQgZ290IG5vbi1vYnNlcnZhYmxlIHJlc3VsdFwiLFxyXG4gICAgICAgICAgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIHZhbHVlOiBjb250cm9sLnZhbHVlLCByZXN1bHQsIHJ1bGU6IGl0ZW0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogVmFsaWRhdGlvblJ1bGUpIHtcclxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXAsIGl0ZW0ubWVzc2FnZSk7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSB7IGVycm9yOiB0cnVlLCBtZXNzYWdlIH07XHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbkVycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEZvclZhbGlkYXRpb24oZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAsIGtleTogc3RyaW5nXHJcbiAgICAsIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uUnVsZVtdXHJcbiAgICAsIGNhbGxiYWNrczogQ2FsbGJhY2tSZWdpc3RyeSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zKSkge1xyXG4gICAgICBjb25zdCBleHByZXNzaW9ucyA9IHZhbGlkYXRpb25zXHJcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIC5tYXAoaXRlbSA9PiBcIj1cIiArIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldEV4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSk7XHJcblxyXG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBmZWVsYWJsZSA9IHRvRmVlbGFibGUoZXhwcmVzc2lvbnMpO1xyXG5cclxuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RGVwZW5kZW5jaWVzKGZlZWxhYmxlKVxyXG4gICAgICAgIC5maWx0ZXIoZGVwID0+IGRlcCAhPT0ga2V5KTtcclxuXHJcbiAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS53YXRjaChmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgKCkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY2FsbGJhY2tzLmludm9rZSgpO1xyXG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nVmFsaWRhdGlvbiA9IChjb21wb25lbnQ6IGFueSwgcnVsZTogVmFsaWRhdGlvblJ1bGUsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LnZlcmJvc2UpIHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFwiW1ZhbGlkYXRpb25dIEZhaWxlZFwiLCB7IGNvbnRyb2wsIGNvbXBvbmVudCwgcnVsZSwgcmVzdWx0IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1ZhbGlkYXRpb25dIFN1Y2Nlc3NcIiwgeyBjb250cm9sLCBjb21wb25lbnQsIHJ1bGUsIHJlc3VsdCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBudWxsT2JzZXJ2ZXIgPSBvZihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkVmFsaWRhdG9yKGNvbXBvbmVudDogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgaWYgKHRoaXMuaXNUcnVlVmFsaWRhdG9yKGNvbXBvbmVudCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRUcnVlVmFsaWRhdG9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRWYWxpZGF0b3IuYmluZCh0aGlzKTtcclxuICAgIH0gIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1aXJlZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWlyZWRUcnVlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmIChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZShjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1RydWVWYWxpZGF0b3IoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb21wb25lbnQ/LnR5cGUgPT09ICdjaGVja2JveCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlKFRleHRzLCAnUmVxdWlyZWRGaWVsZCcpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBWYWxpZGF0aW9uQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb250ZXh0IHtcclxuICBjb21wb25lbnQ6IGFueTtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUnVsZSB7XHJcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xyXG4gIHR5cGU6IFwidmFsaWRhdGVcIiB8IFwiaW52YWxpZGF0ZVwiO1xyXG4gIG1lc3NhZ2U6IHN0cmluZyxcclxuICBhc3luYzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+O1xyXG4iXX0=
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBR2xCO0lBQ0E7SUFGVixZQUNVLGVBQWdDLEVBQ2hDLGVBQXVDO1FBRHZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7SUFDakQsQ0FBQztJQUVPLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFbkMsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZ0MsRUFBRSxPQUF3QixFQUFFLFNBQW9CLEVBQUUsU0FB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QUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtJQUM1RCxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBd0I7UUFDcEQsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0lBQzVELENBQUM7SUFFTyxlQUFlLENBQUMsU0FBYztRQUNwQyxPQUFPLFNBQVMsRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM3QyxDQUFDO3dHQTlRVSxpQkFBaUI7NEdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBpc09ic2VydmFibGUsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIGNhdGNoRXJyb3IsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdG9GZWVsYWJsZSB9IGZyb20gJy4uL3V0aWxzL2ZlZWxhYmxlJztcclxuaW1wb3J0IHsgQ2FsbGJhY2tSZWdpc3RyeSB9IGZyb20gJy4uL3V0aWxzL0NhbGxiYWNrUmVnaXN0cnknO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQHdlbWFrZTR1L2ludGVyYWN0JztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvblNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1cHByZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNldCBzdXBwcmVzcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc3VwcHJlc3MgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBzdXBwcmVzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zdXBwcmVzcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvbGxlY3Rpb24oKTogVmFsaWRhdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8QWJzdHJhY3RDb250cm9sLCBDb21wb25lbnRDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IFZhbGlkYXRpb25Db2xsZWN0aW9uLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnQ6IGFueSkge1xyXG4gICAgaWYgKCFjb2xsZWN0aW9uLmhhcyhjb250cm9sKSAmJiB0aGlzLmNhbkFkZFRvQ29sbGVjdGlvbihjb21wb25lbnQpKSB7IFxyXG4gICAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IGNvbXBvbmVudCwgZm9ybUdyb3VwIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0dXBDb2xsZWN0aW9uKGNvbGxlY3Rpb246IFZhbGlkYXRpb25Db2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXBvbmVudFZhbGlkYXRpb24sIGNvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50VmFsaWRhdGlvbi5jb21wb25lbnQ7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGNvbXBvbmVudFZhbGlkYXRpb24uZm9ybUdyb3VwO1xyXG4gICAgICBjb25zdCByZXF1aXJlZCA9IGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkO1xyXG4gICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoY29tcG9uZW50KTtcclxuICAgICAgY29uc3QgW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgd2F0Y2hpbmddID0gdGhpcy52YWxpZGF0ZVJ1bGVzKGN1cnJlbnRHcm91cCwgY29tcG9uZW50LCByZXF1aXJlZCwgcnVsZXMpO1xyXG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHdhdGNoaW5nKGNvbnRyb2wpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJlcXVpcmVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFZhbGlkYXRvcihjb250cm9sKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlcXVpcmVkID0gY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQ7XHJcbiAgICBjb25zdCBoYXNSdWxlcyA9IEFycmF5LmlzQXJyYXkoY29tcG9uZW50Py52YWxpZGF0aW9ucykgJiYgY29tcG9uZW50LnZhbGlkYXRpb25zLmxlbmd0aCA+IDA7XHJcbiAgICByZXR1cm4gcmVxdWlyZWQgPT09IHRydWUgfHwgaGFzUnVsZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJ1bGVzKGNvbXBvbmVudDogYW55KTogVmFsaWRhdGlvblJ1bGVbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC52YWxpZGF0aW9ucz8ubWFwKChydWxlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBleHByZXNzaW9uOiBydWxlLmV4cHJlc3Npb24sXHJcbiAgICAgICAgdHlwZTogcnVsZS50eXBlLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubG9jYWxlKHJ1bGUsICdtZXNzYWdlJyksXHJcbiAgICAgICAgYXN5bmM6IHJ1bGUuYXN5bmMgPT09IHRydWVcclxuICAgICAgfSBhcyBWYWxpZGF0aW9uUnVsZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVJ1bGVzKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGNvbXBvbmVudDogYW55XHJcbiAgICAsIHJlcXVpcmVkPzogYm9vbGVhblxyXG4gICAgLCB2YWxpZGF0aW9ucz86IFZhbGlkYXRpb25SdWxlW10pOiBbVmFsaWRhdG9yRm5bXSwgQXN5bmNWYWxpZGF0b3JGbltdLCAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkXSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBub1dhdGNoaW5nID0gKCkgPT4geyB9O1xyXG5cclxuICAgIGlmIChyZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5nZXRSZXF1aXJlZFZhbGlkYXRvcihjb21wb25lbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIHJldHVybiBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCBub1dhdGNoaW5nXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjYWxsYmFja3MgPSBuZXcgQ2FsbGJhY2tSZWdpc3RyeSgpO1xyXG5cclxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKGl0ZW06IFZhbGlkYXRpb25SdWxlKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGl0ZW0uZXhwcmVzc2lvbikpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgbG9nZ2VyOiBWYWxpZGF0aW9uQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PlxyXG4gICAgICAgIHRoaXMubG9nVmFsaWRhdGlvbihjb21wb25lbnQsIGl0ZW0sIGNvbnRyb2wsIHJlc3VsdCk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCIgfHwgaXRlbS50eXBlID09PSBcImludmFsaWRhdGVcIikge1xyXG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZSA9IGl0ZW0udHlwZSA9PT0gXCJ2YWxpZGF0ZVwiXHJcbiAgICAgICAgICA/IChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0XHJcbiAgICAgICAgICA6IChyZXN1bHQ6IGFueSkgPT4gIXJlc3VsdDtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0uYXN5bmMpIHtcclxuICAgICAgICAgIGFzeW5jVmFsaWRhdG9ycy5wdXNoKHRoaXMuY3JlYXRlQXN5bmNWYWxpZGF0b3IoZm9ybUdyb3VwLCBpdGVtLCBjYWxsYmFja3MsIHByZWRpY2F0ZSwgbG9nZ2VyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMuY3JlYXRlVmFsaWRhdG9yKGZvcm1Hcm91cCwgaXRlbSwgcHJlZGljYXRlLCBsb2dnZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHdhdGNoaW5nID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQgPT4ge1xyXG4gICAgICB0aGlzLndhdGNoRm9yVmFsaWRhdGlvbihmb3JtR3JvdXAsIGNvbnRyb2wsIGNvbXBvbmVudC5rZXksIHZhbGlkYXRpb25zLCBjYWxsYmFja3MpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgd2F0Y2hpbmddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVWYWxpZGF0b3IoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgaXRlbTogVmFsaWRhdGlvblJ1bGVcclxuICAgICwgcHJlZGljYXRlOiAocmVzdWx0OiBhbnkpID0+IGJvb2xlYW5cclxuICAgICwgY2FsbGJhY2s6IFZhbGlkYXRpb25DYWxsYmFjayk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdXBwcmVzcykgcmV0dXJuIG51bGw7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpXHJcbiAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiW1ZhbGlkYXRvcl0gVW5leHBlY3RlZCBvYnNlcnZhYmxlIHJlc3VsdCBpbiBjcmVhdGVWYWxpZGF0b3JcIixcclxuICAgICAgICAgIHsgZXhwcmVzc2lvbjogaXRlbS5leHByZXNzaW9uLCB2YWx1ZTogY29udHJvbC52YWx1ZSwgcnVsZTogaXRlbSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZGF0ZSA9IHByZWRpY2F0ZShyZXN1bHQpID8gbnVsbCA6IHRoaXMudmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXAsIGl0ZW0pO1xyXG4gICAgICBjYWxsYmFjayhjb250cm9sLCB2YWxpZGF0ZSk7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0ZTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFzeW5jVmFsaWRhdG9yKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW06IFZhbGlkYXRpb25SdWxlXHJcbiAgICAsIGNhbGxiYWNrczogQ2FsbGJhY2tSZWdpc3RyeVxyXG4gICAgLCBwcmVkaWNhdGU6IChyZXN1bHQ6IGFueSkgPT4gYm9vbGVhblxyXG4gICAgLCBjYWxsYmFjazogVmFsaWRhdGlvbkNhbGxiYWNrKTogQXN5bmNWYWxpZGF0b3JGbiB7XHJcblxyXG4gICAgY29uc3QgdW5zZXRTdGF0ZSA9ICgpID0+ICh7IHZhbHVlOiBTeW1ib2woJ3Vuc2V0JyksIHJlc3VsdDogbnVsbCB9KTtcclxuXHJcbiAgICBsZXQgc3RhdGUgPSB1bnNldFN0YXRlKCk7XHJcblxyXG4gICAgY2FsbGJhY2tzLnJlZ2lzdGVyKCgpID0+IHN0YXRlID0gdW5zZXRTdGF0ZSgpKTtcclxuXHJcbiAgICBjb25zdCBnZXRSZXN1bHQgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYW55ID0+IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCB7XHJcbiAgICAgIGNhY2hlYWJsZTogZmFsc2UsXHJcbiAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+IHsgcmV0dXJuIHsgXCI/XCI6IGNvbnRyb2wudmFsdWUgfSB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlT25jZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBhbnkgPT4ge1xyXG4gICAgICBjb25zdCB2ID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHN0YXRlLnZhbHVlICE9PSB2KSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGdldFJlc3VsdChjb250cm9sKTtcclxuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICBtYXAoKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZSA9IHByZWRpY2F0ZSh2YWx1ZSkgPyBudWxsIDogdGhpcy52YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cCwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2soY29udHJvbCwgdmFsaWRhdGUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW0FzeW5jVmFsaWRhdG9yXSBFdmFsdWF0aW9uIGVycm9yXCIsIHsgZXhwcmVzc2lvbjogaXRlbS5leHByZXNzaW9uLCBlcnIgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RhdGUgPSB7IHZhbHVlOiB2LCByZXN1bHQ6IHJlc3VsdCB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN1cHByZXNzKSByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXB1dGVPbmNlKGNvbnRyb2wpOyAgICAgIFxyXG4gICAgICBpZiAoIWlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgXCJbQXN5bmNWYWxpZGF0b3JdIEV4cGVjdGVkIG9ic2VydmFibGUgYnV0IGdvdCBub24tb2JzZXJ2YWJsZSByZXN1bHRcIixcclxuICAgICAgICAgIHsgZXhwcmVzc2lvbjogaXRlbS5leHByZXNzaW9uLCB2YWx1ZTogY29udHJvbC52YWx1ZSwgcmVzdWx0LCBydWxlOiBpdGVtIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIE9ic2VydmFibGU8YW55PjtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IFZhbGlkYXRpb25SdWxlKSB7XHJcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVTdHJpbmcoZm9ybUdyb3VwLCBpdGVtLm1lc3NhZ2UpO1xyXG4gICAgY29uc3QgdmFsaWRhdGlvbkVycm9yID0geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZSB9O1xyXG4gICAgcmV0dXJuIHZhbGlkYXRpb25FcnJvcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hGb3JWYWxpZGF0aW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgLCBrZXk6IHN0cmluZ1xyXG4gICAgLCB2YWxpZGF0aW9uczogVmFsaWRhdGlvblJ1bGVbXVxyXG4gICAgLCBjYWxsYmFja3M6IENhbGxiYWNrUmVnaXN0cnkpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZGF0aW9ucykpIHtcclxuICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB2YWxpZGF0aW9uc1xyXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiB0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICAubWFwKGl0ZW0gPT4gXCI9XCIgKyB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXRFeHByZXNzaW9uKGl0ZW0uZXhwcmVzc2lvbikpO1xyXG5cclxuICAgICAgaWYgKGV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgZmVlbGFibGUgPSB0b0ZlZWxhYmxlKGV4cHJlc3Npb25zKTtcclxuXHJcbiAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldERlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGZlZWxhYmxlKVxyXG4gICAgICAgIC5maWx0ZXIoZGVwID0+IGRlcCAhPT0ga2V5KTtcclxuXHJcbiAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS53YXRjaChmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgKCkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY2FsbGJhY2tzLmludm9rZSgpO1xyXG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nVmFsaWRhdGlvbiA9IChjb21wb25lbnQ6IGFueSwgcnVsZTogVmFsaWRhdGlvblJ1bGUsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LnZlcmJvc2UpIHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFwiW1ZhbGlkYXRpb25dIEZhaWxlZFwiLCB7IGNvbnRyb2wsIGNvbXBvbmVudCwgcnVsZSwgcmVzdWx0IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1ZhbGlkYXRpb25dIFN1Y2Nlc3NcIiwgeyBjb250cm9sLCBjb21wb25lbnQsIHJ1bGUsIHJlc3VsdCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBudWxsT2JzZXJ2ZXIgPSBvZihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkVmFsaWRhdG9yKGNvbXBvbmVudDogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgaWYgKHRoaXMuaXNUcnVlVmFsaWRhdG9yKGNvbXBvbmVudCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRUcnVlVmFsaWRhdG9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRWYWxpZGF0b3IuYmluZCh0aGlzKTtcclxuICAgIH0gIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1aXJlZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWlyZWRUcnVlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmIChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZShjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1RydWVWYWxpZGF0b3IoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb21wb25lbnQ/LnR5cGUgPT09ICdjaGVja2JveCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlKFRleHRzLCAnUmVxdWlyZWRGaWVsZCcpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBWYWxpZGF0aW9uQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb250ZXh0IHtcclxuICBjb21wb25lbnQ6IGFueTtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUnVsZSB7XHJcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xyXG4gIHR5cGU6IFwidmFsaWRhdGVcIiB8IFwiaW52YWxpZGF0ZVwiO1xyXG4gIG1lc3NhZ2U6IHN0cmluZyxcclxuICBhc3luYzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+O1xyXG4iXX0=
|
|
@@ -11,6 +11,7 @@ export function groupByRow(forms) {
|
|
|
11
11
|
verticalAlignment: form.verticalAlignment,
|
|
12
12
|
isTemplate: form.isTemplate,
|
|
13
13
|
i18n: form.i18n,
|
|
14
|
+
disableAutoFocus: form.disableAutoFocus,
|
|
14
15
|
rows: groupRowsRecursively(form.components)
|
|
15
16
|
}));
|
|
16
17
|
}
|
|
@@ -33,4 +34,4 @@ function groupRowsRecursively(components) {
|
|
|
33
34
|
components
|
|
34
35
|
}));
|
|
35
36
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCeVJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3V0aWxzL2dyb3VwQnlSb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkNBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYTtJQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1FBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtRQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1FBQ3ZDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsVUFBdUI7SUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFFckQsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFvQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUVsQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBRTNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3hCLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2hFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUU3RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEUsR0FBRztRQUNILFVBQVU7S0FDWCxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgRm9ybSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHk6IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsO1xyXG4gIGRpc2FibGVkOiBzdHJpbmcgfCBib29sZWFuIHwgbnVsbDtcclxuICBpbmFjdGl2ZTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bGw7XHJcbiAgcGF0aDogc3RyaW5nIHwgbnVsbDtcclxuICB2ZXJ0aWNhbEFsaWdubWVudDogc3RyaW5nIHwgbnVsbDtcclxuICBpc1RlbXBsYXRlOiBib29sZWFuIHwgbnVsbDtcclxuICBpMThuOiBhbnksXHJcbiAgZGlzYWJsZUF1dG9Gb2N1cz86IGJvb2xlYW47XHJcbiAgY29tcG9uZW50czogQ29tcG9uZW50W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBDb21wb25lbnQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbGF5b3V0OiB7IGNvbHVtbnM6IG51bWJlciB8IG51bGwsIHJvdzogc3RyaW5nIH07XHJcbiAgY29tcG9uZW50cz86IENvbXBvbmVudFtdO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJvd0NvbXBvbmVudCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBsYXlvdXQ6IHsgY29sdW1uczogbnVtYmVyIHwgbnVsbCwgcm93OiBzdHJpbmcgfTtcclxuICByb3dzPzogUm93R3JvdXBbXTtcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmludGVyZmFjZSBSb3dHcm91cCB7XHJcbiAgcm93OiBzdHJpbmc7XHJcbiAgY29tcG9uZW50czogUm93Q29tcG9uZW50W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBHcm91cGVkRm9ybSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGlzVGVtcGxhdGU6IGJvb2xlYW4gfCBudWxsO1xyXG4gIHJvd3M6IFJvd0dyb3VwW107XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeVJvdyhmb3JtczogRm9ybVtdKTogR3JvdXBlZEZvcm1bXSB7XHJcbiAgcmV0dXJuIGZvcm1zLm1hcChmb3JtID0+ICh7XHJcbiAgICBpZDogZm9ybS5pZCxcclxuICAgIHR5cGU6IGZvcm0udHlwZSxcclxuICAgIG5hbWU6IGZvcm0ubmFtZSxcclxuICAgIHRpdGxlOiBmb3JtLnRpdGxlLFxyXG4gICAgcmVhZG9ubHk6IGZvcm0ucmVhZG9ubHksXHJcbiAgICBkaXNhYmxlZDogZm9ybS5kaXNhYmxlZCxcclxuICAgIGluYWN0aXZlOiBmb3JtLmluYWN0aXZlLFxyXG4gICAgcGF0aDogZm9ybS5wYXRoLFxyXG4gICAgdmVydGljYWxBbGlnbm1lbnQ6IGZvcm0udmVydGljYWxBbGlnbm1lbnQsXHJcbiAgICBpc1RlbXBsYXRlOiBmb3JtLmlzVGVtcGxhdGUsXHJcbiAgICBpMThuOiBmb3JtLmkxOG4sXHJcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBmb3JtLmRpc2FibGVBdXRvRm9jdXMsXHJcbiAgICByb3dzOiBncm91cFJvd3NSZWN1cnNpdmVseShmb3JtLmNvbXBvbmVudHMpXHJcbiAgfSkpOyAgXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdyb3VwUm93c1JlY3Vyc2l2ZWx5KGNvbXBvbmVudHM6IENvbXBvbmVudFtdKTogUm93R3JvdXBbXSB7XHJcbiAgY29uc3QgZ3JvdXBlZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSb3dDb21wb25lbnRbXT4oKTtcclxuXHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0NvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudCkge1xyXG4gICAgY29uc3Qgcm93ID0gY29tcG9uZW50LmxheW91dD8ucm93O1xyXG5cclxuICAgIGlmICghZ3JvdXBlZE1hcC5oYXMocm93KSkge1xyXG4gICAgICBncm91cGVkTWFwLnNldChyb3csIFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGNvbXBvbmVudHMsIC4uLnByb3BzIH0gPSBjb21wb25lbnQ7XHJcblxyXG4gICAgZ3JvdXBlZE1hcC5nZXQocm93KSEucHVzaCh7XHJcbiAgICAgIC4uLnByb3BzLFxyXG4gICAgICByb3dzOiBjb21wb25lbnRzID8gZ3JvdXBSb3dzUmVjdXJzaXZlbHkoY29tcG9uZW50cykgOiB1bmRlZmluZWRcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiBwcm9jZXNzQ29tcG9uZW50KGNvbXBvbmVudCkpO1xyXG5cclxuICByZXR1cm4gQXJyYXkuZnJvbShncm91cGVkTWFwLmVudHJpZXMoKSkubWFwKChbcm93LCBjb21wb25lbnRzXSkgPT4gKHtcclxuICAgIHJvdyxcclxuICAgIGNvbXBvbmVudHNcclxuICB9KSk7XHJcbn1cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -18,4 +18,36 @@ export * from './lib/interact/confirmation';
|
|
|
18
18
|
export * from './lib/interact/notification';
|
|
19
19
|
export * from './lib/interact/prompt';
|
|
20
20
|
export * from './lib/builtIn/builtIn';
|
|
21
|
-
|
|
21
|
+
export * from './lib/controls/control';
|
|
22
|
+
export * from './lib/controls/form';
|
|
23
|
+
export * from './lib/controls/textfield';
|
|
24
|
+
export * from './lib/controls/select';
|
|
25
|
+
export * from './lib/controls/taglist';
|
|
26
|
+
export * from './lib/controls/number';
|
|
27
|
+
export * from './lib/controls/date';
|
|
28
|
+
export * from './lib/controls/time';
|
|
29
|
+
export * from './lib/controls/datetime';
|
|
30
|
+
export * from './lib/controls/toggle';
|
|
31
|
+
export * from './lib/controls/checkbox';
|
|
32
|
+
export * from './lib/controls/chipradio';
|
|
33
|
+
export * from './lib/controls/radio';
|
|
34
|
+
export * from './lib/controls/chipchecklist';
|
|
35
|
+
export * from './lib/controls/checklist';
|
|
36
|
+
export * from './lib/controls/textarea';
|
|
37
|
+
export * from './lib/controls/filepicker';
|
|
38
|
+
export * from './lib/controls/text';
|
|
39
|
+
export * from './lib/controls/html';
|
|
40
|
+
export * from './lib/controls/image';
|
|
41
|
+
export * from './lib/controls/tab';
|
|
42
|
+
export * from './lib/controls/chart';
|
|
43
|
+
export * from './lib/controls/accordion';
|
|
44
|
+
export * from './lib/controls/dynamiclist';
|
|
45
|
+
export * from './lib/controls/group';
|
|
46
|
+
export * from './lib/controls/table';
|
|
47
|
+
export * from './lib/controls/button';
|
|
48
|
+
export * from './lib/controls/separator';
|
|
49
|
+
export * from './lib/controls/spacer';
|
|
50
|
+
export * from './lib/controls/iframe';
|
|
51
|
+
export * from './lib/controls/tooltip';
|
|
52
|
+
export * from './lib/controls/displayfield';
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc3luY3Jvbml6ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3Jlc29sdmVSZWZzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvb2JzZXJ2YWJsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2RlZXBFcXVhbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL25hdmlnYXRpb24nO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Nhbml0aXplLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9mZWVsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9tYXJrZG93bi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJhY3QvY29uZmlybWF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJhY3Qvbm90aWZpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJhY3QvcHJvbXB0JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1aWx0SW4vYnVpbHRJbic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9jb250cm9sJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvZm9ybSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL3RleHRmaWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL3NlbGVjdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL3RhZ2xpc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9udW1iZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9kYXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvdGltZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2RhdGV0aW1lJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvdG9nZ2xlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvY2hlY2tib3gnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9jaGlwcmFkaW8nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9yYWRpbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2NoaXBjaGVja2xpc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9jaGVja2xpc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy90ZXh0YXJlYSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2ZpbGVwaWNrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy90ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvaHRtbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2ltYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvdGFiJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvY2hhcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9hY2NvcmRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9keW5hbWljbGlzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyb2xzL2dyb3VwJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvdGFibGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9idXR0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9zZXBhcmF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9zcGFjZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy9pZnJhbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cm9scy90b29sdGlwJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbHMvZGlzcGxheWZpZWxkJztcclxuIl19
|