@wemake4u/form-player-se 1.0.33 → 1.0.34
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/directives/dropdown.directive.mjs +3 -2
- package/esm2022/lib/directives/grid.directive.mjs +1 -1
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +9 -5
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +46 -23
- package/esm2022/lib/services/compute.service.mjs +73 -0
- package/esm2022/lib/services/disable.service.mjs +19 -12
- package/esm2022/lib/services/event.service.mjs +2 -2
- package/esm2022/lib/services/form.service.mjs +1 -1
- package/esm2022/lib/services/function.service.mjs +7 -2
- package/esm2022/lib/services/grid.service.mjs +10 -1
- package/esm2022/lib/services/programmability.service.mjs +16 -9
- package/esm2022/lib/services/validation.service.mjs +2 -2
- package/esm2022/lib/utils/uuid.mjs +11 -0
- package/fesm2022/wemake4u-form-player-se.mjs +173 -42
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +3 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +6 -3
- package/lib/services/compute.service.d.ts +21 -0
- package/lib/services/disable.service.d.ts +3 -2
- package/lib/services/event.service.d.ts +1 -1
- package/lib/services/function.service.d.ts +1 -0
- package/lib/services/grid.service.d.ts +1 -0
- package/lib/services/programmability.service.d.ts +3 -1
- package/lib/services/validation.service.d.ts +1 -1
- package/lib/utils/uuid.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { toFeelable } from '../utils/feelable';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./programmability.service";
|
|
5
|
+
import * as i2 from "./form.service";
|
|
6
|
+
export class ComputeService {
|
|
7
|
+
programmability;
|
|
8
|
+
formService;
|
|
9
|
+
constructor(programmability, formService) {
|
|
10
|
+
this.programmability = programmability;
|
|
11
|
+
this.formService = formService;
|
|
12
|
+
}
|
|
13
|
+
createCollection() {
|
|
14
|
+
return new Map();
|
|
15
|
+
}
|
|
16
|
+
addToCollection(collection, control, parentGroup, component) {
|
|
17
|
+
if (this.programmability.isExpression(component.expression)) {
|
|
18
|
+
collection.set(control, { component, parentGroup });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
setupCollection(collection) {
|
|
22
|
+
collection.forEach((computeContext, control) => {
|
|
23
|
+
this.applyExpression(control, computeContext);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
applyExpression(control, context) {
|
|
27
|
+
const formGroup = context.parentGroup;
|
|
28
|
+
const { key, expression, conditional } = context.component ?? {};
|
|
29
|
+
const deactivate = conditional?.hide;
|
|
30
|
+
const logComputed = (value) => {
|
|
31
|
+
if (!this.programmability.verbose)
|
|
32
|
+
return;
|
|
33
|
+
console.log("Compute", control, { value: value, path: this.getPath(control), formGroup });
|
|
34
|
+
};
|
|
35
|
+
const assignValue = (value) => {
|
|
36
|
+
logComputed(value);
|
|
37
|
+
this.formService.patch(control, value, { strict: false });
|
|
38
|
+
};
|
|
39
|
+
if (typeof expression === 'string') {
|
|
40
|
+
if (this.programmability.isExpression(expression)) {
|
|
41
|
+
const applyExpression = () => {
|
|
42
|
+
if (this.programmability.isExpression(deactivate)) {
|
|
43
|
+
const isDeactivate = this.programmability.evaluateBoolean(formGroup, deactivate, { cacheable: false });
|
|
44
|
+
if (!!isDeactivate) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const result = this.programmability.evaluate(formGroup, expression, { cacheable: false });
|
|
49
|
+
assignValue(result);
|
|
50
|
+
};
|
|
51
|
+
const dependencies = this.programmability.getDependencies(toFeelable({
|
|
52
|
+
expression: expression,
|
|
53
|
+
deactivate: deactivate
|
|
54
|
+
})).filter(dep => dep !== key);
|
|
55
|
+
if (dependencies.length > 0) {
|
|
56
|
+
this.programmability.watch(formGroup, dependencies, () => {
|
|
57
|
+
setTimeout(() => applyExpression());
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
setTimeout(() => applyExpression());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
getPath(control) {
|
|
65
|
+
return this.formService.getPath(control).join(".");
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService, deps: [{ token: i1.ProgrammabilityService }, { token: i2.FormService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
68
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService, decorators: [{
|
|
71
|
+
type: Injectable
|
|
72
|
+
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvY29tcHV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBR2Y7SUFDRTtJQUZaLFlBQ1UsZUFBdUMsRUFDckMsV0FBd0I7UUFEMUIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFtQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBNkIsRUFBRSxPQUF3QixFQUNuRSxXQUFzQixFQUFFLFNBQWM7UUFFeEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1RCxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQTZCO1FBQzNDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQXdCLEVBQUUsT0FBdUI7UUFDdkUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUV0QyxNQUFNLEVBQ0osR0FBRyxFQUNELFVBQVUsRUFDVixXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUU1QyxNQUFNLFVBQVUsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDO1FBRXJDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1RixDQUFDLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7d0JBQ3ZHLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDOzRCQUNuQixPQUFPO3dCQUNULENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQzFGLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDO2dCQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztvQkFDbkUsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLFVBQVUsRUFBRSxVQUFVO2lCQUN2QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBRS9CLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7d0JBQ3ZELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQXhFVSxjQUFjOzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29tcHV0ZVNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBDb21wdXRlQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXB1dGVDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbXB1dGVDb2xsZWN0aW9uLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwgcGFyZW50R3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50OiBhbnkpXHJcbiAge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihjb21wb25lbnQuZXhwcmVzc2lvbikpIHtcclxuICAgICAgY29sbGVjdGlvbi5zZXQoY29udHJvbCwgeyBjb21wb25lbnQsIHBhcmVudEdyb3VwIH0pO1xyXG4gICAgfSAgICAgIFxyXG4gIH1cclxuXHJcbiAgc2V0dXBDb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbXB1dGVDb2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXB1dGVDb250ZXh0LCBjb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwbHlFeHByZXNzaW9uKGNvbnRyb2wsIGNvbXB1dGVDb250ZXh0KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUV4cHJlc3Npb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb250ZXh0OiBDb21wdXRlQ29udGV4dCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udGV4dC5wYXJlbnRHcm91cDtcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGtleVxyXG4gICAgICAsIGV4cHJlc3Npb25cclxuICAgICAgLCBjb25kaXRpb25hbCB9ID0gY29udGV4dC5jb21wb25lbnQgPz8ge307XHJcblxyXG4gICAgY29uc3QgZGVhY3RpdmF0ZSA9IGNvbmRpdGlvbmFsPy5oaWRlO1xyXG5cclxuICAgIGNvbnN0IGxvZ0NvbXB1dGVkID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQ29tcHV0ZVwiLCBjb250cm9sLCB7IHZhbHVlOiB2YWx1ZSwgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgYXNzaWduVmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBsb2dDb21wdXRlZCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UucGF0Y2goY29udHJvbCwgdmFsdWUsIHsgc3RyaWN0OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xyXG4gICAgICAgIGNvbnN0IGFwcGx5RXhwcmVzc2lvbiA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZGVhY3RpdmF0ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaXNEZWFjdGl2YXRlID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cCwgZGVhY3RpdmF0ZSwgeyBjYWNoZWFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICBpZiAoISFpc0RlYWN0aXZhdGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgZXhwcmVzc2lvbiwgeyBjYWNoZWFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldERlcGVuZGVuY2llcyh0b0ZlZWxhYmxlKHtcclxuICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24sXHJcbiAgICAgICAgICBkZWFjdGl2YXRlOiBkZWFjdGl2YXRlXHJcbiAgICAgICAgfSkpLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gYXBwbHlFeHByZXNzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVDb250ZXh0IHtcclxuICBwYXJlbnRHcm91cDogRm9ybUdyb3VwO1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb21wdXRlQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXB1dGVDb250ZXh0PjtcclxuIl19
|
|
@@ -12,17 +12,19 @@ export class DisableService {
|
|
|
12
12
|
createCollection() {
|
|
13
13
|
return new Map();
|
|
14
14
|
}
|
|
15
|
-
addToCollection(collection, control, parentGroup,
|
|
16
|
-
|
|
15
|
+
addToCollection(collection, control, parentGroup, component) {
|
|
16
|
+
if (this.isAllowedValue(component?.disabled))
|
|
17
|
+
collection.set(control, { parentGroup, component });
|
|
17
18
|
}
|
|
18
19
|
setupCollection(collection) {
|
|
19
20
|
collection.forEach((disableContext, control) => {
|
|
20
|
-
this.applyRule(disableContext.parentGroup, control, disableContext
|
|
21
|
+
this.applyRule(disableContext.parentGroup, control, disableContext);
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
|
-
applyRule(formGroup, control,
|
|
24
|
+
applyRule(formGroup, control, context) {
|
|
24
25
|
// se riabilito un FormGroup vengono riabilitato tutti i child
|
|
25
26
|
// mentre dovrebbero essere rivalutati se hanno una condizione o un valore static.
|
|
27
|
+
const { key, disabled } = context.component ?? {};
|
|
26
28
|
const logDisabled = (value) => {
|
|
27
29
|
if (!this.programmability.verbose)
|
|
28
30
|
return;
|
|
@@ -42,15 +44,16 @@ export class DisableService {
|
|
|
42
44
|
logDisabled(value);
|
|
43
45
|
}
|
|
44
46
|
};
|
|
45
|
-
if (typeof
|
|
46
|
-
disableControl(
|
|
47
|
+
if (typeof disabled === 'boolean') {
|
|
48
|
+
disableControl(disabled);
|
|
47
49
|
}
|
|
48
|
-
else if (typeof
|
|
49
|
-
if (this.programmability.isExpression(
|
|
50
|
-
const expression = this.programmability.getExpression(
|
|
51
|
-
const dependencies = this.programmability.getDependencies(expression)
|
|
50
|
+
else if (typeof disabled === 'string') {
|
|
51
|
+
if (this.programmability.isExpression(disabled)) {
|
|
52
|
+
const expression = this.programmability.getExpression(disabled);
|
|
53
|
+
const dependencies = this.programmability.getDependencies(expression)
|
|
54
|
+
.filter(dep => dep !== key);
|
|
52
55
|
const applyExpression = () => {
|
|
53
|
-
const result = this.programmability.evaluateBoolean(formGroup,
|
|
56
|
+
const result = this.programmability.evaluateBoolean(formGroup, disabled, { cacheable: false });
|
|
54
57
|
disableControl(result);
|
|
55
58
|
};
|
|
56
59
|
if (dependencies.length > 0) {
|
|
@@ -62,6 +65,10 @@ export class DisableService {
|
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
}
|
|
68
|
+
isAllowedValue(value) {
|
|
69
|
+
return typeof value === 'boolean'
|
|
70
|
+
|| typeof value === 'string';
|
|
71
|
+
}
|
|
65
72
|
getPath(control) {
|
|
66
73
|
return this.formService.getPath(control).join(".");
|
|
67
74
|
}
|
|
@@ -71,4 +78,4 @@ export class DisableService {
|
|
|
71
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisableService, decorators: [{
|
|
72
79
|
type: Injectable
|
|
73
80
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZGlzYWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFHZjtJQUNFO0lBRlosWUFDVSxlQUF1QyxFQUNyQyxXQUF3QjtRQUQxQixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDcEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxHQUFHLEVBQW1DLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUE2QixFQUFFLE9BQXdCLEVBQUUsV0FBc0IsRUFDM0YsU0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztZQUMxQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBNkI7UUFDM0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxTQUFvQixFQUFFLE9BQXdCLEVBQUUsT0FBdUI7UUFDdkYsOERBQThEO1FBQzlELGtGQUFrRjtRQUNsRixNQUFNLEVBQ0osR0FBRyxFQUNELFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBRXpDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLENBQUMsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQy9DLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixJQUFJLE9BQU8sQ0FBQyxRQUFRO29CQUFFLE9BQU87Z0JBQzdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLE9BQU8sQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBQzVCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDakIsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDLENBQUE7UUFDRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7cUJBQ2xFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO29CQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQy9GLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDO2dCQUNGLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7d0JBQ3ZELGVBQWUsRUFBRSxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELGVBQWUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFVO1FBQy9CLE9BQU8sT0FBTyxLQUFLLEtBQUssU0FBUztlQUM1QixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQTFFVSxjQUFjOzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGlzYWJsZVNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBEaXNhYmxlQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIERpc2FibGVDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhcmVudEdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsb3dlZFZhbHVlKGNvbXBvbmVudD8uZGlzYWJsZWQpKVxyXG4gICAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IHBhcmVudEdyb3VwLCBjb21wb25lbnQgfSk7XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogRGlzYWJsZUNvbGxlY3Rpb24pIHtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaCgoZGlzYWJsZUNvbnRleHQsIGNvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5hcHBseVJ1bGUoZGlzYWJsZUNvbnRleHQucGFyZW50R3JvdXAsIGNvbnRyb2wsIGRpc2FibGVDb250ZXh0KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVJ1bGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29udGV4dDogRGlzYWJsZUNvbnRleHQpOiB2b2lkIHtcclxuICAgIC8vIHNlIHJpYWJpbGl0byB1biBGb3JtR3JvdXAgdmVuZ29ubyByaWFiaWxpdGF0byB0dXR0aSBpIGNoaWxkXHJcbiAgICAvLyBtZW50cmUgZG92cmViYmVybyBlc3NlcmUgcml2YWx1dGF0aSBzZSBoYW5ubyB1bmEgY29uZGl6aW9uZSBvIHVuIHZhbG9yZSBzdGF0aWMuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGtleVxyXG4gICAgICAsIGRpc2FibGVkIH0gPSBjb250ZXh0LmNvbXBvbmVudCA/PyB7fTtcclxuXHJcbiAgICBjb25zdCBsb2dEaXNhYmxlZCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSA/IFwiRGlzYWJsZVwiIDogXCJFbmFibGVcIiwgY29udHJvbCwgeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCksIGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBkaXNhYmxlQ29udHJvbCA9ICh2YWx1ZTogYm9vbGVhbiB8IG51bGwpID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICBsb2dEaXNhYmxlZCh2YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuZW5hYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgbG9nRGlzYWJsZWQodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGRpc2FibGVkID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgZGlzYWJsZUNvbnRyb2woZGlzYWJsZWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGRpc2FibGVkID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGRpc2FibGVkKSkge1xyXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXRFeHByZXNzaW9uKGRpc2FibGVkKTtcclxuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbilcclxuICAgICAgICAgIC5maWx0ZXIoZGVwID0+IGRlcCAhPT0ga2V5KTtcclxuICAgICAgICBjb25zdCBhcHBseUV4cHJlc3Npb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZUJvb2xlYW4oZm9ybUdyb3VwLCBkaXNhYmxlZCwgeyBjYWNoZWFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgZGlzYWJsZUNvbnRyb2wocmVzdWx0KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9ncmFtbWFiaWxpdHkud2F0Y2goZm9ybUdyb3VwLCBkZXBlbmRlbmNpZXMsICgpID0+IHtcclxuICAgICAgICAgICAgYXBwbHlFeHByZXNzaW9uKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXBwbHlFeHByZXNzaW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNBbGxvd2VkVmFsdWUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nXHJcbiAgICAgIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpc2FibGVDb250ZXh0IHtcclxuICBwYXJlbnRHcm91cDogRm9ybUdyb3VwO1xyXG4gIGNvbXBvbmVudDogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERpc2FibGVDb2xsZWN0aW9uID0gTWFwPEFic3RyYWN0Q29udHJvbCwgRGlzYWJsZUNvbnRleHQ+O1xyXG4iXX0=
|
|
@@ -10,7 +10,7 @@ export class EventService {
|
|
|
10
10
|
createCollection() {
|
|
11
11
|
return new Map();
|
|
12
12
|
}
|
|
13
|
-
addToCollection(collection, control,
|
|
13
|
+
addToCollection(collection, control, formGroup, component) {
|
|
14
14
|
collection.set(control, { component, formGroup });
|
|
15
15
|
}
|
|
16
16
|
setupCollection(collection) {
|
|
@@ -48,4 +48,4 @@ export class EventService {
|
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventService, decorators: [{
|
|
49
49
|
type: Injectable
|
|
50
50
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxZQUFZO0lBR2I7SUFEVixZQUNVLGVBQXVDO1FBQXZDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUNqRCxDQUFDO0lBRUQsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFpQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBMkIsRUFBRSxPQUF3QixFQUFFLFNBQW9CLEVBQUUsU0FBYztRQUN6RyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBMkI7UUFDekMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2xELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUNoRCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7Z0JBQUUsT0FBTztZQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUksT0FBZSxFQUNyQyxTQUFvQixFQUNwQixPQUF3QixFQUN4QixXQUEwQixFQUMxQixPQUFVO1FBRVosSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxPQUFPO1FBRVQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFDL0QsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7Z0JBQ2hELFNBQVMsRUFBRSxLQUFLO2dCQUNoQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxPQUFPO3dCQUNoQixRQUFRLEVBQUUsUUFBUTt3QkFDbEIsUUFBUSxFQUFFLFFBQVE7cUJBQ25CO2lCQUNGLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7d0dBbkRVLFlBQVk7NEdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHN1cHByZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNyZWF0ZUNvbGxlY3Rpb24oKTogRXZlbnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgTWFwPEFic3RyYWN0Q29udHJvbCwgRXZlbnRDb250ZXh0PigpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9Db2xsZWN0aW9uKGNvbGxlY3Rpb246IEV2ZW50Q29sbGVjdGlvbiwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbGxlY3Rpb24uc2V0KGNvbnRyb2wsIHsgY29tcG9uZW50LCBmb3JtR3JvdXAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogRXZlbnRDb2xsZWN0aW9uKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXBvbmVudFZhbGlkYXRpb24sIGNvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50VmFsaWRhdGlvbi5jb21wb25lbnQ7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGNvbXBvbmVudFZhbGlkYXRpb24uZm9ybUdyb3VwO1xyXG4gICAgICBjb25zdCBldmVudHMgPSBjb21wb25lbnQuZXZlbnRzO1xyXG4gICAgICBpZiAoIWV2ZW50cyB8fCB0eXBlb2YgZXZlbnRzICE9PSAnb2JqZWN0JykgcmV0dXJuO1xyXG4gICAgICB0aGlzLnByb2Nlc3NIYW5kbGVyKGV2ZW50cy5vbkNoYW5nZSwgY3VycmVudEdyb3VwLCBjb250cm9sLCBjb250cm9sLnZhbHVlQ2hhbmdlcywgY29udHJvbC52YWx1ZSk7XHJcbiAgICAgIHRoaXMucHJvY2Vzc0hhbmRsZXIoZXZlbnRzLm9uU3RhdHVzQ2hhbmdlLCBjdXJyZW50R3JvdXAsIGNvbnRyb2wsIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcywgY29udHJvbC5zdGF0dXMpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NIYW5kbGVyPFQ+KGhhbmRsZXI6IHN0cmluZ1xyXG4gICAgLCBmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwgb2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8VD5cclxuICAgICwgaW5pdGlhbDogVClcclxuICB7XHJcbiAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihoYW5kbGVyKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LnN1YnNjcmliZUNoYW5nZXMob2JzZXJ2YWJsZSQsIGNvbnRyb2wsIGluaXRpYWxcclxuICAgICAgLCAob2xkVmFsdWUsIG5ld1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGhhbmRsZXIsIHtcclxuICAgICAgICAgIGNhY2hlYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiAoe1xyXG4gICAgICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgICAgICBjb250cm9sOiBjb250cm9sLFxyXG4gICAgICAgICAgICAgIG9sZFZhbHVlOiBvbGRWYWx1ZSxcclxuICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRDb250ZXh0IHtcclxuICBjb21wb25lbnQ6IGFueTtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRXZlbnRDb2xsZWN0aW9uID0gTWFwPEFic3RyYWN0Q29udHJvbCwgRXZlbnRDb250ZXh0PjtcclxuIl19
|
|
@@ -440,4 +440,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
440
440
|
providedIn: 'root'
|
|
441
441
|
}]
|
|
442
442
|
}] });
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQVEsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUE0QixNQUFNLEVBQVMsUUFBUSxFQUFnQixHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBd0IsSUFBSSxFQUFzQixNQUFNLE1BQU0sQ0FBQzs7QUFvQjNKLENBQUM7QUFLRixNQUFNLE9BQU8sV0FBVztJQUV0QixHQUFHLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsS0FBVSxFQUFFLFdBQXlCLEVBQUUsWUFBMkI7UUFFMUcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxjQUFjO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxXQUF5QjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFF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QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7YUFDSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQVk7UUFDN0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsT0FBd0IsRUFDeEIsWUFBWSxHQUFHLEdBQUc7UUFFbEIsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQ3RDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQzt3R0ExaEJVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRXZhbHVhdG9yUHJvdmlkZXIgfSBmcm9tICcuL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Db250cm9sU3RhdHVzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQYXRoLCBub3JtYWxpemVQYXRoIH0gZnJvbSAnLi4vY29tbW9uL3BhdGgnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QsIGludGVydmFsLCBpc09ic2VydmFibGUsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRpbWVvdXQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxudHlwZSBDb250cm9sVHlwZSA9ICdhcnJheScgfCAnZ3JvdXAnIHwgJ2NvbnRyb2wnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXRjaE9wdGlvbnMge1xyXG4gIGVtaXRFdmVudD86IGJvb2xlYW47XHJcbiAgZW1pdEVycm9yPzogYm9vbGVhbjtcclxuICBlbWl0V2Fybj86IGJvb2xlYW47XHJcbiAgdmFsaWRhdGVUeXBlPzogYm9vbGVhbjtcclxuICBmYWxsYmFja1ZhbHVlPzogYW55O1xyXG4gIHN0cmljdDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXRoT3B0aW9ucyB7XHJcbiAgZW1pdEVycm9yPzogYm9vbGVhbjtcclxuICBlbWl0V2Fybj86IGJvb2xlYW47XHJcbiAgY3JlYXRlPzogYm9vbGVhbjtcclxuICBleHBlY3RlZD86IENvbnRyb2xUeXBlO1xyXG4gIGJyZWFrT25BcnJheT86IGJvb2xlYW47XHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIHNldChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRDb250cm9sID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMgPz8geyBjcmVhdGU6IHRydWUgfSk7XHJcblxyXG4gICAgaWYgKCFjdXJyZW50Q29udHJvbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHRoaXMucGF0Y2goY3VycmVudENvbnRyb2wsIHZhbHVlLCBwYXRjaE9wdGlvbnMpO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucyk6IGFueSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENvbnRyb2woY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHJlc3VsdD8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucyk6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJlcGVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMgPz8geyBleHBlY3RlZDogXCJhcnJheVwiLCBjcmVhdGU6IHRydWUgfSk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc2VydEludG9BcnJheShmb3JtQXJyYXksIDAsIHZhbHVlLCBwYXRjaE9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGV4cGVjdGVkOiBcImFycmF5XCIsIGNyZWF0ZTogdHJ1ZSB9KTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0SW50b0FycmF5KGZvcm1BcnJheSwgZm9ybUFycmF5Lmxlbmd0aCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7ICAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpbnNlcnQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zID8/IHsgZXhwZWN0ZWQ6IFwiYXJyYXlcIiwgY3JlYXRlOiB0cnVlIH0pO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnNlcnRJbnRvQXJyYXkoZm9ybUFycmF5LCBpbmRleCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7ICBcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgpO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZW1vdmVGcm9tQXJyYXkoZm9ybUFycmF5LCBpbmRleCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtb3ZlVXAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoKTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgaWYgKGluZGV4IDw9IDAgfHwgaW5kZXggPj0gZm9ybUFycmF5Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gZm9ybUFycmF5LmF0KGluZGV4KTtcclxuICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICAgICAgZm9ybUFycmF5Lmluc2VydChpbmRleCAtIDEsIGNvbnRyb2wpO1xyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9ICAgIFxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbW92ZURvd24oY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoKTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBmb3JtQXJyYXkubGVuZ3RoIC0gMSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gZm9ybUFycmF5LmF0KGluZGV4KTtcclxuICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICAgICAgZm9ybUFycmF5Lmluc2VydChpbmRleCArIDEsIGNvbnRyb2wpO1xyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0dXMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKSA6IEZvcm1Db250cm9sU3RhdHVzIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zKTtcclxuICAgIHJldHVybiByZXN1bHQ/LnN0YXR1cztcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFsbFZhbHVlQW5kVmFsaWRpdHkoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlbWl0RXZlbnQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5lbnVtZXJhdGVDb250cm9scyhjb250cm9sKSkge1xyXG4gICAgICBjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb3VudEludmFsaWQoY29udHJvbHM6IEl0ZXJhYmxlPEFic3RyYWN0Q29udHJvbD4pIHtcclxuICAgIGxldCBlcnJvcnMgPSAwO1xyXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XHJcbiAgICAgIGVycm9ycyArPSB0aGlzLmNvbGxlY3RFcnJvcnMoY29udHJvbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW52YWxpZENvbnRyb2xzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgcGF0aDogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfVtdIHtcclxuICAgIGNvbnN0IGludmFsaWQ6IHsgcGF0aDogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfVtdID0gW107XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQpXHJcbiAgICAgIHJldHVybiBpbnZhbGlkO1xyXG5cclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgaW52YWxpZC5wdXNoKC4uLnRoaXMuZ2V0SW52YWxpZENvbnRyb2xzKGNoaWxkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xyXG4gICAgICBpbnZhbGlkLnB1c2goeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIiksIGNvbnRyb2wgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwYXRjaChcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IGFueSwgb3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgICBlbWl0RXZlbnQ6IHRydWUsXHJcbiAgICAgIHZhbGlkYXRlVHlwZTogZmFsc2UsXHJcbiAgICAgIGZhbGxiYWNrVmFsdWU6IG51bGwsXHJcbiAgICAgIHN0cmljdDogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdFdhcm4pXHJcbiAgICAgICAgY29uc29sZS53YXJuKGBbcGF0Y2hDb250cm9sXSAke21lc3NhZ2V9YClcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXJyb3IgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmIChvcHRpb25zPy5lbWl0RXJyb3IpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB7IGVtaXRFdmVudCwgdmFsaWRhdGVUeXBlLCBmYWxsYmFja1ZhbHVlLCBzdHJpY3QgfVxyXG4gICAgICA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcclxuXHJcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XHJcbiAgICAgIGlmICh2YWxpZGF0ZVR5cGUgJiYgdHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHdhcm4oYFZhbHVlIHR5cGUgbWlzbWF0Y2g6IGV4cGVjdGVkICR7dHlwZW9mIGNvbnRyb2wudmFsdWV9LCBidXQgcmVjZWl2ZWQgJHt0eXBlb2YgdmFsdWV9YCk7XHJcblxyXG4gICAgICAgIGlmIChmYWxsYmFja1ZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsbGJhY2tWYWx1ZSwgeyBlbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIHR5cGUgYW5kIG5vIGZhbGxiYWNrIHZhbHVlIHByb3ZpZGVkLicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmFzT2JqZWN0KHZhbHVlKTtcclxuICAgICAgT2JqZWN0LmtleXMoY3VycmVudFZhbHVlKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAoY29udHJvbC5jb250cm9sc1trZXldKSB7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoKGNvbnRyb2wuY29udHJvbHNba2V5XSwgdmFsdWVba2V5XSwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFzdHJpY3QpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2xGcm9tVmFsdWUodmFsdWVba2V5XSk7XHJcbiAgICAgICAgICB0aGlzLnNldFVua25vd24obmV3Q29udHJvbCk7XHJcbiAgICAgICAgICBjb250cm9sLmFkZENvbnRyb2woa2V5LCBuZXdDb250cm9sKTtcclxuICAgICAgICAgIHRoaXMucGF0Y2gobmV3Q29udHJvbCwgdmFsdWVba2V5XSwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd2FybihgS2V5IFwiJHtrZXl9XCIgbm90IGZvdW5kIGluIHRoZSBGb3JtR3JvdXAuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKCEoa2V5IGluIGN1cnJlbnRWYWx1ZSkpIHtcclxuICAgICAgICAgIGNvbnN0IGNoaWxkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KGtleSk7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIGNoaWxkQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICAgICBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5hc0FycmF5KHZhbHVlKTtcclxuICAgICAgd2hpbGUgKGNvbnRyb2wubGVuZ3RoIDwgY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGFueUNvbnRyb2wgPSBjb250cm9sIGFzIGFueTtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBjdXJyZW50VmFsdWVbY29udHJvbC5sZW5ndGhdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGFueUNvbnRyb2wpLmFkZEl0ZW0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGFueUNvbnRyb2wuYWRkSXRlbSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250cm9sLnB1c2godGhpcy5jcmVhdGVDb250cm9sRnJvbVZhbHVlKGl0ZW1Ub0FkZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoY29udHJvbC5sZW5ndGggPiBjdXJyZW50VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgY29udHJvbC5yZW1vdmVBdChjb250cm9sLmxlbmd0aCAtIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRWYWx1ZS5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnBhdGNoKGNvbnRyb2wuYXQoaW5kZXgpLCBpdGVtLCBvcHRpb25zKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIEFic3RyYWN0Q29udHJvbCB0eXBlLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGF0aChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcclxuICAgIGNvbnN0IHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXTtcclxuICAgIGxldCBjdXJyZW50OiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbDtcclxuXHJcbiAgICB3aGlsZSAoY3VycmVudD8ucGFyZW50KSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudDogYW55ID0gY3VycmVudC5wYXJlbnQ7XHJcblxyXG4gICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY29udHJvbHMuaW5kZXhPZihjdXJyZW50KTtcclxuICAgICAgICBwYXRoLnVuc2hpZnQoaW5kZXgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKHBhcmVudC5jb250cm9scykuZmluZChrID0+IHBhcmVudC5nZXQoaykgPT09IGN1cnJlbnQpO1xyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgIHBhdGgudW5zaGlmdChrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY3VycmVudCA9IHBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGF0aDtcclxuICB9XHJcblxyXG4gIHdhaXRGb3JDb250cm9sKFxyXG4gICAgZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgcGF0aDogUGF0aFxyXG4gICAgLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zXHJcbiAgKTogT2JzZXJ2YWJsZTxBYnN0cmFjdENvbnRyb2w+IHtcclxuXHJcbiAgICBjb25zdCByZXNvbHZlID0gKCk6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCA9PlxyXG4gICAgICB0aGlzLmdldENvbnRyb2woZm9ybUdyb3VwLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSByZXNvbHZlKCk7XHJcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBvZihleGlzdGluZyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEFic3RyYWN0Q29udHJvbD4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN1YiA9IGZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBjb25zdCBjdHJsID0gcmVzb2x2ZSgpO1xyXG4gICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGN0cmwpO1xyXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gKCkgPT4gc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoZm9ybUdyb3VwOiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIGlmICghKGZvcm1Hcm91cCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NvcGUgaXMgbm90IGEgRm9ybUdyb3VwXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGF0Y2hPcHRpb25zOiBQYXRjaE9wdGlvbnMgPSB7XHJcbiAgICAgIHN0cmljdDogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2V0OiAocGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucyk6IGJvb2xlYW4gPT5cclxuICAgICAgICB0aGlzLnNldChmb3JtR3JvdXAsIHBhdGgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIGdldDogKHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQgPT5cclxuICAgICAgICB0aGlzLmdldChmb3JtR3JvdXAsIHBhdGgsIHBhdGhPcHRpb25zKSxcclxuXHJcbiAgICAgIHN0YXR1czogKHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBGb3JtQ29udHJvbFN0YXR1cyB8IHVuZGVmaW5lZCA9PlxyXG4gICAgICAgIHRoaXMuc3RhdHVzKGZvcm1Hcm91cCwgcGF0aCwgcGF0aE9wdGlvbnMpLFxyXG5cclxuICAgICAgcHJlcGVuZDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5wcmVwZW5kKGZvcm1Hcm91cCwgcGF0aCwgdmFsdWUsIHBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnMpLFxyXG5cclxuICAgICAgYXBwZW5kOiAocGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucyk6IGJvb2xlYW4gPT5cclxuICAgICAgICB0aGlzLmFwcGVuZChmb3JtR3JvdXAsIHBhdGgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIGluc2VydDogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5pbnNlcnQoZm9ybUdyb3VwLCBwYXRoLCBpbmRleCwgdmFsdWUsIHBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnMpLFxyXG5cclxuICAgICAgcmVtb3ZlOiAocGF0aDogUGF0aCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4gPT5cclxuICAgICAgICB0aGlzLnJlbW92ZShmb3JtR3JvdXAsIHBhdGgsIGluZGV4KSxcclxuXHJcbiAgICAgIG1vdmVVcDogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5tb3ZlVXAoZm9ybUdyb3VwLCBwYXRoLCBpbmRleCksXHJcblxyXG4gICAgICBtb3ZlRG93bjogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5tb3ZlRG93bihmb3JtR3JvdXAsIHBhdGgsIGluZGV4KVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXR1c0NoYW5nZXMoY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAsIHdhaXRGb3JQZW5kaW5nPzogKCkgPT4gdm9pZFxyXG4gICk6IE9ic2VydmFibGU8Rm9ybUNvbnRyb2xTdGF0dXM+IHtcclxuXHJcbiAgICAvL2NvbnN0IHN0YXR1cyQgPSBjb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgIC8vICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAvLyAgaXNPYnNlcnZhYmxlKGRlc3Ryb3kpXHJcbiAgICAvLyAgICA/IHRha2VVbnRpbChkZXN0cm95KVxyXG4gICAgLy8gICAgOiB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveSlcclxuICAgIC8vKVxyXG5cclxuICAgIGlmIChjb250cm9sLnN0YXR1cyA9PT0gJ1BFTkRJTkcnICYmIHdhaXRGb3JQZW5kaW5nKSB7XHJcbiAgICAgIHRoaXMud2FpdFVudGlsU2V0dGxlZChjb250cm9sKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gd2FpdEZvclBlbmRpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcztcclxuXHJcbiAgICAvL2NvbnN0IHN0YXR1cyQgPSBjb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgIC8vICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAvLyAgaXNPYnNlcnZhYmxlKGRlc3Ryb3kpXHJcbiAgICAvLyAgICA/IHRha2VVbnRpbChkZXN0cm95KVxyXG4gICAgLy8gICAgOiB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveSlcclxuICAgIC8vKTtcclxuXHJcbiAgICAvL2lmIChjb250cm9sLnN0YXR1cyA9PT0gJ1BFTkRJTkcnKSB7XHJcbiAgICAvLyAgcmV0dXJuIHRoaXMud2FpdFVudGlsU2V0dGxlZChjb250cm9sLCBkZXN0cm95KS5waXBlKFxyXG4gICAgLy8gICAgc3dpdGNoTWFwKCgpID0+XHJcbiAgICAvLyAgICAgIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxyXG4gICAgLy8gICAgICAgIHN0YXJ0V2l0aChjb250cm9sLnN0YXR1cyksXHJcbiAgICAvLyAgICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgLy8gICAgICAgIGlzT2JzZXJ2YWJsZShkZXN0cm95KVxyXG4gICAgLy8gICAgICAgICAgPyB0YWtlVW50aWwoZGVzdHJveSlcclxuICAgIC8vICAgICAgICAgIDogdGFrZVVudGlsRGVzdHJveWVkKGRlc3Ryb3kpXHJcbiAgICAvLyAgICAgIClcclxuICAgIC8vICAgIClcclxuICAgIC8vICApO1xyXG4gICAgLy99XHJcblxyXG4gICAgLy9yZXR1cm4gc3RhdHVzJDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKFxyXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgcGF0aDogUGF0aCxcclxuICAgIG9wdGlvbnM/OiBQYXRoT3B0aW9uc1xyXG4gICk6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdFdhcm4pIGNvbnNvbGUud2FybihgW2FwcGx5UGF0aF0gJHttZXNzYWdlfWApO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBlcnJvciA9IChtZXNzYWdlOiBzdHJpbmcpOiBuZXZlciA9PiB7XHJcbiAgICAgIGlmIChvcHRpb25zPy5lbWl0RXJyb3IpIHRocm93IG5ldyBFcnJvcihgW2FwcGx5UGF0aF0gJHttZXNzYWdlfWApO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTsgLy8gZmFsbGJhY2sgZGVmYXVsdCBiZWhhdmlvclxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVDb250cm9sID0gKHR5cGU6IENvbnRyb2xUeXBlKTogQWJzdHJhY3RDb250cm9sID0+IHtcclxuICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnYXJyYXknOiByZXR1cm4gbmV3IEZvcm1BcnJheShbXSk7XHJcbiAgICAgICAgY2FzZSAnZ3JvdXAnOiByZXR1cm4gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgICAgY2FzZSAnY29udHJvbCc6IGRlZmF1bHQ6IHJldHVybiBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVQYXRoKHBhdGgpO1xyXG4gICAgbGV0IGN1cnJlbnQ6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBjb250cm9sO1xyXG4gICAgY29uc3QgY3JlYXRlUGF0aCA9IG9wdGlvbnM/LmNyZWF0ZSA/PyBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpXTtcclxuICAgICAgY29uc3QgaXNMZWFmID0gaSA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMTtcclxuICAgICAgY29uc3QgbmV4dFR5cGU6IENvbnRyb2xUeXBlID1cclxuICAgICAgICBpc0xlYWYgPyAob3B0aW9ucz8uZXhwZWN0ZWQgPz8gJ2NvbnRyb2wnKVxyXG4gICAgICAgICAgOiB0eXBlb2Ygc2VnbWVudHNbaSArIDFdID09PSAnbnVtYmVyJyA/ICdhcnJheSdcclxuICAgICAgICAgICAgOiAnZ3JvdXAnO1xyXG5cclxuICAgICAgY29uc3QgZ2V0Q3VycmVudFBhdGggPSAoKSA9PiBzZWdtZW50cy5zbGljZSgwLCBpICsgMSkuam9pbignLicpO1xyXG5cclxuICAgICAgaWYgKCFjdXJyZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yKGBDb250cm9sIGlzIG51bGwgYXQgc2VnbWVudCBcIiR7Z2V0Q3VycmVudFBhdGgoKX1cImApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcclxuICAgICAgICAgIHJldHVybiBlcnJvcihgRXhwZWN0ZWQgRm9ybUFycmF5IGF0IHNlZ21lbnQgWyR7Z2V0Q3VycmVudFBhdGgoKX1dLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpbmRleCA9IHNlZ21lbnQ7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjdXJyZW50Lmxlbmd0aCkge1xyXG4gICAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBhdCBwYXRoIFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiIChsZW5ndGggPSAke2N1cnJlbnQubGVuZ3RofSlgKTtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5hdChpbmRleCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3BhcmVudCcpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSAoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgJiYgY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgPyBjdXJyZW50LmdldChzZWdtZW50KVxyXG4gICAgICAgICAgICA6IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3Jvb3QnKSB7XHJcbiAgICAgICAgICBjdXJyZW50ID0gKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiYgY3VycmVudC5nZXQoc2VnbWVudCkpXHJcbiAgICAgICAgICAgID8gY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgOiBjdXJyZW50LnJvb3Q7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkgJiYgb3B0aW9ucz8uYnJlYWtPbkFycmF5KSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IoYEV4cGVjdGVkIEZvcm1Hcm91cCBhdCBzZWdtZW50IFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudC5nZXQoc2VnbWVudCkpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmdldChzZWdtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNyZWF0ZVBhdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IGNyZWF0ZUNvbnRyb2wobmV4dFR5cGUpO1xyXG4gICAgICAgICAgICBjdXJyZW50LmFkZENvbnRyb2woc2VnbWVudCwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdDb250cm9sO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHdhcm4oYENvbnRyb2wgd2l0aCBrZXkgXCIke2dldEN1cnJlbnRQYXRoKCl9XCIgbm90IGZvdW5kIGluIEZvcm1Hcm91cC5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFzZWdtZW50KSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZXJyb3IoYEludmFsaWQgc2VnbWVudCB0eXBlOiAke3R5cGVvZiBzZWdtZW50fWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnQgPz8gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc09iamVjdCh2YWx1ZTogYW55KTogb2JqZWN0IHtcclxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIH1cclxuICAgIHJldHVybiB7IH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzQXJyYXkodmFsdWU6IGFueSk6IEFycmF5PGFueT4ge1xyXG4gICAgaWYgKHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5zZXJ0SW50b0FycmF5KGZvcm1BcnJheTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBvcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpdGVtVG9BZGQgPSB0aGlzLmNyZWF0ZUFycmF5SXRlbShmb3JtQXJyYXkpO1xyXG4gICAgdGhpcy5wYXRjaChpdGVtVG9BZGQsIHZhbHVlLCBvcHRpb25zKTtcclxuICAgIGZvcm1BcnJheS5pbnNlcnQoaW5kZXgsIGl0ZW1Ub0FkZCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRnJvbUFycmF5KGZvcm1BcnJheTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaW5kZXggPD0gMCB8fCBpbmRleCA+PSBmb3JtQXJyYXkubGVuZ3RoKSBmYWxzZTtcclxuICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQXJyYXlJdGVtKGZvcm1BcnJheTogRm9ybUFycmF5KTogRm9ybUdyb3VwXHJcbiAge1xyXG4gICAgY29uc3QgYW55Q29udHJvbCA9IGZvcm1BcnJheSBhcyBhbnk7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSAodHlwZW9mIChhbnlDb250cm9sKS5jcmVhdGVJdGVtID09PSAnZnVuY3Rpb24nKVxyXG4gICAgICA/IGFueUNvbnRyb2wuY3JlYXRlSXRlbSgpXHJcbiAgICAgIDogbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb250cm9sRnJvbVZhbHVlKHZhbHVlOiBhbnkpOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIG5ldyBGb3JtQXJyYXkodGhpcy5jcmVhdGVDb250cm9sRnJvbUFycmF5KHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNvbnRyb2xGcm9tQXJyYXkoYXJyYXk6IGFueVtdKTogQWJzdHJhY3RDb250cm9sW10ge1xyXG4gICAgcmV0dXJuIGFycmF5Lm1hcChpdGVtID0+IHRoaXMuY3JlYXRlQ29udHJvbEZyb21WYWx1ZShpdGVtKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlICplbnVtZXJhdGVDb250cm9scyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBHZW5lcmF0b3I8QWJzdHJhY3RDb250cm9sPiB7XHJcbiAgICB5aWVsZCBjb250cm9sO1xyXG5cclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKSkge1xyXG4gICAgICAgIHlpZWxkKiB0aGlzLmVudW1lcmF0ZUNvbnRyb2xzKGNoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY29udHJvbC5jb250cm9scykge1xyXG4gICAgICAgIHlpZWxkKiB0aGlzLmVudW1lcmF0ZUNvbnRyb2xzKGNoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0RXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IG51bWJlciB7XHJcblxyXG4gICAgbGV0IGVycm9ycyA9IDA7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQpXHJcbiAgICAgIHJldHVybiBlcnJvcnM7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IE9iamVjdC52YWx1ZXMoY29udHJvbC5jb250cm9scyk7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICBlcnJvcnMgKz0gdGhpcy5jb2xsZWN0RXJyb3JzKGNoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgIGVycm9ycysrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVua25vd24oY29udHJvbDogYW55KSB7XHJcbiAgICBjb250cm9sLl91bmtub3duID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNVbmtub3duKGNvbnRyb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbnRyb2wgJiYgY29udHJvbC5fdW5rbm93biA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2FpdFVudGlsU2V0dGxlZChcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIHBvbGxJbnRlcnZhbCA9IDEwMFxyXG4gICk6IE9ic2VydmFibGU8Rm9ybUNvbnRyb2xTdGF0dXM+IHtcclxuICAgIHJldHVybiBpbnRlcnZhbChwb2xsSW50ZXJ2YWwpLnBpcGUoXHJcbiAgICAgIG1hcCgoKSA9PiBjb250cm9sLnN0YXR1cyksXHJcbiAgICAgIGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnUEVORElORycpLFxyXG4gICAgICB0YWtlKDEpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQVEsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQW1CbEUsQ0FBQztBQUtGLE1BQU0sT0FBTyxXQUFXO0lBRXRCLEdBQUcsQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxLQUFVLEVBQUUsV0FBeUIsRUFBRSxZQUEyQjtRQUUxRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLGNBQWM7WUFDakIsT0FBTyxLQUFLLENBQUM7UUFFZixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFaEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsR0FBRyxDQUFDLE9BQXdCLEVBQUUsSUFBVSxFQUFFLFdBQXlCO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRCxPQUFPLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFVB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QU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQzthQUNJLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBWTtRQUM3QixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQVk7UUFDNUIsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVPLGdCQUFnQixDQUN0QixPQUF3QixFQUN4QixZQUFZLEdBQUcsR0FBRztRQUVsQixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ2hDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsRUFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDSixDQUFDO3dHQTFoQlUsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4vcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFBhdGgsIG5vcm1hbGl6ZVBhdGggfSBmcm9tICcuLi9jb21tb24vcGF0aCc7XHJcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbnR5cGUgQ29udHJvbFR5cGUgPSAnYXJyYXknIHwgJ2dyb3VwJyB8ICdjb250cm9sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hPcHRpb25zIHtcclxuICBlbWl0RXZlbnQ/OiBib29sZWFuO1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRlVHlwZT86IGJvb2xlYW47XHJcbiAgZmFsbGJhY2tWYWx1ZT86IGFueTtcclxuICBzdHJpY3Q6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aE9wdGlvbnMge1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIGNyZWF0ZT86IGJvb2xlYW47XHJcbiAgZXhwZWN0ZWQ/OiBDb250cm9sVHlwZTtcclxuICBicmVha09uQXJyYXk/OiBib29sZWFuO1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2UgaW1wbGVtZW50cyBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG5cclxuICBzZXQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiBib29sZWFuIHtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50Q29udHJvbCA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zID8/IHsgY3JlYXRlOiB0cnVlIH0pO1xyXG5cclxuICAgIGlmICghY3VycmVudENvbnRyb2wpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnBhdGNoKGN1cnJlbnRDb250cm9sLCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBhbnkge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zKTtcclxuICAgIHJldHVybiByZXN1bHQ/LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByZXBlbmQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zID8/IHsgZXhwZWN0ZWQ6IFwiYXJyYXlcIiwgY3JlYXRlOiB0cnVlIH0pO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnNlcnRJbnRvQXJyYXkoZm9ybUFycmF5LCAwLCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFwcGVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMgPz8geyBleHBlY3RlZDogXCJhcnJheVwiLCBjcmVhdGU6IHRydWUgfSk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc2VydEludG9BcnJheShmb3JtQXJyYXksIGZvcm1BcnJheS5sZW5ndGgsIHZhbHVlLCBwYXRjaE9wdGlvbnMpOyAgICAgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGV4cGVjdGVkOiBcImFycmF5XCIsIGNyZWF0ZTogdHJ1ZSB9KTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0SW50b0FycmF5KGZvcm1BcnJheSwgaW5kZXgsIHZhbHVlLCBwYXRjaE9wdGlvbnMpOyAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoKTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRnJvbUFycmF5KGZvcm1BcnJheSwgaW5kZXgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbW92ZVVwKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGlmIChpbmRleCA8PSAwIHx8IGluZGV4ID49IGZvcm1BcnJheS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGZvcm1BcnJheS5hdChpbmRleCk7XHJcbiAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICAgIGZvcm1BcnJheS5pbnNlcnQoaW5kZXggLSAxLCBjb250cm9sKTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSAgICBcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG1vdmVEb3duKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gZm9ybUFycmF5Lmxlbmd0aCAtIDEpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGZvcm1BcnJheS5hdChpbmRleCk7XHJcbiAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICAgIGZvcm1BcnJheS5pbnNlcnQoaW5kZXggKyAxLCBjb250cm9sKTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucykgOiBGb3JtQ29udHJvbFN0YXR1cyB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcbiAgICByZXR1cm4gcmVzdWx0Py5zdGF0dXM7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbGxWYWx1ZUFuZFZhbGlkaXR5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZW1pdEV2ZW50OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHRoaXMuZW51bWVyYXRlQ29udHJvbHMoY29udHJvbCkpIHtcclxuICAgICAgYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY291bnRJbnZhbGlkKGNvbnRyb2xzOiBJdGVyYWJsZTxBYnN0cmFjdENvbnRyb2w+KSB7XHJcbiAgICBsZXQgZXJyb3JzID0gMDtcclxuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xyXG4gICAgICBlcnJvcnMgKz0gdGhpcy5jb2xsZWN0RXJyb3JzKGNvbnRyb2wpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIGdldEludmFsaWRDb250cm9scyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IHBhdGg6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSB7XHJcbiAgICBjb25zdCBpbnZhbGlkOiB7IHBhdGg6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb250cm9sLmRpc2FibGVkKVxyXG4gICAgICByZXR1cm4gaW52YWxpZDtcclxuXHJcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKTtcclxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGludmFsaWQucHVzaCguLi50aGlzLmdldEludmFsaWRDb250cm9scyhjaGlsZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgaW52YWxpZC5wdXNoKHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpLCBjb250cm9sIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2goXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgICB2YWxpZGF0ZVR5cGU6IGZhbHNlLFxyXG4gICAgICBmYWxsYmFja1ZhbHVlOiBudWxsLFxyXG4gICAgICBzdHJpY3Q6IHRydWVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICAgIGNvbnNvbGUud2FybihgW3BhdGNoQ29udHJvbF0gJHttZXNzYWdlfWApXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyBlbWl0RXZlbnQsIHZhbGlkYXRlVHlwZSwgZmFsbGJhY2tWYWx1ZSwgc3RyaWN0IH1cclxuICAgICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xyXG4gICAgICBpZiAodmFsaWRhdGVUeXBlICYmIHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIGNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgICBpZiAoZmFsbGJhY2tWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbGxiYWNrVmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlcnJvcignSW52YWxpZCB2YWx1ZSB0eXBlIGFuZCBubyBmYWxsYmFjayB2YWx1ZSBwcm92aWRlZC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudCB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5hc09iamVjdCh2YWx1ZSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRWYWx1ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHNba2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmNvbnRyb2xzW2tleV0sIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghc3RyaWN0KSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sRnJvbVZhbHVlKHZhbHVlW2tleV0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRVbmtub3duKG5ld0NvbnRyb2wpO1xyXG4gICAgICAgICAgY29udHJvbC5hZGRDb250cm9sKGtleSwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoKG5ld0NvbnRyb2wsIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdhcm4oYEtleSBcIiR7a2V5fVwiIG5vdCBmb3VuZCBpbiB0aGUgRm9ybUdyb3VwLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChrZXkpO1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29udHJvbCkge1xyXG4gICAgICAgICAgICBjaGlsZENvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pOyAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuYXNBcnJheSh2YWx1ZSk7XHJcbiAgICAgIHdoaWxlIChjb250cm9sLmxlbmd0aCA8IGN1cnJlbnRWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBhbnlDb250cm9sID0gY29udHJvbCBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gY3VycmVudFZhbHVlW2NvbnRyb2wubGVuZ3RoXTtcclxuICAgICAgICBpZiAodHlwZW9mIChhbnlDb250cm9sKS5hZGRJdGVtID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBhbnlDb250cm9sLmFkZEl0ZW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udHJvbC5wdXNoKHRoaXMuY3JlYXRlQ29udHJvbEZyb21WYWx1ZShpdGVtVG9BZGQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKGNvbnRyb2wubGVuZ3RoID4gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRyb2wucmVtb3ZlQXQoY29udHJvbC5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogKHN0cmluZyB8IG51bWJlcilbXSB7XHJcbiAgICBjb25zdCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XHJcbiAgICBsZXQgY3VycmVudDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGNvbnRyb2w7XHJcblxyXG4gICAgd2hpbGUgKGN1cnJlbnQ/LnBhcmVudCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQ6IGFueSA9IGN1cnJlbnQucGFyZW50O1xyXG5cclxuICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50LmNvbnRyb2xzLmluZGV4T2YoY3VycmVudCk7XHJcbiAgICAgICAgcGF0aC51bnNoaWZ0KGluZGV4KTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhwYXJlbnQuY29udHJvbHMpLmZpbmQoayA9PiBwYXJlbnQuZ2V0KGspID09PSBjdXJyZW50KTtcclxuICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB3YWl0Rm9yQ29udHJvbChcclxuICAgIGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIHBhdGg6IFBhdGhcclxuICAgICwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9uc1xyXG4gICk6IE9ic2VydmFibGU8QWJzdHJhY3RDb250cm9sPiB7XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZSA9ICgpOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQgPT5cclxuICAgICAgdGhpcy5nZXRDb250cm9sKGZvcm1Hcm91cCwgcGF0aCwgcGF0aE9wdGlvbnMpO1xyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nID0gcmVzb2x2ZSgpO1xyXG4gICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gb2YoZXhpc3RpbmcpO1xyXG5cclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxBYnN0cmFjdENvbnRyb2w+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBjb25zdCBzdWIgPSBmb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3RybCA9IHJlc29sdmUoKTtcclxuICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChjdHJsKTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuICgpID0+IHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KGZvcm1Hcm91cDogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBpZiAoIShmb3JtR3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjb3BlIGlzIG5vdCBhIEZvcm1Hcm91cFwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhdGNoT3B0aW9uczogUGF0Y2hPcHRpb25zID0ge1xyXG4gICAgICBzdHJpY3Q6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNldDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5zZXQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBnZXQ6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkID0+XHJcbiAgICAgICAgdGhpcy5nZXQoZm9ybUdyb3VwLCBwYXRoLCBwYXRoT3B0aW9ucyksXHJcblxyXG4gICAgICBzdGF0dXM6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogRm9ybUNvbnRyb2xTdGF0dXMgfCB1bmRlZmluZWQgPT5cclxuICAgICAgICB0aGlzLnN0YXR1cyhmb3JtR3JvdXAsIHBhdGgsIHBhdGhPcHRpb25zKSxcclxuXHJcbiAgICAgIHByZXBlbmQ6IChwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMucHJlcGVuZChmb3JtR3JvdXAsIHBhdGgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIGFwcGVuZDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5hcHBlbmQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBpbnNlcnQ6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMuaW5zZXJ0KGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIHJlbW92ZTogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5yZW1vdmUoZm9ybUdyb3VwLCBwYXRoLCBpbmRleCksXHJcblxyXG4gICAgICBtb3ZlVXA6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZVVwKGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgpLFxyXG5cclxuICAgICAgbW92ZURvd246IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZURvd24oZm9ybUdyb3VwLCBwYXRoLCBpbmRleClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0dXNDaGFuZ2VzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgLCB3YWl0Rm9yUGVuZGluZz86ICgpID0+IHZvaWRcclxuICApOiBPYnNlcnZhYmxlPEZvcm1Db250cm9sU3RhdHVzPiB7XHJcblxyXG4gICAgLy9jb25zdCBzdGF0dXMkID0gY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUoXHJcbiAgICAvLyAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgLy8gIGlzT2JzZXJ2YWJsZShkZXN0cm95KVxyXG4gICAgLy8gICAgPyB0YWtlVW50aWwoZGVzdHJveSlcclxuICAgIC8vICAgIDogdGFrZVVudGlsRGVzdHJveWVkKGRlc3Ryb3kpXHJcbiAgICAvLylcclxuXHJcbiAgICBpZiAoY29udHJvbC5zdGF0dXMgPT09ICdQRU5ESU5HJyAmJiB3YWl0Rm9yUGVuZGluZykge1xyXG4gICAgICB0aGlzLndhaXRVbnRpbFNldHRsZWQoY29udHJvbClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHdhaXRGb3JQZW5kaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250cm9sLnN0YXR1c0NoYW5nZXM7XHJcblxyXG4gICAgLy9jb25zdCBzdGF0dXMkID0gY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUoXHJcbiAgICAvLyAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgLy8gIGlzT2JzZXJ2YWJsZShkZXN0cm95KVxyXG4gICAgLy8gICAgPyB0YWtlVW50aWwoZGVzdHJveSlcclxuICAgIC8vICAgIDogdGFrZVVudGlsRGVzdHJveWVkKGRlc3Ryb3kpXHJcbiAgICAvLyk7XHJcblxyXG4gICAgLy9pZiAoY29udHJvbC5zdGF0dXMgPT09ICdQRU5ESU5HJykge1xyXG4gICAgLy8gIHJldHVybiB0aGlzLndhaXRVbnRpbFNldHRsZWQoY29udHJvbCwgZGVzdHJveSkucGlwZShcclxuICAgIC8vICAgIHN3aXRjaE1hcCgoKSA9PlxyXG4gICAgLy8gICAgICBjb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcclxuICAgIC8vICAgICAgICBzdGFydFdpdGgoY29udHJvbC5zdGF0dXMpLFxyXG4gICAgLy8gICAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgIC8vICAgICAgICBpc09ic2VydmFibGUoZGVzdHJveSlcclxuICAgIC8vICAgICAgICAgID8gdGFrZVVudGlsKGRlc3Ryb3kpXHJcbiAgICAvLyAgICAgICAgICA6IHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95KVxyXG4gICAgLy8gICAgICApXHJcbiAgICAvLyAgICApXHJcbiAgICAvLyAgKTtcclxuICAgIC8vfVxyXG5cclxuICAgIC8vcmV0dXJuIHN0YXR1cyQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIHBhdGg6IFBhdGgsXHJcbiAgICBvcHRpb25zPzogUGF0aE9wdGlvbnNcclxuICApOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKSBjb25zb2xlLndhcm4oYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXJyb3IgPSAobWVzc2FnZTogc3RyaW5nKTogbmV2ZXIgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKSB0aHJvdyBuZXcgRXJyb3IoYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYXBwbHlQYXRoXSAke21lc3NhZ2V9YCk7IC8vIGZhbGxiYWNrIGRlZmF1bHQgYmVoYXZpb3JcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3JlYXRlQ29udHJvbCA9ICh0eXBlOiBDb250cm9sVHlwZSk6IEFic3RyYWN0Q29udHJvbCA9PiB7XHJcbiAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2FycmF5JzogcmV0dXJuIG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzogcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIGNhc2UgJ2NvbnRyb2wnOiBkZWZhdWx0OiByZXR1cm4gbmV3IEZvcm1Db250cm9sKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplUGF0aChwYXRoKTtcclxuICAgIGxldCBjdXJyZW50OiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbDtcclxuICAgIGNvbnN0IGNyZWF0ZVBhdGggPSBvcHRpb25zPy5jcmVhdGUgPz8gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzZWdtZW50ID0gc2VnbWVudHNbaV07XHJcbiAgICAgIGNvbnN0IGlzTGVhZiA9IGkgPT09IHNlZ21lbnRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIGNvbnN0IG5leHRUeXBlOiBDb250cm9sVHlwZSA9XHJcbiAgICAgICAgaXNMZWFmID8gKG9wdGlvbnM/LmV4cGVjdGVkID8/ICdjb250cm9sJylcclxuICAgICAgICAgIDogdHlwZW9mIHNlZ21lbnRzW2kgKyAxXSA9PT0gJ251bWJlcicgPyAnYXJyYXknXHJcbiAgICAgICAgICAgIDogJ2dyb3VwJztcclxuXHJcbiAgICAgIGNvbnN0IGdldEN1cnJlbnRQYXRoID0gKCkgPT4gc2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKTtcclxuXHJcbiAgICAgIGlmICghY3VycmVudCkge1xyXG4gICAgICAgIHJldHVybiBlcnJvcihgQ29udHJvbCBpcyBudWxsIGF0IHNlZ21lbnQgXCIke2dldEN1cnJlbnRQYXRoKCl9XCJgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICghKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IoYEV4cGVjdGVkIEZvcm1BcnJheSBhdCBzZWdtZW50IFske2dldEN1cnJlbnRQYXRoKCl9XSwgZ290ICR7Y3VycmVudC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBzZWdtZW50O1xyXG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gY3VycmVudC5sZW5ndGgpIHtcclxuICAgICAgICAgIHdhcm4oYEluZGV4ICR7aW5kZXh9IGlzIG91dCBvZiBib3VuZHMgYXQgcGF0aCBcIiR7Z2V0Q3VycmVudFBhdGgoKX1cIiAobGVuZ3RoID0gJHtjdXJyZW50Lmxlbmd0aH0pYCk7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuYXQoaW5kZXgpO1xyXG5cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcclxuXHJcbiAgICAgICAgaWYgKHNlZ21lbnQgPT09ICdwYXJlbnQnKSB7XHJcbiAgICAgICAgICBjdXJyZW50ID0gKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApICYmIGN1cnJlbnQuZ2V0KHNlZ21lbnQpXHJcbiAgICAgICAgICAgID8gY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgOiBjdXJyZW50LnBhcmVudDtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNlZ21lbnQgPT09ICdyb290Jykge1xyXG4gICAgICAgICAgY3VycmVudCA9IChjdXJyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwICYmIGN1cnJlbnQuZ2V0KHNlZ21lbnQpKVxyXG4gICAgICAgICAgICA/IGN1cnJlbnQuZ2V0KHNlZ21lbnQpXHJcbiAgICAgICAgICAgIDogY3VycmVudC5yb290O1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpICYmIG9wdGlvbnM/LmJyZWFrT25BcnJheSkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIShjdXJyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGVycm9yKGBFeHBlY3RlZCBGb3JtR3JvdXAgYXQgc2VnbWVudCBcIiR7Z2V0Q3VycmVudFBhdGgoKX1cIiwgZ290ICR7Y3VycmVudC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnQuZ2V0KHNlZ21lbnQpKSB7XHJcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5nZXQoc2VnbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjcmVhdGVQYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSBjcmVhdGVDb250cm9sKG5leHRUeXBlKTtcclxuICAgICAgICAgICAgY3VycmVudC5hZGRDb250cm9sKHNlZ21lbnQsIG5ld0NvbnRyb2wpO1xyXG4gICAgICAgICAgICBjdXJyZW50ID0gbmV3Q29udHJvbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB3YXJuKGBDb250cm9sIHdpdGgga2V5IFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiIG5vdCBmb3VuZCBpbiBGb3JtR3JvdXAuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghc2VnbWVudCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yKGBJbnZhbGlkIHNlZ21lbnQgdHlwZTogJHt0eXBlb2Ygc2VnbWVudH1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjdXJyZW50ID8/IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNPYmplY3QodmFsdWU6IGFueSk6IG9iamVjdCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc0FycmF5KHZhbHVlOiBhbnkpOiBBcnJheTxhbnk+IHtcclxuICAgIGlmICh2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluc2VydEludG9BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSwgb3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXRlbVRvQWRkID0gdGhpcy5jcmVhdGVBcnJheUl0ZW0oZm9ybUFycmF5KTtcclxuICAgIHRoaXMucGF0Y2goaXRlbVRvQWRkLCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4LCBpdGVtVG9BZGQpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUZyb21BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDw9IDAgfHwgaW5kZXggPj0gZm9ybUFycmF5Lmxlbmd0aCkgZmFsc2U7XHJcbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFycmF5SXRlbShmb3JtQXJyYXk6IEZvcm1BcnJheSk6IEZvcm1Hcm91cFxyXG4gIHtcclxuICAgIGNvbnN0IGFueUNvbnRyb2wgPSBmb3JtQXJyYXkgYXMgYW55O1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKHR5cGVvZiAoYW55Q29udHJvbCkuY3JlYXRlSXRlbSA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgPyBhbnlDb250cm9sLmNyZWF0ZUl0ZW0oKVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udHJvbEZyb21WYWx1ZSh2YWx1ZTogYW55KTogQWJzdHJhY3RDb250cm9sIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KHRoaXMuY3JlYXRlQ29udHJvbEZyb21BcnJheSh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb250cm9sRnJvbUFycmF5KGFycmF5OiBhbnlbXSk6IEFic3RyYWN0Q29udHJvbFtdIHtcclxuICAgIHJldHVybiBhcnJheS5tYXAoaXRlbSA9PiB0aGlzLmNyZWF0ZUNvbnRyb2xGcm9tVmFsdWUoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSAqZW51bWVyYXRlQ29udHJvbHMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogR2VuZXJhdG9yPEFic3RyYWN0Q29udHJvbD4ge1xyXG4gICAgeWllbGQgY29udHJvbDtcclxuXHJcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIE9iamVjdC52YWx1ZXMoY29udHJvbC5jb250cm9scykpIHtcclxuICAgICAgICB5aWVsZCogdGhpcy5lbnVtZXJhdGVDb250cm9scyhjaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNvbnRyb2wuY29udHJvbHMpIHtcclxuICAgICAgICB5aWVsZCogdGhpcy5lbnVtZXJhdGVDb250cm9scyhjaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sbGVjdEVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBudW1iZXIge1xyXG5cclxuICAgIGxldCBlcnJvcnMgPSAwO1xyXG5cclxuICAgIGlmIChjb250cm9sLmRpc2FibGVkKVxyXG4gICAgICByZXR1cm4gZXJyb3JzO1xyXG5cclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgZXJyb3JzICs9IHRoaXMuY29sbGVjdEVycm9ycyhjaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xyXG4gICAgICBlcnJvcnMrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVbmtub3duKGNvbnRyb2w6IGFueSkge1xyXG4gICAgY29udHJvbC5fdW5rbm93biA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVW5rbm93bihjb250cm9sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb250cm9sICYmIGNvbnRyb2wuX3Vua25vd24gPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhaXRVbnRpbFNldHRsZWQoXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBwb2xsSW50ZXJ2YWwgPSAxMDBcclxuICApOiBPYnNlcnZhYmxlPEZvcm1Db250cm9sU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gaW50ZXJ2YWwocG9sbEludGVydmFsKS5waXBlKFxyXG4gICAgICBtYXAoKCkgPT4gY29udHJvbC5zdGF0dXMpLFxyXG4gICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ1BFTkRJTkcnKSxcclxuICAgICAgdGFrZSgxKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { ToBoundArrows } from '../utils/bound';
|
|
3
3
|
import { take } from 'rxjs';
|
|
4
|
+
import { generateGuid } from '../utils/uuid';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../services/metadata.service";
|
|
6
7
|
import * as i2 from "../services/dialog.service";
|
|
@@ -46,11 +47,15 @@ export class FunctionService {
|
|
|
46
47
|
this.dialog.openDialog(formSchema, formOptions);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
newGuid() {
|
|
51
|
+
return generateGuid();
|
|
52
|
+
}
|
|
49
53
|
getContext() {
|
|
50
54
|
return ToBoundArrows(this, [
|
|
51
55
|
"openForm",
|
|
52
56
|
"invokable",
|
|
53
|
-
"executeOnce"
|
|
57
|
+
"executeOnce",
|
|
58
|
+
"newGuid"
|
|
54
59
|
]);
|
|
55
60
|
}
|
|
56
61
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionService, deps: [{ token: i1.MetadataService }, { token: i2.DialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -59,4 +64,4 @@ export class FunctionService {
|
|
|
59
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionService, decorators: [{
|
|
60
65
|
type: Injectable
|
|
61
66
|
}], ctorParameters: () => [{ type: i1.MetadataService }, { type: i2.DialogService }, { type: i0.Injector }] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRzdDLE1BQU0sT0FBTyxlQUFlO0lBRU47SUFDUjtJQUNBO0lBRlosWUFBb0IsUUFBeUIsRUFDakMsTUFBcUIsRUFDckIsUUFBa0I7UUFGVixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBSSxDQUFDO0lBRW5DLFNBQVMsQ0FBQyxJQUFTO1FBQ2pCLElBQUksT0FBTyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFJLFVBQXlCLEVBQUUsUUFBYTtRQUNyRCxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDeEIsVUFBVTthQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQXVCO1NBQ3JELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBeUIsRUFBRSxPQUFzQjtRQUV4RCxJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sV0FBVyxHQUFzQjtnQkFDckMsR0FBRyxPQUFPO2dCQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFBO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDekIsVUFBVTtZQUNWLFdBQVc7WUFDWCxhQUFhO1lBQ2IsU0FBUztTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBdkRVLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEaWFsb2dPcHRpb25zLCBGb3JtRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2JvdW5kJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGdlbmVyYXRlR3VpZCB9IGZyb20gJy4uL3V0aWxzL3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25TZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXRhZGF0YTogTWV0YWRhdGFTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlICAgIFxyXG4gICAgLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIGludm9rYWJsZShmdW5jOiBhbnkpOiBGdW5jdGlvbiB7XHJcbiAgICBpZiAodHlwZW9mIGZ1bmM/Lmludm9rZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueSkgPT4gZnVuYy5pbnZva2UoYXJncyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuICgpID0+IHsgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4ZWN1dGVPbmNlPFQ+KG9ic2VydmFibGU6IE9ic2VydmFibGU8VD4sIGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghb2JzZXJ2YWJsZSkgcmV0dXJuO1xyXG4gICAgb2JzZXJ2YWJsZVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiB0aGlzLmludm9rYWJsZShjYWxsYmFjaykgYXMgKHZhbHVlOiBUKSA9PiB2b2lkXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZvcm0odGVtcGxhdGU6IHN0cmluZyB8IG9iamVjdCwgb3B0aW9uczogRGlhbG9nT3B0aW9ucylcclxuICB7XHJcbiAgICBsZXQgZm9ybVNjaGVtYTogYW55O1xyXG5cclxuICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGZvcm1TY2hlbWEgPSB0aGlzLm1ldGFkYXRhLmdldFRlbXBsYXRlQnlOYW1lKHRlbXBsYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1TY2hlbWEgPSB0ZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZm9ybVNjaGVtYSkge1xyXG4gICAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvclxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5ld0d1aWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBnZW5lcmF0ZUd1aWQoKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgIFwib3BlbkZvcm1cIixcclxuICAgICAgXCJpbnZva2FibGVcIixcclxuICAgICAgXCJleGVjdXRlT25jZVwiLFxyXG4gICAgICBcIm5ld0d1aWRcIlxyXG4gICAgXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|