tuain-ng-forms-lib 14.5.33 → 14.5.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/esm2020/lib/classes/forms/element.mjs +1 -2
- package/esm2020/lib/classes/forms/piece-propagate.mjs +1 -2
- package/esm2020/lib/classes/forms/table/row-data.mjs +1 -6
- package/esm2020/lib/classes/forms/table/table.mjs +1 -22
- package/esm2020/lib/components/elements/tables/table.component.mjs +1 -3
- package/fesm2015/tuain-ng-forms-lib.mjs +0 -30
- package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -1
- package/fesm2020/tuain-ng-forms-lib.mjs +0 -30
- package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,6 @@ export class FormElement extends FormPiecePropagate {
|
|
|
8
8
|
;
|
|
9
9
|
setAttr(attr, value) {
|
|
10
10
|
const { name: attrName, propagate: name } = attr;
|
|
11
|
-
console.log(`Asignando valor a ${attrName}`);
|
|
12
11
|
this[attrName] = value;
|
|
13
12
|
name && this.propagateAttribute(name, value);
|
|
14
13
|
}
|
|
@@ -16,4 +15,4 @@ export class FormElement extends FormPiecePropagate {
|
|
|
16
15
|
isAction() { return this.elementType === elementTypes.action; }
|
|
17
16
|
isTable() { return this.elementType === elementTypes.table; }
|
|
18
17
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFHakQsWUFBWSxpQkFBc0IsRUFBRSxVQUFlO1FBQ2pELEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUh2QyxnQkFBVyxHQUFrQixJQUFJLENBQUM7SUFJbEMsQ0FBQztJQUppQyxDQUFDO0lBTW5DLE9BQU8sQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUMzQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVBpZWNlUHJvcGFnYXRlIH0gZnJvbSAnLi9waWVjZS1wcm9wYWdhdGUnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQgZXh0ZW5kcyBGb3JtUGllY2VQcm9wYWdhdGUge1xuICBlbGVtZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnREZWZpbml0aW9uOiBhbnksIGZvcm1Db25maWc6IGFueSkge1xuICAgIHN1cGVyKGVsZW1lbnREZWZpbml0aW9uLCBmb3JtQ29uZmlnKTtcbiAgfVxuXG4gIHNldEF0dHIoYXR0cjogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgeyBuYW1lOiBhdHRyTmFtZSwgcHJvcGFnYXRlOiBuYW1lIH0gPSBhdHRyO1xuICAgIHRoaXNbYXR0ck5hbWVdID0gdmFsdWU7XG4gICAgbmFtZSAmJiB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBpc0ZpZWxkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmZpZWxkOyB9XG4gIGlzQWN0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmFjdGlvbjsgfVxuICBpc1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLnRhYmxlOyB9XG59XG4iXX0=
|
|
@@ -10,7 +10,6 @@ export class FormPiecePropagate extends FormPiece {
|
|
|
10
10
|
}
|
|
11
11
|
get attributeChange() { return this._attributeChange; }
|
|
12
12
|
propagateAttribute(name, value) {
|
|
13
|
-
console.log(`Propagando atributo ${name}`);
|
|
14
13
|
this._attributeChange?.next({ name, value });
|
|
15
14
|
}
|
|
16
15
|
setCustomAttribute(name, value) {
|
|
@@ -36,4 +35,4 @@ export class FormPiecePropagate extends FormPiece {
|
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UtcHJvcGFnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9waWVjZS1wcm9wYWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUMxQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFFNUIsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQVM7SUFJL0MsWUFBWSxlQUFvQixFQUFFLFVBQWU7UUFDL0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUozQixnQ0FBMkIsR0FBYSxFQUFFLENBQUM7UUFLbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFdkQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUSxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUNsRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFUSxhQUFhLENBQUMsT0FBZ0IsRUFBRSxTQUF5QixJQUFJO1FBQ3BFLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFPO1FBQzFCLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUSxlQUFlLENBQUMsS0FBSztRQUM1QixLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1QaWVjZSB9IGZyb20gJy4vcGllY2UnO1xuXG5jb25zdCBWSVNJQkxFID0gJ3Zpc2libGUnO1xuY29uc3QgRElTQUJMRUQgPSAnZGlzYWJsZWQnO1xuXG5leHBvcnQgY2xhc3MgRm9ybVBpZWNlUHJvcGFnYXRlIGV4dGVuZHMgRm9ybVBpZWNlIHtcbiAgcHJvdGVjdGVkIHByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9hdHRyaWJ1dGVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHBpZWNlRGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICBzdXBlcihwaWVjZURlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgfVxuXG4gIGdldCBhdHRyaWJ1dGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U7IH1cblxuICBwcm9wYWdhdGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U/Lm5leHQoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRDdXN0b21BdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIGlmICh0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8uaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gYGN1c3RvbUF0dHJpYnV0ZXMuJHtuYW1lfWA7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShmdWxsTmFtZSwgdmFsdWUpO1xuICAgIH0gXG4gIH1cblxuICBvdmVycmlkZSBzZXRWaXNpYmlsaXR5KHZpc2libGU6IGJvb2xlYW4sIGZvcmNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0VmlzaWJpbGl0eSh2aXNpYmxlLCBmb3JjZWQpO1xuICAgIHRoaXMucHJvcGFnYXRlQXR0cmlidXRlKFZJU0lCTEUsIHRoaXMuX3Zpc2libGUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgc2V0IGVuYWJsZWQoZW5hYmxlZCkge1xuICAgIHN1cGVyLmVuYWJsZWQgPSBlbmFibGVkO1xuICAgIHRoaXMucHJvcGFnYXRlQXR0cmlidXRlKERJU0FCTEVELCB0aGlzLl9kaXNhYmxlZCk7XG4gIH1cblxuICBvdmVycmlkZSBmb3JtU3RhdGVDaGFuZ2Uoc3RhdGUpIHtcbiAgICBzdXBlci5mb3JtU3RhdGVDaGFuZ2Uoc3RhdGUpO1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVBdHRyaWJ1dGUoVklTSUJMRSwgdGhpcy5fdmlzaWJsZSk7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShESVNBQkxFRCwgdGhpcy5fZGlzYWJsZWQpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -70,17 +70,13 @@ export class TableRecordData {
|
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
72
|
hasCondition(columnFilters) {
|
|
73
|
-
console.log(`Evaluación de condición sobre un registro...`);
|
|
74
73
|
if (!columnFilters || columnFilters.length === 0) {
|
|
75
74
|
return true;
|
|
76
75
|
}
|
|
77
76
|
for (const condition of columnFilters) {
|
|
78
77
|
const { fieldCode, operator, values } = condition;
|
|
79
|
-
console.log(`1. Evaluación condición columna ${fieldCode} / ${operator}`);
|
|
80
78
|
if (this.recordData.hasOwnProperty(fieldCode)) {
|
|
81
79
|
const fieldValue = this.recordData[fieldCode];
|
|
82
|
-
console.log(`2. Evaluación condición columna ${fieldCode}/(${fieldValue}) con ${operator}`);
|
|
83
|
-
console.log(values);
|
|
84
80
|
const stringValue = fieldValue.toString().toUpperCase();
|
|
85
81
|
if (operator === operators.G && fieldValue <= values[0]) {
|
|
86
82
|
return false;
|
|
@@ -95,7 +91,6 @@ export class TableRecordData {
|
|
|
95
91
|
return false;
|
|
96
92
|
}
|
|
97
93
|
if (operator === operators.IN && !values.includes(fieldValue)) {
|
|
98
|
-
console.log(`Evaluación falsa de condición IN...`);
|
|
99
94
|
return false;
|
|
100
95
|
}
|
|
101
96
|
if (operator === operators.EQ) {
|
|
@@ -118,4 +113,4 @@ export class TableRecordData {
|
|
|
118
113
|
return true;
|
|
119
114
|
}
|
|
120
115
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUFZLGNBQWMsRUFBRSxnQkFBcUMsRUFBRSxrQkFBa0IsR0FBRyxJQUFJO1FBSjVGLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUduQixNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRyxPQUFPO1NBQ1I7UUFDRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEgsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLFNB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QUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7b0JBQzdGLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUNELElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDeEYsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNvcmRUYWJsZUNvbHVtbiB9IGZyb20gJy4vY29sdW1uJztcbmltcG9ydCB7IG9wZXJhdG9ycyB9IGZyb20gJy4uL2Zvcm0uY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlUmVjb3JkRGF0YSB7XG4gIHJlY29yZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVjb3JkRGF0YTogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocmVjb3JkUmVjZWl2ZWQsIHJlY29yZERlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uW10sIHNlbGVjdGlvbkZpZWxkTmFtZSA9IG51bGwpIHtcbiAgICBjb25zdCB7IHRhYmxlUmVjb3JkSWQsIHJlY29yZERhdGEgfSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIHRoaXMucmVjb3JkSWQgPSB0YWJsZVJlY29yZElkO1xuICAgIGlmICghcmVjb3JkRGVmaW5pdGlvbiB8fCByZWNvcmREZWZpbml0aW9uLmxlbmd0aCA9PT0gMCB8fCAhcmVjb3JkRGF0YSB8fCByZWNvcmREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWVzID0gcmVjb3JkRGVmaW5pdGlvbi5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZERhdGEpKSB7XG4gICAgICBjb25zdCByYXdSZWNvcmREYXRhID0gcmVjb3JkRGF0YS5maWx0ZXIoZmllbGREYXRhID0+IGZpZWxkRGF0YS5maWVsZENvZGUgJiYgZmllbGROYW1lcy5pbmNsdWRlcyhmaWVsZERhdGEuZmllbGRDb2RlKSk7XG4gICAgICByYXdSZWNvcmREYXRhLmZvckVhY2goZmllbGREYXRhID0+IHtcbiAgICAgICAgY29uc3QgeyBmaWVsZENvZGUsIGZpZWxkVmFsdWUgfSA9IGZpZWxkRGF0YTtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSByZWNvcmREZWZpbml0aW9uLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUgPT09IGZpZWxkQ29kZSk7XG4gICAgICAgIHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdID0gZmllbGRWYWx1ZSA/PyAnJztcbiAgICAgICAgaWYgKGZpZWxkQ29kZSA9PT0gc2VsZWN0aW9uRmllbGROYW1lKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyhyZWNvcmREYXRhKTtcbiAgICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gcmVjb3JkRGVmaW5pdGlvbi5maW5kKGNvbHVtbiA9PiBjb2x1bW4uZmllbGRDb2RlID09PSBmaWVsZENvZGUpO1xuICAgICAgICB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXSA9IGZpZWxkVmFsdWUgPz8gJyc7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDsgfVxuICBzZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSB0cnVlOyB9XG4gIHVuc2VsZWN0KCkgeyB0aGlzLnNlbGVjdGVkID0gZmFsc2U7IH1cblxuICBnZXQgcmVjb3JkSWRLZXkoKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgdGhpcy5yZWNvcmRJZCA9PT0gJ29iamVjdCcpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVjb3JkSWQpIDogdGhpcy5yZWNvcmRJZDtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGRDb2RlKTogYW55IHtcbiAgICByZXR1cm4gKGZpZWxkQ29kZSAmJiB0aGlzLnJlY29yZERhdGEpID8gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgaGFzUGF0dGVybih3b3JkcywgY29sdW1uT2JqKSB7XG4gICAgaWYgKCF3b3JkcyB8fCB3b3Jkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGxldCB3b3JkSXNQcmVzZW50ID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkQ29kZSBpbiB0aGlzLnJlY29yZERhdGEpIHtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmID0gY29sdW1uT2JqPy5bZmllbGRDb2RlXTtcbiAgICAgICAgaWYgKGNvbHVtbkRlZj8uc2VhcmNoYWJsZSAmJiB0aGlzLnJlY29yZERhdGEuaGFzT3duUHJvcGVydHkoZmllbGRDb2RlKSkge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSB3b3JkLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgbGV0IGZpZWxkVmFsdWU7XG4gICAgICAgICAgaWYgKGNvbHVtbkRlZi5maWVsZFR5cGUudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnREFURScpKSB7XG4gICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0uc3Vic3RyaW5nKDAsIDE2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRWYWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXModGVybSkpIHtcbiAgICAgICAgICAgIHdvcmRJc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXdvcmRJc1ByZXNlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhhc0NvbmRpdGlvbihjb2x1bW5GaWx0ZXJzKSB7XG4gICAgY29uc29sZS5sb2coYEV2YWx1YWNpw7NuIGRlIGNvbmRpY2nDs24gc29icmUgdW4gcmVnaXN0cm8uLi5gKTtcblxuICAgIGlmICghY29sdW1uRmlsdGVycyB8fCBjb2x1bW5GaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbHVtbkZpbHRlcnMpIHtcbiAgICAgIGNvbnN0IHsgZmllbGRDb2RlLCBvcGVyYXRvciwgdmFsdWVzIH0gPSBjb25kaXRpb247XG5cbmNvbnNvbGUubG9nKGAxLiBFdmFsdWFjacOzbiBjb25kaWNpw7NuIGNvbHVtbmEgJHtmaWVsZENvZGV9IC8gJHtvcGVyYXRvcn1gKVxuXG4gICAgICBpZiAodGhpcy5yZWNvcmREYXRhLmhhc093blByb3BlcnR5KGZpZWxkQ29kZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGAyLiBFdmFsdWFjacOzbiBjb25kaWNpw7NuIGNvbHVtbmEgJHtmaWVsZENvZGV9Lygke2ZpZWxkVmFsdWV9KSBjb24gJHtvcGVyYXRvcn1gKVxuICAgICAgICBjb25zb2xlLmxvZyh2YWx1ZXMpXG5cbiAgICAgICAgY29uc3Qgc3RyaW5nVmFsdWUgPSBmaWVsZFZhbHVlLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuRyAmJiBmaWVsZFZhbHVlIDw9IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5MICYmIGZpZWxkVmFsdWUgPj0gdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkdFICYmIGZpZWxkVmFsdWUgPCB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTEUgJiYgZmllbGRWYWx1ZSA+IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5JTiAmJiAhdmFsdWVzLmluY2x1ZGVzKGZpZWxkVmFsdWUpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEV2YWx1YWNpw7NuIGZhbHNhIGRlIGNvbmRpY2nDs24gSU4uLi5gKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5FUSkge1xuICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlID09PSB2YWx1ZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTkVRICYmIGZpZWxkVmFsdWUgPT09IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5IQVMgJiYgIXN0cmluZ1ZhbHVlLmluY2x1ZGVzKHZhbHVlc1swXS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLk5PVEhBUyAmJiBzdHJpbmdWYWx1ZS5pbmNsdWRlcyh2YWx1ZXNbMF0udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5CRVRXRUVOICYmIChmaWVsZFZhbHVlIDwgdmFsdWVzWzBdIHx8IGZpZWxkVmFsdWUgPiB2YWx1ZXNbMV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUFZLGNBQWMsRUFBRSxnQkFBcUMsRUFBRSxrQkFBa0IsR0FBRyxJQUFJO1FBSjVGLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUduQixNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRyxPQUFPO1NBQ1I7UUFDRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEgsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLFNB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QUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjb3JkVGFibGVDb2x1bW4gfSBmcm9tICcuL2NvbHVtbic7XG5pbXBvcnQgeyBvcGVyYXRvcnMgfSBmcm9tICcuLi9mb3JtLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVJlY29yZERhdGEge1xuICByZWNvcmRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHJlY29yZERhdGE6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHJlY29yZFJlY2VpdmVkLCByZWNvcmREZWZpbml0aW9uOiBSZWNvcmRUYWJsZUNvbHVtbltdLCBzZWxlY3Rpb25GaWVsZE5hbWUgPSBudWxsKSB7XG4gICAgY29uc3QgeyB0YWJsZVJlY29yZElkLCByZWNvcmREYXRhIH0gPSByZWNvcmRSZWNlaXZlZDtcbiAgICB0aGlzLnJlY29yZElkID0gdGFibGVSZWNvcmRJZDtcbiAgICBpZiAoIXJlY29yZERlZmluaXRpb24gfHwgcmVjb3JkRGVmaW5pdGlvbi5sZW5ndGggPT09IDAgfHwgIXJlY29yZERhdGEgfHwgcmVjb3JkRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmllbGROYW1lcyA9IHJlY29yZERlZmluaXRpb24ubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGRDb2RlKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmREYXRhKSkge1xuICAgICAgY29uc3QgcmF3UmVjb3JkRGF0YSA9IHJlY29yZERhdGEuZmlsdGVyKGZpZWxkRGF0YSA9PiBmaWVsZERhdGEuZmllbGRDb2RlICYmIGZpZWxkTmFtZXMuaW5jbHVkZXMoZmllbGREYXRhLmZpZWxkQ29kZSkpO1xuICAgICAgcmF3UmVjb3JkRGF0YS5mb3JFYWNoKGZpZWxkRGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZmllbGRDb2RlLCBmaWVsZFZhbHVlIH0gPSBmaWVsZERhdGE7XG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gcmVjb3JkRGVmaW5pdGlvbi5maW5kKGNvbHVtbiA9PiBjb2x1bW4uZmllbGRDb2RlID09PSBmaWVsZENvZGUpO1xuICAgICAgICB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXSA9IGZpZWxkVmFsdWUgPz8gJyc7XG4gICAgICAgIGlmIChmaWVsZENvZGUgPT09IHNlbGVjdGlvbkZpZWxkTmFtZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmaWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmllbGRzID0gT2JqZWN0LmtleXMocmVjb3JkRGF0YSk7XG4gICAgICBmaWVsZHMuZm9yRWFjaChmaWVsZENvZGUgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuICAgICAgICBjb25zdCBmaWVsZERlZiA9IHJlY29yZERlZmluaXRpb24uZmluZChjb2x1bW4gPT4gY29sdW1uLmZpZWxkQ29kZSA9PT0gZmllbGRDb2RlKTtcbiAgICAgICAgdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0gPSBmaWVsZFZhbHVlID8/ICcnO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2VsZWN0KCkgeyB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7IH1cbiAgc2VsZWN0KCkgeyB0aGlzLnNlbGVjdGVkID0gdHJ1ZTsgfVxuICB1bnNlbGVjdCgpIHsgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOyB9XG5cbiAgZ2V0IHJlY29yZElkS2V5KCkge1xuICAgIHJldHVybiAodHlwZW9mIHRoaXMucmVjb3JkSWQgPT09ICdvYmplY3QnKVxuICAgICAgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnJlY29yZElkKSA6IHRoaXMucmVjb3JkSWQ7XG4gIH1cblxuICBnZXRGaWVsZFZhbHVlKGZpZWxkQ29kZSk6IGFueSB7XG4gICAgcmV0dXJuIChmaWVsZENvZGUgJiYgdGhpcy5yZWNvcmREYXRhKSA/IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdIDogbnVsbDtcbiAgfVxuXG4gIGhhc1BhdHRlcm4od29yZHMsIGNvbHVtbk9iaikge1xuICAgIGlmICghd29yZHMgfHwgd29yZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICBsZXQgd29yZElzUHJlc2VudCA9IGZhbHNlO1xuICAgICAgZm9yIChjb25zdCBmaWVsZENvZGUgaW4gdGhpcy5yZWNvcmREYXRhKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZiA9IGNvbHVtbk9iaj8uW2ZpZWxkQ29kZV07XG4gICAgICAgIGlmIChjb2x1bW5EZWY/LnNlYXJjaGFibGUgJiYgdGhpcy5yZWNvcmREYXRhLmhhc093blByb3BlcnR5KGZpZWxkQ29kZSkpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGxldCBmaWVsZFZhbHVlO1xuICAgICAgICAgIGlmIChjb2x1bW5EZWYuZmllbGRUeXBlLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ0RBVEUnKSkge1xuICAgICAgICAgICAgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdLnN1YnN0cmluZygwLCAxNik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkVmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSB7XG4gICAgICAgICAgICB3b3JkSXNQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF3b3JkSXNQcmVzZW50KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYXNDb25kaXRpb24oY29sdW1uRmlsdGVycykge1xuICAgIGlmICghY29sdW1uRmlsdGVycyB8fCBjb2x1bW5GaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbHVtbkZpbHRlcnMpIHtcbiAgICAgIGNvbnN0IHsgZmllbGRDb2RlLCBvcGVyYXRvciwgdmFsdWVzIH0gPSBjb25kaXRpb247XG4gICAgICBpZiAodGhpcy5yZWNvcmREYXRhLmhhc093blByb3BlcnR5KGZpZWxkQ29kZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuICAgICAgICBjb25zdCBzdHJpbmdWYWx1ZSA9IGZpZWxkVmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5HICYmIGZpZWxkVmFsdWUgPD0gdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkwgJiYgZmllbGRWYWx1ZSA+PSB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuR0UgJiYgZmllbGRWYWx1ZSA8IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5MRSAmJiBmaWVsZFZhbHVlID4gdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLklOICYmICF2YWx1ZXMuaW5jbHVkZXMoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuRVEpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGRWYWx1ZSA9PT0gdmFsdWVzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLk5FUSAmJiBmaWVsZFZhbHVlID09PSB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuSEFTICYmICFzdHJpbmdWYWx1ZS5pbmNsdWRlcyh2YWx1ZXNbMF0udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5OT1RIQVMgJiYgc3RyaW5nVmFsdWUuaW5jbHVkZXModmFsdWVzWzBdLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuQkVUV0VFTiAmJiAoZmllbGRWYWx1ZSA8IHZhbHVlc1swXSB8fCBmaWVsZFZhbHVlID4gdmFsdWVzWzFdKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -235,17 +235,12 @@ export class RecordTable extends FormElement {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
updateVisibleRecords() {
|
|
238
|
-
console.log('updateVisibleRecords');
|
|
239
238
|
let visibleRecords;
|
|
240
239
|
if (this.clientPaging) {
|
|
241
|
-
console.log('this.clientPaging');
|
|
242
|
-
console.log('a por getFilteredRecords');
|
|
243
240
|
let filteredRecords = this.getFilteredRecords();
|
|
244
|
-
console.log('regresando de getFilteredRecords');
|
|
245
241
|
this.setAttr(attrs.totalRecordsNumber, filteredRecords.length);
|
|
246
242
|
const sliceNumber1 = (this.currentPage - 1) * this.recordsPerPage;
|
|
247
243
|
const sliceNumber2 = (this.currentPage - 1) * this.recordsPerPage + this.recordsPerPage;
|
|
248
|
-
console.log('Actualizando visibleRecords');
|
|
249
244
|
visibleRecords = filteredRecords.slice(sliceNumber1, sliceNumber2);
|
|
250
245
|
const recordsLastPage = this.totalRecordsNumber % this.recordsPerPage;
|
|
251
246
|
const totalPages = Math.trunc(this.totalRecordsNumber / this.recordsPerPage + (recordsLastPage ? 1 : 0));
|
|
@@ -256,7 +251,6 @@ export class RecordTable extends FormElement {
|
|
|
256
251
|
else {
|
|
257
252
|
visibleRecords = this.tableRecords;
|
|
258
253
|
}
|
|
259
|
-
console.log('Actualizando visibleRecords al cierre');
|
|
260
254
|
this.setAttr(attrs.visibleRecords, visibleRecords);
|
|
261
255
|
}
|
|
262
256
|
updateFromServer(tableReceived) {
|
|
@@ -371,19 +365,15 @@ export class RecordTable extends FormElement {
|
|
|
371
365
|
tableColumn && tableColumn.addFilterDefinition(filterDefinition);
|
|
372
366
|
}
|
|
373
367
|
getFilteredRecords() {
|
|
374
|
-
console.log('getFilteredRecords');
|
|
375
368
|
let filteredRecords = this.tableRecords;
|
|
376
369
|
if (this.restrictedId) {
|
|
377
|
-
console.log('por id');
|
|
378
370
|
filteredRecords = filteredRecords.filter(record => record.recordId === this.restrictedId);
|
|
379
371
|
}
|
|
380
372
|
if (this.globalFilterStrings.length > 0) {
|
|
381
|
-
console.log('global');
|
|
382
373
|
filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));
|
|
383
374
|
}
|
|
384
375
|
const columnFilters = this.columns.filter(column => column.filter).map(column => column.filter);
|
|
385
376
|
if (columnFilters.length > 0) {
|
|
386
|
-
console.log('Hay columnFilters...');
|
|
387
377
|
filteredRecords = filteredRecords.filter(record => record.hasCondition(columnFilters));
|
|
388
378
|
}
|
|
389
379
|
return filteredRecords;
|
|
@@ -393,23 +383,12 @@ export class RecordTable extends FormElement {
|
|
|
393
383
|
return tableColumn?.filter ?? null;
|
|
394
384
|
}
|
|
395
385
|
addColumnFilter(columnName, columnValues, operator = null) {
|
|
396
|
-
console.log('1. addColumnFilter');
|
|
397
386
|
const tableColumn = this.columnDefinition(columnName);
|
|
398
|
-
console.log('2. addColumnFilter');
|
|
399
|
-
console.log(tableColumn);
|
|
400
387
|
const columnFilterDefinition = tableColumn?.filterDefinition ?? null;
|
|
401
|
-
console.log('3. addColumnFilter');
|
|
402
|
-
console.log(columnFilterDefinition);
|
|
403
388
|
if (!columnFilterDefinition) {
|
|
404
389
|
return;
|
|
405
390
|
}
|
|
406
|
-
console.log('4. addColumnFilter');
|
|
407
|
-
console.log('tableColumn');
|
|
408
|
-
console.log(tableColumn);
|
|
409
|
-
console.log({ columnValues, operator });
|
|
410
|
-
console.log('5. Adicionando filtro');
|
|
411
391
|
tableColumn && tableColumn.addFilter(columnValues, operator);
|
|
412
|
-
console.log('4. updateVisibleRecords');
|
|
413
392
|
this.updateVisibleRecords();
|
|
414
393
|
}
|
|
415
394
|
removeColumnFilter(columnName) {
|
|
@@ -481,4 +460,4 @@ export class RecordTable extends FormElement {
|
|
|
481
460
|
});
|
|
482
461
|
}
|
|
483
462
|
}
|
|
484
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDbkYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQzdDLGNBQWMsRUFBRSxFQUFFLElB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LEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzdGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksYUFBYSxHQUFHLGFBQWEsRUFBRTtZQUNqQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDYjthQUFNLElBQUksYUFBYSxHQUFHLGFBQWEsRUFBRTtZQUN4QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7UUFDRCxPQUFPLFNBQVMsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvRCxDQUFDO0lBRVEsOEJBQThCLENBQUMsSUFBSSxFQUFFLGlCQUFpQjtRQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3QixNQUFNLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4uL2VsZW1lbnQnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGVDb2x1bW4gfSBmcm9tICcuL2NvbHVtbic7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IFRhYmxlUmVjb3JkRGF0YSB9IGZyb20gJy4vcm93LWRhdGEnO1xuXG5jb25zdCBUQUJMRV9TT1JUX0FTQ0VORElORyA9ICdhc2MnO1xuY29uc3QgVEFCTEVfU09SVF9ERVNDRU5ESU5HID0gJ2Rlc2MnO1xuXG5jb25zdCBhdHRycyA9IHtcbiAgYWxsU2VsZWN0ZWQ6IHsgbmFtZTogJ2FsbFNlbGVjdGVkJywgcHJvcGFnYXRlOiAnYWxsU2VsZWN0ZWQnIH0sXG4gIHRhYmxlQ29kZTogeyBuYW1lOiAndGFibGVDb2RlJywgcHJvcGFnYXRlOiAnY29kZScgfSxcbiAgY2xpZW50UGFnaW5nOiB7IG5hbWU6ICdjbGllbnRQYWdpbmcnLCBwcm9wYWdhdGU6IG51bGwgfSxcbiAgZ2xvYmFsU2VhcmNoOiB7IG5hbWU6ICdnbG9iYWxTZWFyY2gnLCBwcm9wYWdhdGU6ICdnbG9iYWxTZWFyY2gnIH0sXG4gIGdsb2JhbEZpbHRlclN0cmluZzogeyBuYW1lOiAnZ2xvYmFsRmlsdGVyU3RyaW5nJywgcHJvcGFnYXRlOiAnZ2xvYmFsRmlsdGVyU3RyaW5nJyB9LFxuICBzb3J0aW5nOiB7IG5hbWU6ICdzb3J0aW5nJywgcHJvcGFnYXRlOiBudWxsIH0sXG4gIHJlY29yZHNQZXJQYWdlOiB7IG5hbWU6ICdyZWNvcmRzUGVyUGFnZScsIHByb3BhZ2F0ZTogJ3JlY29yZHNQZXJQYWdlJyB9LFxuICBsYXlvdXQ6IHsgbmFtZTogJ2xheW91dCcsIHByb3BhZ2F0ZTogJ2xheW91dCcgfSxcbiAgY29sdW1uczogeyBuYW1lOiAnY29sdW1ucycsIHByb3BhZ2F0ZTogJ2NvbHVtbnMnIH0sXG4gIHNlbGVjdGVkUmVjb3JkczogeyBuYW1lOiAnc2VsZWN0ZWRSZWNvcmRzJywgcHJvcGFnYXRlOiAnc2VsZWN0ZWRSZWNvcmRzJyB9LFxuICBjdXJyZW50UGFnZTogeyBuYW1lOiAnY3VycmVudFBhZ2UnLCBwcm9wYWdhdGU6ICdjdXJyZW50UGFnZScgfSxcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiB7IG5hbWU6ICd0b3RhbFJlY29yZHNOdW1iZXInLCBwcm9wYWdhdGU6ICd0b3RhbFJlY29yZHNOdW1iZXInIH0sXG4gIHZpc2libGVSZWNvcmRzOiB7IG5hbWU6ICd2aXNpYmxlUmVjb3JkcycsIHByb3BhZ2F0ZTogJ3Zpc2libGVSZWNvcmRzJyB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUFjdGlvbkV2ZW50IHtcbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICByZWNvcmRJZDogYW55O1xuICByZWNvcmREYXRhOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVFdmVudCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICBhY3Rpb25Db2RlOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb25EZXRhaWw6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlY29yZFRhYmxlIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmxpbmVBY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2xvYmFsQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlY29yZFNlbGVjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2V0RGF0YVRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIF90YWJsZUNvbHVtbk9iaiA9IHt9O1xuICBwcml2YXRlIF9hcHBlbmRQYWdlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfYWN0aW9uczogVGFibGVBY3Rpb25bXTtcbiAgcHJpdmF0ZSBfYWN0aW9uc09iaiA9IHt9O1xuXG4gIC8vIE1lY2FuaXNtb3MgZGUgZmlsdHJhZG8gbnVldmEgdmVyc2nDs25cbiAgcHJpdmF0ZSBnbG9iYWxGaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGdsb2JhbEZpbHRlclN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgc2VsZWN0ZWRSZWNvcmRzOiBhbnk7XG4gIHByaXZhdGUgcmVzdHJpY3RlZElkOiBhbnk7XG4gIHByaXZhdGUgbGF5b3V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBnbG9iYWxTZWFyY2g6IGJvb2xlYW47XG4gIHRhYmxlUmVjb3JkczogVGFibGVSZWNvcmREYXRhW107XG4gIHRhYmxlUmVjb3JkT2JqID0ge307XG4gIHZpc2libGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXSB8IG51bGwgPSBudWxsO1xuICBjb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdO1xuICBzZWxlY3RhYmxlOiBib29sZWFuO1xuICBzZWxlY3Rpb25CYWNrZW5kOiBib29sZWFuO1xuICBzZWxlY3Rpb25GaWVsZDogc3RyaW5nO1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHRhYmxlQ29kZTogc3RyaW5nID0gJyc7XG4gIHRhYmxlVGl0bGU6IHN0cmluZztcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICByZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHJlY29yZHNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICByZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBzb3J0aW5nOiBhbnk7XG5cbiAgd2FpdGluZzogYm9vbGVhbjtcbiAgY2xpZW50UGFnaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgc29ydGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IodGFibGVSZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKHRhYmxlUmVjZWl2ZWQsIGZvcm1Db25maWcpO1xuICAgIHRoaXMucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzID0gdGhpcy5fZm9ybUNvbmZpZz8ucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzPy50YWJsZXMgPz8gW107XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlcy50YWJsZTtcbiAgICB0aGlzLndhaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSAxO1xuICAgIHRoaXMucmVxdWVzdGVkUGFnZSA9IDE7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5fdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fYWN0aW9uc09iaiA9IHt9O1xuICAgIHRoaXMudGFibGVSZWNvcmRzID0gW107XG4gICAgdGhpcy5nbG9iYWxTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IG51bGw7XG5cbiAgICB0aGlzLnRhYmxlVGl0bGUgPSB0YWJsZVJlY2VpdmVkLnRhYmxlVGl0bGU7XG4gICAgdGhpcy5fYXBwZW5kUGFnZXMgPSB0YWJsZVJlY2VpdmVkPy5hcHBlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gdGFibGVSZWNlaXZlZD8uc2VsZWN0YWJsZSA/PyBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGlvbkJhY2tlbmQgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3Rpb25CYWNrZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuc29ydGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zb3J0YWJsZSA/PyBmYWxzZTtcblxuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy50YWJsZUNvZGUsIHRhYmxlUmVjZWl2ZWQudGFibGVDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuY2xpZW50UGFnaW5nLCB0YWJsZVJlY2VpdmVkPy5jbGllbnRQYWdpbmcgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbFNlYXJjaCwgdGFibGVSZWNlaXZlZD8uc2ltcGxlRmlsdGVyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZ2xvYmFsRmlsdGVyU3RyaW5nLCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHsgY29sdW1uTmFtZTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCBmb3JtQ29uZmlnLmRlZmF1bHRSZWNvcmRzUGVyUGFnZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmxheW91dCwgJycpO1xuXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtblJlY2VpdmVkIG9mIHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkVucmljaGVkID0ge1xuICAgICAgICAgIC4uLmNvbHVtblJlY2VpdmVkLFxuICAgICAgICAgIHZpc2libGVTdGF0ZXM6IHRoaXMudmlzaWJsZVN0YXRlcyxcbiAgICAgICAgICBlbmFibGVkU3RhdGVzOiB0aGlzLmVuYWJsZWRTdGF0ZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmaW5pdGlvbjogUmVjb3JkVGFibGVDb2x1bW4gPSBuZXcgUmVjb3JkVGFibGVDb2x1bW4oY29sdW1uRW5yaWNoZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uRGVmaW5pdGlvbik7XG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2NvbHVtbkRlZmluaXRpb24uZmllbGRDb2RlXSA9IGNvbHVtbkRlZmluaXRpb247XG4gICAgICB9XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY29sdW1ucywgY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIHRhYmxlQWN0aW9ucykge1xuICAgICAgICBjb25zdCBpbmxpbmVBY3Rpb24gPSBuZXcgVGFibGVBY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goaW5saW5lQWN0aW9uKTtcbiAgICAgICAgdGhpcy5fYWN0aW9uc09ialtpbmxpbmVBY3Rpb24uYWN0aW9uQ29kZV0gPSBpbmxpbmVBY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uRmllbGQgPSAodGhpcy5zZWxlY3RhYmxlKSA/IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkZpZWxkIDogbnVsbDtcbiAgICAvLyBGaWx0cm9zIHByZWRlZmluaWRvcyBlbiBlbCBmb3JtdWxhcmlvXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmlsdGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlUmVjZWl2ZWQuZmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXJEZWZpbml0aW9uKHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0uZmllbGRDb2RlLCB0YWJsZVJlY2VpdmVkLmZpbHRlcnNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29sdW1uTmFtZXMoKSB7IHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl90YWJsZUNvbHVtbk9iaik7IH1cbiAgZ2V0IGlubGluZUFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyOyB9XG4gIGdldCBnbG9iYWxBY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlcjsgfVxuICBnZXQgc2VsZWN0aW9uQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXI7IH1cbiAgZ2V0IHJlY29yZFNlbGVjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyOyB9XG4gIGdldCBnZXREYXRhVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2dldERhdGFUcmlnZ2VyOyB9XG5cbiAgZ2V0TGF5b3V0KCkgeyByZXR1cm4gdGhpcy5sYXlvdXQ7IH1cbiAgc2V0TGF5b3V0KGxheW91dCkgeyB0aGlzLnNldEF0dHIoYXR0cnMubGF5b3V0LCBsYXlvdXQpOyB9XG4gIGhhc0FjdGlvbnMoKSB7IHJldHVybiAodGhpcy5fYWN0aW9ucy5sZW5ndGggPiAwKTsgfVxuICBnZXRTZWxlY3RlZFJlY29yZHMoKSB7IHJldHVybiB0aGlzLnRhYmxlUmVjb3Jkcy5maWx0ZXIocmVjID0+IHJlYy5zZWxlY3RlZCkubWFwKHJlYyA9PiByZWMucmVjb3JkSWQpOyB9XG4gIGFjdGl2YXRlR2xvYmFsU2VhcmNoKCkgeyB0aGlzLmdsb2JhbFNlYXJjaCA9IHRydWU7IH1cbiAgaW5hY3RpdmF0ZUdsb2JhbFNlYXJjaCgpIHsgdGhpcy5nbG9iYWxTZWFyY2ggPSBmYWxzZTsgfVxuICBjb2x1bW5EZWZpbml0aW9uKGZpZWxkQ29kZSk6IFJlY29yZFRhYmxlQ29sdW1uIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2ZpZWxkQ29kZV07IH1cbiAgcHV0T25XYWl0KCkgeyB0aGlzLndhaXRpbmcgPSB0cnVlOyB9XG4gIGZyZWVXYWl0aW5nKCkgeyB0aGlzLndhaXRpbmcgPSBmYWxzZTsgfVxuXG4gIG5vdGlmeUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiBudWxsXG4gICAgfTtcbiAgICB0aGlzLl9nbG9iYWxBY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlJbmxpbmVBY3Rpb24odGFibGVBY3Rpb25FdmVudDogVGFibGVBY3Rpb25FdmVudCkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogdGFibGVBY3Rpb25FdmVudC5hY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZElkLFxuICAgICAgICByZWNvcmREYXRhOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZERhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX2lubGluZUFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVJlY29yZFNlbGVjdGlvbihyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZCA9IHRoaXMuZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpO1xuICAgIGlmICghcmVjb3JkKSB7IHJldHVybjsgfVxuICAgIHJlY29yZC50b2dnbGVTZWxlY3QoKTtcbiAgICB0aGlzLnJlcXVlc3RlZFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlID8/IDE7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiByZWNvcmQucmVjb3JkSWQsXG4gICAgICAgIHJlY29yZERhdGE6IHJlY29yZC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnJlY29yZFNlbGVjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHNlbGVjdGVkUmVjb3JkczogdGhpcy5zZWxlY3RlZFJlY29yZHNcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeUdldERhdGFBY3Rpb24ocmVxdWVzdGVkUGFnZSA9IG51bGwpIHtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgdGhpcy5yZXF1ZXN0ZWRQYWdlID0gcmVxdWVzdGVkUGFnZSB8fCB0aGlzLmN1cnJlbnRQYWdlIHx8IDE7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiBudWxsLFxuICAgIH07XG4gICAgdGhpcy5fZ2V0RGF0YVRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIHRoaXMudGFibGVSZWNvcmRzID0gW107XG4gICAgdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMudGFibGVSZWNvcmRPYmogPSB7fTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCB0cnVlKTtcbiAgICB0aGlzLnRhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIHRoaXMuZ2V0U2VsZWN0ZWRSZWNvcmRzKCkpO1xuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICB1blNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICB0aGlzLnRhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQudW5zZWxlY3QoKSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZXRUYWJsZVJlY29yZHModGFibGVSZWNvcmRzLCBhcHBlbmQpIHtcbiAgICBpZiAoIWFwcGVuZCkge1xuICAgICAgdGhpcy50YWJsZVJlY29yZHMgPSBbXTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgICAgdGhpcy50YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnVuc2VsZWN0KCkpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgW10pO1xuICAgICAgdGhpcy50YWJsZVJlY29yZE9iaiA9IHt9O1xuICAgIH1cbiAgICBjb25zdCBuZXdSZWNvcmRzT2JqID0geyAuLi50aGlzLnRhYmxlUmVjb3JkT2JqIH07XG4gICAgY29uc3QgbmV3UmVjb3JkcyA9IFsuLi50aGlzLnRhYmxlUmVjb3Jkc107XG4gICAgZm9yIChjb25zdCB0YWJsZVJlY29yZCBvZiB0YWJsZVJlY29yZHMpIHtcbiAgICAgIGNvbnN0IHJlY29yZFJlY2VpdmVkOiBUYWJsZVJlY29yZERhdGEgPSBuZXcgVGFibGVSZWNvcmREYXRhKHRhYmxlUmVjb3JkLCB0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0aW9uRmllbGQpO1xuICAgICAgY29uc3QgcmVjb3JkSWRLZXkgPSByZWNvcmRSZWNlaXZlZC5yZWNvcmRJZEtleTtcbiAgICAgIG5ld1JlY29yZHMucHVzaChyZWNvcmRSZWNlaXZlZCk7XG4gICAgICBuZXdSZWNvcmRzT2JqW3JlY29yZElkS2V5XSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlUmVjb3JkcyA9IG5ld1JlY29yZHM7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgdGhpcy50YWJsZVJlY29yZE9iaiA9IG5ld1JlY29yZHNPYmo7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgYXBwZW5kUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIHRydWUpOyB9XG4gIHJlcGxhY2VSZWNvcmRzKHJlY29yZHMpIHsgdGhpcy5zZXRUYWJsZVJlY29yZHMocmVjb3JkcywgZmFsc2UpOyB9XG5cbiAgc2V0VGFibGVBcHBlbmQoYXBwZW5kOiBib29sZWFuKSB7IHRoaXMuX2FwcGVuZFBhZ2VzID0gYXBwZW5kIH1cblxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpIHtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5jdXJyZW50UGFnZSwgcmVxdWVzdGVkUGFnZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5R2V0RGF0YUFjdGlvbihyZXF1ZXN0ZWRQYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlUmVjb3JkcygpIHtcbiAgICBjb25zb2xlLmxvZygndXBkYXRlVmlzaWJsZVJlY29yZHMnKVxuICAgIGxldCB2aXNpYmxlUmVjb3JkczogYW55W107XG4gICAgaWYgKHRoaXMuY2xpZW50UGFnaW5nKSB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMuY2xpZW50UGFnaW5nJylcbiAgICBjb25zb2xlLmxvZygnYSBwb3IgZ2V0RmlsdGVyZWRSZWNvcmRzJylcblxuICAgICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHRoaXMuZ2V0RmlsdGVyZWRSZWNvcmRzKCk7XG4gICAgY29uc29sZS5sb2coJ3JlZ3Jlc2FuZG8gZGUgZ2V0RmlsdGVyZWRSZWNvcmRzJylcblxuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgZmlsdGVyZWRSZWNvcmRzLmxlbmd0aCk7XG4gICAgICBjb25zdCBzbGljZU51bWJlcjEgPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5yZWNvcmRzUGVyUGFnZTtcbiAgICAgIGNvbnN0IHNsaWNlTnVtYmVyMiA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJlY29yZHNQZXJQYWdlICsgdGhpcy5yZWNvcmRzUGVyUGFnZVxuXG4gICAgICBjb25zb2xlLmxvZygnQWN0dWFsaXphbmRvIHZpc2libGVSZWNvcmRzJylcblxuXG4gICAgICB2aXNpYmxlUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5zbGljZShzbGljZU51bWJlcjEsIHNsaWNlTnVtYmVyMik7XG4gICAgICBjb25zdCByZWNvcmRzTGFzdFBhZ2UgPSB0aGlzLnRvdGFsUmVjb3Jkc051bWJlciAlIHRoaXMucmVjb3Jkc1BlclBhZ2U7XG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC50cnVuYyh0aGlzLnRvdGFsUmVjb3Jkc051bWJlciAvIHRoaXMucmVjb3Jkc1BlclBhZ2UgKyAocmVjb3Jkc0xhc3RQYWdlID8gMSA6IDApKTtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdG90YWxQYWdlcyB8fCAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpYmxlUmVjb3JkcyA9IHRoaXMudGFibGVSZWNvcmRzO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnQWN0dWFsaXphbmRvIHZpc2libGVSZWNvcmRzIGFsIGNpZXJyZScpXG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZpc2libGVSZWNvcmRzLCB2aXNpYmxlUmVjb3Jkcyk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHRhYmxlUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnJlcXVlc3RlZFBhZ2UgPSAxO1xuICAgIGNvbnN0IHsgdmlzaWJsZSA9IHRydWUsIHRvdGFsUGFnZXMgPSAxLCByZWNvcmRzTnVtYmVyLCBjdXJyZW50UGFnZSA9IDEsIHJlY29yZHNQZXJQYWdlLFxuICAgICAgdG90YWxSZWNvcmRzTnVtYmVyLCBzb3J0aW5nQ29sdW1uLCBzb3J0aW5nRGlyZWN0aW9uLCB0YWJsZVJlY29yZHMsXG4gICAgICBhY3Rpb25zLCBmaWVsZHMsXG4gICAgfSA9IHRhYmxlUmVjZWl2ZWQ7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgT2JqZWN0LmtleXMoYWN0aW9ucykuZm9yRWFjaChhY3Rpb25Db2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsQWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oYWN0aW9uQ29kZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvblJlY2VpdmVkID0gYWN0aW9uc1thY3Rpb25Db2RlXTtcbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLnNob3coKTtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEFjdGlvbi5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLmVuYWJsZSgpO1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSBmYWxzZSkgJiYgdGJsQWN0aW9uLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5hZGRWaXNpYmxlU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLnJlbW92ZVZpc2libGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLmFkZEVuYWJsZWRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24ucmVtb3ZlRW5hYmxlZFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAgICAgICBcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goZmllbGRDb2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsRmllbGQgPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oZmllbGRDb2RlKTtcbiAgICAgICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IGZpZWxkc1tmaWVsZENvZGVdO1xuICAgICAgICBpZiAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlIHx8IGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlKSAmJiB0YmxGaWVsZC5zaG93KCk7XG4gICAgICAgICAgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEZpZWxkLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY29yZHMpIHtcbiAgICAgIHRoaXMudG90YWxQYWdlcyA9IHRvdGFsUGFnZXM7XG4gICAgICB0aGlzLnJlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmN1cnJlbnRQYWdlLCArY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCArcmVjb3Jkc1BlclBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgKHRoaXMuY2xpZW50UGFnaW5nKSA/IHRhYmxlUmVjb3Jkcy5sZW5ndGggOiArdG90YWxSZWNvcmRzTnVtYmVyKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7XG4gICAgICAgIGNvbHVtbk5hbWU6IHNvcnRpbmdDb2x1bW4gfHwgJycsXG4gICAgICAgIGRpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiB8fCAnJ1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuX2FwcGVuZFBhZ2VzKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZVJlY29yZHModGFibGVSZWNvcmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXBwZW5kUmVjb3Jkcyh0YWJsZVJlY29yZHMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLndhaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXRUYWJsZVJlY29yZChyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZElkS2V5ID0gKHR5cGVvZiByZWNvcmRJZCA9PT0gJ29iamVjdCcpID8gSlNPTi5zdHJpbmdpZnkocmVjb3JkSWQpIDogcmVjb3JkSWQ7XG4gICAgcmV0dXJuICh0aGlzLnRhYmxlUmVjb3JkT2JqICYmIHJlY29yZElkICYmIHRoaXMudGFibGVSZWNvcmRPYmpbcmVjb3JkSWRdKVxuICAgICAgPyB0aGlzLnRhYmxlUmVjb3JkT2JqW3JlY29yZElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fYWN0aW9uc09iaiAmJiBhY3Rpb25Db2RlICYmIHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9ucyhhY3Rpb25DbGFzczogc3RyaW5nID0gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUFjdGlvbnMuaW5saW5lLCBhY3Rpb25UeXBlczogc3RyaW5nW10gPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGFjdGlvbkRlZiA9PiB7XG4gICAgICBjb25zdCB0eXBlSW5jbHVkZWQgPSAoYWN0aW9uVHlwZXMpID8gYWN0aW9uVHlwZXMuaW5jbHVkZXMoYWN0aW9uRGVmLmFjdGlvblR5cGUpIDogdHJ1ZTtcbiAgICAgIHJldHVybiBhY3Rpb25EZWYuYWN0aW9uQ2xhc3MgPT09IGFjdGlvbkNsYXNzICYmIHR5cGVJbmNsdWRlZDtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZpbHRyb3NcblxuICBzZXRGaWx0ZXJCeUlkKGlkKSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkID09PSBpZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IGlkO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGNsZWFuSWRGaWx0ZXIoKSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkID09PSBudWxsKSB7IHJldHVybjsgfVxuICAgIHRoaXMucmVzdHJpY3RlZElkID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBzZXRHbG9iYWxGaWx0ZXJTdHJpbmcodGV4dCwgbm90aWZ5Q29tcG9uZW50ID0gdHJ1ZSkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncyA9IHRleHQuc3BsaXQoJyAnKS5maWx0ZXIodCA9PiB0ICYmIHQudHJpbSgpLmxlbmd0aCA+IDApLm1hcCh0ID0+IHQudHJpbSgpKSA/PyBbXTtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICB9XG4gICAgaWYgKG5vdGlmeUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgdGV4dC50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbHRlckRlZmluaXRpb24oY29sdW1uTmFtZSwgZmlsdGVyRGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLmFkZEZpbHRlckRlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbik7XG4gIH1cblxuICBnZXRGaWx0ZXJlZFJlY29yZHMoKSB7XG4gICAgY29uc29sZS5sb2coJ2dldEZpbHRlcmVkUmVjb3JkcycpXG5cbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gdGhpcy50YWJsZVJlY29yZHM7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkKSB7XG4gICAgY29uc29sZS5sb2coJ3BvciBpZCcpXG5cbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5yZWNvcmRJZCA9PT0gdGhpcy5yZXN0cmljdGVkSWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZygnZ2xvYmFsJylcblxuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmhhc1BhdHRlcm4odGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLCB0aGlzLl90YWJsZUNvbHVtbk9iaikpO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpbHRlcikubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKTtcbiAgICBpZiAoY29sdW1uRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnSGF5IGNvbHVtbkZpbHRlcnMuLi4nKVxuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmhhc0NvbmRpdGlvbihjb2x1bW5GaWx0ZXJzKSk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZFJlY29yZHM7XG4gIH1cblxuICBnZXRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgcmV0dXJuIHRhYmxlQ29sdW1uPy5maWx0ZXIgPz8gbnVsbDtcbiAgfVxuXG4gIGFkZENvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcsIGNvbHVtblZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coJzEuIGFkZENvbHVtbkZpbHRlcicpO1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIGNvbnNvbGUubG9nKCcyLiBhZGRDb2x1bW5GaWx0ZXInKTtcbiAgICBjb25zb2xlLmxvZyh0YWJsZUNvbHVtbik7XG4gICAgY29uc3QgY29sdW1uRmlsdGVyRGVmaW5pdGlvbiA9IHRhYmxlQ29sdW1uPy5maWx0ZXJEZWZpbml0aW9uID8/IG51bGw7XG4gICAgY29uc29sZS5sb2coJzMuIGFkZENvbHVtbkZpbHRlcicpO1xuICAgIGNvbnNvbGUubG9nKGNvbHVtbkZpbHRlckRlZmluaXRpb24pO1xuICAgIGlmICghY29sdW1uRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnNC4gYWRkQ29sdW1uRmlsdGVyJyk7XG4gICAgY29uc29sZS5sb2coJ3RhYmxlQ29sdW1uJyk7XG4gICAgY29uc29sZS5sb2codGFibGVDb2x1bW4pO1xuICAgIGNvbnNvbGUubG9nKHsgY29sdW1uVmFsdWVzLCBvcGVyYXRvciB9KTtcbiAgICBjb25zb2xlLmxvZygnNS4gQWRpY2lvbmFuZG8gZmlsdHJvJyk7XG5cbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5hZGRGaWx0ZXIoY29sdW1uVmFsdWVzLCBvcGVyYXRvcik7XG4gICAgY29uc29sZS5sb2coJzQuIHVwZGF0ZVZpc2libGVSZWNvcmRzJyk7XG5cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICByZW1vdmVDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4ucmVtb3ZlRmlsdGVyKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRGaWx0ZXIoKSB7XG4gICAgY29uc3QgY29tcGFjdEZpbHRlcjogYW55ID0ge1xuICAgICAgc2ltcGxlRmlsdGVyV29yZHM6IHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncyxcbiAgICAgIGFkdmFuY2VkRmlsdGVyOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyc1tpbmRleF07XG4gICAgICBjb21wYWN0RmlsdGVyLmFkdmFuY2VkRmlsdGVyLnB1c2goe1xuICAgICAgICBmaWVsZENvZGU6IGNvbHVtbkZpbHRlcj8uZmllbGRDb2RlLFxuICAgICAgICBvcGVyYXRvcjogY29sdW1uRmlsdGVyPy5vcGVyYXRvcixcbiAgICAgICAgZmllbGRWYWx1ZTE6IGNvbHVtbkZpbHRlcj8udmFsdWVzWzBdLFxuICAgICAgICBmaWVsZFZhbHVlMjogY29sdW1uRmlsdGVyPy52YWx1ZXNbMV0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBhY3RGaWx0ZXI7XG4gIH1cblxuICAvLyBPcmRlbmFtaWVudG8gZGUgcmVnaXN0cm9zIGxvY2FsXG5cbiAgc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICB0aGlzLnNldFJlcXVpcmVkT3JkZXIoY29sdW1uTmFtZSwgZGlyZWN0aW9uKTtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMubG9jYWxTb3J0RGF0YSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5R2V0RGF0YUFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHNldFJlcXVpcmVkT3JkZXIoY29sdW1uRmllbGQsIGRpcmVjdGlvbiA9IG51bGwpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuc29ydGluZywge1xuICAgICAgY29sdW1uTmFtZTogY29sdW1uRmllbGQsXG4gICAgICBkaXJlY3Rpb246IChkaXJlY3Rpb24gPT09ICdhc2NlbmQnKSA/IFRBQkxFX1NPUlRfQVNDRU5ESU5HIDogVEFCTEVfU09SVF9ERVNDRU5ESU5HLFxuICAgIH0pO1xuICB9XG5cbiAgbG9jYWxTb3J0RGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuc29ydGluZy5jb2x1bW5OYW1lIHx8ICF0aGlzLnNvcnRpbmcuZGlyZWN0aW9uKSB7IHJldHVybjsgfVxuICAgIHRoaXMudGFibGVSZWNvcmRzLnNvcnQoKGEsIGIpID0+IHRoaXMucmVjb3JkQ29tcGFyZShhLCBiLCB0aGlzLnNvcnRpbmcuY29sdW1uTmFtZSwgdGhpcy5zb3J0aW5nLmRpcmVjdGlvbikpO1xuICAgIC8vdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlY29yZENvbXBhcmUocmVjb3JkQTogVGFibGVSZWNvcmREYXRhLCByZWNvcmRCOiBUYWJsZVJlY29yZERhdGEsIGNvbHVtbkNvbXBhcmUsIGRpcmVjdGlvbikge1xuICAgIGNvbnN0IHJlY29yZEFWYWx1ZSA9IHJlY29yZEEuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRCVmFsdWUgPSByZWNvcmRCLmdldEZpZWxkVmFsdWUoY29sdW1uQ29tcGFyZSk7XG4gICAgY29uc3QgcmVjb3JkQUNvbHVtbiA9IGlzTmFOKHJlY29yZEFWYWx1ZSkgPyByZWNvcmRBVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRBVmFsdWU7XG4gICAgY29uc3QgcmVjb3JkQkNvbHVtbiA9IGlzTmFOKHJlY29yZEJWYWx1ZSkgPyByZWNvcmRCVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRCVmFsdWU7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHJlY29yZEFDb2x1bW4gPCByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZEFDb2x1bW4gPiByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSBUQUJMRV9TT1JUX0FTQ0VORElORyA/IHJlc3VsdCA6IC1yZXN1bHQ7XG4gIH1cblxuICBvdmVycmlkZSBmb3JtU3RhdGVDaGFuZ2VDdXN0b21TdWJzY3JpYmUoZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHtcbiAgICB0aGlzLmNvbHVtbnM/LmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGNvbHVtbj8uY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3Rpb25zPy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICBhY3Rpb24/LmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDbkYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQzdDLGNBQWMsRUFBRSxFQUFFLElB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WUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUM3RixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLGFBQWEsR0FBRyxhQUFhLEVBQUU7WUFDakMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2I7YUFBTSxJQUFJLGFBQWEsR0FBRyxhQUFhLEVBQUU7WUFDeEMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNaO1FBQ0QsT0FBTyxTQUFTLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0QsQ0FBQztJQUVRLDhCQUE4QixDQUFDLElBQUksRUFBRSxpQkFBaUI7UUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuLi9lbGVtZW50JztcbmltcG9ydCB7IFJlY29yZFRhYmxlQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVBY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuL3Jvdy1kYXRhJztcblxuY29uc3QgVEFCTEVfU09SVF9BU0NFTkRJTkcgPSAnYXNjJztcbmNvbnN0IFRBQkxFX1NPUlRfREVTQ0VORElORyA9ICdkZXNjJztcblxuY29uc3QgYXR0cnMgPSB7XG4gIGFsbFNlbGVjdGVkOiB7IG5hbWU6ICdhbGxTZWxlY3RlZCcsIHByb3BhZ2F0ZTogJ2FsbFNlbGVjdGVkJyB9LFxuICB0YWJsZUNvZGU6IHsgbmFtZTogJ3RhYmxlQ29kZScsIHByb3BhZ2F0ZTogJ2NvZGUnIH0sXG4gIGNsaWVudFBhZ2luZzogeyBuYW1lOiAnY2xpZW50UGFnaW5nJywgcHJvcGFnYXRlOiBudWxsIH0sXG4gIGdsb2JhbFNlYXJjaDogeyBuYW1lOiAnZ2xvYmFsU2VhcmNoJywgcHJvcGFnYXRlOiAnZ2xvYmFsU2VhcmNoJyB9LFxuICBnbG9iYWxGaWx0ZXJTdHJpbmc6IHsgbmFtZTogJ2dsb2JhbEZpbHRlclN0cmluZycsIHByb3BhZ2F0ZTogJ2dsb2JhbEZpbHRlclN0cmluZycgfSxcbiAgc29ydGluZzogeyBuYW1lOiAnc29ydGluZycsIHByb3BhZ2F0ZTogbnVsbCB9LFxuICByZWNvcmRzUGVyUGFnZTogeyBuYW1lOiAncmVjb3Jkc1BlclBhZ2UnLCBwcm9wYWdhdGU6ICdyZWNvcmRzUGVyUGFnZScgfSxcbiAgbGF5b3V0OiB7IG5hbWU6ICdsYXlvdXQnLCBwcm9wYWdhdGU6ICdsYXlvdXQnIH0sXG4gIGNvbHVtbnM6IHsgbmFtZTogJ2NvbHVtbnMnLCBwcm9wYWdhdGU6ICdjb2x1bW5zJyB9LFxuICBzZWxlY3RlZFJlY29yZHM6IHsgbmFtZTogJ3NlbGVjdGVkUmVjb3JkcycsIHByb3BhZ2F0ZTogJ3NlbGVjdGVkUmVjb3JkcycgfSxcbiAgY3VycmVudFBhZ2U6IHsgbmFtZTogJ2N1cnJlbnRQYWdlJywgcHJvcGFnYXRlOiAnY3VycmVudFBhZ2UnIH0sXG4gIHRvdGFsUmVjb3Jkc051bWJlcjogeyBuYW1lOiAndG90YWxSZWNvcmRzTnVtYmVyJywgcHJvcGFnYXRlOiAndG90YWxSZWNvcmRzTnVtYmVyJyB9LFxuICB2aXNpYmxlUmVjb3JkczogeyBuYW1lOiAndmlzaWJsZVJlY29yZHMnLCBwcm9wYWdhdGU6ICd2aXNpYmxlUmVjb3JkcycgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVBY3Rpb25FdmVudCB7XG4gIGFjdGlvbkNvZGU6IHN0cmluZztcbiAgcmVjb3JkSWQ6IGFueTtcbiAgcmVjb3JkRGF0YTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRXZlbnQge1xuICB0YWJsZUNvZGU6IHN0cmluZztcbiAgYWN0aW9uQ29kZTogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aW9uRGV0YWlsOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWNvcmRUYWJsZSBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5saW5lQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dsb2JhbEFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dldERhdGFUcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSBfdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgcHJpdmF0ZSBfYXBwZW5kUGFnZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FjdGlvbnM6IFRhYmxlQWN0aW9uW107XG4gIHByaXZhdGUgX2FjdGlvbnNPYmogPSB7fTtcblxuICAvLyBNZWNhbmlzbW9zIGRlIGZpbHRyYWRvIG51ZXZhIHZlcnNpw7NuXG4gIHByaXZhdGUgZ2xvYmFsRmlsdGVyU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBnbG9iYWxGaWx0ZXJTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkUmVjb3JkczogYW55O1xuICBwcml2YXRlIHJlc3RyaWN0ZWRJZDogYW55O1xuICBwcml2YXRlIGxheW91dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2xvYmFsU2VhcmNoOiBib29sZWFuO1xuICB0YWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdO1xuICB0YWJsZVJlY29yZE9iaiA9IHt9O1xuICB2aXNpYmxlUmVjb3JkczogVGFibGVSZWNvcmREYXRhW10gfCBudWxsID0gbnVsbDtcbiAgY29sdW1uczogUmVjb3JkVGFibGVDb2x1bW5bXTtcbiAgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgc2VsZWN0aW9uQmFja2VuZDogYm9vbGVhbjtcbiAgc2VsZWN0aW9uRmllbGQ6IHN0cmluZztcbiAgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcblxuICB0YWJsZUNvZGU6IHN0cmluZyA9ICcnO1xuICB0YWJsZVRpdGxlOiBzdHJpbmc7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICByZWNvcmRzUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHRvdGFsUmVjb3Jkc051bWJlcjogbnVtYmVyID0gMDtcbiAgcmVjb3Jkc051bWJlcjogbnVtYmVyID0gMDtcbiAgc29ydGluZzogYW55O1xuXG4gIHdhaXRpbmc6IGJvb2xlYW47XG4gIGNsaWVudFBhZ2luZzogYm9vbGVhbiA9IHRydWU7XG4gIHNvcnRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcyA9IHRoaXMuX2Zvcm1Db25maWc/LnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8udGFibGVzID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMudGFibGU7XG4gICAgdGhpcy53YWl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gMTtcbiAgICB0aGlzLnJlcXVlc3RlZFBhZ2UgPSAxO1xuICAgIHRoaXMuY29sdW1ucyA9IFtdO1xuICAgIHRoaXMuX3RhYmxlQ29sdW1uT2JqID0ge307XG4gICAgdGhpcy5fYWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX2FjdGlvbnNPYmogPSB7fTtcbiAgICB0aGlzLnRhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuZ2xvYmFsU2VhcmNoID0gZmFsc2U7XG4gICAgdGhpcy5yZXN0cmljdGVkSWQgPSBudWxsO1xuXG4gICAgdGhpcy50YWJsZVRpdGxlID0gdGFibGVSZWNlaXZlZC50YWJsZVRpdGxlO1xuICAgIHRoaXMuX2FwcGVuZFBhZ2VzID0gdGFibGVSZWNlaXZlZD8uYXBwZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGFibGUgPz8gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3Rpb25CYWNrZW5kID0gdGFibGVSZWNlaXZlZD8uc2VsZWN0aW9uQmFja2VuZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNvcnRhYmxlID0gdGFibGVSZWNlaXZlZD8uc29ydGFibGUgPz8gZmFsc2U7XG5cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMudGFibGVDb2RlLCB0YWJsZVJlY2VpdmVkLnRhYmxlQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNsaWVudFBhZ2luZywgdGFibGVSZWNlaXZlZD8uY2xpZW50UGFnaW5nID8/IHRydWUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5nbG9iYWxTZWFyY2gsIHRhYmxlUmVjZWl2ZWQ/LnNpbXBsZUZpbHRlciA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgJycpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7IGNvbHVtbk5hbWU6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZWNvcmRzUGVyUGFnZSwgZm9ybUNvbmZpZy5kZWZhdWx0UmVjb3Jkc1BlclBhZ2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5sYXlvdXQsICcnKTtcblxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgY29sdW1uczogUmVjb3JkVGFibGVDb2x1bW5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW5SZWNlaXZlZCBvZiB0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgICBjb25zdCBjb2x1bW5FbnJpY2hlZCA9IHtcbiAgICAgICAgICAuLi5jb2x1bW5SZWNlaXZlZCxcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzOiB0aGlzLnZpc2libGVTdGF0ZXMsXG4gICAgICAgICAgZW5hYmxlZFN0YXRlczogdGhpcy5lbmFibGVkU3RhdGVzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uID0gbmV3IFJlY29yZFRhYmxlQ29sdW1uKGNvbHVtbkVucmljaGVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbkRlZmluaXRpb24pO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtbk9ialtjb2x1bW5EZWZpbml0aW9uLmZpZWxkQ29kZV0gPSBjb2x1bW5EZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmNvbHVtbnMsIGNvbHVtbnMpO1xuICAgIH1cbiAgICBpZiAodGFibGVSZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCB0YWJsZUFjdGlvbnMgPSB0YWJsZVJlY2VpdmVkLmFjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmFjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCk7XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb25SZWNlaXZlZCBvZiB0YWJsZUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5saW5lQWN0aW9uID0gbmV3IFRhYmxlQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGlubGluZUFjdGlvbik7XG4gICAgICAgIHRoaXMuX2FjdGlvbnNPYmpbaW5saW5lQWN0aW9uLmFjdGlvbkNvZGVdID0gaW5saW5lQWN0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbkZpZWxkID0gKHRoaXMuc2VsZWN0YWJsZSkgPyB0YWJsZVJlY2VpdmVkPy5zZWxlY3Rpb25GaWVsZCA6IG51bGw7XG4gICAgLy8gRmlsdHJvcyBwcmVkZWZpbmlkb3MgZW4gZWwgZm9ybXVsYXJpb1xuICAgIGlmICh0YWJsZVJlY2VpdmVkLmZpbHRlcnMpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0YWJsZVJlY2VpdmVkLmZpbHRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHRoaXMuYWRkRmlsdGVyRGVmaW5pdGlvbih0YWJsZVJlY2VpdmVkLmZpbHRlcnNbaW5kZXhdLmZpZWxkQ29kZSwgdGFibGVSZWNlaXZlZC5maWx0ZXJzW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbHVtbk5hbWVzKCkgeyByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdGFibGVDb2x1bW5PYmopOyB9XG4gIGdldCBpbmxpbmVBY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5faW5saW5lQWN0aW9uVHJpZ2dlcjsgfVxuICBnZXQgZ2xvYmFsQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2dsb2JhbEFjdGlvblRyaWdnZXI7IH1cbiAgZ2V0IHNlbGVjdGlvbkFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyOyB9XG4gIGdldCByZWNvcmRTZWxlY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fcmVjb3JkU2VsZWN0aW9uVHJpZ2dlcjsgfVxuICBnZXQgZ2V0RGF0YVRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9nZXREYXRhVHJpZ2dlcjsgfVxuXG4gIGdldExheW91dCgpIHsgcmV0dXJuIHRoaXMubGF5b3V0OyB9XG4gIHNldExheW91dChsYXlvdXQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmxheW91dCwgbGF5b3V0KTsgfVxuICBoYXNBY3Rpb25zKCkgeyByZXR1cm4gKHRoaXMuX2FjdGlvbnMubGVuZ3RoID4gMCk7IH1cbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy50YWJsZVJlY29yZHMuZmlsdGVyKHJlYyA9PiByZWMuc2VsZWN0ZWQpLm1hcChyZWMgPT4gcmVjLnJlY29yZElkKTsgfVxuICBhY3RpdmF0ZUdsb2JhbFNlYXJjaCgpIHsgdGhpcy5nbG9iYWxTZWFyY2ggPSB0cnVlOyB9XG4gIGluYWN0aXZhdGVHbG9iYWxTZWFyY2goKSB7IHRoaXMuZ2xvYmFsU2VhcmNoID0gZmFsc2U7IH1cbiAgY29sdW1uRGVmaW5pdGlvbihmaWVsZENvZGUpOiBSZWNvcmRUYWJsZUNvbHVtbiB7IHJldHVybiB0aGlzLl90YWJsZUNvbHVtbk9ialtmaWVsZENvZGVdOyB9XG4gIHB1dE9uV2FpdCgpIHsgdGhpcy53YWl0aW5nID0gdHJ1ZTsgfVxuICBmcmVlV2FpdGluZygpIHsgdGhpcy53YWl0aW5nID0gZmFsc2U7IH1cblxuICBub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbFxuICAgIH07XG4gICAgdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5SW5saW5lQWN0aW9uKHRhYmxlQWN0aW9uRXZlbnQ6IFRhYmxlQWN0aW9uRXZlbnQpIHtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLnRhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IHRhYmxlQWN0aW9uRXZlbnQuYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICByZWNvcmRJZDogdGFibGVBY3Rpb25FdmVudC5yZWNvcmRJZCxcbiAgICAgICAgcmVjb3JkRGF0YTogdGFibGVBY3Rpb25FdmVudC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlSZWNvcmRTZWxlY3Rpb24ocmVjb3JkSWQpIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLmdldFRhYmxlUmVjb3JkKHJlY29yZElkKTtcbiAgICBpZiAoIXJlY29yZCkgeyByZXR1cm47IH1cbiAgICByZWNvcmQudG9nZ2xlU2VsZWN0KCk7XG4gICAgdGhpcy5yZXF1ZXN0ZWRQYWdlID0gdGhpcy5jdXJyZW50UGFnZSA/PyAxO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogbnVsbCxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICByZWNvcmRJZDogcmVjb3JkLnJlY29yZElkLFxuICAgICAgICByZWNvcmREYXRhOiByZWNvcmQucmVjb3JkRGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICBzZWxlY3RlZFJlY29yZHM6IHRoaXMuc2VsZWN0ZWRSZWNvcmRzXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlHZXREYXRhQWN0aW9uKHJlcXVlc3RlZFBhZ2UgPSBudWxsKSB7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICAgIHRoaXMucmVxdWVzdGVkUGFnZSA9IHJlcXVlc3RlZFBhZ2UgfHwgdGhpcy5jdXJyZW50UGFnZSB8fCAxO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogbnVsbCxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMuX2dldERhdGFUcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICB0aGlzLnRhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMudW5TZWxlY3RBbGwoKTtcbiAgICB0aGlzLnRhYmxlUmVjb3JkT2JqID0ge307XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgdHJ1ZSk7XG4gICAgdGhpcy50YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnNlbGVjdCgpKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuc2VsZWN0ZWRSZWNvcmRzLCB0aGlzLmdldFNlbGVjdGVkUmVjb3JkcygpKTtcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgdW5TZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCBmYWxzZSk7XG4gICAgdGhpcy50YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnVuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIHRoaXMuZ2V0U2VsZWN0ZWRSZWNvcmRzKCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2V0VGFibGVSZWNvcmRzKHRhYmxlUmVjb3JkcywgYXBwZW5kKSB7XG4gICAgaWYgKCFhcHBlbmQpIHtcbiAgICAgIHRoaXMudGFibGVSZWNvcmRzID0gW107XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWxsU2VsZWN0ZWQsIGZhbHNlKTtcbiAgICAgIHRoaXMudGFibGVSZWNvcmRzLmZvckVhY2gocmVjb3JkID0+IHJlY29yZC51bnNlbGVjdCgpKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIFtdKTtcbiAgICAgIHRoaXMudGFibGVSZWNvcmRPYmogPSB7fTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVjb3Jkc09iaiA9IHsgLi4udGhpcy50YWJsZVJlY29yZE9iaiB9O1xuICAgIGNvbnN0IG5ld1JlY29yZHMgPSBbLi4udGhpcy50YWJsZVJlY29yZHNdO1xuICAgIGZvciAoY29uc3QgdGFibGVSZWNvcmQgb2YgdGFibGVSZWNvcmRzKSB7XG4gICAgICBjb25zdCByZWNvcmRSZWNlaXZlZDogVGFibGVSZWNvcmREYXRhID0gbmV3IFRhYmxlUmVjb3JkRGF0YSh0YWJsZVJlY29yZCwgdGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGlvbkZpZWxkKTtcbiAgICAgIGNvbnN0IHJlY29yZElkS2V5ID0gcmVjb3JkUmVjZWl2ZWQucmVjb3JkSWRLZXk7XG4gICAgICBuZXdSZWNvcmRzLnB1c2gocmVjb3JkUmVjZWl2ZWQpO1xuICAgICAgbmV3UmVjb3Jkc09ialtyZWNvcmRJZEtleV0gPSByZWNvcmRSZWNlaXZlZDtcbiAgICB9XG4gICAgdGhpcy50YWJsZVJlY29yZHMgPSBuZXdSZWNvcmRzO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zZWxlY3RlZFJlY29yZHMsIHRoaXMuZ2V0U2VsZWN0ZWRSZWNvcmRzKCkpO1xuICAgIHRoaXMudGFibGVSZWNvcmRPYmogPSBuZXdSZWNvcmRzT2JqO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGFwcGVuZFJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCB0cnVlKTsgfVxuICByZXBsYWNlUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIGZhbHNlKTsgfVxuXG4gIHNldFRhYmxlQXBwZW5kKGFwcGVuZDogYm9vbGVhbikgeyB0aGlzLl9hcHBlbmRQYWdlcyA9IGFwcGVuZCB9XG5cbiAgY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlKSB7XG4gICAgaWYgKHRoaXMuY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY3VycmVudFBhZ2UsIHJlcXVlc3RlZFBhZ2UpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeUdldERhdGFBY3Rpb24ocmVxdWVzdGVkUGFnZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmlzaWJsZVJlY29yZHMoKSB7XG4gICAgbGV0IHZpc2libGVSZWNvcmRzOiBhbnlbXTtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIGxldCBmaWx0ZXJlZFJlY29yZHMgPSB0aGlzLmdldEZpbHRlcmVkUmVjb3JkcygpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgZmlsdGVyZWRSZWNvcmRzLmxlbmd0aCk7XG4gICAgICBjb25zdCBzbGljZU51bWJlcjEgPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5yZWNvcmRzUGVyUGFnZTtcbiAgICAgIGNvbnN0IHNsaWNlTnVtYmVyMiA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJlY29yZHNQZXJQYWdlICsgdGhpcy5yZWNvcmRzUGVyUGFnZVxuICAgICAgdmlzaWJsZVJlY29yZHMgPSBmaWx0ZXJlZFJlY29yZHMuc2xpY2Uoc2xpY2VOdW1iZXIxLCBzbGljZU51bWJlcjIpO1xuICAgICAgY29uc3QgcmVjb3Jkc0xhc3RQYWdlID0gdGhpcy50b3RhbFJlY29yZHNOdW1iZXIgJSB0aGlzLnJlY29yZHNQZXJQYWdlO1xuICAgICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGgudHJ1bmModGhpcy50b3RhbFJlY29yZHNOdW1iZXIgLyB0aGlzLnJlY29yZHNQZXJQYWdlICsgKHJlY29yZHNMYXN0UGFnZSA/IDEgOiAwKSk7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRvdGFsUGFnZXMgfHwgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmlzaWJsZVJlY29yZHMgPSB0aGlzLnRhYmxlUmVjb3JkcztcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZpc2libGVSZWNvcmRzLCB2aXNpYmxlUmVjb3Jkcyk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHRhYmxlUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnJlcXVlc3RlZFBhZ2UgPSAxO1xuICAgIGNvbnN0IHsgdmlzaWJsZSA9IHRydWUsIHRvdGFsUGFnZXMgPSAxLCByZWNvcmRzTnVtYmVyLCBjdXJyZW50UGFnZSA9IDEsIHJlY29yZHNQZXJQYWdlLFxuICAgICAgdG90YWxSZWNvcmRzTnVtYmVyLCBzb3J0aW5nQ29sdW1uLCBzb3J0aW5nRGlyZWN0aW9uLCB0YWJsZVJlY29yZHMsXG4gICAgICBhY3Rpb25zLCBmaWVsZHMsXG4gICAgfSA9IHRhYmxlUmVjZWl2ZWQ7XG4gICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgT2JqZWN0LmtleXMoYWN0aW9ucykuZm9yRWFjaChhY3Rpb25Db2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsQWN0aW9uID0gdGhpcy5nZXRBY3Rpb24oYWN0aW9uQ29kZSk7XG4gICAgICAgIGNvbnN0IGFjdGlvblJlY2VpdmVkID0gYWN0aW9uc1thY3Rpb25Db2RlXTtcbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLnNob3coKTtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEFjdGlvbi5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IHRydWUgfHwgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gdHJ1ZSkgJiYgdGJsQWN0aW9uLmVuYWJsZSgpO1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSBmYWxzZSkgJiYgdGJsQWN0aW9uLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuc2hvd09uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5hZGRWaXNpYmxlU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5oaWRlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLnJlbW92ZVZpc2libGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmVuYWJsZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuZW5hYmxlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLmFkZEVuYWJsZWRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmRpc2FibGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24ucmVtb3ZlRW5hYmxlZFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAgICAgICBcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goZmllbGRDb2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsRmllbGQgPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oZmllbGRDb2RlKTtcbiAgICAgICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IGZpZWxkc1tmaWVsZENvZGVdO1xuICAgICAgICBpZiAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlIHx8IGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlKSAmJiB0YmxGaWVsZC5zaG93KCk7XG4gICAgICAgICAgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEZpZWxkLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY29yZHMpIHtcbiAgICAgIHRoaXMudG90YWxQYWdlcyA9IHRvdGFsUGFnZXM7XG4gICAgICB0aGlzLnJlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmN1cnJlbnRQYWdlLCArY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCArcmVjb3Jkc1BlclBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgKHRoaXMuY2xpZW50UGFnaW5nKSA/IHRhYmxlUmVjb3Jkcy5sZW5ndGggOiArdG90YWxSZWNvcmRzTnVtYmVyKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7XG4gICAgICAgIGNvbHVtbk5hbWU6IHNvcnRpbmdDb2x1bW4gfHwgJycsXG4gICAgICAgIGRpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiB8fCAnJ1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuX2FwcGVuZFBhZ2VzKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZVJlY29yZHModGFibGVSZWNvcmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXBwZW5kUmVjb3Jkcyh0YWJsZVJlY29yZHMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLndhaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXRUYWJsZVJlY29yZChyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZElkS2V5ID0gKHR5cGVvZiByZWNvcmRJZCA9PT0gJ29iamVjdCcpID8gSlNPTi5zdHJpbmdpZnkocmVjb3JkSWQpIDogcmVjb3JkSWQ7XG4gICAgcmV0dXJuICh0aGlzLnRhYmxlUmVjb3JkT2JqICYmIHJlY29yZElkICYmIHRoaXMudGFibGVSZWNvcmRPYmpbcmVjb3JkSWRdKVxuICAgICAgPyB0aGlzLnRhYmxlUmVjb3JkT2JqW3JlY29yZElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fYWN0aW9uc09iaiAmJiBhY3Rpb25Db2RlICYmIHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX2FjdGlvbnNPYmpbYWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9ucyhhY3Rpb25DbGFzczogc3RyaW5nID0gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUFjdGlvbnMuaW5saW5lLCBhY3Rpb25UeXBlczogc3RyaW5nW10gPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGFjdGlvbkRlZiA9PiB7XG4gICAgICBjb25zdCB0eXBlSW5jbHVkZWQgPSAoYWN0aW9uVHlwZXMpID8gYWN0aW9uVHlwZXMuaW5jbHVkZXMoYWN0aW9uRGVmLmFjdGlvblR5cGUpIDogdHJ1ZTtcbiAgICAgIHJldHVybiBhY3Rpb25EZWYuYWN0aW9uQ2xhc3MgPT09IGFjdGlvbkNsYXNzICYmIHR5cGVJbmNsdWRlZDtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZpbHRyb3NcblxuICBzZXRGaWx0ZXJCeUlkKGlkKSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkID09PSBpZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IGlkO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGNsZWFuSWRGaWx0ZXIoKSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkID09PSBudWxsKSB7IHJldHVybjsgfVxuICAgIHRoaXMucmVzdHJpY3RlZElkID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBzZXRHbG9iYWxGaWx0ZXJTdHJpbmcodGV4dCwgbm90aWZ5Q29tcG9uZW50ID0gdHJ1ZSkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncyA9IHRleHQuc3BsaXQoJyAnKS5maWx0ZXIodCA9PiB0ICYmIHQudHJpbSgpLmxlbmd0aCA+IDApLm1hcCh0ID0+IHQudHJpbSgpKSA/PyBbXTtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICB9XG4gICAgaWYgKG5vdGlmeUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgdGV4dC50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbHRlckRlZmluaXRpb24oY29sdW1uTmFtZSwgZmlsdGVyRGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLmFkZEZpbHRlckRlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbik7XG4gIH1cblxuICBnZXRGaWx0ZXJlZFJlY29yZHMoKSB7XG4gICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHRoaXMudGFibGVSZWNvcmRzO1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLnJlY29yZElkID09PSB0aGlzLnJlc3RyaWN0ZWRJZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmhhc1BhdHRlcm4odGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLCB0aGlzLl90YWJsZUNvbHVtbk9iaikpO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpbHRlcikubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKTtcbiAgICBpZiAoY29sdW1uRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSBmaWx0ZXJlZFJlY29yZHMuZmlsdGVyKHJlY29yZCA9PiByZWNvcmQuaGFzQ29uZGl0aW9uKGNvbHVtbkZpbHRlcnMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkUmVjb3JkcztcbiAgfVxuXG4gIGdldENvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICByZXR1cm4gdGFibGVDb2x1bW4/LmZpbHRlciA/PyBudWxsO1xuICB9XG5cbiAgYWRkQ29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZywgY29sdW1uVmFsdWVzOiBhbnkgfCBhbnlbXSwgb3BlcmF0b3I6IHN0cmluZyA9IG51bGwpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJEZWZpbml0aW9uID0gdGFibGVDb2x1bW4/LmZpbHRlckRlZmluaXRpb24gPz8gbnVsbDtcbiAgICBpZiAoIWNvbHVtbkZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyKGNvbHVtblZhbHVlcywgb3BlcmF0b3IpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5yZW1vdmVGaWx0ZXIoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICBjb25zdCBjb21wYWN0RmlsdGVyOiBhbnkgPSB7XG4gICAgICBzaW1wbGVGaWx0ZXJXb3JkczogdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLFxuICAgICAgYWR2YW5jZWRGaWx0ZXI6IFtdLFxuICAgIH07XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpbHRlcik7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbkZpbHRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXJzW2luZGV4XTtcbiAgICAgIGNvbXBhY3RGaWx0ZXIuYWR2YW5jZWRGaWx0ZXIucHVzaCh7XG4gICAgICAgIGZpZWxkQ29kZTogY29sdW1uRmlsdGVyPy5maWVsZENvZGUsXG4gICAgICAgIG9wZXJhdG9yOiBjb2x1bW5GaWx0ZXI/Lm9wZXJhdG9yLFxuICAgICAgICBmaWVsZFZhbHVlMTogY29sdW1uRmlsdGVyPy52YWx1ZXNbMF0sXG4gICAgICAgIGZpZWxkVmFsdWUyOiBjb2x1bW5GaWx0ZXI/LnZhbHVlc1sxXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGFjdEZpbHRlcjtcbiAgfVxuXG4gIC8vIE9yZGVuYW1pZW50byBkZSByZWdpc3Ryb3MgbG9jYWxcblxuICBzb3J0KGNvbHVtbk5hbWUsIGRpcmVjdGlvbikge1xuICAgIHRoaXMuc2V0UmVxdWlyZWRPcmRlcihjb2x1bW5OYW1lLCBkaXJlY3Rpb24pO1xuICAgIGlmICh0aGlzLmNsaWVudFBhZ2luZykge1xuICAgICAgdGhpcy5sb2NhbFNvcnREYXRhKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlHZXREYXRhQWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0UmVxdWlyZWRPcmRlcihjb2x1bW5GaWVsZCwgZGlyZWN0aW9uID0gbnVsbCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7XG4gICAgICBjb2x1bW5OYW1lOiBjb2x1bW5GaWVsZCxcbiAgICAgIGRpcmVjdGlvbjogKGRpcmVjdGlvbiA9PT0gJ2FzY2VuZCcpID8gVEFCTEVfU09SVF9BU0NFTkRJTkcgOiBUQUJMRV9TT1JUX0RFU0NFTkRJTkcsXG4gICAgfSk7XG4gIH1cblxuICBsb2NhbFNvcnREYXRhKCkge1xuICAgIGlmICghdGhpcy5zb3J0aW5nLmNvbHVtbk5hbWUgfHwgIXRoaXMuc29ydGluZy5kaXJlY3Rpb24pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy50YWJsZVJlY29yZHMuc29ydCgoYSwgYikgPT4gdGhpcy5yZWNvcmRDb21wYXJlKGEsIGIsIHRoaXMuc29ydGluZy5jb2x1bW5OYW1lLCB0aGlzLnNvcnRpbmcuZGlyZWN0aW9uKSk7XG4gICAgLy90aGlzLnVuU2VsZWN0QWxsKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgcmVjb3JkQ29tcGFyZShyZWNvcmRBOiBUYWJsZVJlY29yZERhdGEsIHJlY29yZEI6IFRhYmxlUmVjb3JkRGF0YSwgY29sdW1uQ29tcGFyZSwgZGlyZWN0aW9uKSB7XG4gICAgY29uc3QgcmVjb3JkQVZhbHVlID0gcmVjb3JkQS5nZXRGaWVsZFZhbHVlKGNvbHVtbkNvbXBhcmUpO1xuICAgIGNvbnN0IHJlY29yZEJWYWx1ZSA9IHJlY29yZEIuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRBQ29sdW1uID0gaXNOYU4ocmVjb3JkQVZhbHVlKSA/IHJlY29yZEFWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogK3JlY29yZEFWYWx1ZTtcbiAgICBjb25zdCByZWNvcmRCQ29sdW1uID0gaXNOYU4ocmVjb3JkQlZhbHVlKSA/IHJlY29yZEJWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogK3JlY29yZEJWYWx1ZTtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBpZiAocmVjb3JkQUNvbHVtbiA8IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IC0xO1xuICAgIH0gZWxzZSBpZiAocmVjb3JkQUNvbHVtbiA+IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IDE7XG4gICAgfVxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IFRBQkxFX1NPUlRfQVNDRU5ESU5HID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuY29sdW1ucz8uZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgY29sdW1uPy5jb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpO1xuICAgIH0pO1xuICAgIHRoaXMuX2FjdGlvbnM/LmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgIGFjdGlvbj8uY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -35,7 +35,6 @@ export class LibTableComponent extends ElementComponent {
|
|
|
35
35
|
// Subscripción a cambios en atributos
|
|
36
36
|
this.table?.attributeChange.subscribe(event => {
|
|
37
37
|
const { name: attrName, value } = event;
|
|
38
|
-
console.log(`Llegó atributo ${attrName} propagado...`);
|
|
39
38
|
this.defaultProcessAttributeChange(attrName, value);
|
|
40
39
|
this.customProcessAttributeChange(attrName, value);
|
|
41
40
|
});
|
|
@@ -54,7 +53,6 @@ export class LibTableComponent extends ElementComponent {
|
|
|
54
53
|
defaultProcessAttributeChange(attribute, value) {
|
|
55
54
|
try {
|
|
56
55
|
if (attribute === 'visibleRecords') {
|
|
57
|
-
console.log('Se deben actualizar los visibleRecords');
|
|
58
56
|
this.updateTableData();
|
|
59
57
|
}
|
|
60
58
|
return super.defaultProcessAttributeChange(attribute, value);
|
|
@@ -88,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImpor
|
|
|
88
86
|
}], waiting: [{
|
|
89
87
|
type: Input
|
|
90
88
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVEvRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBTnZEOztRQVNFLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUdoQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBS1YsVUFBSyxHQUF1QixJQUFJLENBQUM7UUFDakMsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBQ3ZDLFlBQU8sR0FBWSxLQUFLLENBQUM7S0E0RG5DO0lBMURDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFVB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QUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS9yb3ctZGF0YSc7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSwgVGFibGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZScsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgTGliVGFibGVDb21wb25lbnQgZXh0ZW5kcyBFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gQXRyaWJ1dG9zIHNpbmNyb25pemFkb3MgZGVsIG9iamV0b1xuICBjb2RlOiBhbnk7XG4gIGdsb2JhbEZpbHRlclN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgdGFibGVGaWVsZFN0eWxlczogYW55O1xuICBsb2FkZWQgPSBmYWxzZTtcbiAgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICBoYXNBY3Rpb25zID0gZmFsc2U7XG4gIGlubGluZUFjdGlvbnM6IGFueTtcbiAgZ2xvYmFsQWN0aW9uczogYW55O1xuICBzZWxlY3Rpb25BY3Rpb25zOiBhbnk7XG5cbiAgQElucHV0KCkgdGFibGU6IFJlY29yZFRhYmxlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHZpc2libGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXSA9IFtdO1xuICBASW5wdXQoKSB3YWl0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlKSB7IHJldHVybjsgfVxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMudGFibGU/Ll9mb3JtQ29uZmlnO1xuICAgIHRoaXMudGFibGVGaWVsZFN0eWxlcyA9IHRoaXMuZm9ybUNvbmZpZz8udGFibGVGaWVsZFN0eWxlcztcbiAgICB0aGlzLnNlbGVjdGFibGUgPSB0aGlzLnRhYmxlPy5zZWxlY3RhYmxlO1xuICAgIHRoaXMuaGFzQWN0aW9ucyA9IHRoaXMudGFibGU/Lmhhc0FjdGlvbnMoKTtcbiAgICB0aGlzLmlubGluZUFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLmlubGluZSk7XG4gICAgdGhpcy5nbG9iYWxBY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5nbG9iYWwpO1xuICAgIHRoaXMuc2VsZWN0aW9uQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuc2VsZWN0aW9uKTtcbiAgICAvLyBJbmljaWFsaXphY2nDs24gZGUgY2FtcG9zIG1hcGVhZG9zIGRlbCBvYmpldG9cbiAgICBjb25zdCBtYXBwaW5nID0gT2JqZWN0LmVudHJpZXModGhpcy5mb3JtQ29uZmlnPy50YWJsZVByb3BhZ2F0aW9uQXR0cmlidXRlcyk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHBpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB0YWJsZUF0dHIgPSBtYXBwaW5nW2luZGV4XT8uWzBdO1xuICAgICAgY29uc3QgY29tcG9uZW50QXR0ciA9IG1hcHBpbmdbaW5kZXhdPy5bMV0/LnRvU3RyaW5nKCkgPz8gJyc7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMudGFibGU/Llt0YWJsZUF0dHJdO1xuICAgICAgdGhpcy5kZWZhdWx0UHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShjb21wb25lbnRBdHRyLCBhdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICB0aGlzLmN1c3RvbVByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoY29tcG9uZW50QXR0ciwgYXR0cmlidXRlVmFsdWUpO1xuICAgIH1cbiAgICAvLyBTdWJzY3JpcGNpw7NuIGEgY2FtYmlvcyBlbiBhdHJpYnV0b3NcbiAgICB0aGlzLnRhYmxlPy5hdHRyaWJ1dGVDaGFuZ2Uuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZTogYXR0ck5hbWUsIHZhbHVlIH0gPSBldmVudDtcbiAgICAgIGNvbnNvbGUubG9nKGBMbGVnw7MgYXRyaWJ1dG8gJHthdHRyTmFtZX0gcHJvcGFnYWRvLi4uYCk7XG4gICAgICB0aGlzLmRlZmF1bHRQcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGF0dHJOYW1lLCB2YWx1ZSk7XG4gICAgICB0aGlzLmN1c3RvbVByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoYXR0ck5hbWUsIHZhbHVlKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICB1cGRhdGVUYWJsZURhdGEoKSB7IH1cbiAgdGFibGVHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZTogc3RyaW5nKSB7IHRoaXMudGFibGU/Lm5vdGlmeUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlKTsgfVxuICB0YWJsZVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcpIHsgdGhpcy50YWJsZT8ubm90aWZ5U2VsZWN0aW9uQWN0aW9uKGFjdGlvbkNvZGUpOyB9XG4gIHRhYmxlQWN0aW9uU2VsZWN0ZWQoYWN0aW9uRXZlbnQ6IFRhYmxlQWN0aW9uRXZlbnQpIHsgdGhpcy50YWJsZT8ubm90aWZ5SW5saW5lQWN0aW9uKGFjdGlvbkV2ZW50KTsgfVxuICB0YWJsZVNlbGVjdGlvblRvZ2dsZShyZWNvcmRJZDogYW55KSB7IHRoaXMudGFibGU/Lm5vdGlmeVJlY29yZFNlbGVjdGlvbihyZWNvcmRJZCk7IH1cbiAgdG9nZ2xlU2VsZWN0QWxsKCkgeyByZXR1cm4gKHRoaXMudGFibGU/LmFsbFNlbGVjdGVkKSA/IHRoaXMudGFibGU/LnVuU2VsZWN0QWxsKCkgOiB0aGlzLnRhYmxlPy5zZWxlY3RBbGwoKTsgfVxuICBnbG9iYWxGaWx0ZXJDb21wbGV0ZWQoKSB7IHRoaXMuY2hhbmdlUGFnZSgxKTsgfVxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2U6IG51bWJlcikgeyB0aGlzLnRhYmxlPy5jaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpOyB9XG4gIHRhYmxlQ29sdW1uU29ydChjb2x1bW5OYW1lOiBzdHJpbmcsIGRpcmVjdGlvbiA9IG51bGwpIHsgdGhpcy50YWJsZT8uc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24gPz8gJ2FzY2VuZCcpOyB9XG4gIGdsb2JhbEZpbHRlckNoYW5nZWQoKSB7IHRoaXMudGFibGU/LnNldEdsb2JhbEZpbHRlclN0cmluZyh0aGlzLmdsb2JhbEZpbHRlclN0cmluZz8udHJpbSgpID8/ICcnLCBmYWxzZSk7IH1cblxuICBvdmVycmlkZSBkZWZhdWx0UHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU/OiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3Zpc2libGVSZWNvcmRzJykge1xuICAgICAgICBjb25zb2xlLmxvZygnU2UgZGViZW4gYWN0dWFsaXphciBsb3MgdmlzaWJsZVJlY29yZHMnKVxuICAgICAgICB0aGlzLnVwZGF0ZVRhYmxlRGF0YSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1cGVyLmRlZmF1bHRQcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckhhc0NoYW5nZWQoY29sdW1uLCB2YWx1ZXMpIHtcbiAgICBpZiAoIXZhbHVlcyB8fCB2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRhYmxlPy5yZW1vdmVDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGU/LmFkZENvbHVtbkZpbHRlcihjb2x1bW4uZmllbGRDb2RlLCB2YWx1ZXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVEvRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBTnZEOztRQVNFLHVCQUFrQixHQUFXLEVBQUUsQ0FBQztRQUdoQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBS1YsVUFBSyxHQUF1QixJQUFJLENBQUM7UUFDakMsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBQ3ZDLFlBQU8sR0FBWSxLQUFLLENBQUM7S0EwRG5DO0lBeERDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLE9BQU87U0FBRTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFVB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SW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhJztcbmltcG9ydCB7IFRhYmxlQWN0aW9uRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlJztcbmltcG9ydCB7IFJlY29yZFRhYmxlLCBUYWJsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0L2VsZW1lbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJUYWJsZUNvbXBvbmVudCBleHRlbmRzIEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBBdHJpYnV0b3Mgc2luY3Jvbml6YWRvcyBkZWwgb2JqZXRvXG4gIGNvZGU6IGFueTtcbiAgZ2xvYmFsRmlsdGVyU3RyaW5nOiBzdHJpbmcgPSAnJztcblxuICB0YWJsZUZpZWxkU3R5bGVzOiBhbnk7XG4gIGxvYWRlZCA9IGZhbHNlO1xuICBzZWxlY3RhYmxlID0gZmFsc2U7XG4gIGhhc0FjdGlvbnMgPSBmYWxzZTtcbiAgaW5saW5lQWN0aW9uczogYW55O1xuICBnbG9iYWxBY3Rpb25zOiBhbnk7XG4gIHNlbGVjdGlvbkFjdGlvbnM6IGFueTtcblxuICBASW5wdXQoKSB0YWJsZTogUmVjb3JkVGFibGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgdmlzaWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdID0gW107XG4gIEBJbnB1dCgpIHdhaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMudGFibGUpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gdGhpcy50YWJsZT8uX2Zvcm1Db25maWc7XG4gICAgdGhpcy50YWJsZUZpZWxkU3R5bGVzID0gdGhpcy5mb3JtQ29uZmlnPy50YWJsZUZpZWxkU3R5bGVzO1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHRoaXMudGFibGU/LnNlbGVjdGFibGU7XG4gICAgdGhpcy5oYXNBY3Rpb25zID0gdGhpcy50YWJsZT8uaGFzQWN0aW9ucygpO1xuICAgIHRoaXMuaW5saW5lQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuaW5saW5lKTtcbiAgICB0aGlzLmdsb2JhbEFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLmdsb2JhbCk7XG4gICAgdGhpcy5zZWxlY3Rpb25BY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5zZWxlY3Rpb24pO1xuICAgIC8vIEluaWNpYWxpemFjacOzbiBkZSBjYW1wb3MgbWFwZWFkb3MgZGVsIG9iamV0b1xuICAgIGNvbnN0IG1hcHBpbmcgPSBPYmplY3QuZW50cmllcyh0aGlzLmZvcm1Db25maWc/LnRhYmxlUHJvcGFnYXRpb25BdHRyaWJ1dGVzKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcGluZy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHRhYmxlQXR0ciA9IG1hcHBpbmdbaW5kZXhdPy5bMF07XG4gICAgICBjb25zdCBjb21wb25lbnRBdHRyID0gbWFwcGluZ1tpbmRleF0/LlsxXT8udG9TdHJpbmcoKSA/PyAnJztcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gdGhpcy50YWJsZT8uW3RhYmxlQXR0cl07XG4gICAgICB0aGlzLmRlZmF1bHRQcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGNvbXBvbmVudEF0dHIsIGF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgIHRoaXMuY3VzdG9tUHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShjb21wb25lbnRBdHRyLCBhdHRyaWJ1dGVWYWx1ZSk7XG4gICAgfVxuICAgIC8vIFN1YnNjcmlwY2nDs24gYSBjYW1iaW9zIGVuIGF0cmlidXRvc1xuICAgIHRoaXMudGFibGU/LmF0dHJpYnV0ZUNoYW5nZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgY29uc3QgeyBuYW1lOiBhdHRyTmFtZSwgdmFsdWUgfSA9IGV2ZW50O1xuICAgICAgdGhpcy5kZWZhdWx0UHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShhdHRyTmFtZSwgdmFsdWUpO1xuICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGF0dHJOYW1lLCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgdXBkYXRlVGFibGVEYXRhKCkgeyB9XG4gIHRhYmxlR2xvYmFsQWN0aW9uKGFjdGlvbkNvZGU6IHN0cmluZykgeyB0aGlzLnRhYmxlPy5ub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSk7IH1cbiAgdGFibGVTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZTogc3RyaW5nKSB7IHRoaXMudGFibGU/Lm5vdGlmeVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlKTsgfVxuICB0YWJsZUFjdGlvblNlbGVjdGVkKGFjdGlvbkV2ZW50OiBUYWJsZUFjdGlvbkV2ZW50KSB7IHRoaXMudGFibGU/Lm5vdGlmeUlubGluZUFjdGlvbihhY3Rpb25FdmVudCk7IH1cbiAgdGFibGVTZWxlY3Rpb25Ub2dnbGUocmVjb3JkSWQ6IGFueSkgeyB0aGlzLnRhYmxlPy5ub3RpZnlSZWNvcmRTZWxlY3Rpb24ocmVjb3JkSWQpOyB9XG4gIHRvZ2dsZVNlbGVjdEFsbCgpIHsgcmV0dXJuICh0aGlzLnRhYmxlPy5hbGxTZWxlY3RlZCkgPyB0aGlzLnRhYmxlPy51blNlbGVjdEFsbCgpIDogdGhpcy50YWJsZT8uc2VsZWN0QWxsKCk7IH1cbiAgZ2xvYmFsRmlsdGVyQ29tcGxldGVkKCkgeyB0aGlzLmNoYW5nZVBhZ2UoMSk7IH1cbiAgY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlOiBudW1iZXIpIHsgdGhpcy50YWJsZT8uY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlKTsgfVxuICB0YWJsZUNvbHVtblNvcnQoY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb24gPSBudWxsKSB7IHRoaXMudGFibGU/LnNvcnQoY29sdW1uTmFtZSwgZGlyZWN0aW9uID8/ICdhc2NlbmQnKTsgfVxuICBnbG9iYWxGaWx0ZXJDaGFuZ2VkKCkgeyB0aGlzLnRhYmxlPy5zZXRHbG9iYWxGaWx0ZXJTdHJpbmcodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmc/LnRyaW0oKSA/PyAnJywgZmFsc2UpOyB9XG5cbiAgb3ZlcnJpZGUgZGVmYXVsdFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlPzogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd2aXNpYmxlUmVjb3JkcycpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJsZURhdGEoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdXBlci5kZWZhdWx0UHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJIYXNDaGFuZ2VkKGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YWJsZT8ucmVtb3ZlQ29sdW1uRmlsdGVyKGNvbHVtbi5maWVsZENvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlPy5hZGRDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSwgdmFsdWVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|