@updevs/components 1.0.0-alpha.67 → 1.0.0-alpha.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +4 -3
- package/esm2022/form-controls/select/components/single/select.component.mjs +16 -29
- package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +18 -17
- package/esm2022/paginator/paginator.component.mjs +3 -3
- package/esm2022/table/components/filter-row/filter-row.component.mjs +3 -3
- package/fesm2022/updevs-components-form-controls-select.mjs +32 -44
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form.mjs +3 -2
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components-paginator.mjs +2 -2
- package/fesm2022/updevs-components-paginator.mjs.map +1 -1
- package/fesm2022/updevs-components-table.mjs +2 -2
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/form-controls/select/components/single/select.component.d.ts +6 -8
- package/package.json +12 -12
|
@@ -97,7 +97,7 @@ export class BaseSelectComponent extends BaseControl {
|
|
|
97
97
|
this.clearSelection();
|
|
98
98
|
this.search();
|
|
99
99
|
}
|
|
100
|
-
});
|
|
100
|
+
}, { allowSignalWrites: true });
|
|
101
101
|
}
|
|
102
102
|
ngOnInit() {
|
|
103
103
|
this.hasExternalList = !this.observable() && !this.store();
|
|
@@ -157,21 +157,22 @@ export class BaseSelectComponent extends BaseControl {
|
|
|
157
157
|
this.localItems.set(Utils.deepCopy(this._localBackupItems));
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
|
-
this.ngZone.run(() =>
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
160
|
+
this.ngZone.run(() => this.listItems = Utils
|
|
161
|
+
.deepCopy(this._localBackupItems)
|
|
162
|
+
.filter(si => {
|
|
163
|
+
let hasChildrenInSearch = false;
|
|
164
|
+
if ((si.children?.length || 0) > 0) {
|
|
165
|
+
hasChildrenInSearch = si.children.filter(ci => ci.text.toLowerCase().includes(this._currentTerm.toLowerCase())).length > 0;
|
|
166
|
+
}
|
|
167
|
+
return si.text.toLowerCase().includes(this._currentTerm.toLowerCase()) || hasChildrenInSearch;
|
|
168
|
+
})
|
|
169
|
+
.map(si => {
|
|
170
|
+
const bkpItem = this._localBackupItems.find(lbi => lbi.value === si.value);
|
|
171
|
+
if ((bkpItem?.children?.length || 0) > 0) {
|
|
172
|
+
si.children = [...bkpItem.children].filter(ci => ci.text.toLowerCase().includes(this._currentTerm.toLowerCase()));
|
|
173
|
+
}
|
|
174
|
+
return this.getListItem(si);
|
|
175
|
+
}));
|
|
175
176
|
}
|
|
176
177
|
searchRemote() {
|
|
177
178
|
this.isLoading = true;
|
|
@@ -227,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
227
228
|
type: HostBinding,
|
|
228
229
|
args: ['class']
|
|
229
230
|
}] } });
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0tY29udHJvbHMvc2VsZWN0L3NyYy9tb2RlbHMvYWJzdHJhY3Rpb25zL2Jhc2Utc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBRVYsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLEtBQUssRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUFFLE1BQU0sRUFDaEIsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBeUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekMsT0FBTyxFQUEwQixnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2QyxJQUFPLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDOztBQUczQixNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFdBQVc7SUFDekQsSUFBMEIsY0FBYztRQUNwQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFrREQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLGNBQWMs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QiwrdkRBS3FCLFVBQVUsaUhBQ2hCLFVBQVUsMkhBQ0EsVUFBVSx1R0FDOUIsVUFBVTs7MkZBUmxDLG1CQUFtQjtrQkFEeEMsU0FBUzt3REFFb0IsY0FBYztzQkFBdkMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkluaXQsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBSZW5kZXJlcjIsXG4gICAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgICBpbnB1dCxcbiAgICB2aWV3Q2hpbGQsXG4gICAgY29tcHV0ZWQsIGVmZmVjdCxcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgb3V0cHV0LFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbUV2ZW50c1NlcnZpY2UsIFBvc2l0aW9uaW5nU2VydmljZSwgQ29tcHV0ZVBvc2l0aW9uUmVzdWx0IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnQHVwZGV2cy9zZGsvY29yZSc7XG5pbXBvcnQgeyBCYXNlU2VhcmNoU3RvcmUsIE9ic2VydmFibGVTZWFyY2hUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvc3RvcmVzJztcbmltcG9ydCB7IEhvcml6b250YWxWZXJ0aWNhbFR5cGUsIENvbHVtblNpemVIZWxwZXIgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvbGlzdCc7XG5pbXBvcnQgeyBCYXNlQ29udHJvbCB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgeyB0YXAsIGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAnLi4vc2VsZWN0LWl0ZW0nO1xuaW1wb3J0IHsgRGVmYXVsdHMgfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmltcG9ydCBVdGlscyA9IFRvb2xzLlV0aWxzO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbnRyb2wgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgd3JhcHBlckNsYXNzZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RXcmFwcGVyQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGNvbXBvbmVudEJveCA9IHZpZXdDaGlsZCgnY29tcG9uZW50Qm94JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuICAgIHJlYWRvbmx5IHNlYXJjaEJveCA9IHZpZXdDaGlsZCgnc2VhcmNoQm94JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuICAgIHJlYWRvbmx5IHNlYXJjaEJveENoaWxkID0gdmlld0NoaWxkKCdzZWFyY2hCb3hDaGlsZCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcbiAgICByZWFkb25seSBsaXN0ID0gdmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gICAgcmVhZG9ubHkgZHJvcGRvd25PcGVuU3RhdHVzQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gICAgLyoqXG4gICAgICogU2VsZWN0IGl0ZW1zLlxuICAgICAqIElmIHByb3ZpZGVkLCB0aGUgc2VsZWN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdGF0aWMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxTZWxlY3RJdGVtW10+KCk7XG4gICAgLyoqXG4gICAgICogU3RvcmUgdXNlZCB0byBsb2FkL2ZpbHRlciB0aGUgaXRlbXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RvcmUgPSBpbnB1dDxCYXNlU2VhcmNoU3RvcmU+KCk7XG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB1c2VkIHRvIGxvYWQvZmlsdGVyIHRoZSBpdGVtcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBvYnNlcnZhYmxlID0gaW5wdXQ8T2JzZXJ2YWJsZVNlYXJjaFR5cGU+KCk7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIElEL2tleSBvZiB0aGUgb3B0aW9uLlxuICAgICAqICoqTm90ZToqKiB1c2VkIG9ubHkgZm9yIHJlbW90ZSBkYXRhLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGl0ZW1LZXkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlL2Rlc2NyaXB0aW9uIG9mIHRoZSBvcHRpb24uXG4gICAgICogKipOb3RlOioqIHVzZWQgb25seSBmb3IgcmVtb3RlIGRhdGEuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXRlbVZhbHVlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBkcm9wZG93bi5cbiAgICAgKi9cbiAgICByZWFkb25seSBkcm9wZG93bk1heEhlaWdodCA9IGlucHV0KERlZmF1bHRzLmRyb3Bkb3duTWF4SGVpZ2h0KTtcbiAgICByZWFkb25seSB0eXBlYWhlYWREZWJvdW5jZSA9IGlucHV0KERlZmF1bHRzLnR5cGVhaGVhZERlYm91bmNlKTtcbiAgICByZWFkb25seSBzaG91bGRBdXRvU2VhcmNoID0gaW5wdXQoRGVmYXVsdHMuc2hvdWxkQXV0b1NlYXJjaCk7XG4gICAgcmVhZG9ubHkgc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGljayA9IGlucHV0KERlZmF1bHRzLnNob3VsZENsb3NlT25PdXRzaWRlQ2xpY2spO1xuICAgIHJlYWRvbmx5IGxheW91dCA9IGlucHV0PEhvcml6b250YWxWZXJ0aWNhbFR5cGU+KERlZmF1bHRzLmxheW91dCk7XG4gICAgLyoqXG4gICAgICogVmFsdWUgY29taW5nIGZyb20gYSBwYXJlbnQgZmllbGQgd2hlbiB0aGUgcnVsZSBgQXR0YWNobWVudFR5cGVFbnVtLlBhcmVudExvYWRgIGlzIGFjdGl2ZS5cbiAgICAgKiBgdXBkLXNlbGVjdGAgY2FuIHVzZSBpdCB0byBmZXRjaCB0aGUgZGVwZW5kZW50IGxpc3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGFyZW50VmFsdWUgPSBpbnB1dCgpO1xuXG4gICAgbGF5b3V0Q2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubGF5b3V0KCkgPT09ICdob3Jpem9udGFsJyA/IFsnY29sJywgJ2FsaWduLXNlbGYtY2VudGVyJ10gOiBbXSk7XG4gICAgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgbG9jYWxJdGVtcyA9IHNpZ25hbDxTZWxlY3RJdGVtW10+KFtdKTtcbiAgICBsaXN0SXRlbXM6IExpc3RJdGVtW10gPSBbXTtcbiAgICBkcm9wZG93bkNsYXNzZXMgPSAnc2VsZWN0LWRyb3Bkb3duLWNvbnRlbnQgcmVtb3ZlLXRvcC1yYWRpdXMnO1xuICAgIGdldCBpc0Ryb3Bkb3duT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRHJvcGRvd25PcGVuO1xuICAgIH1cbiAgICBzZXQgaXNEcm9wZG93bk9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNEcm9wZG93bk9wZW4gPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duT3BlblN0YXR1c0NoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25DbGFzc2VzICs9ICcgc2VsZWN0LWRyb3Bkb3duLWNvbnRlbnQtb3Blbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ2xhc3NlcyA9IHRoaXMuZHJvcGRvd25DbGFzc2VzLnJlcGxhY2UoJyBzZWxlY3QtZHJvcGRvd24tY29udGVudC1vcGVuJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBsYWJlbFNpemVDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmxheW91dCgpICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIHJldHVybiAnZm9ybS1sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ29sdW1uU2l6ZUhlbHBlci5nZXRDbGFzc2VzKFxuICAgICAgICAgICAgJ2NvbC1mb3JtLWxhYmVsJyxcbiAgICAgICAgICAgIENvbHVtblNpemVIZWxwZXIuZ2V0U2l6ZUNsYXNzZXModGhpcy5sYWJlbENvbFNpemUoKSwgMylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2N1cnJlbnRUZXJtPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfbG9jYWxCYWNrdXBJdGVtczogU2VsZWN0SXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGhhc0V4dGVybmFsTGlzdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBob3N0V3JhcHBlckNsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxheW91dCgpID09PSAnaG9yaXpvbnRhbCcgPyAncm93JyA6ICcnKTtcbiAgICBwcml2YXRlIHByZXZpb3VzUGFyZW50VmFsdWU/OiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hJbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21FdmVudHNTZXJ2aWNlID0gaW5qZWN0KERvbUV2ZW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9zaXRpb25pbmdTZXJ2aWNlID0gaW5qZWN0KFBvc2l0aW9uaW5nU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuaXRlbXMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwTG9jYWxJdGVtcyh0aGlzLml0ZW1zKCkhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50VmFsdWUoKSAhPT0gdGhpcy5wcmV2aW91c1BhcmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1BhcmVudFZhbHVlID0gdGhpcy5wYXJlbnRWYWx1ZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0V4dGVybmFsTGlzdCA9ICF0aGlzLm9ic2VydmFibGUoKSAmJiAhdGhpcy5zdG9yZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3VsZEF1dG9TZWFyY2goKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRXh0ZXJuYWxMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBMb2NhbEl0ZW1zKHRoaXMuaXRlbXMoKSEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlbW90ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzRXh0ZXJuYWxMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0eXBlYWhlYWRTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaElucHV0U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKHZhbHVlID0+IHRoaXMuX2N1cnJlbnRUZXJtID0gdmFsdWUpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLnR5cGVhaGVhZERlYm91bmNlKCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2VhcmNoUmVtb3RlKCkpO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyh0eXBlYWhlYWRTdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGljaygpKSB7XG4gICAgICAgICAgICBjb25zdCBvdXRzaWRlQ2xpY2tTdWIgPSB0aGlzLmRvbUV2ZW50c1NlcnZpY2Uuc3RhcnRPdXRzaWRlQ2xpY2tMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QoKT8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50Qm94KCk/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3goKT8ubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhvdXRzaWRlQ2xpY2tTdWIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbmluZ1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmNvbXB1dGVQb3NpdGlvbih0aGlzLmNvbXBvbmVudEJveCgpISwgdGhpcy5saXN0KCkhLCB7IHBsYWNlbWVudDogJ2JvdHRvbScgfSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwID0+IHRoaXMudXBkYXRlUG9zaXRpb24ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LCB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0pO1xuICAgIH1cblxuICAgIHNlYXJjaCh0ZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0V4dGVybmFsTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRlcm0gPSB0ZXJtO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hMb2NhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFN1YmplY3QubmV4dCh0ZXJtIHx8ICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2V0dXBMb2NhbEl0ZW1zKGl0ZW1zOiBTZWxlY3RJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29waWVkSXRlbXM6IFNlbGVjdEl0ZW1bXSA9IFV0aWxzLmRlZXBDb3B5KGl0ZW1zKTtcblxuICAgICAgICB0aGlzLmxvY2FsSXRlbXMuc2V0KGNvcGllZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9sb2NhbEJhY2t1cEl0ZW1zID0gVXRpbHMuZGVlcENvcHkoaXRlbXMpO1xuICAgICAgICBjb25zdCB0ZW1wSXRlbXM6IExpc3RJdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fbG9jYWxCYWNrdXBJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSB0aGlzLmdldExpc3RJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgaXRlbS5saXN0SXRlbSA9IE9iamVjdC5hc3NpZ24obGlzdEl0ZW0sIHt9KTtcblxuICAgICAgICAgICAgdGVtcEl0ZW1zLnB1c2gobGlzdEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5saXN0SXRlbXMgPSBbLi4udGVtcEl0ZW1zXTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaExvY2FsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRUZXJtKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RJdGVtcyA9IFV0aWxzLmRlZXBDb3B5KHRoaXMuX2xvY2FsQmFja3VwSXRlbXMubWFwKGxpID0+IGxpLmxpc3RJdGVtISkpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbEl0ZW1zLnNldChVdGlscy5kZWVwQ29weSh0aGlzLl9sb2NhbEJhY2t1cEl0ZW1zKSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxpc3RJdGVtcyA9IFV0aWxzLmRlZXBDb3B5PFNlbGVjdEl0ZW1bXT4odGhpcy5fbG9jYWxCYWNrdXBJdGVtcykuZmlsdGVyKHNpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaGFzQ2hpbGRyZW5JblNlYXJjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKChzaS5jaGlsZHJlbj8ubGVuZ3RoIHx8IDApID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbkluU2VhcmNoID0gc2kuY2hpbGRyZW4hLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpID0+IGNpLnRleHQhLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5fY3VycmVudFRlcm0hLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgICAgICkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2kudGV4dCEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLl9jdXJyZW50VGVybSEudG9Mb3dlckNhc2UoKSkgfHwgaGFzQ2hpbGRyZW5JblNlYXJjaDtcbiAgICAgICAgICAgIH0pLm1hcChzaSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmtwSXRlbSA9IHRoaXMuX2xvY2FsQmFja3VwSXRlbXMuZmluZChsYmkgPT4gbGJpLnZhbHVlID09PSBzaS52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoKGJrcEl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpLmNoaWxkcmVuID0gWy4uLmJrcEl0ZW0hLmNoaWxkcmVuIV0uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2kgPT4gY2kudGV4dCEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLl9jdXJyZW50VGVybSEudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbShzaSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hSZW1vdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHsgZGVzY3JpcHRpb246IHRoaXMuX2N1cnJlbnRUZXJtIH07XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSAhIXRoaXMub2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICA/IHRoaXMub2JzZXJ2YWJsZSgpIShyZXF1ZXN0LCB0aGlzLnBhcmVudFZhbHVlKCkpXG4gICAgICAgICAgICA6IHRoaXMuc3RvcmUoKSEuc2VhcmNoKHJlcXVlc3QsIHRoaXMucGFyZW50VmFsdWUoKSk7XG5cbiAgICAgICAgb2JzZXJ2YWJsZS5zdWJzY3JpYmUociA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtczogU2VsZWN0SXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHIucmVjb3Jkcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVt0aGlzLml0ZW1LZXkoKSFdLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3RoaXMuaXRlbVZhbHVlKCkhXSxcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0RGF0YTogaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cExvY2FsSXRlbXMoaXRlbXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExpc3RJdGVtKGl0ZW06IFNlbGVjdEl0ZW0pOiBMaXN0SXRlbSB7XG4gICAgICAgIGxldCBsaXN0SXRlbTogTGlzdEl0ZW07XG5cbiAgICAgICAgaWYgKCEhaXRlbS5saXN0SXRlbSkge1xuICAgICAgICAgICAgbGlzdEl0ZW0gPSBpdGVtLmxpc3RJdGVtO1xuICAgICAgICAgICAgbGlzdEl0ZW0uaWQgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgbGlzdEl0ZW0udGV4dCA9IGl0ZW0udGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpc3RJdGVtID0ge1xuICAgICAgICAgICAgICAgIGlkOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoIHx8IDApID4gMCkge1xuICAgICAgICAgICAgbGlzdEl0ZW0uY2hpbGRyZW4gPSBbLi4uaXRlbS5jaGlsZHJlbiFdLm1hcChjID0+IHRoaXMuZ2V0TGlzdEl0ZW0oYykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpc3RJdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUG9zaXRpb24ocmVzdWx0OiBDb21wdXRlUG9zaXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50Qm94ID0gdGhpcy5jb21wb25lbnRCb3goKSEubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2VhcmNoQm94Q2hpbGRFbGVtZW50ID0gdGhpcy5zZWFyY2hCb3hDaGlsZCgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBkZEVsZW1lbnQgPSB0aGlzLmxpc3QoKSEubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlYXJjaEJveENoaWxkRWxlbWVudCwgJ3dpZHRoJywgYCR7TWF0aC5hYnMoY29tcG9uZW50Qm94LndpZHRoKX1weGAsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkZEVsZW1lbnQsICd0b3AnLCBgJHtyZXN1bHQueSArIHNlYXJjaEJveENoaWxkRWxlbWVudC5zY3JvbGxIZWlnaHR9cHhgLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkltcG9ydGFudCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZGRFbGVtZW50LCAnbGVmdCcsIDAsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkZEVsZW1lbnQsICd3aWR0aCcsIGAke01hdGguYWJzKGNvbXBvbmVudEJveC53aWR0aCl9cHhgLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkltcG9ydGFudCk7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgY2xlYXJTZWxlY3Rpb24oKTogdm9pZDtcbiAgICBhYnN0cmFjdCBvblNlbGVjdEl0ZW0oaXRlbTogTGlzdEl0ZW0pOiB2b2lkO1xufVxuIl19
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0tY29udHJvbHMvc2VsZWN0L3NyYy9tb2RlbHMvYWJzdHJhY3Rpb25zL2Jhc2Utc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBRVYsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLEtBQUssRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV6QyxPQUFPLEVBQTBCLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZDLElBQU8sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7O0FBRzNCLE1BQU0sT0FBZ0IsbUJBQW9CLFNBQVEsV0FBVztJQUN6RCxJQUEwQixjQUFjO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQWtERCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksY0FBYyxD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QUFuQixtQkFBbUIsK3ZEQUtxQixVQUFVLGlIQUNoQixVQUFVLDJIQUNBLFVBQVUsdUdBQzlCLFVBQVU7OzJGQVJsQyxtQkFBbUI7a0JBRHhDLFNBQVM7d0RBRW9CLGNBQWM7c0JBQXZDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIGluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgUmVuZGVyZXIyLFxuICAgIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gICAgaW5wdXQsXG4gICAgdmlld0NoaWxkLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgb3V0cHV0LFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbUV2ZW50c1NlcnZpY2UsIFBvc2l0aW9uaW5nU2VydmljZSwgQ29tcHV0ZVBvc2l0aW9uUmVzdWx0IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnQHVwZGV2cy9zZGsvY29yZSc7XG5pbXBvcnQgeyBCYXNlU2VhcmNoU3RvcmUsIE9ic2VydmFibGVTZWFyY2hUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvc3RvcmVzJztcbmltcG9ydCB7IEhvcml6b250YWxWZXJ0aWNhbFR5cGUsIENvbHVtblNpemVIZWxwZXIgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvbGlzdCc7XG5pbXBvcnQgeyBCYXNlQ29udHJvbCB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgeyB0YXAsIGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAnLi4vc2VsZWN0LWl0ZW0nO1xuaW1wb3J0IHsgRGVmYXVsdHMgfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmltcG9ydCBVdGlscyA9IFRvb2xzLlV0aWxzO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbnRyb2wgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgd3JhcHBlckNsYXNzZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RXcmFwcGVyQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGNvbXBvbmVudEJveCA9IHZpZXdDaGlsZCgnY29tcG9uZW50Qm94JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuICAgIHJlYWRvbmx5IHNlYXJjaEJveCA9IHZpZXdDaGlsZCgnc2VhcmNoQm94JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuICAgIHJlYWRvbmx5IHNlYXJjaEJveENoaWxkID0gdmlld0NoaWxkKCdzZWFyY2hCb3hDaGlsZCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcbiAgICByZWFkb25seSBsaXN0ID0gdmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gICAgcmVhZG9ubHkgZHJvcGRvd25PcGVuU3RhdHVzQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gICAgLyoqXG4gICAgICogU2VsZWN0IGl0ZW1zLlxuICAgICAqIElmIHByb3ZpZGVkLCB0aGUgc2VsZWN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdGF0aWMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxTZWxlY3RJdGVtW10+KCk7XG4gICAgLyoqXG4gICAgICogU3RvcmUgdXNlZCB0byBsb2FkL2ZpbHRlciB0aGUgaXRlbXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RvcmUgPSBpbnB1dDxCYXNlU2VhcmNoU3RvcmU+KCk7XG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB1c2VkIHRvIGxvYWQvZmlsdGVyIHRoZSBpdGVtcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBvYnNlcnZhYmxlID0gaW5wdXQ8T2JzZXJ2YWJsZVNlYXJjaFR5cGU+KCk7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIElEL2tleSBvZiB0aGUgb3B0aW9uLlxuICAgICAqICoqTm90ZToqKiB1c2VkIG9ubHkgZm9yIHJlbW90ZSBkYXRhLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGl0ZW1LZXkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlL2Rlc2NyaXB0aW9uIG9mIHRoZSBvcHRpb24uXG4gICAgICogKipOb3RlOioqIHVzZWQgb25seSBmb3IgcmVtb3RlIGRhdGEuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXRlbVZhbHVlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBkcm9wZG93bi5cbiAgICAgKi9cbiAgICByZWFkb25seSBkcm9wZG93bk1heEhlaWdodCA9IGlucHV0KERlZmF1bHRzLmRyb3Bkb3duTWF4SGVpZ2h0KTtcbiAgICByZWFkb25seSB0eXBlYWhlYWREZWJvdW5jZSA9IGlucHV0KERlZmF1bHRzLnR5cGVhaGVhZERlYm91bmNlKTtcbiAgICByZWFkb25seSBzaG91bGRBdXRvU2VhcmNoID0gaW5wdXQoRGVmYXVsdHMuc2hvdWxkQXV0b1NlYXJjaCk7XG4gICAgcmVhZG9ubHkgc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGljayA9IGlucHV0KERlZmF1bHRzLnNob3VsZENsb3NlT25PdXRzaWRlQ2xpY2spO1xuICAgIHJlYWRvbmx5IGxheW91dCA9IGlucHV0PEhvcml6b250YWxWZXJ0aWNhbFR5cGU+KERlZmF1bHRzLmxheW91dCk7XG4gICAgLyoqXG4gICAgICogVmFsdWUgY29taW5nIGZyb20gYSBwYXJlbnQgZmllbGQgd2hlbiB0aGUgcnVsZSBgQXR0YWNobWVudFR5cGVFbnVtLlBhcmVudExvYWRgIGlzIGFjdGl2ZS5cbiAgICAgKiBgdXBkLXNlbGVjdGAgY2FuIHVzZSBpdCB0byBmZXRjaCB0aGUgZGVwZW5kZW50IGxpc3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGFyZW50VmFsdWUgPSBpbnB1dCgpO1xuXG4gICAgbGF5b3V0Q2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubGF5b3V0KCkgPT09ICdob3Jpem9udGFsJyA/IFsnY29sJywgJ2FsaWduLXNlbGYtY2VudGVyJ10gOiBbXSk7XG4gICAgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgbG9jYWxJdGVtcyA9IHNpZ25hbDxTZWxlY3RJdGVtW10+KFtdKTtcbiAgICBsaXN0SXRlbXM6IExpc3RJdGVtW10gPSBbXTtcbiAgICBkcm9wZG93bkNsYXNzZXMgPSAnc2VsZWN0LWRyb3Bkb3duLWNvbnRlbnQgcmVtb3ZlLXRvcC1yYWRpdXMnO1xuICAgIGdldCBpc0Ryb3Bkb3duT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRHJvcGRvd25PcGVuO1xuICAgIH1cbiAgICBzZXQgaXNEcm9wZG93bk9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNEcm9wZG93bk9wZW4gPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duT3BlblN0YXR1c0NoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25DbGFzc2VzICs9ICcgc2VsZWN0LWRyb3Bkb3duLWNvbnRlbnQtb3Blbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ2xhc3NlcyA9IHRoaXMuZHJvcGRvd25DbGFzc2VzLnJlcGxhY2UoJyBzZWxlY3QtZHJvcGRvd24tY29udGVudC1vcGVuJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBsYWJlbFNpemVDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmxheW91dCgpICE9PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIHJldHVybiAnZm9ybS1sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ29sdW1uU2l6ZUhlbHBlci5nZXRDbGFzc2VzKFxuICAgICAgICAgICAgJ2NvbC1mb3JtLWxhYmVsJyxcbiAgICAgICAgICAgIENvbHVtblNpemVIZWxwZXIuZ2V0U2l6ZUNsYXNzZXModGhpcy5sYWJlbENvbFNpemUoKSwgMylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2N1cnJlbnRUZXJtPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfbG9jYWxCYWNrdXBJdGVtczogU2VsZWN0SXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGhhc0V4dGVybmFsTGlzdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBob3N0V3JhcHBlckNsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxheW91dCgpID09PSAnaG9yaXpvbnRhbCcgPyAncm93JyA6ICcnKTtcbiAgICBwcml2YXRlIHByZXZpb3VzUGFyZW50VmFsdWU/OiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hJbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21FdmVudHNTZXJ2aWNlID0gaW5qZWN0KERvbUV2ZW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9zaXRpb25pbmdTZXJ2aWNlID0gaW5qZWN0KFBvc2l0aW9uaW5nU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuaXRlbXMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwTG9jYWxJdGVtcyh0aGlzLml0ZW1zKCkhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50VmFsdWUoKSAhPT0gdGhpcy5wcmV2aW91c1BhcmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1BhcmVudFZhbHVlID0gdGhpcy5wYXJlbnRWYWx1ZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzRXh0ZXJuYWxMaXN0ID0gIXRoaXMub2JzZXJ2YWJsZSgpICYmICF0aGlzLnN0b3JlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQXV0b1NlYXJjaCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNFeHRlcm5hbExpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cExvY2FsSXRlbXModGhpcy5pdGVtcygpISk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVtb3RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNFeHRlcm5hbExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGVhaGVhZFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoSW5wdXRTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAodmFsdWUgPT4gdGhpcy5fY3VycmVudFRlcm0gPSB2YWx1ZSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMudHlwZWFoZWFkRGVib3VuY2UoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZWFyY2hSZW1vdGUoKSk7XG5cbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHR5cGVhaGVhZFN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5zaG91bGRDbG9zZU9uT3V0c2lkZUNsaWNrKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dHNpZGVDbGlja1N1YiA9IHRoaXMuZG9tRXZlbnRzU2VydmljZS5zdGFydE91dHNpZGVDbGlja0xpc3RlbmVyKFxuICAgICAgICAgICAgICAgICgpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIHRoaXMubGlzdCgpPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRCb3goKT8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJveCgpPy5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKG91dHNpZGVDbGlja1N1Yik7XG4gICAgICAgIH1cblxuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uaW5nU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuY29tcHV0ZVBvc2l0aW9uKHRoaXMuY29tcG9uZW50Qm94KCkhLCB0aGlzLmxpc3QoKSEsIHsgcGxhY2VtZW50OiAnYm90dG9tJyB9KVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4gdGhpcy51cGRhdGVQb3NpdGlvbihyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgfVxuXG4gICAgc2VhcmNoKHRlcm0/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzRXh0ZXJuYWxMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGVybSA9IHRlcm07XG4gICAgICAgICAgICB0aGlzLnNlYXJjaExvY2FsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0U3ViamVjdC5uZXh0KHRlcm0gfHwgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9zZXR1cExvY2FsSXRlbXMoaXRlbXM6IFNlbGVjdEl0ZW1bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb3BpZWRJdGVtczogU2VsZWN0SXRlbVtdID0gVXRpbHMuZGVlcENvcHkoaXRlbXMpO1xuXG4gICAgICAgIHRoaXMubG9jYWxJdGVtcy5zZXQoY29waWVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX2xvY2FsQmFja3VwSXRlbXMgPSBVdGlscy5kZWVwQ29weShpdGVtcyk7XG4gICAgICAgIGNvbnN0IHRlbXBJdGVtczogTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9sb2NhbEJhY2t1cEl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW0oaXRlbSk7XG4gICAgICAgICAgICBpdGVtLmxpc3RJdGVtID0gT2JqZWN0LmFzc2lnbihsaXN0SXRlbSwge30pO1xuXG4gICAgICAgICAgICB0ZW1wSXRlbXMucHVzaChsaXN0SXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RJdGVtcyA9IFsuLi50ZW1wSXRlbXNdO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoTG9jYWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY3VycmVudFRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zID0gVXRpbHMuZGVlcENvcHkodGhpcy5fbG9jYWxCYWNrdXBJdGVtcy5tYXAobGkgPT4gbGkubGlzdEl0ZW0hKSk7XG4gICAgICAgICAgICB0aGlzLmxvY2FsSXRlbXMuc2V0KFV0aWxzLmRlZXBDb3B5KHRoaXMuX2xvY2FsQmFja3VwSXRlbXMpKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+XG4gICAgICAgICAgICB0aGlzLmxpc3RJdGVtcyA9IFV0aWxzXG4gICAgICAgICAgICAgICAgLmRlZXBDb3B5PFNlbGVjdEl0ZW1bXT4odGhpcy5fbG9jYWxCYWNrdXBJdGVtcylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHNpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhc0NoaWxkcmVuSW5TZWFyY2ggPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKHNpLmNoaWxkcmVuPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbkluU2VhcmNoID0gc2kuY2hpbGRyZW4hLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaSA9PiBjaS50ZXh0IS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuX2N1cnJlbnRUZXJtIS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpLnRleHQhLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5fY3VycmVudFRlcm0hLnRvTG93ZXJDYXNlKCkpIHx8IGhhc0NoaWxkcmVuSW5TZWFyY2g7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAubWFwKHNpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmtwSXRlbSA9IHRoaXMuX2xvY2FsQmFja3VwSXRlbXMuZmluZChsYmkgPT4gbGJpLnZhbHVlID09PSBzaS52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKChia3BJdGVtPy5jaGlsZHJlbj8ubGVuZ3RoIHx8IDApID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2kuY2hpbGRyZW4gPSBbLi4uYmtwSXRlbSEuY2hpbGRyZW4hXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2kgPT4gY2kudGV4dCEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLl9jdXJyZW50VGVybSEudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbShzaSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaFJlbW90ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0geyBkZXNjcmlwdGlvbjogdGhpcy5fY3VycmVudFRlcm0gfTtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9ICEhdGhpcy5vYnNlcnZhYmxlKClcbiAgICAgICAgICAgID8gdGhpcy5vYnNlcnZhYmxlKCkhKHJlcXVlc3QsIHRoaXMucGFyZW50VmFsdWUoKSlcbiAgICAgICAgICAgIDogdGhpcy5zdG9yZSgpIS5zZWFyY2gocmVxdWVzdCwgdGhpcy5wYXJlbnRWYWx1ZSgpKTtcblxuICAgICAgICBvYnNlcnZhYmxlLnN1YnNjcmliZShyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zOiBTZWxlY3RJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgci5yZWNvcmRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW3RoaXMuaXRlbUtleSgpIV0sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW1bdGhpcy5pdGVtVmFsdWUoKSFdLFxuICAgICAgICAgICAgICAgICAgICBvYmplY3REYXRhOiBpdGVtXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwTG9jYWxJdGVtcyhpdGVtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGlzdEl0ZW0oaXRlbTogU2VsZWN0SXRlbSk6IExpc3RJdGVtIHtcbiAgICAgICAgbGV0IGxpc3RJdGVtOiBMaXN0SXRlbTtcblxuICAgICAgICBpZiAoISFpdGVtLmxpc3RJdGVtKSB7XG4gICAgICAgICAgICBsaXN0SXRlbSA9IGl0ZW0ubGlzdEl0ZW07XG4gICAgICAgICAgICBsaXN0SXRlbS5pZCA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICBsaXN0SXRlbS50ZXh0ID0gaXRlbS50ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGlzdEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChpdGVtLmNoaWxkcmVuPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICBsaXN0SXRlbS5jaGlsZHJlbiA9IFsuLi5pdGVtLmNoaWxkcmVuIV0ubWFwKGMgPT4gdGhpcy5nZXRMaXN0SXRlbShjKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGlzdEl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbihyZXN1bHQ6IENvbXB1dGVQb3NpdGlvblJlc3VsdCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21wb25lbnRCb3ggPSB0aGlzLmNvbXBvbmVudEJveCgpIS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzZWFyY2hCb3hDaGlsZEVsZW1lbnQgPSB0aGlzLnNlYXJjaEJveENoaWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRkRWxlbWVudCA9IHRoaXMubGlzdCgpIS5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VhcmNoQm94Q2hpbGRFbGVtZW50LCAnd2lkdGgnLCBgJHtNYXRoLmFicyhjb21wb25lbnRCb3gud2lkdGgpfXB4YCwgUmVuZGVyZXJTdHlsZUZsYWdzMi5JbXBvcnRhbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRkRWxlbWVudCwgJ3RvcCcsIGAke3Jlc3VsdC55ICsgc2VhcmNoQm94Q2hpbGRFbGVtZW50LnNjcm9sbEhlaWdodH1weGAsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkZEVsZW1lbnQsICdsZWZ0JywgMCwgUmVuZGVyZXJTdHlsZUZsYWdzMi5JbXBvcnRhbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRkRWxlbWVudCwgJ3dpZHRoJywgYCR7TWF0aC5hYnMoY29tcG9uZW50Qm94LndpZHRoKX1weGAsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBjbGVhclNlbGVjdGlvbigpOiB2b2lkO1xuICAgIGFic3RyYWN0IG9uU2VsZWN0SXRlbShpdGVtOiBMaXN0SXRlbSk6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -52,15 +52,15 @@ export class PaginatorComponent {
|
|
|
52
52
|
this.changed.emit();
|
|
53
53
|
}
|
|
54
54
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PaginatorComponent, selector: "upd-paginator", inputs: { startPageIndex: { classPropertyName: "startPageIndex", publicName: "startPageIndex", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, availablePageSizes: { classPropertyName: "availablePageSizes", publicName: "availablePageSizes", isSignal: true, isRequired: false, transformFunction: null }, defaultInitPageSize: { classPropertyName: "defaultInitPageSize", publicName: "defaultInitPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstIcon: { classPropertyName: "shouldDisplayFirstIcon", publicName: "shouldDisplayFirstIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstText: { classPropertyName: "shouldDisplayFirstText", publicName: "shouldDisplayFirstText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousIcon: { classPropertyName: "shouldDisplayPreviousIcon", publicName: "shouldDisplayPreviousIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousText: { classPropertyName: "shouldDisplayPreviousText", publicName: "shouldDisplayPreviousText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextIcon: { classPropertyName: "shouldDisplayNextIcon", publicName: "shouldDisplayNextIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextText: { classPropertyName: "shouldDisplayNextText", publicName: "shouldDisplayNextText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastIcon: { classPropertyName: "shouldDisplayLastIcon", publicName: "shouldDisplayLastIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastText: { classPropertyName: "shouldDisplayLastText", publicName: "shouldDisplayLastText", isSignal: true, isRequired: false, transformFunction: null }, previousDescription: { classPropertyName: "previousDescription", publicName: "previousDescription", isSignal: true, isRequired: false, transformFunction: null }, nextDescription: { classPropertyName: "nextDescription", publicName: "nextDescription", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PaginatorComponent, selector: "upd-paginator", inputs: { startPageIndex: { classPropertyName: "startPageIndex", publicName: "startPageIndex", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, availablePageSizes: { classPropertyName: "availablePageSizes", publicName: "availablePageSizes", isSignal: true, isRequired: false, transformFunction: null }, defaultInitPageSize: { classPropertyName: "defaultInitPageSize", publicName: "defaultInitPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstIcon: { classPropertyName: "shouldDisplayFirstIcon", publicName: "shouldDisplayFirstIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayFirstText: { classPropertyName: "shouldDisplayFirstText", publicName: "shouldDisplayFirstText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousIcon: { classPropertyName: "shouldDisplayPreviousIcon", publicName: "shouldDisplayPreviousIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayPreviousText: { classPropertyName: "shouldDisplayPreviousText", publicName: "shouldDisplayPreviousText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextIcon: { classPropertyName: "shouldDisplayNextIcon", publicName: "shouldDisplayNextIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayNextText: { classPropertyName: "shouldDisplayNextText", publicName: "shouldDisplayNextText", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastIcon: { classPropertyName: "shouldDisplayLastIcon", publicName: "shouldDisplayLastIcon", isSignal: true, isRequired: false, transformFunction: null }, shouldDisplayLastText: { classPropertyName: "shouldDisplayLastText", publicName: "shouldDisplayLastText", isSignal: true, isRequired: false, transformFunction: null }, previousDescription: { classPropertyName: "previousDescription", publicName: "previousDescription", isSignal: true, isRequired: false, transformFunction: null }, nextDescription: { classPropertyName: "nextDescription", publicName: "nextDescription", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [value]=\"selectedPageSize()\" (selectedItem)=\"onSelectPageSize($event)\"\n [shouldShowClearButton]=\"false\" [isCompact]=\"true\" [useSystemStyle]=\"true\"></upd-select>\n <p class=\"m-0 text-secondary ms-4\">\n @if (totalRecords() > 0) {\n {{ t('FromToOf', { first: currentFirstDisplayed(), last: currentLastDisplayed(), totalRecords: totalRecords() }) }}\n } @else {\n {{ t('NoRecords') }}\n }\n </p>\n <ul class=\"pagination m-0 ms-4\">\n @if (!previousDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayFirstText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isFirstDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isFirstDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(startPageIndex())\">\n @if (shouldDisplayFirstIcon()) {\n <upd-icon tablerIcon=\"chevron-left-pipe\"></upd-icon>\n }\n @if (shouldDisplayFirstText()) {\n {{ t('First') }}\n }\n </upd-button>\n </li>\n }\n\n <li class=\"page-item\" [class.page-prev]=\"!!previousDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayPreviousText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isPreviousDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isPreviousDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(currentPage() - 1)\">\n @if (!!previousDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Previous') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(previousDescription()) }}</div>\n } @else {\n @if (shouldDisplayPreviousIcon()) {\n <upd-icon tablerIcon=\"chevron-left\"></upd-icon>\n }\n @if (shouldDisplayPreviousText()) {\n {{ t('PreviousShort') }}\n }\n }\n </upd-button>\n </li>\n\n <li class=\"page-item\" [class.page-next]=\"!!nextDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayNextText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isNextDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isNextDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(currentPage() + 1)\">\n @if (!!nextDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Next') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(nextDescription()) }}</div>\n } @else {\n @if (shouldDisplayNextText()) {\n {{ t('NextShort') }}\n }\n @if (shouldDisplayNextIcon()) {\n <upd-icon tablerIcon=\"chevron-right\"></upd-icon>\n }\n }\n </upd-button>\n </li>\n\n @if (!nextDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayLastText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isLastDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isLastDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(totalPages() - (startPageIndex() === 0 ? 1 : 0))\">\n @if (shouldDisplayLastText()) {\n {{ t('Last') }}\n }\n @if (shouldDisplayLastIcon()) {\n <upd-icon tablerIcon=\"chevron-right-pipe\"></upd-icon>\n }\n </upd-button>\n </li>\n }\n </ul>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "value"], outputs: ["selectedItem"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
|
|
56
56
|
}
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PaginatorComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
|
-
args: [{ selector: 'upd-paginator', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [
|
|
59
|
+
args: [{ selector: 'upd-paginator', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Paginator'\">\n <div class=\"d-flex m-0 ms-auto align-items-center\">\n <div class=\"text-secondary me-2\">\n {{ t('ItemsPerPage') }}\n </div>\n <upd-select [items]=\"pageOptions()\" [value]=\"selectedPageSize()\" (selectedItem)=\"onSelectPageSize($event)\"\n [shouldShowClearButton]=\"false\" [isCompact]=\"true\" [useSystemStyle]=\"true\"></upd-select>\n <p class=\"m-0 text-secondary ms-4\">\n @if (totalRecords() > 0) {\n {{ t('FromToOf', { first: currentFirstDisplayed(), last: currentLastDisplayed(), totalRecords: totalRecords() }) }}\n } @else {\n {{ t('NoRecords') }}\n }\n </p>\n <ul class=\"pagination m-0 ms-4\">\n @if (!previousDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayFirstText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isFirstDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isFirstDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(startPageIndex())\">\n @if (shouldDisplayFirstIcon()) {\n <upd-icon tablerIcon=\"chevron-left-pipe\"></upd-icon>\n }\n @if (shouldDisplayFirstText()) {\n {{ t('First') }}\n }\n </upd-button>\n </li>\n }\n\n <li class=\"page-item\" [class.page-prev]=\"!!previousDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayPreviousText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isPreviousDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isPreviousDisabled()\"\n [isDisabled]=\"isPreviousDisabled()\" (clicked)=\"selectPage(currentPage() - 1)\">\n @if (!!previousDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Previous') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(previousDescription()) }}</div>\n } @else {\n @if (shouldDisplayPreviousIcon()) {\n <upd-icon tablerIcon=\"chevron-left\"></upd-icon>\n }\n @if (shouldDisplayPreviousText()) {\n {{ t('PreviousShort') }}\n }\n }\n </upd-button>\n </li>\n\n <li class=\"page-item\" [class.page-next]=\"!!nextDescription()\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayNextText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isNextDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isNextDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(currentPage() + 1)\">\n @if (!!nextDescription()) {\n <div class=\"page-item-subtitle\">{{ t('Next') }}</div>\n <div class=\"page-item-title\">{{ textService.getText(nextDescription()) }}</div>\n } @else {\n @if (shouldDisplayNextText()) {\n {{ t('NextShort') }}\n }\n @if (shouldDisplayNextIcon()) {\n <upd-icon tablerIcon=\"chevron-right\"></upd-icon>\n }\n }\n </upd-button>\n </li>\n\n @if (!nextDescription()) {\n <li class=\"page-item\">\n <upd-button customClasses=\"page-link\" [isLink]=\"true\" [isIcon]=\"!shouldDisplayLastText()\" colorStyle=\"secondary\"\n [attr.tabindex]=\"isLastDisabled() ? -1 : 0\" [attr.aria-disabled]=\"isLastDisabled()\" [isDisabled]=\"isNextDisabled()\"\n (clicked)=\"selectPage(totalPages() - (startPageIndex() === 0 ? 1 : 0))\">\n @if (shouldDisplayLastText()) {\n {{ t('Last') }}\n }\n @if (shouldDisplayLastIcon()) {\n <upd-icon tablerIcon=\"chevron-right-pipe\"></upd-icon>\n }\n </upd-button>\n </li>\n }\n </ul>\n </div>\n</ng-container>\n" }]
|
|
60
60
|
}], ctorParameters: () => [], propDecorators: { hostClasses: [{
|
|
61
61
|
type: HostBinding,
|
|
62
62
|
args: ['class']
|
|
63
63
|
}], changed: [{
|
|
64
64
|
type: Output
|
|
65
65
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGFnaW5hdG9yL3NyYy9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVFyRCxNQUFNLE9BQU8sa0JBQWtCO0lBb0MzQjtRQW5Dc0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdEQsbUJBQWMsR0FBRyxLQUFLLENBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsS0FBSyxDQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsd0JBQW1CLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNyRCwyQkFBc0IsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDOUMsMkJBQXNCLEdBQUcsS0FBSyxD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RSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLDBCQUFxQixHQUFHLDJCQUEyQixDQUFDO1FBR2pFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWlCO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQW5EUSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0MkZDVC9CLDhsSkFtRkE7OzJGRDFFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksZUFBZTt3REFLSCxXQUFXO3NCQUFoQyxXQUFXO3VCQUFDLE9BQU87Z0JBQ0QsT0FBTztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBIb3N0QmluZGluZywgZWZmZWN0LCBpbnB1dCwgY29tcHV0ZWQsIFNpZ25hbCwgbW9kZWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0TW9kZWwsIFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL3NlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLXBhZ2luYXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzZXMgPSAnJztcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHN0YXJ0UGFnZUluZGV4ID0gaW5wdXQ8MCB8IDE+KDApO1xuICAgIGN1cnJlbnRQYWdlID0gbW9kZWw8bnVtYmVyPih0aGlzLnN0YXJ0UGFnZUluZGV4KCkpO1xuICAgIHdyYXBwZXJDbGFzc2VzID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gICAgYXZhaWxhYmxlUGFnZVNpemVzID0gaW5wdXQ8bnVtYmVyW10+KFs1LCAxMCwgMTUsIDI1LCA1MF0pO1xuICAgIGRlZmF1bHRJbml0UGFnZVNpemUgPSBpbnB1dDxudW1iZXI+KDEwKTtcbiAgICBwYWdlU2l6ZSA9IG1vZGVsPG51bWJlcj4odGhpcy5kZWZhdWx0SW5pdFBhZ2VTaXplKCkpO1xuICAgIHNob3VsZERpc3BsYXlGaXJzdEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5Rmlyc3RUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgc2hvdWxkRGlzcGxheVByZXZpb3VzSWNvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAgIHNob3VsZERpc3BsYXlQcmV2aW91c1RleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TmV4dEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TmV4dFRleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TGFzdEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TGFzdFRleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBwcmV2aW91c0Rlc2NyaXB0aW9uID0gaW5wdXQ8VGV4dE1vZGVsPigpO1xuICAgIG5leHREZXNjcmlwdGlvbiA9IGlucHV0PFRleHRNb2RlbD4oKTtcbiAgICB0b3RhbFJlY29yZHMgPSBpbnB1dDxudW1iZXI+KDApO1xuICAgIGlzRmlyc3REaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFBhZ2UoKSA9PT0gdGhpcy5zdGFydFBhZ2VJbmRleCgpIHx8IHRoaXMudG90YWxSZWNvcmRzKCkgPT09IDApO1xuICAgIGlzUHJldmlvdXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFBhZ2UoKSA9PT0gdGhpcy5zdGFydFBhZ2VJbmRleCgpIHx8IHRoaXMudG90YWxSZWNvcmRzKCkgPT09IDApO1xuICAgIGlzTmV4dERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50UGFnZSgpICsgMSA9PT0gdGhpcy50b3RhbFBhZ2VzKCkgfHwgdGhpcy50b3RhbFJlY29yZHMoKSA9PT0gMCk7XG4gICAgaXNMYXN0RGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxID09PSB0aGlzLnRvdGFsUGFnZXMoKSB8fCB0aGlzLnRvdGFsUmVjb3JkcygpID09PSAwKTtcbiAgICBwYWdlT3B0aW9uczogU2lnbmFsPFNlbGVjdEl0ZW1bXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF2YWlsYWJsZVBhZ2VTaXplcygpLm1hcChwcyA9PiAoeyB2YWx1ZTogcHMsIHRleHQ6IHBzLnRvU3RyaW5nKCkgfSkpKTtcbiAgICBzZWxlY3RlZFBhZ2VTaXplID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdlT3B0aW9ucygpLmZpbmQocG8gPT4gcG8udmFsdWUgPT09IHRoaXMucGFnZVNpemUoKSkpO1xuICAgIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMoKSAvIHRoaXMucGFnZVNpemUoKSkpO1xuICAgIGN1cnJlbnRGaXJzdERpc3BsYXllZCA9IGNvbXB1dGVkKCgpID0+ICgodGhpcy5jdXJyZW50UGFnZSgpIC0gdGhpcy5zdGFydFBhZ2VJbmRleCgpKSAqIHRoaXMucGFnZVNpemUoKSkgKyAxKTtcbiAgICBjdXJyZW50TGFzdERpc3BsYXllZCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmV4cGVjdGVkTGFzdCgpID4gdGhpcy50b3RhbFJlY29yZHMoKSA/IHRoaXMudG90YWxSZWNvcmRzKCkgOiB0aGlzLmV4cGVjdGVkTGFzdCgpKSk7XG5cbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBwcml2YXRlIGV4cGVjdGVkTGFzdCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmN1cnJlbnRQYWdlKCkgKyAodGhpcy5zdGFydFBhZ2VJbmRleCgpID09PSAxID8gMCA6IDEpKSAqIHRoaXMucGFnZVNpemUoKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0V3JhcHBlckNsYXNzZXMgPSAnZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlcic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaG9zdENsYXNzZXMgPSBgJHt0aGlzLmRlZmF1bHRXcmFwcGVyQ2xhc3Nlc30gJHt0aGlzLndyYXBwZXJDbGFzc2VzKCl9YDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RQYWdlU2l6ZShwYWdlPzogU2VsZWN0SXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZygncGFnZScsIHBhZ2UpO1xuICAgICAgICB0aGlzLnBhZ2VTaXplLnNldChwYWdlPy52YWx1ZSB8fCAxKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdDsgcHJlZml4OiAnVXBEZXZzLlBhZ2luYXRvcidcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG0tMCBtcy1hdXRvIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgbWUtMlwiPlxuICAgICAgICAgICAge3sgdCgnSXRlbXNQZXJQYWdlJykgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1cGQtc2VsZWN0IFtpdGVtc109XCJwYWdlT3B0aW9ucygpXCIgW3NlbGVjdGVkXT1cInNlbGVjdGVkUGFnZVNpemUoKVwiIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3RQYWdlU2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzaG91bGRTaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbaXNDb21wYWN0XT1cInRydWVcIiBbdXNlU3lzdGVtU3R5bGVdPVwidHJ1ZVwiPjwvdXBkLXNlbGVjdD5cbiAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC1zZWNvbmRhcnkgbXMtNFwiPlxuICAgICAgICAgICAgQGlmICh0b3RhbFJlY29yZHMoKSA+IDApIHtcbiAgICAgICAgICAgICAgICB7eyB0KCdGcm9tVG9PZicsIHsgZmlyc3Q6IGN1cnJlbnRGaXJzdERpc3BsYXllZCgpLCBsYXN0OiBjdXJyZW50TGFzdERpc3BsYXllZCgpLCB0b3RhbFJlY29yZHM6IHRvdGFsUmVjb3JkcygpIH0pIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyB0KCdOb1JlY29yZHMnKSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gbS0wIG1zLTRcIj5cbiAgICAgICAgICAgIEBpZiAoIXByZXZpb3VzRGVzY3JpcHRpb24oKSkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwicGFnZS1saW5rXCIgW2lzTGlua109XCJ0cnVlXCIgW2lzSWNvbl09XCIhc2hvdWxkRGlzcGxheUZpcnN0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc0ZpcnN0RGlzYWJsZWQoKSA/IC0xIDogMFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNGaXJzdERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNQcmV2aW91c0Rpc2FibGVkKClcIiAoY2xpY2tlZCk9XCJzZWxlY3RQYWdlKHN0YXJ0UGFnZUluZGV4KCkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlGaXJzdEljb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hldnJvbi1sZWZ0LXBpcGVcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5Rmlyc3RUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdGaXJzdCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MucGFnZS1wcmV2XT1cIiEhcHJldmlvdXNEZXNjcmlwdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlQcmV2aW91c1RleHQoKVwiIGNvbG9yU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc1ByZXZpb3VzRGlzYWJsZWQoKSA/IC0xIDogMFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNQcmV2aW91c0Rpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJpc1ByZXZpb3VzRGlzYWJsZWQoKVwiIChjbGlja2VkKT1cInNlbGVjdFBhZ2UoY3VycmVudFBhZ2UoKSAtIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoISFwcmV2aW91c0Rlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWl0ZW0tc3VidGl0bGVcIj57eyB0KCdQcmV2aW91cycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXRpdGxlXCI+e3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChwcmV2aW91c0Rlc2NyaXB0aW9uKCkpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5UHJldmlvdXNJY29uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cImNoZXZyb24tbGVmdFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlQcmV2aW91c1RleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ1ByZXZpb3VzU2hvcnQnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLnBhZ2UtbmV4dF09XCIhIW5leHREZXNjcmlwdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlOZXh0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dERpc2FibGVkKCkgPyAtMSA6IDBcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTmV4dERpc2FibGVkKClcIiBbaXNEaXNhYmxlZF09XCJpc05leHREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic2VsZWN0UGFnZShjdXJyZW50UGFnZSgpICsgMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghIW5leHREZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXN1YnRpdGxlXCI+e3sgdCgnTmV4dCcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXRpdGxlXCI+e3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChuZXh0RGVzY3JpcHRpb24oKSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlOZXh0VGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnTmV4dFNob3J0JykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvdWxkRGlzcGxheU5leHRJY29uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cImNoZXZyb24tcmlnaHRcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgQGlmICghbmV4dERlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlMYXN0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc0xhc3REaXNhYmxlZCgpID8gLTEgOiAwXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0xhc3REaXNhYmxlZCgpXCIgW2lzRGlzYWJsZWRdPVwiaXNOZXh0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzZWxlY3RQYWdlKHRvdGFsUGFnZXMoKSAtIChzdGFydFBhZ2VJbmRleCgpID09PSAwID8gMSA6IDApKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5TGFzdFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ0xhc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5TGFzdEljb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hldnJvbi1yaWdodC1waXBlXCI+PC91cGQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGFnaW5hdG9yL3NyYy9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVFyRCxNQUFNLE9BQU8sa0JBQWtCO0lBb0MzQjtRQW5Dc0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdEQsbUJBQWMsR0FBRyxLQUFLLENBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsS0FBSyxDQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsd0JBQW1CLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNyRCwyQkFBc0IsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDOUMsMkJBQXNCLEdBQUcsS0FBSyxD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RSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLDBCQUFxQixHQUFHLDJCQUEyQixDQUFDO1FBR2pFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWlCO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQW5EUSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0MkZDVC9CLDJsSkFtRkE7OzJGRDFFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksZUFBZTt3REFLSCxXQUFXO3NCQUFoQyxXQUFXO3VCQUFDLE9BQU87Z0JBQ0QsT0FBTztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBIb3N0QmluZGluZywgZWZmZWN0LCBpbnB1dCwgY29tcHV0ZWQsIFNpZ25hbCwgbW9kZWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0TW9kZWwsIFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL3NlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLXBhZ2luYXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzZXMgPSAnJztcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHN0YXJ0UGFnZUluZGV4ID0gaW5wdXQ8MCB8IDE+KDApO1xuICAgIGN1cnJlbnRQYWdlID0gbW9kZWw8bnVtYmVyPih0aGlzLnN0YXJ0UGFnZUluZGV4KCkpO1xuICAgIHdyYXBwZXJDbGFzc2VzID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gICAgYXZhaWxhYmxlUGFnZVNpemVzID0gaW5wdXQ8bnVtYmVyW10+KFs1LCAxMCwgMTUsIDI1LCA1MF0pO1xuICAgIGRlZmF1bHRJbml0UGFnZVNpemUgPSBpbnB1dDxudW1iZXI+KDEwKTtcbiAgICBwYWdlU2l6ZSA9IG1vZGVsPG51bWJlcj4odGhpcy5kZWZhdWx0SW5pdFBhZ2VTaXplKCkpO1xuICAgIHNob3VsZERpc3BsYXlGaXJzdEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5Rmlyc3RUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgc2hvdWxkRGlzcGxheVByZXZpb3VzSWNvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAgIHNob3VsZERpc3BsYXlQcmV2aW91c1RleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TmV4dEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TmV4dFRleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TGFzdEljb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBzaG91bGREaXNwbGF5TGFzdFRleHQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgICBwcmV2aW91c0Rlc2NyaXB0aW9uID0gaW5wdXQ8VGV4dE1vZGVsPigpO1xuICAgIG5leHREZXNjcmlwdGlvbiA9IGlucHV0PFRleHRNb2RlbD4oKTtcbiAgICB0b3RhbFJlY29yZHMgPSBpbnB1dDxudW1iZXI+KDApO1xuICAgIGlzRmlyc3REaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFBhZ2UoKSA9PT0gdGhpcy5zdGFydFBhZ2VJbmRleCgpIHx8IHRoaXMudG90YWxSZWNvcmRzKCkgPT09IDApO1xuICAgIGlzUHJldmlvdXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFBhZ2UoKSA9PT0gdGhpcy5zdGFydFBhZ2VJbmRleCgpIHx8IHRoaXMudG90YWxSZWNvcmRzKCkgPT09IDApO1xuICAgIGlzTmV4dERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50UGFnZSgpICsgMSA9PT0gdGhpcy50b3RhbFBhZ2VzKCkgfHwgdGhpcy50b3RhbFJlY29yZHMoKSA9PT0gMCk7XG4gICAgaXNMYXN0RGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxID09PSB0aGlzLnRvdGFsUGFnZXMoKSB8fCB0aGlzLnRvdGFsUmVjb3JkcygpID09PSAwKTtcbiAgICBwYWdlT3B0aW9uczogU2lnbmFsPFNlbGVjdEl0ZW1bXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF2YWlsYWJsZVBhZ2VTaXplcygpLm1hcChwcyA9PiAoeyB2YWx1ZTogcHMsIHRleHQ6IHBzLnRvU3RyaW5nKCkgfSkpKTtcbiAgICBzZWxlY3RlZFBhZ2VTaXplID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdlT3B0aW9ucygpLmZpbmQocG8gPT4gcG8udmFsdWUgPT09IHRoaXMucGFnZVNpemUoKSkpO1xuICAgIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMoKSAvIHRoaXMucGFnZVNpemUoKSkpO1xuICAgIGN1cnJlbnRGaXJzdERpc3BsYXllZCA9IGNvbXB1dGVkKCgpID0+ICgodGhpcy5jdXJyZW50UGFnZSgpIC0gdGhpcy5zdGFydFBhZ2VJbmRleCgpKSAqIHRoaXMucGFnZVNpemUoKSkgKyAxKTtcbiAgICBjdXJyZW50TGFzdERpc3BsYXllZCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmV4cGVjdGVkTGFzdCgpID4gdGhpcy50b3RhbFJlY29yZHMoKSA/IHRoaXMudG90YWxSZWNvcmRzKCkgOiB0aGlzLmV4cGVjdGVkTGFzdCgpKSk7XG5cbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBwcml2YXRlIGV4cGVjdGVkTGFzdCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmN1cnJlbnRQYWdlKCkgKyAodGhpcy5zdGFydFBhZ2VJbmRleCgpID09PSAxID8gMCA6IDEpKSAqIHRoaXMucGFnZVNpemUoKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0V3JhcHBlckNsYXNzZXMgPSAnZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlcic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaG9zdENsYXNzZXMgPSBgJHt0aGlzLmRlZmF1bHRXcmFwcGVyQ2xhc3Nlc30gJHt0aGlzLndyYXBwZXJDbGFzc2VzKCl9YDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RQYWdlU2l6ZShwYWdlPzogU2VsZWN0SXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZygncGFnZScsIHBhZ2UpO1xuICAgICAgICB0aGlzLnBhZ2VTaXplLnNldChwYWdlPy52YWx1ZSB8fCAxKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdDsgcHJlZml4OiAnVXBEZXZzLlBhZ2luYXRvcidcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG0tMCBtcy1hdXRvIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgbWUtMlwiPlxuICAgICAgICAgICAge3sgdCgnSXRlbXNQZXJQYWdlJykgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1cGQtc2VsZWN0IFtpdGVtc109XCJwYWdlT3B0aW9ucygpXCIgW3ZhbHVlXT1cInNlbGVjdGVkUGFnZVNpemUoKVwiIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3RQYWdlU2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzaG91bGRTaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBbaXNDb21wYWN0XT1cInRydWVcIiBbdXNlU3lzdGVtU3R5bGVdPVwidHJ1ZVwiPjwvdXBkLXNlbGVjdD5cbiAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC1zZWNvbmRhcnkgbXMtNFwiPlxuICAgICAgICAgICAgQGlmICh0b3RhbFJlY29yZHMoKSA+IDApIHtcbiAgICAgICAgICAgICAgICB7eyB0KCdGcm9tVG9PZicsIHsgZmlyc3Q6IGN1cnJlbnRGaXJzdERpc3BsYXllZCgpLCBsYXN0OiBjdXJyZW50TGFzdERpc3BsYXllZCgpLCB0b3RhbFJlY29yZHM6IHRvdGFsUmVjb3JkcygpIH0pIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyB0KCdOb1JlY29yZHMnKSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gbS0wIG1zLTRcIj5cbiAgICAgICAgICAgIEBpZiAoIXByZXZpb3VzRGVzY3JpcHRpb24oKSkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBjdXN0b21DbGFzc2VzPVwicGFnZS1saW5rXCIgW2lzTGlua109XCJ0cnVlXCIgW2lzSWNvbl09XCIhc2hvdWxkRGlzcGxheUZpcnN0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc0ZpcnN0RGlzYWJsZWQoKSA/IC0xIDogMFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNGaXJzdERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNQcmV2aW91c0Rpc2FibGVkKClcIiAoY2xpY2tlZCk9XCJzZWxlY3RQYWdlKHN0YXJ0UGFnZUluZGV4KCkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlGaXJzdEljb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hldnJvbi1sZWZ0LXBpcGVcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5Rmlyc3RUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdGaXJzdCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MucGFnZS1wcmV2XT1cIiEhcHJldmlvdXNEZXNjcmlwdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlQcmV2aW91c1RleHQoKVwiIGNvbG9yU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc1ByZXZpb3VzRGlzYWJsZWQoKSA/IC0xIDogMFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNQcmV2aW91c0Rpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJpc1ByZXZpb3VzRGlzYWJsZWQoKVwiIChjbGlja2VkKT1cInNlbGVjdFBhZ2UoY3VycmVudFBhZ2UoKSAtIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoISFwcmV2aW91c0Rlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWl0ZW0tc3VidGl0bGVcIj57eyB0KCdQcmV2aW91cycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXRpdGxlXCI+e3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChwcmV2aW91c0Rlc2NyaXB0aW9uKCkpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5UHJldmlvdXNJY29uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cImNoZXZyb24tbGVmdFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlQcmV2aW91c1RleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ1ByZXZpb3VzU2hvcnQnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLnBhZ2UtbmV4dF09XCIhIW5leHREZXNjcmlwdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlOZXh0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzTmV4dERpc2FibGVkKCkgPyAtMSA6IDBcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTmV4dERpc2FibGVkKClcIiBbaXNEaXNhYmxlZF09XCJpc05leHREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic2VsZWN0UGFnZShjdXJyZW50UGFnZSgpICsgMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghIW5leHREZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXN1YnRpdGxlXCI+e3sgdCgnTmV4dCcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pdGVtLXRpdGxlXCI+e3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChuZXh0RGVzY3JpcHRpb24oKSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3VsZERpc3BsYXlOZXh0VGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnTmV4dFNob3J0JykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvdWxkRGlzcGxheU5leHRJY29uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cImNoZXZyb24tcmlnaHRcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgQGlmICghbmV4dERlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cInBhZ2UtbGlua1wiIFtpc0xpbmtdPVwidHJ1ZVwiIFtpc0ljb25dPVwiIXNob3VsZERpc3BsYXlMYXN0VGV4dCgpXCIgY29sb3JTdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc0xhc3REaXNhYmxlZCgpID8gLTEgOiAwXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0xhc3REaXNhYmxlZCgpXCIgW2lzRGlzYWJsZWRdPVwiaXNOZXh0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzZWxlY3RQYWdlKHRvdGFsUGFnZXMoKSAtIChzdGFydFBhZ2VJbmRleCgpID09PSAwID8gMSA6IDApKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5TGFzdFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ0xhc3QnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGREaXNwbGF5TGFzdEljb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hldnJvbi1yaWdodC1waXBlXCI+PC91cGQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -100,15 +100,15 @@ export class FilterRowComponent extends BaseComponent {
|
|
|
100
100
|
this.removed.emit();
|
|
101
101
|
}
|
|
102
102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: { activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: true, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed", activeFilters: "activeFiltersChange" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilterRowComponent, selector: "upd-filter-row", inputs: { activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: true, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed", activeFilters: "activeFiltersChange" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [value]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "component", type: i3.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "value"], outputs: ["selectedItem"] }] }); }
|
|
104
104
|
}
|
|
105
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilterRowComponent, decorators: [{
|
|
106
106
|
type: Component,
|
|
107
|
-
args: [{ selector: 'upd-filter-row', template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [
|
|
107
|
+
args: [{ selector: 'upd-filter-row', template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [value]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>" }]
|
|
108
108
|
}], propDecorators: { wrapperClasses: [{
|
|
109
109
|
type: HostBinding,
|
|
110
110
|
args: ['class']
|
|
111
111
|
}], removed: [{
|
|
112
112
|
type: Output
|
|
113
113
|
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXJvdy9maWx0ZXItcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9maWx0ZXItcm93L2ZpbHRlci1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFVckYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFMckQ7O1FBTTBCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRW5DLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRSxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUU1QixrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDcEQsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUIsQ0FBQztRQUM5QyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFVBQUssR0FBRyxLQUFLLEVBQW1CLENBQUM7UUFDakMsa0JBQWEsR0FBRyxLQUFLLEVBQW1CLENBQUM7UUFDekMsaUJBQVksR0FBRyxNQUFNLENBQTJCLFNBQVMsQ0FBQyxDQUFDO1FBQzNELG1CQUFjLEdBQUcsTUFBTSxDQUFvQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxrQkFBYSxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUN6Qyw4QkFBeUIsR0FBRyxNQUFNLENBQWUsRUFBRSxDQUFDLENBQUM7UUFDckQsMEJBQXFCLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBc0J0QyxvQkFBZSxHQUEwQixFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM5QywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQWtFdEQ7SUF6RkcsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksYUFBYTtRQUNiLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsSUFBSTtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLElBQUksQ0FBQztZQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUk7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7WUFDaEcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRSxDQUFDO0lBT0QsUUFBUTtRQUNKLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsV0FBWSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFHLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDMUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQzVGLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWlCO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUM7UUFFbEMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM1SCxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWlCO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVc7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBM0dRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLG8vQkNsQi9CLDJ2Q0E2QkE7OzJGRFhhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxnQkFBZ0I7OEJBS0osY0FBYztzQkFBbkMsV0FBVzt1QkFBQyxPQUFPO2dCQUVELE9BQU87c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHNpZ25hbCwgaW5qZWN0LCBPbkluaXQsIGlucHV0LCBtb2RlbCwgSG9zdEJpbmRpbmcsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IEJhc2VTZWFyY2hTdG9yZSwgRGF0YVR5cGVFbnVtIH0gZnJvbSAnQHVwZGV2cy9zZGsvc3RvcmVzJztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvZm9ybS1jb250cm9scy9zZWxlY3QnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5cbmltcG9ydCB7IFVwZFRhYmxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VwZC10YWJsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2ZpbHRlcnMtb3BlcmFuZHMuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgQmFzZUNvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zL2Jhc2UtY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlck9wZXJhbmRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLW9wZXJhbmQuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1cGQtZmlsdGVyLXJvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9maWx0ZXItcm93LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJSb3dDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzZXMgPSAnZC1mbGV4IGdhcC0yJztcblxuICAgIEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBEYXRhVHlwZUVudW0gPSBEYXRhVHlwZUVudW07XG5cbiAgICBhY3RpdmVGaWx0ZXJzID0gbW9kZWwucmVxdWlyZWQ8RmlsdGVySXRlbU1vZGVsW10+KCk7XG4gICAgcm93SW5kZXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIGlzRGlzYWJsZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHN0b3JlID0gaW5wdXQ8QmFzZVNlYXJjaFN0b3JlPigpO1xuICAgIGN1cnJlbnRGaWx0ZXIgPSBpbnB1dDxGaWx0ZXJJdGVtTW9kZWw+KCk7XG4gICAgY3VycmVudEZpZWxkID0gc2lnbmFsPE9wdGlvbmFsVHlwZTxTZWxlY3RJdGVtPj4odW5kZWZpbmVkKTtcbiAgICBjdXJyZW50T3BlcmFuZCA9IHNpZ25hbDxPcHRpb25hbFR5cGU8RmlsdGVyT3BlcmFuZENvbmZpZz4+KHVuZGVmaW5lZCk7XG4gICAgZmllbGRzT3B0aW9ucyA9IHNpZ25hbDxTZWxlY3RJdGVtW10+KFtdKTtcbiAgICBjb21wYXJpc29uT3BlcmF0b3JPcHRpb25zID0gc2lnbmFsPFNlbGVjdEl0ZW1bXT4oW10pO1xuICAgIGlzVmFsdWVTZWN0aW9uRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICAgIGdldCBmaWVsZFR5cGUoKTogRGF0YVR5cGVFbnVtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEZpZWxkKCk/Lm9iamVjdERhdGEgfHwgRGF0YVR5cGVFbnVtLlN0cmluZztcbiAgICB9XG4gICAgZ2V0IHNlbGVjdGVkRmllbGQoKTogT3B0aW9uYWxUeXBlPFNlbGVjdEl0ZW0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuY3VycmVudEZpbHRlcigpO1xuICAgICAgICByZXR1cm4gISFjdXJyZW50RmlsdGVyPy5uYW1lXG4gICAgICAgICAgICA/IHRoaXMuZmllbGRzT3B0aW9ucygpLmZpbmQoZiA9PiBmLnZhbHVlID09PSBjdXJyZW50RmlsdGVyLm5hbWUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0IHNlbGVjdGVkT3BlcmFuZCgpOiBPcHRpb25hbFR5cGU8U2VsZWN0SXRlbT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyKCk7XG4gICAgICAgIHJldHVybiAhIWN1cnJlbnRGaWx0ZXI/Lm5hbWVcbiAgICAgICAgICAgID8gdGhpcy5jb21wYXJpc29uT3BlcmF0b3JPcHRpb25zKCkuZmluZChjbyA9PiBjby52YWx1ZSA9PT0gY3VycmVudEZpbHRlci5vcGVyYW5kQ29uZmlnPy5vcGVyYW5kKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZFZhbHVlKCk6IE9wdGlvbmFsVHlwZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuY3VycmVudEZpbHRlcigpO1xuICAgICAgICByZXR1cm4gISFjdXJyZW50RmlsdGVyPy5uYW1lID8gY3VycmVudEZpbHRlci52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGN1cnJlbnRPcGVyYW5kczogRmlsdGVyT3BlcmFuZENvbmZpZ1tdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlID0gaW5qZWN0KFVwZFRhYmxlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJzT3BlcmFuZHNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNPcGVyYW5kc1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dFNlcnZpY2UgPSBpbmplY3QoVGV4dFNlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuc3RvcmUoKSAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnNob3VsZExvYWRGaWVsZHNGcm9tU2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlKCkhLmdldEZpbHRlcmFibGVGaWVsZHMoKS5zdWJzY3JpYmUoZmllbGRzID0+XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZHNPcHRpb25zLnNldChmaWVsZHMubWFwKGYgPT4gKHsgdmFsdWU6IGYubmFtZSEsIHRleHQ6IGYuZGVzY3JpcHRpb24hLCBvYmplY3REYXRhOiBmLnR5cGUgfSkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzT3B0aW9ucy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zKCkuZmlsdGVyKGMgPT4gISFjLnRpdGxlKS5tYXAoYyA9PlxuICAgICAgICAgICAgICAgICAgICAoeyB2YWx1ZTogYy5uYW1lLCB0ZXh0OiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQoYy50aXRsZSksIG9iamVjdERhdGE6IGMuZGF0YVR5cGUgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3RlZEZpZWxkKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLnNlbGVjdGVkT3BlcmFuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RPcGVyYW5kKHRoaXMuc2VsZWN0ZWRPcGVyYW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEZpZWxkKHRoaXMuc2VsZWN0ZWRGaWVsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEZpZWxkKGl0ZW0/OiBTZWxlY3RJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudEZpZWxkLnNldChpdGVtKTtcblxuICAgICAgICBjb25zdCBkYXRhVHlwZSA9IGl0ZW0/Lm9iamVjdERhdGE7XG5cbiAgICAgICAgaWYgKCEhZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE9wZXJhbmRzID0gdGhpcy5maWx0ZXJzT3BlcmFuZHNTZXJ2aWNlLmdldE9wZXJhbmRzKGRhdGFUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3BlcmFuZHMubWFwKG8gPT4gKHsgdmFsdWU6IG8ub3BlcmFuZCwgdGV4dDogdGhpcy50ZXh0U2VydmljZS5nZXRUZXh0KG8udGV4dCksIGxpc3RJdGVtOiB7IGljb246IG8uaWNvbiB9IH0pKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucy5zZXQoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnVwZGF0ZShjdXJyID0+IHtcbiAgICAgICAgICAgIGN1cnJbdGhpcy5yb3dJbmRleCgpXS5uYW1lID0gdGhpcy5jdXJyZW50RmllbGQoKT8udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE9wZXJhbmQoaXRlbT86IFNlbGVjdEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3BlcmFuZC5zZXQodGhpcy5jdXJyZW50T3BlcmFuZHMuZmluZChjbyA9PiBjby5vcGVyYW5kID09PSBpdGVtPy52YWx1ZSkpO1xuICAgICAgICB0aGlzLmlzVmFsdWVTZWN0aW9uRW5hYmxlZC5zZXQoISF0aGlzLmN1cnJlbnRPcGVyYW5kKCk/LnJlcXVpcmVzVmFsdWUpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyclt0aGlzLnJvd0luZGV4KCldLm9wZXJhbmRDb25maWcgPSB0aGlzLmN1cnJlbnRPcGVyYW5kKCk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVWYWx1ZSh2YWx1ZT86IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyclt0aGlzLnJvd0luZGV4KCldLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWx0ZXJJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyci5zcGxpY2UodGhpcy5yb3dJbmRleCgpLCAxKTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjx1cGQtc2VsZWN0IGNsYXNzPVwidy0xMDBcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbaXRlbXNdPVwiZmllbGRzT3B0aW9ucygpXCIgKHNlbGVjdGVkSXRlbSk9XCJvblNlbGVjdEZpZWxkKCRldmVudClcIlxuICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEZpZWxkXCI+XG48L3VwZC1zZWxlY3Q+XG48dXBkLXNlbGVjdCBjbGFzcz1cInctMTAwXCIgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgW2l0ZW1zXT1cImNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMoKVwiIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3RPcGVyYW5kKCRldmVudClcIlxuICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9wZXJhbmRcIj5cbjwvdXBkLXNlbGVjdD5cblxuQGlmIChpc1ZhbHVlU2VjdGlvbkVuYWJsZWQoKSkge1xuICAgIEBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICBAY2FzZSAoRGF0YVR5cGVFbnVtLk51bWJlcikge1xuICAgICAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgdHlwZT1cIm51bWJlclwiICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiPjwvdXBkLWlucHV0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChEYXRhVHlwZUVudW0uRGF0ZSkge1xuXG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgdHlwZT1cInRleHRcIiAodmFsdWVDaGFuZ2UpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIj48L3VwZC1pbnB1dD5cbiAgICAgICAgfVxuICAgIH1cbn0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBoLTEwMFwiIGRpc2FibGVkPlxuICAgIDwvZGl2PlxufVxuXG48dXBkLWJ1dHRvbiBjbGFzcz1cImZsZXgtc2hyaW5rLTFcIiBjb2xvclN0eWxlPVwiZGFuZ2VyXCIgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgW2lzT3V0bGluZV09XCJ0cnVlXCIgW2lzSWNvbl09XCJ0cnVlXCJcbiAgICBbaWNvbk1vZGVsXT1cInt0YWJsZXJJY29uOid4J31cIiAoY2xpY2tlZCk9XCJyZW1vdmVGaWx0ZXJJdGVtKClcIj48L3VwZC1idXR0b24+XG4iXX0=
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFibGUvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXJvdy9maWx0ZXItcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9maWx0ZXItcm93L2ZpbHRlci1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFVckYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFMckQ7O1FBTTBCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRW5DLFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRSxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUU1QixrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDcEQsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUIsQ0FBQztRQUM5QyxlQUFVLEdBQUcsS0FBSyxD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O1FBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBM0dRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLG8vQkNsQi9CLG12Q0E0QitFOzsyRkRWbEUsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGdCQUFnQjs4QkFLSixjQUFjO3NCQUFuQyxXQUFXO3VCQUFDLE9BQU87Z0JBRUQsT0FBTztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgc2lnbmFsLCBpbmplY3QsIE9uSW5pdCwgaW5wdXQsIG1vZGVsLCBIb3N0QmluZGluZywgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgQmFzZVNlYXJjaFN0b3JlLCBEYXRhVHlwZUVudW0gfSBmcm9tICdAdXBkZXZzL3Nkay9zdG9yZXMnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL3NlbGVjdCc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgVXBkVGFibGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXBkLXRhYmxlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvZmlsdGVycy1vcGVyYW5kcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyT3BlcmFuZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItb3BlcmFuZC5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1maWx0ZXItcm93JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2ZpbHRlci1yb3cuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclJvd0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSB3cmFwcGVyQ2xhc3NlcyA9ICdkLWZsZXggZ2FwLTInO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIERhdGFUeXBlRW51bSA9IERhdGFUeXBlRW51bTtcblxuICAgIGFjdGl2ZUZpbHRlcnMgPSBtb2RlbC5yZXF1aXJlZDxGaWx0ZXJJdGVtTW9kZWxbXT4oKTtcbiAgICByb3dJbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgICBjb2x1bW5zID0gaW5wdXQucmVxdWlyZWQ8QmFzZUNvbHVtbk1vZGVsW10+KCk7XG4gICAgaXNEaXNhYmxlZCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgc3RvcmUgPSBpbnB1dDxCYXNlU2VhcmNoU3RvcmU+KCk7XG4gICAgY3VycmVudEZpbHRlciA9IGlucHV0PEZpbHRlckl0ZW1Nb2RlbD4oKTtcbiAgICBjdXJyZW50RmllbGQgPSBzaWduYWw8T3B0aW9uYWxUeXBlPFNlbGVjdEl0ZW0+Pih1bmRlZmluZWQpO1xuICAgIGN1cnJlbnRPcGVyYW5kID0gc2lnbmFsPE9wdGlvbmFsVHlwZTxGaWx0ZXJPcGVyYW5kQ29uZmlnPj4odW5kZWZpbmVkKTtcbiAgICBmaWVsZHNPcHRpb25zID0gc2lnbmFsPFNlbGVjdEl0ZW1bXT4oW10pO1xuICAgIGNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMgPSBzaWduYWw8U2VsZWN0SXRlbVtdPihbXSk7XG4gICAgaXNWYWx1ZVNlY3Rpb25FbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gICAgZ2V0IGZpZWxkVHlwZSgpOiBEYXRhVHlwZUVudW0ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmllbGQoKT8ub2JqZWN0RGF0YSB8fCBEYXRhVHlwZUVudW0uU3RyaW5nO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWRGaWVsZCgpOiBPcHRpb25hbFR5cGU8U2VsZWN0SXRlbT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyKCk7XG4gICAgICAgIHJldHVybiAhIWN1cnJlbnRGaWx0ZXI/Lm5hbWVcbiAgICAgICAgICAgID8gdGhpcy5maWVsZHNPcHRpb25zKCkuZmluZChmID0+IGYudmFsdWUgPT09IGN1cnJlbnRGaWx0ZXIubmFtZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWRPcGVyYW5kKCk6IE9wdGlvbmFsVHlwZTxTZWxlY3RJdGVtPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXIgPSB0aGlzLmN1cnJlbnRGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuICEhY3VycmVudEZpbHRlcj8ubmFtZVxuICAgICAgICAgICAgPyB0aGlzLmNvbXBhcmlzb25PcGVyYXRvck9wdGlvbnMoKS5maW5kKGNvID0+IGNvLnZhbHVlID09PSBjdXJyZW50RmlsdGVyLm9wZXJhbmRDb25maWc/Lm9wZXJhbmQpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0IHNlbGVjdGVkVmFsdWUoKTogT3B0aW9uYWxUeXBlPGFueT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5jdXJyZW50RmlsdGVyKCk7XG4gICAgICAgIHJldHVybiAhIWN1cnJlbnRGaWx0ZXI/Lm5hbWUgPyBjdXJyZW50RmlsdGVyLnZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3VycmVudE9wZXJhbmRzOiBGaWx0ZXJPcGVyYW5kQ29uZmlnW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoVXBkVGFibGVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5zdG9yZSgpICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc2hvdWxkTG9hZEZpZWxkc0Zyb21TZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUoKSEuZ2V0RmlsdGVyYWJsZUZpZWxkcygpLnN1YnNjcmliZShmaWVsZHMgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkc09wdGlvbnMuc2V0KGZpZWxkcy5tYXAoZiA9PiAoeyB2YWx1ZTogZi5uYW1lISwgdGV4dDogZi5kZXNjcmlwdGlvbiEsIG9iamVjdERhdGE6IGYudHlwZSB9KSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNPcHRpb25zLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMoKS5maWx0ZXIoYyA9PiAhIWMudGl0bGUpLm1hcChjID0+XG4gICAgICAgICAgICAgICAgICAgICh7IHZhbHVlOiBjLm5hbWUsIHRleHQ6IHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dChjLnRpdGxlKSwgb2JqZWN0RGF0YTogYy5kYXRhVHlwZSB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISF0aGlzLnNlbGVjdGVkRmllbGQpIHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuc2VsZWN0ZWRPcGVyYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdE9wZXJhbmQodGhpcy5zZWxlY3RlZE9wZXJhbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0RmllbGQodGhpcy5zZWxlY3RlZEZpZWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0RmllbGQoaXRlbT86IFNlbGVjdEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RmllbGQuc2V0KGl0ZW0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGFUeXBlID0gaXRlbT8ub2JqZWN0RGF0YTtcblxuICAgICAgICBpZiAoISFkYXRhVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50T3BlcmFuZHMgPSB0aGlzLmZpbHRlcnNPcGVyYW5kc1NlcnZpY2UuZ2V0T3BlcmFuZHMoZGF0YVR5cGUpO1xuICAgICAgICAgICAgdGhpcy5jb21wYXJpc29uT3BlcmF0b3JPcHRpb25zLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRPcGVyYW5kcy5tYXAobyA9PiAoeyB2YWx1ZTogby5vcGVyYW5kLCB0ZXh0OiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQoby50ZXh0KSwgbGlzdEl0ZW06IHsgaWNvbjogby5pY29uIH0gfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb21wYXJpc29uT3BlcmF0b3JPcHRpb25zLnNldChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyclt0aGlzLnJvd0luZGV4KCldLm5hbWUgPSB0aGlzLmN1cnJlbnRGaWVsZCgpPy52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VsZWN0T3BlcmFuZChpdGVtPzogU2VsZWN0SXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRPcGVyYW5kLnNldCh0aGlzLmN1cnJlbnRPcGVyYW5kcy5maW5kKGNvID0+IGNvLm9wZXJhbmQgPT09IGl0ZW0/LnZhbHVlKSk7XG4gICAgICAgIHRoaXMuaXNWYWx1ZVNlY3Rpb25FbmFibGVkLnNldCghIXRoaXMuY3VycmVudE9wZXJhbmQoKT8ucmVxdWlyZXNWYWx1ZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyW3RoaXMucm93SW5kZXgoKV0ub3BlcmFuZENvbmZpZyA9IHRoaXMuY3VycmVudE9wZXJhbmQoKTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyW3RoaXMucm93SW5kZXgoKV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbHRlckl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyLnNwbGljZSh0aGlzLnJvd0luZGV4KCksIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jdXJyXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KCk7XG4gICAgfVxufVxuIiwiPHVwZC1zZWxlY3QgY2xhc3M9XCJ3LTEwMFwiIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiIFtpdGVtc109XCJmaWVsZHNPcHRpb25zKClcIiAoc2VsZWN0ZWRJdGVtKT1cIm9uU2VsZWN0RmllbGQoJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkRmllbGRcIj5cbjwvdXBkLXNlbGVjdD5cbjx1cGQtc2VsZWN0IGNsYXNzPVwidy0xMDBcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbaXRlbXNdPVwiY29tcGFyaXNvbk9wZXJhdG9yT3B0aW9ucygpXCIgKHNlbGVjdGVkSXRlbSk9XCJvblNlbGVjdE9wZXJhbmQoJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkT3BlcmFuZFwiPlxuPC91cGQtc2VsZWN0PlxuXG5AaWYgKGlzVmFsdWVTZWN0aW9uRW5hYmxlZCgpKSB7XG4gICAgQHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIEBjYXNlIChEYXRhVHlwZUVudW0uTnVtYmVyKSB7XG4gICAgICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIiB0eXBlPVwibnVtYmVyXCIgKHZhbHVlQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCI+PC91cGQtaW5wdXQ+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKERhdGFUeXBlRW51bS5EYXRlKSB7XG5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIiB0eXBlPVwidGV4dFwiICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYWx1ZVwiPjwvdXBkLWlucHV0PlxuICAgICAgICB9XG4gICAgfVxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGgtMTAwXCIgZGlzYWJsZWQ+XG4gICAgPC9kaXY+XG59XG5cbjx1cGQtYnV0dG9uIGNsYXNzPVwiZmxleC1zaHJpbmstMVwiIGNvbG9yU3R5bGU9XCJkYW5nZXJcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbaXNPdXRsaW5lXT1cInRydWVcIiBbaXNJY29uXT1cInRydWVcIlxuICAgIFtpY29uTW9kZWxdPVwie3RhYmxlckljb246J3gnfVwiIChjbGlja2VkKT1cInJlbW92ZUZpbHRlckl0ZW0oKVwiPjwvdXBkLWJ1dHRvbj4iXX0=
|