asksuite-citrus 0.19.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +1 -7
- package/esm2022/lib/components/date-picker/date-picker-calendar/date-picker-calendar.component.mjs +34 -32
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +39 -25
- package/fesm2022/asksuite-citrus.mjs +71 -61
- package/fesm2022/asksuite-citrus.mjs.map +1 -1
- package/lib/components/autocomplete/autocomplete.component.d.ts +0 -1
- package/lib/components/date-picker/date-picker-calendar/date-picker-calendar.component.d.ts +6 -11
- package/lib/components/date-picker/date-picker.component.d.ts +10 -8
- package/package.json +1 -1
@@ -47,7 +47,6 @@ export class AutocompleteComponent {
|
|
47
47
|
this._destroy = inject(DestroyRef);
|
48
48
|
this.ITEMS_PER_PAGE = 40;
|
49
49
|
this._pageNumber = 1;
|
50
|
-
this._reachedEnd = false;
|
51
50
|
this._selectAllMessage = '';
|
52
51
|
this.multiple = false;
|
53
52
|
this.valueProp = '';
|
@@ -71,7 +70,6 @@ export class AutocompleteComponent {
|
|
71
70
|
ngOnChanges(changes) {
|
72
71
|
if (changes['options']) {
|
73
72
|
this._pageNumber = 1;
|
74
|
-
this._reachedEnd = false;
|
75
73
|
this.paginatedFilteredOptions = [];
|
76
74
|
this.filteredOptions = changes['options'].currentValue;
|
77
75
|
this.updateValidation();
|
@@ -80,7 +78,6 @@ export class AutocompleteComponent {
|
|
80
78
|
handleInputChange() {
|
81
79
|
this.inputControl.valueChanges.pipe(takeUntilDestroyed(this._destroy), debounceTime(300), tap(() => {
|
82
80
|
this._pageNumber = 1;
|
83
|
-
this._reachedEnd = false;
|
84
81
|
this.paginatedFilteredOptions = [];
|
85
82
|
}), map(value => this.filterFn ? this.filterFn(value || '') : [])).subscribe(items => {
|
86
83
|
this.filteredOptions = items;
|
@@ -230,9 +227,6 @@ export class AutocompleteComponent {
|
|
230
227
|
this.paginatedFilteredOptions = [...this.paginatedFilteredOptions, ...nextPageItems];
|
231
228
|
this._pageNumber += 1;
|
232
229
|
}
|
233
|
-
else {
|
234
|
-
this._reachedEnd = true;
|
235
|
-
}
|
236
230
|
this.updateValidation();
|
237
231
|
this.change.detectChanges();
|
238
232
|
}
|
@@ -329,4 +323,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
329
323
|
type: HostListener,
|
330
324
|
args: ["window:mousedown", ['$event']]
|
331
325
|
}] } });
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUlOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9DLFdBQVcsRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFHOUQsTUFBTSxhQUFhLEdBQWE7SUFDOUIsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Q0FDckQsQ0FBQTtBQVNELE1BQU0sT0FBTyxxQkFBcUI7SUEyRWhDLFlBQW9CLFdBQXdCLEVBQ3hCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUF5QixFQUN6QixTQUEyQjtRQUozQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUF4RXJDLGlCQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbEMsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsNkJBQXdCLEdBQVUsRUFBRSxDQUFDO1FBRXJDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDdEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLG1CQUFjLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwwQkFBcUIsR0FBRztZQUNoQyxNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFDUSxvQkFBZSxHQUFzQyxFQUFFLENBQUE7UUFJekQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNwQixtQkFBYyxHQUFHLEVBQUUsQ0FBQTtRQUM1QixnQkFBVyxHQUFHLENBQUMsQ0FBQTtRQUNmLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQVd2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLGNBQVMsR0FBVyxFQUFFLENBQUE7UUFHdEIsWUFBTyxHQUFVLEVBQUUsQ0FBQTtRQUduQixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUdoQixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUc1QixjQUFTLEdBQUcsS0FBSyxDQUFBO1FBR2pCLDJCQUFzQixHQUFrQixJQUFJLENBQUM7UUFHN0MscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFNeEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUE0US9CLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBTXpCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUE7SUEzUXBCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUE7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDdEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtZQUN4QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO1lBRWxDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQTtZQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtTQUN4QjtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNqQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ2pDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1lBQ3hCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUE7UUFDcEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUM5RCxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtZQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBYTtRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQTtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtRQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtTQUNoRDtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMscUJBQXFCLEdBQUc7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDM0MsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUM7U0FDMUMsQ0FBQTtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFTO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFhO1FBQ25DLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTTtnQkFDVCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtTQUN2QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVTLDBCQUEwQixDQUFDLEtBQVk7UUFDL0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUV0RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7U0FDL0U7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDckUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQW1CO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVztZQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtpQkFDdEMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztpQkFDMUMsYUFBYSxDQUFDLENBQUM7b0JBQ2QsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxRQUFRO29CQUNqQixRQUFRLEVBQUUsT0FBTztvQkFDakIsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCLENBQUMsQ0FBQztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQ0UsQ0FBQyxJQUFJLENBQUMsTUFBTTtlQUNULENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7ZUFDbkQsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFM0UsT0FBTyxJQUFJLENBQUMsY0FBYztZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWdCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBVyxFQUFFLEtBQWM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBRWhCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQTtZQUNwQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFnQyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQ3RELGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQzlCO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdFLE1BQU0sYUFBYSxHQUFHLHFCQUFxQjthQUN4QyxLQUFLLENBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDdkMsQ0FBQztRQUVKLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFBO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTtTQUN4QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsYUFBeUIsRUFBRSxJQUFZO1FBQzFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXZFLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMvQixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7aUJBQU0sSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLENBQUM7YUFDVjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FDdEUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FDdkcsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUNwQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM5RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDL0YsQ0FBQztJQUVELHlCQUF5QjtJQUV6QixVQUFVLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUE7WUFDekIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1NBQzNFO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQTtTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDaEM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzhHQW5XVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixrZUFIckIsQ0FBQyxhQUFhLENBQUMsNlpDckM1QiwrMklBNElBOzsyRkRwR2EscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGtCQUFrQixhQUdqQixDQUFDLGFBQWEsQ0FBQyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNO3NOQUlwQixLQUFLO3NCQUEvQixTQUFTO3VCQUFDLGNBQWM7Z0JBQ04sSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUNLLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDUyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFtQzNCLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLE1BQU07Z0JBc0lQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7T3ZlcmxheSwgT3ZlcmxheVJlZn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQge1RlbXBsYXRlUG9ydGFsfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCB2YWx1ZUFjY2Vzc29yOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIG11bHRpOiB0cnVlLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc2stYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XG5cbiAgQFZpZXdDaGlsZChcImF1dG9jb21wbGV0ZVwiKSBpbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKFwibGlzdFwiKSBsaXN0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoXCJ3cmFwcGVyXCIpIHdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheUNvbnRlbnQnKSBvdmVybGF5Q29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIHByb3RlY3RlZCBpbnB1dENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJcIilcbiAgcHJvdGVjdGVkIGZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9uPzogYW55O1xuICBwcm90ZWN0ZWQgc2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgY2xvc2VkID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIGNoaXBzQ29sbGFwc2VkID0gdHJ1ZVxuICBwcm90ZWN0ZWQgY2hlY2tBbGxWYWx1ZSA9IGZhbHNlXG4gIHByb3RlY3RlZCBkaXNhYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0NoaXBzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93QWxsU2VsZWN0aW9uQnRuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93UGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dFeHBhbmRlZFNlbGVjdGlvbkFjdGlvbnMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dTZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY2hpcHNDb250YWluZXJDbGFzc2VzID0ge1xuICAgIFwiLXR3b1wiOiBmYWxzZSxcbiAgICBcIi10aHJlZVwiOiBmYWxzZSxcbiAgICBcIi1mb3VyXCI6IGZhbHNlLFxuICAgIFwiLW1hbnlcIjogZmFsc2VcbiAgfTtcbiAgcHJvdGVjdGVkIG9wdGlvbnNTZWxlY3RlZDoge1trZXk6IHN0cmluZyB8IG51bWJlcl06IGJvb2xlYW59ID0ge31cblxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9wb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZilcbiAgcHJpdmF0ZSByZWFkb25seSBJVEVNU19QRVJfUEFHRSA9IDQwXG4gIHByaXZhdGUgX3BhZ2VOdW1iZXIgPSAxXG4gIHByaXZhdGUgX3JlYWNoZWRFbmQgPSBmYWxzZTtcbiAgX3NlbGVjdEFsbE1lc3NhZ2UgPSAnJztcblxuXG5cbiAgQElucHV0KClcbiAgZmlsdGVyRm4/OiAoaXRlbTogc3RyaW5nKSA9PiBhbnlbXTtcblxuICBASW5wdXQoKVxuICBkaXNwbGF5Rm4/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB2YWx1ZVByb3A6IHN0cmluZyA9ICcnXG5cbiAgQElucHV0KClcbiAgb3B0aW9uczogYW55W10gPSBbXVxuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJydcblxuICBASW5wdXQoKVxuICBlbXB0eU1lc3NhZ2UgPSAnTk9fT1BUSU9OUyc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0QWxsID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBhbGxPcHRpb25zU2VsZWN0ZWRUZXh0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZWxlY3RBbGxNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnU0VMRUNUX0FMTCcpO1xuICBcbiAgQElucHV0KClcbiAgaWNvblByb3BSZWZlcmVuY2U/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIGl0ZW1DaGVjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLmlzQWxsT3B0aW9uc1NlbGVjdGVkXG4gICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZSgpO1xuICB9XG5cbiAgZ2V0IGlzQWxsT3B0aW9uc1NlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGhcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddKSB7XG4gICAgICB0aGlzLl9wYWdlTnVtYmVyID0gMVxuICAgICAgdGhpcy5fcmVhY2hlZEVuZCA9IGZhbHNlXG4gICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdXG5cbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gY2hhbmdlc1snb3B0aW9ucyddLmN1cnJlbnRWYWx1ZVxuICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0Q2hhbmdlKCkge1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9wYWdlTnVtYmVyID0gMVxuICAgICAgICB0aGlzLl9yZWFjaGVkRW5kID0gZmFsc2VcbiAgICAgICAgdGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBbXVxuICAgICAgfSksXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5maWx0ZXJGbiA/IHRoaXMuZmlsdGVyRm4odmFsdWUgfHwgJycpIDogW10pXG4gICAgKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBpdGVtc1xuICAgICAgdGhpcy5nZXRNb3JlSXRlbXMoKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdGlvbkNoYW5nZSh2YWx1ZXM6IGFueVtdKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSB2YWx1ZXNcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLmlzQWxsT3B0aW9uc1NlbGVjdGVkXG5cbiAgICBpZiAoIXRoaXMuY2hpcHNDb2xsYXBzZWQpIHtcbiAgICAgIHRoaXMuY2hpcHNDb2xsYXBzZWQgPSB0aGlzLnNlbGVjdGlvbi5sZW5ndGggPCAyXG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoaXBzQ29udGFpbmVyQ2xhc3NlcygpIHtcbiAgICB0aGlzLmNoaXBzQ29udGFpbmVyQ2xhc3NlcyA9IHtcbiAgICAgIFwiLXR3b1wiOiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDIsXG4gICAgICBcIi10aHJlZVwiOiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDMsXG4gICAgICBcIi1mb3VyXCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gNCxcbiAgICAgIFwiLW1hbnlcIjogdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID49IDVcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPcHRpb25TZWxlY3RlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gaXRlbTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb24pXG4gICAgdGhpcy5oaWRlT3B0aW9ucygpXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaGFuZGxlQXV0b2NvbXBsZXRlQ2xpY2soZXZlbnQ/OiBFdmVudCkge1xuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgICB0aGlzLmNsb3NlZFxuICAgICAgICA/IHRoaXMuc2hvd09wdGlvbnMoKVxuICAgICAgICA6IHRoaXMuaGlkZU9wdGlvbnMoKVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB0aGlzLnVwZGF0ZUNoaXBzQ29udGFpbmVyQ2xhc3NlcygpXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2hpcHNMaXN0QWN0aW9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gIXRoaXMuY2hpcHNDb2xsYXBzZWQ7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB0aGlzLnVwZGF0ZUNoaXBzQ29udGFpbmVyQ2xhc3NlcygpXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBzaG93T3B0aW9ucygpIHtcbiAgICB0aGlzLmNsb3NlZCA9IGZhbHNlXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmICYmIHRoaXMud3JhcHBlcikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyh0aGlzLndyYXBwZXIpXG5cbiAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlDb250ZW50ISwgdGhpcy52aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgaWYgKHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkgdGhpcy5nZXRNb3JlSXRlbXMoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKHdyYXBwZXI6IEVsZW1lbnRSZWYpIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICB3aWR0aDogd3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8od3JhcHBlci5uYXRpdmVFbGVtZW50KVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbe1xuICAgICAgICAgIG9yaWdpblg6IFwic3RhcnRcIixcbiAgICAgICAgICBvcmlnaW5ZOiBcImJvdHRvbVwiLFxuICAgICAgICAgIG92ZXJsYXlYOiBcInN0YXJ0XCIsXG4gICAgICAgICAgb3ZlcmxheVk6IFwidG9wXCJcbiAgICAgICAgfV0pXG4gICAgfSk7XG4gIH1cblxuICBoaWRlT3B0aW9ucygpIHtcbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLl9wYWdlTnVtYmVyID0gMTtcbiAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzptb3VzZWRvd25cIiwgWyckZXZlbnQnXSlcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5jbG9zZWRcbiAgICAgICYmICF0aGlzLndyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgJiYgIXRoaXMubGlzdD8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmhpZGVPcHRpb25zKClcbiAgICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbnMoKTogYW55W10ge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyBbdGhpcy5zZWxlY3RlZE9wdGlvbl0gOiBbXVxuXG4gICAgcmV0dXJuIHRoaXMuY2hpcHNDb2xsYXBzZWRcbiAgICAgID8gdGhpcy5zZWxlY3Rpb24uc2xpY2UoMCwgMSlcbiAgICAgIDogdGhpcy5zZWxlY3Rpb247XG4gIH1cblxuICBoYW5kbGVTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0QWxsT3B0aW9ucyhjaGVja2VkKTtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGNoZWNrZWQgPyB0aGlzLm9wdGlvbnMgOiBbXVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3Rpb24pXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLml0ZW1DaGVjay5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlKG9wdGlvbjogYW55LCB2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMub3B0aW9uc1NlbGVjdGVkW29wdGlvblt0aGlzLnZhbHVlUHJvcF1dID0gdmFsdWVcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXIobyA9PiB0aGlzLm9wdGlvbnNTZWxlY3RlZFtvW3RoaXMudmFsdWVQcm9wXV0pXG4gICAgdGhpcy5jaGVja0FsbFZhbHVlID0gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB0aGlzLm9uVG91Y2hlZCgpXG5cbiAgICB0aGlzLnVwZGF0ZUNoaXBzQ29udGFpbmVyQ2xhc3NlcygpXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuaXRlbUNoZWNrLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICB9XG5cbiAgc2VsZWN0QWxsT3B0aW9ucyhzZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMub3B0aW9uc1NlbGVjdGVkID0gdGhpcy5vcHRpb25zXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgYWNjW2N1cnJbdGhpcy52YWx1ZVByb3BdXSA9IHNlbGVjdGVkXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSlcbiAgfVxuXG4gIGhhbmRsZUNoaXBBY3Rpb24ob3B0aW9uOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5vcHRpb25zU2VsZWN0ZWRbb3B0aW9uW3RoaXMudmFsdWVQcm9wXV0gPSBmYWxzZVxuICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoc2VsZWN0ZWRPcHRpb24gPT5cbiAgICAgICAgc2VsZWN0ZWRPcHRpb25bdGhpcy52YWx1ZVByb3BdICE9PSBvcHRpb25bdGhpcy52YWx1ZVByb3BdKVxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLm9uQ2hhbmdlKFtdKVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkaXNwbGF5KG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUZuICYmIHRoaXMuZGlzcGxheUZuKG9wdGlvbilcbiAgfVxuXG4gIGdldE1vcmVJdGVtcygpIHtcbiAgICBjb25zdCBzb3J0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJlZE9wdGlvbnNdO1xuXG4gICAgdGhpcy5zb3J0U2VsZWN0ZWRGaXJzdChzb3J0ZWRGaWx0ZXJlZE9wdGlvbnMsIHRoaXMuc2VsZWN0aW9uLCB0aGlzLnZhbHVlUHJvcClcbiAgICBjb25zdCBuZXh0UGFnZUl0ZW1zID0gc29ydGVkRmlsdGVyZWRPcHRpb25zXG4gICAgICAuc2xpY2UoXG4gICAgICAgIHRoaXMuSVRFTVNfUEVSX1BBR0UgKiAodGhpcy5fcGFnZU51bWJlciAtIDEpLFxuICAgICAgICB0aGlzLklURU1TX1BFUl9QQUdFICogdGhpcy5fcGFnZU51bWJlclxuICAgICAgKTtcblxuICAgIGlmIChuZXh0UGFnZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMsIC4uLm5leHRQYWdlSXRlbXNdO1xuICAgICAgdGhpcy5fcGFnZU51bWJlciArPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlYWNoZWRFbmQgPSB0cnVlXG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgc29ydFNlbGVjdGVkRmlyc3QoaXRlbXM6IEFycmF5PGFueT4sIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT4sIHByb3A6IHN0cmluZykge1xuICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFJc1NlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbVtwcm9wXSA9PT0gYVtwcm9wXSk7XG4gICAgICBjb25zdCBiSXNTZWxlY3RlZCA9IHNlbGVjdGVkSXRlbXMuc29tZShpdGVtID0+IGl0ZW1bcHJvcF0gPT09IGJbcHJvcF0pO1xuXG4gICAgICBpZiAoYUlzU2VsZWN0ZWQgJiYgIWJJc1NlbGVjdGVkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSBpZiAoIWFJc1NlbGVjdGVkICYmIGJJc1NlbGVjdGVkKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLmlzQWxsT3B0aW9uc1NlbGVjdGVkXG4gICAgdGhpcy5zaG93Q2hpcHMgPSBCb29sZWFuKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkgJiYgdGhpcy5jbG9zZWQgJiYgKFxuICAgICAgIXRoaXMubXVsdGlwbGUgfHwgIXRoaXMuY2hlY2tBbGxWYWx1ZSB8fCAodGhpcy5jaGVja0FsbFZhbHVlICYmICFCb29sZWFuKHRoaXMuYWxsT3B0aW9uc1NlbGVjdGVkVGV4dCkpXG4gICAgKTtcbiAgICB0aGlzLnNob3dBbGxTZWxlY3Rpb25CdG4gPSB0aGlzLm11bHRpcGxlICYmIEJvb2xlYW4odGhpcy5zZWxlY3Rpb24ubGVuZ3RoID4gMSkgJiYgdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRoaXMuY2xvc2VkICYmIChcbiAgICAgICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggfHwgKHRoaXMuY2hlY2tBbGxWYWx1ZSAmJiBCb29sZWFuKHRoaXMuYWxsT3B0aW9uc1NlbGVjdGVkVGV4dCkgJiYgdGhpcy5tdWx0aXBsZSlcbiAgICApO1xuICAgIHRoaXMuc2hvd0V4cGFuZGVkU2VsZWN0aW9uQWN0aW9ucyA9IHRoaXMubXVsdGlwbGUgJiYgIXRoaXMuY2hpcHNDb2xsYXBzZWQ7XG4gICAgdGhpcy5zaG93U2VsZWN0QWxsQ2hlY2tib3ggPSBCb29sZWFuKHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCkgJiYgdGhpcy5zZWxlY3RBbGw7XG4gIH1cblxuICAvLyBDb250cm9sIFZhbHVlIEFjY2Vzc29yXG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueVtdIHwgYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBbXTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgdGhpcy5vcHRpb25zU2VsZWN0ZWQgPSB7fVxuICAgICAgb2JqLmZvckVhY2gob3B0aW9uID0+IHRoaXMub3B0aW9uc1NlbGVjdGVkW29wdGlvblt0aGlzLnZhbHVlUHJvcF1dID0gdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9ialxuICAgIH1cblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShvYmopXG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyXCJcbiAgZGF0YS10ZXN0aWQ9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiXG4gIFtjbGFzcy4tY2xvc2VkXT1cImNsb3NlZFwiXG4gIFtjbGFzcy4tb3BlbmVkXT1cIiFjbG9zZWRcIlxuICAjd3JhcHBlclxuICAoY2xpY2spPVwiaGFuZGxlQXV0b2NvbXBsZXRlQ2xpY2soKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGVcIiAjYXV0b2NvbXBsZXRlPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgYXNrQXV0b2ZvY3VzXG4gICAgICAqbmdJZj1cIiFjbG9zZWQ7IGVsc2Ugc2VsZWN0aW9uT3JQbGFjZWhvbGRlclwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uT3JQbGFjZWhvbGRlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q2hpcHNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2hpcC1saXN0XCJcbiAgICAgICAgICBbY2xhc3MuLWNvbGxhcHNlZF09XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY2hpcHNDb250YWluZXJDbGFzc2VzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhc2stY2hpcHNcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY2hpcHNDb2xsYXBzZWQgPyAnODUlJyA6ICc5NSUnXCJcbiAgICAgICAgICAgIFtzaG93QWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbik9XCJoYW5kbGVDaGlwQWN0aW9uKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGRpc3BsYXkob3B0aW9uKSB9fVxuICAgICAgICAgIDwvYXNrLWNoaXBzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImV4cGFuZFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlZS1tb3JlXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0FsbFNlbGVjdGlvbkJ0blwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2hpcHNMaXN0QWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgK3t7IHNlbGVjdGlvbi5sZW5ndGggLSAxIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAqbmdJZj1cInNob3dQbGFjZWhvbGRlclwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgY2hlY2tBbGxWYWx1ZSAmJiBhbGxPcHRpb25zU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICA/IGFsbE9wdGlvbnNTZWxlY3RlZFRleHRcbiAgICAgICAgICAgIDogcGxhY2Vob2xkZXJcbiAgICAgICAgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImJ0bi1leHBhbmQgbWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJidG4tZXhwYW5kXCJcbiAgICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKm5nSWY9XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInNob3dFeHBhbmRlZFNlbGVjdGlvbkFjdGlvbnNcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJzZWUtbW9yZVwiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlZS1sZXNzXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDaGlwc0xpc3RBY3Rpb25DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBcIlNFRV9MRVNTXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiYnRuLWV4cGFuZCBtYXRlcmlhbC1pY29uc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImJ0bi1leHBhbmRcIlxuICAgICAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlDb250ZW50PlxuICA8ZGl2ICNsaXN0IGNsYXNzPVwibWVudS1jb250YWluZXJcIiBbY2xhc3MuLW11bHRpcGxlXT1cIm11bHRpcGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgZWxzZSBtdWx0aXBsZVNlbGVjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RcIiBhc2tTY3JvbGwgW2Fza1Njcm9sbFRocmVzaG9sZF09XCI1MFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuLWhpZ2hsaWdodGVkXT1cIlxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvblt2YWx1ZVByb3BdID09PSBvcHRpb25bdmFsdWVQcm9wXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHRcIj57eyBkaXNwbGF5KG9wdGlvbikgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVNlbGVjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiICpuZ0lmPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCI+XG4gICAgICAgIDxhc2stY2hlY2tib3hcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tBbGxWYWx1ZVwiXG4gICAgICAgICAgPnt7c2VsZWN0QWxsTWVzc2FnZX19PC9hc2stY2hlY2tib3hcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGFza1Njcm9sbFxuICAgICAgICBbYXNrU2Nyb2xsVGhyZXNob2xkXT1cIjUwXCJcbiAgICAgICAgKHNjcm9sbEVuZCk9XCJnZXRNb3JlSXRlbXMoKVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3B0aW9ucy1mb3JtXCJcbiAgICAgICAgY2xhc3M9XCJvcHRpb25zLWZvcm1cIlxuICAgICAgICBbY2xhc3MuLXNlbGVjdC1hbGxdPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiPlxuICAgICAgICAgICAgPGFzay1jaGVja2JveFxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc1NlbGVjdGVkW29wdGlvblt2YWx1ZVByb3BdXVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZShvcHRpb24sICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2hlY2tib3gtaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25Qcm9wUmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwib3B0aW9uW2ljb25Qcm9wUmVmZXJlbmNlXVwiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge3sgZGlzcGxheShvcHRpb24pIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hc2stY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cImVtcHR5XCIgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPnt7XG4gICAgICBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUlOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9DLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7QUFHOUQsTUFBTSxhQUFhLEdBQWE7SUFDOUIsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Q0FDckQsQ0FBQTtBQVNELE1BQU0sT0FBTyxxQkFBcUI7SUEwRWhDLFlBQW9CLFdBQXdCLEVBQ3hCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUF5QixFQUN6QixTQUEyQjtRQUozQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtR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QUFnQjtzQkFEZixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLE1BQU07Z0JBb0lQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWFwLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge092ZXJsYXksIE92ZXJsYXlSZWZ9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtUZW1wbGF0ZVBvcnRhbH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgdmFsdWVBY2Nlc3NvcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBtdWx0aTogdHJ1ZSxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXNrLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbdmFsdWVBY2Nlc3Nvcl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuXG4gIEBWaWV3Q2hpbGQoXCJhdXRvY29tcGxldGVcIikgaW5wdXQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZChcImxpc3RcIikgbGlzdDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlDb250ZW50Jykgb3ZlcmxheUNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBwcm90ZWN0ZWQgaW5wdXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpXG4gIHByb3RlY3RlZCBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBwYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnM6IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbj86IGFueTtcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbjogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIGNsb3NlZCA9IHRydWU7XG4gIHByb3RlY3RlZCBjaGlwc0NvbGxhcHNlZCA9IHRydWVcbiAgcHJvdGVjdGVkIGNoZWNrQWxsVmFsdWUgPSBmYWxzZVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dDaGlwcyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0FsbFNlbGVjdGlvbkJ0biA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93RXhwYW5kZWRTZWxlY3Rpb25BY3Rpb25zID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93U2VsZWN0QWxsQ2hlY2tib3ggPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGNoaXBzQ29udGFpbmVyQ2xhc3NlcyA9IHtcbiAgICBcIi10d29cIjogZmFsc2UsXG4gICAgXCItdGhyZWVcIjogZmFsc2UsXG4gICAgXCItZm91clwiOiBmYWxzZSxcbiAgICBcIi1tYW55XCI6IGZhbHNlXG4gIH07XG4gIHByb3RlY3RlZCBvcHRpb25zU2VsZWN0ZWQ6IHtba2V5OiBzdHJpbmcgfCBudW1iZXJdOiBib29sZWFufSA9IHt9XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9kZXN0cm95ID0gaW5qZWN0KERlc3Ryb3lSZWYpXG4gIHByaXZhdGUgcmVhZG9ubHkgSVRFTVNfUEVSX1BBR0UgPSA0MFxuICBwcml2YXRlIF9wYWdlTnVtYmVyID0gMVxuICBfc2VsZWN0QWxsTWVzc2FnZSA9ICcnO1xuXG5cblxuICBASW5wdXQoKVxuICBmaWx0ZXJGbj86IChpdGVtOiBzdHJpbmcpID0+IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlGbj86IChpdGVtOiBhbnkpID0+IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlUHJvcDogc3RyaW5nID0gJydcblxuICBASW5wdXQoKVxuICBvcHRpb25zOiBhbnlbXSA9IFtdXG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIgPSAnJ1xuXG4gIEBJbnB1dCgpXG4gIGVtcHR5TWVzc2FnZSA9ICdOT19PUFRJT05TJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGFsbE9wdGlvbnNTZWxlY3RlZFRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdEFsbE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTRUxFQ1RfQUxMJyk7XG4gIFxuICBASW5wdXQoKVxuICBpY29uUHJvcFJlZmVyZW5jZT86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgaXRlbUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKCk7XG4gIH1cblxuICBnZXQgaXNBbGxPcHRpb25zU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSAxXG4gICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdXG5cbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gY2hhbmdlc1snb3B0aW9ucyddLmN1cnJlbnRWYWx1ZVxuICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0Q2hhbmdlKCkge1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9wYWdlTnVtYmVyID0gMVxuICAgICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdXG4gICAgICB9KSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmZpbHRlckZuID8gdGhpcy5maWx0ZXJGbih2YWx1ZSB8fCAnJykgOiBbXSlcbiAgICApLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGl0ZW1zXG4gICAgICB0aGlzLmdldE1vcmVJdGVtcygpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHZhbHVlczogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHZhbHVlc1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcblxuICAgIGlmICghdGhpcy5jaGlwc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9IHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA8IDJcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKCkge1xuICAgIHRoaXMuY2hpcHNDb250YWluZXJDbGFzc2VzID0ge1xuICAgICAgXCItdHdvXCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMixcbiAgICAgIFwiLXRocmVlXCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMyxcbiAgICAgIFwiLWZvdXJcIjogdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSA0LFxuICAgICAgXCItbWFueVwiOiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPj0gNVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBpdGVtO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbilcbiAgICB0aGlzLmhpZGVPcHRpb25zKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBoYW5kbGVBdXRvY29tcGxldGVDbGljayhldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2VkXG4gICAgICAgID8gdGhpcy5zaG93T3B0aW9ucygpXG4gICAgICAgIDogdGhpcy5oaWRlT3B0aW9ucygpXG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDaGlwc0xpc3RBY3Rpb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHRoaXMuY2hpcHNDb2xsYXBzZWQgPSAhdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHNob3dPcHRpb25zKCkge1xuICAgIHRoaXMuY2xvc2VkID0gZmFsc2VcbiAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYgJiYgdGhpcy53cmFwcGVyKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKHRoaXMud3JhcHBlcilcblxuICAgICAgdGhpcy5fcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlcmxheUNvbnRlbnQhLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB0aGlzLmdldE1vcmVJdGVtcygpXG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcod3JhcHBlcjogRWxlbWVudFJlZikge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHdpZHRoOiB3cmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh3cmFwcGVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFt7XG4gICAgICAgICAgb3JpZ2luWDogXCJzdGFydFwiLFxuICAgICAgICAgIG9yaWdpblk6IFwiYm90dG9tXCIsXG4gICAgICAgICAgb3ZlcmxheVg6IFwic3RhcnRcIixcbiAgICAgICAgICBvdmVybGF5WTogXCJ0b3BcIlxuICAgICAgICB9XSlcbiAgICB9KTtcbiAgfVxuXG4gIGhpZGVPcHRpb25zKCkge1xuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSAxO1xuICAgIHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93Om1vdXNlZG93blwiLCBbJyRldmVudCddKVxuICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmNsb3NlZFxuICAgICAgJiYgIXRoaXMud3JhcHBlcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAmJiAhdGhpcy5saXN0Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMoKVxuICAgICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkT3B0aW9ucygpOiBhbnlbXSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IFt0aGlzLnNlbGVjdGVkT3B0aW9uXSA6IFtdXG5cbiAgICByZXR1cm4gdGhpcy5jaGlwc0NvbGxhcHNlZFxuICAgICAgPyB0aGlzLnNlbGVjdGlvbi5zbGljZSgwLCAxKVxuICAgICAgOiB0aGlzLnNlbGVjdGlvbjtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEFsbChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxPcHRpb25zKGNoZWNrZWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gY2hlY2tlZCA/IHRoaXMub3B0aW9ucyA6IFtdXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMuaXRlbUNoZWNrLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2Uob3B0aW9uOiBhbnksIHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcHRpb25zU2VsZWN0ZWRbb3B0aW9uW3RoaXMudmFsdWVQcm9wXV0gPSB2YWx1ZVxuICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5vcHRpb25zLmZpbHRlcihvID0+IHRoaXMub3B0aW9uc1NlbGVjdGVkW29bdGhpcy52YWx1ZVByb3BdXSlcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLnNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGhcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0aW9uKVxuICAgIHRoaXMub25Ub3VjaGVkKClcblxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5pdGVtQ2hlY2suZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gIH1cblxuICBzZWxlY3RBbGxPcHRpb25zKHNlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcHRpb25zU2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnNcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICBhY2NbY3Vyclt0aGlzLnZhbHVlUHJvcF1dID0gc2VsZWN0ZWRcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9KVxuICB9XG5cbiAgaGFuZGxlQ2hpcEFjdGlvbihvcHRpb246IGFueSkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNTZWxlY3RlZFtvcHRpb25bdGhpcy52YWx1ZVByb3BdXSA9IGZhbHNlXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcihzZWxlY3RlZE9wdGlvbiA9PlxuICAgICAgICBzZWxlY3RlZE9wdGlvblt0aGlzLnZhbHVlUHJvcF0gIT09IG9wdGlvblt0aGlzLnZhbHVlUHJvcF0pXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMub25DaGFuZ2UoW10pXG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDaGlwc0NvbnRhaW5lckNsYXNzZXMoKVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGRpc3BsYXkob3B0aW9uOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm4gJiYgdGhpcy5kaXNwbGF5Rm4ob3B0aW9uKVxuICB9XG5cbiAgZ2V0TW9yZUl0ZW1zKCkge1xuICAgIGNvbnN0IHNvcnRlZEZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLmZpbHRlcmVkT3B0aW9uc107XG5cbiAgICB0aGlzLnNvcnRTZWxlY3RlZEZpcnN0KHNvcnRlZEZpbHRlcmVkT3B0aW9ucywgdGhpcy5zZWxlY3Rpb24sIHRoaXMudmFsdWVQcm9wKVxuICAgIGNvbnN0IG5leHRQYWdlSXRlbXMgPSBzb3J0ZWRGaWx0ZXJlZE9wdGlvbnNcbiAgICAgIC5zbGljZShcbiAgICAgICAgdGhpcy5JVEVNU19QRVJfUEFHRSAqICh0aGlzLl9wYWdlTnVtYmVyIC0gMSksXG4gICAgICAgIHRoaXMuSVRFTVNfUEVSX1BBR0UgKiB0aGlzLl9wYWdlTnVtYmVyXG4gICAgICApO1xuXG4gICAgaWYgKG5leHRQYWdlSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucywgLi4ubmV4dFBhZ2VJdGVtc107XG4gICAgICB0aGlzLl9wYWdlTnVtYmVyICs9IDFcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBzb3J0U2VsZWN0ZWRGaXJzdChpdGVtczogQXJyYXk8YW55Piwgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiwgcHJvcDogc3RyaW5nKSB7XG4gICAgaXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYUlzU2VsZWN0ZWQgPSBzZWxlY3RlZEl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtW3Byb3BdID09PSBhW3Byb3BdKTtcbiAgICAgIGNvbnN0IGJJc1NlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbVtwcm9wXSA9PT0gYltwcm9wXSk7XG5cbiAgICAgIGlmIChhSXNTZWxlY3RlZCAmJiAhYklzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIGlmICghYUlzU2VsZWN0ZWQgJiYgYklzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcbiAgICB0aGlzLnNob3dDaGlwcyA9IEJvb2xlYW4odGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSAmJiB0aGlzLmNsb3NlZCAmJiAoXG4gICAgICAhdGhpcy5tdWx0aXBsZSB8fCAhdGhpcy5jaGVja0FsbFZhbHVlIHx8ICh0aGlzLmNoZWNrQWxsVmFsdWUgJiYgIUJvb2xlYW4odGhpcy5hbGxPcHRpb25zU2VsZWN0ZWRUZXh0KSlcbiAgICApO1xuICAgIHRoaXMuc2hvd0FsbFNlbGVjdGlvbkJ0biA9IHRoaXMubXVsdGlwbGUgJiYgQm9vbGVhbih0aGlzLnNlbGVjdGlvbi5sZW5ndGggPiAxKSAmJiB0aGlzLmNoaXBzQ29sbGFwc2VkO1xuICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gdGhpcy5jbG9zZWQgJiYgKFxuICAgICAgIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCB8fCAodGhpcy5jaGVja0FsbFZhbHVlICYmIEJvb2xlYW4odGhpcy5hbGxPcHRpb25zU2VsZWN0ZWRUZXh0KSAmJiB0aGlzLm11bHRpcGxlKVxuICAgICk7XG4gICAgdGhpcy5zaG93RXhwYW5kZWRTZWxlY3Rpb25BY3Rpb25zID0gdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnNob3dTZWxlY3RBbGxDaGVja2JveCA9IEJvb2xlYW4odGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSAmJiB0aGlzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIC8vIENvbnRyb2wgVmFsdWUgQWNjZXNzb3JcblxuICB3cml0ZVZhbHVlKG9iajogYW55W10gfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgdGhpcy5vcHRpb25zU2VsZWN0ZWQgPSB7fVxuICAgICAgb2JqLmZvckVhY2gob3B0aW9uID0+IHRoaXMub3B0aW9uc1NlbGVjdGVkW29wdGlvblt0aGlzLnZhbHVlUHJvcF1dID0gdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9ialxuICAgIH1cblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShvYmopXG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyXCJcbiAgZGF0YS10ZXN0aWQ9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiXG4gIFtjbGFzcy4tY2xvc2VkXT1cImNsb3NlZFwiXG4gIFtjbGFzcy4tb3BlbmVkXT1cIiFjbG9zZWRcIlxuICAjd3JhcHBlclxuICAoY2xpY2spPVwiaGFuZGxlQXV0b2NvbXBsZXRlQ2xpY2soKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGVcIiAjYXV0b2NvbXBsZXRlPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgYXNrQXV0b2ZvY3VzXG4gICAgICAqbmdJZj1cIiFjbG9zZWQ7IGVsc2Ugc2VsZWN0aW9uT3JQbGFjZWhvbGRlclwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uT3JQbGFjZWhvbGRlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q2hpcHNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2hpcC1saXN0XCJcbiAgICAgICAgICBbY2xhc3MuLWNvbGxhcHNlZF09XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY2hpcHNDb250YWluZXJDbGFzc2VzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhc2stY2hpcHNcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY2hpcHNDb2xsYXBzZWQgPyAnODUlJyA6ICc5NSUnXCJcbiAgICAgICAgICAgIFtzaG93QWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbik9XCJoYW5kbGVDaGlwQWN0aW9uKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGRpc3BsYXkob3B0aW9uKSB9fVxuICAgICAgICAgIDwvYXNrLWNoaXBzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImV4cGFuZFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlZS1tb3JlXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0FsbFNlbGVjdGlvbkJ0blwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2hpcHNMaXN0QWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgK3t7IHNlbGVjdGlvbi5sZW5ndGggLSAxIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAqbmdJZj1cInNob3dQbGFjZWhvbGRlclwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgY2hlY2tBbGxWYWx1ZSAmJiBhbGxPcHRpb25zU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICA/IGFsbE9wdGlvbnNTZWxlY3RlZFRleHRcbiAgICAgICAgICAgIDogcGxhY2Vob2xkZXJcbiAgICAgICAgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImJ0bi1leHBhbmQgbWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJidG4tZXhwYW5kXCJcbiAgICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKm5nSWY9XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInNob3dFeHBhbmRlZFNlbGVjdGlvbkFjdGlvbnNcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJzZWUtbW9yZVwiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlZS1sZXNzXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDaGlwc0xpc3RBY3Rpb25DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBcIlNFRV9MRVNTXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiYnRuLWV4cGFuZCBtYXRlcmlhbC1pY29uc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImJ0bi1leHBhbmRcIlxuICAgICAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlDb250ZW50PlxuICA8ZGl2ICNsaXN0IGNsYXNzPVwibWVudS1jb250YWluZXJcIiBbY2xhc3MuLW11bHRpcGxlXT1cIm11bHRpcGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgZWxzZSBtdWx0aXBsZVNlbGVjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RcIiBhc2tTY3JvbGwgW2Fza1Njcm9sbFRocmVzaG9sZF09XCI1MFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuLWhpZ2hsaWdodGVkXT1cIlxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvblt2YWx1ZVByb3BdID09PSBvcHRpb25bdmFsdWVQcm9wXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHRcIj57eyBkaXNwbGF5KG9wdGlvbikgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVNlbGVjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiICpuZ0lmPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCI+XG4gICAgICAgIDxhc2stY2hlY2tib3hcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tBbGxWYWx1ZVwiXG4gICAgICAgICAgPnt7c2VsZWN0QWxsTWVzc2FnZX19PC9hc2stY2hlY2tib3hcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGFza1Njcm9sbFxuICAgICAgICBbYXNrU2Nyb2xsVGhyZXNob2xkXT1cIjUwXCJcbiAgICAgICAgKHNjcm9sbEVuZCk9XCJnZXRNb3JlSXRlbXMoKVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3B0aW9ucy1mb3JtXCJcbiAgICAgICAgY2xhc3M9XCJvcHRpb25zLWZvcm1cIlxuICAgICAgICBbY2xhc3MuLXNlbGVjdC1hbGxdPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiPlxuICAgICAgICAgICAgPGFzay1jaGVja2JveFxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc1NlbGVjdGVkW29wdGlvblt2YWx1ZVByb3BdXVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZShvcHRpb24sICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2hlY2tib3gtaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25Qcm9wUmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwib3B0aW9uW2ljb25Qcm9wUmVmZXJlbmNlXVwiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge3sgZGlzcGxheShvcHRpb24pIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hc2stY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cImVtcHR5XCIgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPnt7XG4gICAgICBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
package/esm2022/lib/components/date-picker/date-picker-calendar/date-picker-calendar.component.mjs
CHANGED
@@ -2,16 +2,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import moment from 'moment';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
import * as i1 from "@angular/common";
|
5
|
-
export var PeriodLabel;
|
6
|
-
(function (PeriodLabel) {
|
7
|
-
PeriodLabel["TODAY"] = "TODAY";
|
8
|
-
PeriodLabel["YESTERDAY"] = "YESTERDAY";
|
9
|
-
PeriodLabel["LAST_7_DAYS"] = "LAST_7_DAYS";
|
10
|
-
PeriodLabel["LAST_30_DAYS"] = "LAST_30_DAYS";
|
11
|
-
PeriodLabel["THIS_MONTH"] = "THIS_MONTH";
|
12
|
-
PeriodLabel["LAST_QUARTER"] = "LAST_QUARTER";
|
13
|
-
PeriodLabel["CUSTOM_PERIOD"] = "CUSTOM_PERIOD";
|
14
|
-
})(PeriodLabel || (PeriodLabel = {}));
|
15
5
|
export const DEFAULT_DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ';
|
16
6
|
export const formatFrom = (from) => from.startOf('day').format(DEFAULT_DATE_FORMAT);
|
17
7
|
export const formatTo = (from) => from.endOf('day').format(DEFAULT_DATE_FORMAT);
|
@@ -19,13 +9,11 @@ export class DatePickerCalendarComponent {
|
|
19
9
|
constructor() {
|
20
10
|
this.isRange = false;
|
21
11
|
this.disableFutureDate = false;
|
12
|
+
this.disableTodayAndFuture = false;
|
22
13
|
this.dateChange = new EventEmitter();
|
23
14
|
this._weekDays = [];
|
24
15
|
this._days = [];
|
25
16
|
}
|
26
|
-
get shouldDisableNextMonth() {
|
27
|
-
return this.isFutureDate(this.displayDate.clone().add(1, 'month').unix());
|
28
|
-
}
|
29
17
|
get days() {
|
30
18
|
return this._days;
|
31
19
|
}
|
@@ -78,7 +66,7 @@ export class DatePickerCalendarComponent {
|
|
78
66
|
this.innerDate = {
|
79
67
|
from: this.getDayFromString(receivedDate.from),
|
80
68
|
to: this.getDayFromString(receivedDate.to),
|
81
|
-
label:
|
69
|
+
label: receivedDate.label || 'CUSTOM_PERIOD'
|
82
70
|
};
|
83
71
|
}
|
84
72
|
else {
|
@@ -160,7 +148,8 @@ export class DatePickerCalendarComponent {
|
|
160
148
|
month: day.month(),
|
161
149
|
weekDay: day.day(),
|
162
150
|
formatted: day.format(DEFAULT_DATE_FORMAT),
|
163
|
-
isFuture: this.isFutureDate(day.unix())
|
151
|
+
isFuture: this.isFutureDate(day.unix()),
|
152
|
+
disabled: this.shouldDisableDate(day.unix()),
|
164
153
|
};
|
165
154
|
}
|
166
155
|
getDayFromString(date) {
|
@@ -175,34 +164,31 @@ export class DatePickerCalendarComponent {
|
|
175
164
|
}
|
176
165
|
selectDate(timestamp) {
|
177
166
|
const momentDate = moment.unix(timestamp);
|
178
|
-
if (this.isRange)
|
179
|
-
this.handleRangeSelect(momentDate);
|
180
|
-
|
181
|
-
else {
|
182
|
-
this.handleSingleSelect(momentDate);
|
183
|
-
}
|
167
|
+
if (this.isRange)
|
168
|
+
return this.handleRangeSelect(momentDate);
|
169
|
+
this.handleSingleSelect(momentDate);
|
184
170
|
}
|
185
171
|
handleRangeSelect(selectedDate) {
|
186
172
|
const innerDate = this.innerDate;
|
187
|
-
// First selection
|
188
173
|
if (!innerDate.from) {
|
174
|
+
// First selection
|
189
175
|
innerDate.from = this.getDayFromMoment(selectedDate);
|
190
176
|
}
|
191
|
-
// Second selection
|
192
177
|
else if (!innerDate.to) {
|
178
|
+
// Second selection
|
193
179
|
const actualFrom = moment.unix(innerDate.from.timestamp);
|
194
|
-
// Selected date is past the previous selected date
|
195
180
|
if (selectedDate.isBefore(actualFrom, 'day')) {
|
181
|
+
// Selected date is past the previous selected date
|
196
182
|
innerDate.to = innerDate.from;
|
197
183
|
innerDate.from = this.getDayFromMoment(selectedDate);
|
198
184
|
}
|
199
|
-
// Selected date is future of the previous selected date
|
200
185
|
else {
|
186
|
+
// Selected date is future of the previous selected date
|
201
187
|
innerDate.to = this.getDayFromMoment(selectedDate);
|
202
188
|
}
|
203
189
|
}
|
204
|
-
// Selection when both from and to are already selected
|
205
190
|
else {
|
191
|
+
// Selection when both from and to are already selected
|
206
192
|
innerDate.from = this.getDayFromMoment(selectedDate);
|
207
193
|
innerDate.to = undefined;
|
208
194
|
}
|
@@ -210,11 +196,13 @@ export class DatePickerCalendarComponent {
|
|
210
196
|
}
|
211
197
|
emitRange(range) {
|
212
198
|
const newRange = {};
|
213
|
-
newRange.label =
|
199
|
+
newRange.label = 'CUSTOM_PERIOD';
|
214
200
|
if (range.from) {
|
215
201
|
newRange.from = this.getDateFromDay(range.from);
|
216
202
|
if (range.to)
|
217
203
|
newRange.to = formatTo(moment.unix(range.to.timestamp));
|
204
|
+
else
|
205
|
+
newRange.to = formatTo(moment.unix(range.from.timestamp));
|
218
206
|
}
|
219
207
|
this.dateChange.emit(newRange);
|
220
208
|
}
|
@@ -223,25 +211,39 @@ export class DatePickerCalendarComponent {
|
|
223
211
|
this.dateChange.emit(momentDate.format(DEFAULT_DATE_FORMAT));
|
224
212
|
}
|
225
213
|
isFutureDate(timestamp) {
|
226
|
-
if (!this.disableFutureDate)
|
227
|
-
return false;
|
228
214
|
const date = moment.unix(timestamp);
|
229
215
|
const now = moment();
|
230
216
|
return date.isAfter(now);
|
231
217
|
}
|
218
|
+
isTodayDate(timestamp) {
|
219
|
+
const date = moment.unix(timestamp);
|
220
|
+
const now = moment();
|
221
|
+
return date.isSame(now, 'day');
|
222
|
+
}
|
223
|
+
shouldDisableDate(timestamp) {
|
224
|
+
if (this.disableTodayAndFuture) {
|
225
|
+
return this.isFutureDate(timestamp) || this.isTodayDate(timestamp);
|
226
|
+
}
|
227
|
+
if (this.disableFutureDate) {
|
228
|
+
return this.isFutureDate(timestamp);
|
229
|
+
}
|
230
|
+
return false;
|
231
|
+
}
|
232
232
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DatePickerCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
233
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DatePickerCalendarComponent, selector: "ask-date-picker-calendar", inputs: { isRange: "isRange", disableFutureDate: "disableFutureDate", date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div class=\"date-picker-calendar-container\">\n <header class=\"month-selector\">\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(-1)\">\n <span class=\"material-icons icon\">chevron_left</span>\n </button>\n\n <span class=\"month-year-display\" data-testid=\"month-year-display\">{{ month }} {{ year }}</span>\n\n <button\n type=\"button\"\n class=\"selector-button\"\n
|
233
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DatePickerCalendarComponent, selector: "ask-date-picker-calendar", inputs: { isRange: "isRange", disableFutureDate: "disableFutureDate", disableTodayAndFuture: "disableTodayAndFuture", date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div class=\"date-picker-calendar-container\">\n <header class=\"month-selector\">\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(-1)\">\n <span class=\"material-icons icon\">chevron_left</span>\n </button>\n\n <span class=\"month-year-display\" data-testid=\"month-year-display\">{{ month }} {{ year }}</span>\n\n <button\n type=\"button\"\n class=\"selector-button\"\n (click)=\"incrementMonth(1)\"\n >\n <span class=\"material-icons icon\">chevron_right</span>\n </button>\n </header>\n\n <main class=\"calendar\">\n <div class=\"week-days-header\">\n <span class=\"week-day\" *ngFor=\"let weekDay of weekDays\">{{ weekDay.name }}</span>\n </div>\n\n <div class=\"days-block\" data-testid=\"days-block\">\n <button\n *ngFor=\"let day of days\"\n (click)=\"selectDate(day.timestamp)\"\n [disabled]=\"day.disabled\"\n [ngClass]=\"{\n 'day': true,\n 'another-month': monthNumber != day.month,\n 'selected': isDaySelected(day),\n 'first': isFirstSelectedDay(day),\n 'last': isLastSelectedDay(day),\n }\"\n >\n {{ day.day }}\n </button>\n </div>\n </main>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.date-picker-calendar-container{display:flex;flex-direction:column;padding:16px;width:320px;-webkit-user-select:none;user-select:none}.month-selector{display:flex;align-items:center;justify-content:space-between;padding:4px;background-color:var(--secondary-background);border-radius:4px;text-transform:capitalize}.month-selector>.month-year-display{font-size:.75rem;color:var(--font-color-100);font-weight:500}.selector-button{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background-color:var(--primary-background);box-shadow:0 1px 2px #2a304229;outline:none;border:none;border-radius:4px;cursor:pointer}.selector-button>.icon{color:var(--font-color-100);font-size:18px}.calendar{display:flex;flex-direction:column;padding:16px 32px}.week-days-header{display:grid;grid-template-rows:auto;grid-template-columns:repeat(7,auto);place-items:center;padding-bottom:8px;border-bottom:1px solid #E4E7EB}.week-days-header>.week-day{display:flex;align-items:center;justify-content:center;font-size:.75rem;line-height:1rem;width:100%;color:var(--font-color-100)}.days-block{display:grid;grid-template-rows:repeat(6,auto);grid-template-columns:repeat(7,auto);place-items:center;row-gap:4px;color:var(--font-color-200);padding-top:4px}.days-block>.day{display:flex;align-items:center;justify-content:center;text-align:center;font-size:.75rem;line-height:1rem;width:100%;height:31px;border:none;color:var(--font-color-200);background:none;border-radius:99999px;transition:.2s background-color,.2s color,.2s font-weight}.days-block>.day:disabled{text-decoration:line-through;color:var(--font-color-300)}.days-block>.day:disabled:hover{color:var(--font-color-300);background:none;cursor:not-allowed}.days-block>.day.another-month{color:var(--font-color-300)}.days-block>.day.selected,.days-block>.day:hover{color:#ff5724;background-color:#ff57241a;cursor:pointer}.days-block>.day.selected{border-radius:0;font-weight:500}.days-block>.day.selected.first{border-top-left-radius:99999px;border-bottom-left-radius:99999px}.days-block>.day.selected.last{border-top-right-radius:99999px;border-bottom-right-radius:99999px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
234
234
|
}
|
235
235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DatePickerCalendarComponent, decorators: [{
|
236
236
|
type: Component,
|
237
|
-
args: [{ selector: 'ask-date-picker-calendar', template: "<div class=\"date-picker-calendar-container\">\n <header class=\"month-selector\">\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(-1)\">\n <span class=\"material-icons icon\">chevron_left</span>\n </button>\n\n <span class=\"month-year-display\" data-testid=\"month-year-display\">{{ month }} {{ year }}</span>\n\n <button\n type=\"button\"\n class=\"selector-button\"\n
|
237
|
+
args: [{ selector: 'ask-date-picker-calendar', template: "<div class=\"date-picker-calendar-container\">\n <header class=\"month-selector\">\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(-1)\">\n <span class=\"material-icons icon\">chevron_left</span>\n </button>\n\n <span class=\"month-year-display\" data-testid=\"month-year-display\">{{ month }} {{ year }}</span>\n\n <button\n type=\"button\"\n class=\"selector-button\"\n (click)=\"incrementMonth(1)\"\n >\n <span class=\"material-icons icon\">chevron_right</span>\n </button>\n </header>\n\n <main class=\"calendar\">\n <div class=\"week-days-header\">\n <span class=\"week-day\" *ngFor=\"let weekDay of weekDays\">{{ weekDay.name }}</span>\n </div>\n\n <div class=\"days-block\" data-testid=\"days-block\">\n <button\n *ngFor=\"let day of days\"\n (click)=\"selectDate(day.timestamp)\"\n [disabled]=\"day.disabled\"\n [ngClass]=\"{\n 'day': true,\n 'another-month': monthNumber != day.month,\n 'selected': isDaySelected(day),\n 'first': isFirstSelectedDay(day),\n 'last': isLastSelectedDay(day),\n }\"\n >\n {{ day.day }}\n </button>\n </div>\n </main>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.date-picker-calendar-container{display:flex;flex-direction:column;padding:16px;width:320px;-webkit-user-select:none;user-select:none}.month-selector{display:flex;align-items:center;justify-content:space-between;padding:4px;background-color:var(--secondary-background);border-radius:4px;text-transform:capitalize}.month-selector>.month-year-display{font-size:.75rem;color:var(--font-color-100);font-weight:500}.selector-button{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background-color:var(--primary-background);box-shadow:0 1px 2px #2a304229;outline:none;border:none;border-radius:4px;cursor:pointer}.selector-button>.icon{color:var(--font-color-100);font-size:18px}.calendar{display:flex;flex-direction:column;padding:16px 32px}.week-days-header{display:grid;grid-template-rows:auto;grid-template-columns:repeat(7,auto);place-items:center;padding-bottom:8px;border-bottom:1px solid #E4E7EB}.week-days-header>.week-day{display:flex;align-items:center;justify-content:center;font-size:.75rem;line-height:1rem;width:100%;color:var(--font-color-100)}.days-block{display:grid;grid-template-rows:repeat(6,auto);grid-template-columns:repeat(7,auto);place-items:center;row-gap:4px;color:var(--font-color-200);padding-top:4px}.days-block>.day{display:flex;align-items:center;justify-content:center;text-align:center;font-size:.75rem;line-height:1rem;width:100%;height:31px;border:none;color:var(--font-color-200);background:none;border-radius:99999px;transition:.2s background-color,.2s color,.2s font-weight}.days-block>.day:disabled{text-decoration:line-through;color:var(--font-color-300)}.days-block>.day:disabled:hover{color:var(--font-color-300);background:none;cursor:not-allowed}.days-block>.day.another-month{color:var(--font-color-300)}.days-block>.day.selected,.days-block>.day:hover{color:#ff5724;background-color:#ff57241a;cursor:pointer}.days-block>.day.selected{border-radius:0;font-weight:500}.days-block>.day.selected.first{border-top-left-radius:99999px;border-bottom-left-radius:99999px}.days-block>.day.selected.last{border-top-right-radius:99999px;border-bottom-right-radius:99999px}\n"] }]
|
238
238
|
}], propDecorators: { isRange: [{
|
239
239
|
type: Input
|
240
240
|
}], disableFutureDate: [{
|
241
241
|
type: Input
|
242
|
+
}], disableTodayAndFuture: [{
|
243
|
+
type: Input
|
242
244
|
}], date: [{
|
243
245
|
type: Input
|
244
246
|
}], dateChange: [{
|
245
247
|
type: Output
|
246
248
|
}] } });
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNrc3VpdGUtY2l0cnVzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNhbGVuZGFyL2RhdGUtcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFFNUIsTUFBTSxDQUFOLElBQVksV0FRWDtBQVJELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2Ysc0NBQXVCLENBQUE7SUFDdkIsMENBQTJCLENBQUE7SUFDM0IsNENBQTZCLENBQUE7SUFDN0Isd0NBQXlCLENBQUE7SUFDekIsNENBQTZCLENBQUE7SUFDN0IsOENBQStCLENBQUE7QUFDakMsQ0FBQyxFQVJXLFdBQVcsS0FBWCxXQUFXLFFBUXRCO0FBdUJELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDO0FBQzFELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDbEcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFLENB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LFlBQVksQ0FBQyxTQUFpQjtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBL1FVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZMQzNDeEMsMHhDQXlDQTs7MkZERWEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjs4QkFLM0IsT0FBTztzQkFBZixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBlbnVtIFBlcmlvZExhYmVsIHtcbiAgVE9EQVkgPSAnVE9EQVknLFxuICBZRVNURVJEQVkgPSAnWUVTVEVSREFZJyxcbiAgTEFTVF83X0RBWVMgPSAnTEFTVF83X0RBWVMnLFxuICBMQVNUXzMwX0RBWVMgPSAnTEFTVF8zMF9EQVlTJyxcbiAgVEhJU19NT05USCA9ICdUSElTX01PTlRIJyxcbiAgTEFTVF9RVUFSVEVSID0gJ0xBU1RfUVVBUlRFUicsXG4gIENVU1RPTV9QRVJJT0QgPSAnQ1VTVE9NX1BFUklPRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF5IHtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGRheTogc3RyaW5nO1xuICBtb250aDogbnVtYmVyO1xuICB3ZWVrRGF5OiBudW1iZXI7XG4gIGZvcm1hdHRlZDogc3RyaW5nO1xuICBpc0Z1dHVyZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXZWVrRGF5IHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nOyBsYWJlbD86IFBlcmlvZExhYmVsOyB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyVmFsdWUgPSBzdHJpbmcgfCBEYXRlUmFuZ2U7XG5cbnR5cGUgRGF5UmFuZ2UgPSB7IGZyb20/OiBEYXk7IHRvPzogRGF5OyBsYWJlbD86IHN0cmluZzsgfTtcblxudHlwZSBEYXRlUGlja2VySW5uZXJWYWx1ZSA9IERheSB8IERheVJhbmdlO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG5leHBvcnQgY29uc3QgZm9ybWF0RnJvbSA9IChmcm9tOiBtb21lbnQuTW9tZW50KSA9PiBmcm9tLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKVxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvID0gKGZyb206IG1vbWVudC5Nb21lbnQpID0+IGZyb20uZW5kT2YoJ2RheScpLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc2stZGF0ZS1waWNrZXItY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzUmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZUZ1dHVyZURhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGF0ZSE6IERhdGVQaWNrZXJWYWx1ZTtcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlUGlja2VyVmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUGlja2VyVmFsdWU+KCk7XG5cbiAgcHJpdmF0ZSBpbm5lckRhdGUhOiBEYXRlUGlja2VySW5uZXJWYWx1ZTtcbiAgcHJpdmF0ZSBkaXNwbGF5RGF0ZSE6IG1vbWVudC5Nb21lbnQ7XG4gIHByaXZhdGUgZmlyc3REYXlPZldlZWshOiBudW1iZXI7XG4gIHByaXZhdGUgX3dlZWtEYXlzOiBBcnJheTxXZWVrRGF5PiA9IFtdO1xuICBwcml2YXRlIF9kYXlzOiBBcnJheTxEYXk+ID0gW107XG5cbiAgZ2V0IHNob3VsZERpc2FibGVOZXh0TW9udGggKCkge1xuICAgIHJldHVybiB0aGlzLmlzRnV0dXJlRGF0ZSh0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuYWRkKDEsICdtb250aCcpLnVuaXgoKSk7XG4gIH1cblxuICBnZXQgZGF5cygpOiBBcnJheTxEYXk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF5c1xuICB9XG5cbiAgZ2V0IG1vbnRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheURhdGUuZm9ybWF0KCdNTU1NJyk7XG4gIH1cblxuICBnZXQgbW9udGhOdW1iZXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGF0ZS5tb250aCgpO1xuICB9XG5cbiAgZ2V0IHllYXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGF0ZS5mb3JtYXQoJ1lZWVknKTtcbiAgfVxuXG4gIGdldCB3ZWVrRGF5cygpOiBBcnJheTxXZWVrRGF5PiB7XG4gICAgcmV0dXJuIHRoaXMuX3dlZWtEYXlzO1xuICB9XG5cbiAgaXNEYXlTZWxlY3RlZChkYXk6IERheSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcblxuICAgICAgY29uc3QgZnJvbSA9ICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkuZnJvbT8udGltZXN0YW1wO1xuICAgICAgY29uc3QgdG8gPSAodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpLnRvPy50aW1lc3RhbXA7XG5cbiAgICAgIGlmICghZnJvbSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICghdG8pIHtcbiAgICAgICAgcmV0dXJuIGRheS50aW1lc3RhbXAgPT09IGZyb207XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXkudGltZXN0YW1wID49IGZyb20gJiYgZGF5LnRpbWVzdGFtcCA8PSB0bztcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuaW5uZXJEYXRlIGFzIERheSk/LnRpbWVzdGFtcCA9PT0gZGF5LnRpbWVzdGFtcDtcbiAgfVxuXG4gIGlzRmlyc3RTZWxlY3RlZERheShkYXk6IERheSkge1xuICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgIHJldHVybiBkYXkuZm9ybWF0dGVkID09PSAodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpLmZyb20/LmZvcm1hdHRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuaW5uZXJEYXRlIGFzIERheSkuZm9ybWF0dGVkID09PSBkYXkuZm9ybWF0dGVkO1xuICB9XG5cbiAgaXNMYXN0U2VsZWN0ZWREYXkoZGF5OiBEYXkpIHtcbiAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICByZXR1cm4gZGF5LmZvcm1hdHRlZCA9PT0gKCh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkudG8/LmZvcm1hdHRlZCB8fCAodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpLmZyb20/LmZvcm1hdHRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLmlubmVyRGF0ZSBhcyBEYXkpLmZvcm1hdHRlZCA9PT0gZGF5LmZvcm1hdHRlZDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYXNzaWduSW5pdGlhbFZhbHVlcygpO1xuICAgIHRoaXMucmVmcmVzaERpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduSW5pdGlhbFZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICBjb25zdCByZWNlaXZlZERhdGUgPSB0aGlzLmRhdGUgYXMgRGF0ZVJhbmdlO1xuICAgICAgaWYgKHJlY2VpdmVkRGF0ZS5mcm9tICYmIHJlY2VpdmVkRGF0ZS50bykge1xuICAgICAgICAodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpID0ge1xuICAgICAgICAgIGZyb206IHRoaXMuZ2V0RGF5RnJvbVN0cmluZyhyZWNlaXZlZERhdGUuZnJvbSksXG4gICAgICAgICAgdG86IHRoaXMuZ2V0RGF5RnJvbVN0cmluZyhyZWNlaXZlZERhdGUudG8pLFxuICAgICAgICAgIGxhYmVsOiBQZXJpb2RMYWJlbFtyZWNlaXZlZERhdGUubGFiZWwgfHwgJ0NVU1RPTV9QRVJJT0QnXS50b1N0cmluZygpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpID0ge1xuICAgICAgICAgIGxhYmVsOiAnQ1VTVE9NX1BFUklPRCdcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheURhdGUgPSBtb21lbnQudW5peCgodGhpcy5pbm5lckRhdGUgYXMgRGF5UmFuZ2UpLmZyb20/LnRpbWVzdGFtcCB8fCAoRGF0ZS5ub3coKSAvIDEwMDApKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmlubmVyRGF0ZSA9IHRoaXMuZ2V0RGF5RnJvbVN0cmluZyh0aGlzLmRhdGUgYXMgc3RyaW5nKTtcbiAgICAgIHRoaXMuZGlzcGxheURhdGUgPSBtb21lbnQudW5peCh0aGlzLmlubmVyRGF0ZS50aW1lc3RhbXApO1xuICAgIH1cblxuICAgIHRoaXMuZmlyc3REYXlPZldlZWsgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuc3RhcnRPZignd2VlaycpLmRheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoRGlzcGxheSgpIHtcbiAgICB0aGlzLmJ1aWxkV2Vla0RheXMoKTtcbiAgICB0aGlzLmJ1aWxkRGF5cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFdlZWtEYXlzKCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZXZWVrID0gdGhpcy5kaXNwbGF5RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ3dlZWsnKTtcbiAgICBjb25zdCBlbmRPZldlZWsgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuZW5kT2YoJ3dlZWsnKTtcbiAgICB0aGlzLl93ZWVrRGF5cyA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5fd2Vla0RheXMucHVzaCh7XG4gICAgICAgIG5hbWU6IHN0YXJ0T2ZXZWVrLmZvcm1hdCgnZGRkJylcbiAgICAgIH0pO1xuXG4gICAgICBzdGFydE9mV2Vlay5hZGQoMSwgJ2RheScpO1xuICAgIH1cbiAgICB3aGlsZSAoc3RhcnRPZldlZWsuaXNCZWZvcmUoZW5kT2ZXZWVrKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGF5cygpIHtcbiAgICBsZXQgc3RhcnREYXkgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuc3RhcnRPZignbW9udGgnKTtcbiAgICBsZXQgZW5kRGF5ID0gdGhpcy5kaXNwbGF5RGF0ZS5jbG9uZSgpLmVuZE9mKCdtb250aCcpO1xuXG4gICAgbGV0IGRheXNPZlBhc3RNb250aDogQXJyYXk8RGF5PiA9IFtdO1xuICAgIGxldCBkYXlzT2ZUaGlzTW9udGg6IEFycmF5PERheT4gPSBbXTtcbiAgICBsZXQgZGF5c09mTmV4dE1vbnRoOiBBcnJheTxEYXk+ID0gW107XG5cbiAgICAvLyBCdWlsZHMgdGhpcyBtb250aCBkYXlzXG4gICAgZGF5c09mVGhpc01vbnRoID0gdGhpcy5nZXREYXlzQmV0d2VlbihzdGFydERheSwgZW5kRGF5KTtcblxuICAgIC8vIEJ1aWxkcyBwYXN0IG1vbnRoIGRheXNcbiAgICBpZiAoZGF5c09mVGhpc01vbnRoWzBdLndlZWtEYXkgIT09IHRoaXMuZmlyc3REYXlPZldlZWspIHtcbiAgICAgIHN0YXJ0RGF5ID0gdGhpcy5kaXNwbGF5RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN0YXJ0RGF5ID0gdGhpcy5kaXNwbGF5RGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdtb250aCcpLmVuZE9mKCdtb250aCcpLnN0YXJ0T2YoJ3dlZWsnKTtcbiAgICB9XG4gICAgZW5kRGF5ID0gc3RhcnREYXkuY2xvbmUoKS5lbmRPZignbW9udGgnKTtcbiAgICBkYXlzT2ZQYXN0TW9udGggPSB0aGlzLmdldERheXNCZXR3ZWVuKHN0YXJ0RGF5LCBlbmREYXkpO1xuXG4gICAgLy8gQnVpbGRzIG5leHQgbW9udGggZGF5c1xuICAgIHN0YXJ0RGF5ID0gdGhpcy5kaXNwbGF5RGF0ZS5jbG9uZSgpLmFkZCgxLCAnbW9udGgnKS5zdGFydE9mKCdtb250aCcpO1xuICAgIGVuZERheSA9IHN0YXJ0RGF5LmNsb25lKCkuZW5kT2YoJ3dlZWsnKTtcbiAgICBkYXlzT2ZOZXh0TW9udGggPSB0aGlzLmdldERheXNCZXR3ZWVuKHN0YXJ0RGF5LCBlbmREYXkpO1xuXG4gICAgdGhpcy5fZGF5cyA9IFtcbiAgICAgIC4uLmRheXNPZlBhc3RNb250aCxcbiAgICAgIC4uLmRheXNPZlRoaXNNb250aCxcbiAgICAgIC4uLmRheXNPZk5leHRNb250aCxcbiAgICBdO1xuXG4gICAgLy8gSWYgY2FsZW5kYXIgaXNuJ3QgY29tcGxldGUgeWV0IChhbGwgNyBjb2x1bW5zIGFuZCA2IHJvd3MgYXJlIGZ1bGwpLCBhZGRzIGFub3RoZXIgd2VlayB0byBjb21wbGV0ZSB0aGUgY2FsZW5kYXJcbiAgICBpZiAodGhpcy5fZGF5cy5sZW5ndGggPCA0Mikge1xuICAgICAgZW5kRGF5ID0gZW5kRGF5LmNsb25lKCkuYWRkKDEsICdkYXknKS5lbmRPZignd2VlaycpO1xuICAgICAgc3RhcnREYXkgPSBlbmREYXkuY2xvbmUoKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgICB0aGlzLl9kYXlzLnB1c2goLi4udGhpcy5nZXREYXlzQmV0d2VlbihzdGFydERheSwgZW5kRGF5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXlzQmV0d2VlbihzdGFydDogbW9tZW50Lk1vbWVudCwgZW5kOiBtb21lbnQuTW9tZW50KTogQXJyYXk8RGF5PiB7XG4gICAgc3RhcnQgPSBzdGFydC5jbG9uZSgpO1xuICAgIGVuZCA9IGVuZC5jbG9uZSgpO1xuXG4gICAgY29uc3QgZGF5cyA9IFtdO1xuICAgIGRvIHtcbiAgICAgIGRheXMucHVzaCh0aGlzLmdldERheUZyb21Nb21lbnQoc3RhcnQpKTtcblxuICAgICAgc3RhcnQuYWRkKDEsICdkYXknKTtcbiAgICB9XG4gICAgd2hpbGUgKHN0YXJ0LmlzQmVmb3JlKGVuZCkpO1xuXG4gICAgcmV0dXJuIGRheXM7XG4gIH1cblxuICBnZXREYXlGcm9tTW9tZW50KGRheTogbW9tZW50Lk1vbWVudCk6IERheSB7XG4gICAgZGF5ID0gZGF5LmNsb25lKCkuc3RhcnRPZignZGF5Jyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGltZXN0YW1wOiBkYXkudW5peCgpLFxuICAgICAgZGF5OiBkYXkuZm9ybWF0KCdEJyksXG4gICAgICBtb250aDogZGF5Lm1vbnRoKCksXG4gICAgICB3ZWVrRGF5OiBkYXkuZGF5KCksXG4gICAgICBmb3JtYXR0ZWQ6IGRheS5mb3JtYXQoREVGQVVMVF9EQVRFX0ZPUk1BVCksXG4gICAgICBpc0Z1dHVyZTogdGhpcy5pc0Z1dHVyZURhdGUoZGF5LnVuaXgoKSlcbiAgICB9XG4gIH1cblxuICBnZXREYXlGcm9tU3RyaW5nKGRhdGU6IHN0cmluZyk6IERheSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF5RnJvbU1vbWVudChtb21lbnQoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0RGF0ZUZyb21EYXkoZGF5OiBEYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb21lbnQudW5peChkYXkudGltZXN0YW1wKS5zdGFydE9mKCdkYXknKS5mb3JtYXQoREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gIH1cblxuICBpbmNyZW1lbnRNb250aChhbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuZGlzcGxheURhdGUuYWRkKGFtb3VudCwgJ21vbnRoJyk7XG4gICAgdGhpcy5yZWZyZXNoRGlzcGxheSgpO1xuICB9XG5cbiAgc2VsZWN0RGF0ZSh0aW1lc3RhbXA6IG51bWJlcikge1xuICAgIGNvbnN0IG1vbWVudERhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuXG4gICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgdGhpcy5oYW5kbGVSYW5nZVNlbGVjdChtb21lbnREYXRlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVNlbGVjdChtb21lbnREYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJhbmdlU2VsZWN0KHNlbGVjdGVkRGF0ZTogbW9tZW50Lk1vbWVudCkge1xuICAgIGNvbnN0IGlubmVyRGF0ZSA9ICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSk7XG5cbiAgICAvLyBGaXJzdCBzZWxlY3Rpb25cbiAgICBpZiAoIWlubmVyRGF0ZS5mcm9tKSB7XG4gICAgICBpbm5lckRhdGUuZnJvbSA9IHRoaXMuZ2V0RGF5RnJvbU1vbWVudChzZWxlY3RlZERhdGUpO1xuICAgIH1cblxuICAgIC8vIFNlY29uZCBzZWxlY3Rpb25cbiAgICBlbHNlIGlmICghaW5uZXJEYXRlLnRvKSB7XG4gICAgICBjb25zdCBhY3R1YWxGcm9tID0gbW9tZW50LnVuaXgoaW5uZXJEYXRlLmZyb20udGltZXN0YW1wKTtcblxuICAgICAgLy8gU2VsZWN0ZWQgZGF0ZSBpcyBwYXN0IHRoZSBwcmV2aW91cyBzZWxlY3RlZCBkYXRlXG4gICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzQmVmb3JlKGFjdHVhbEZyb20sICdkYXknKSkge1xuICAgICAgICBpbm5lckRhdGUudG8gPSBpbm5lckRhdGUuZnJvbTtcbiAgICAgICAgaW5uZXJEYXRlLmZyb20gPSB0aGlzLmdldERheUZyb21Nb21lbnQoc2VsZWN0ZWREYXRlKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VsZWN0ZWQgZGF0ZSBpcyBmdXR1cmUgb2YgdGhlIHByZXZpb3VzIHNlbGVjdGVkIGRhdGVcbiAgICAgIGVsc2Uge1xuICAgICAgICBpbm5lckRhdGUudG8gPSB0aGlzLmdldERheUZyb21Nb21lbnQoc2VsZWN0ZWREYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWxlY3Rpb24gd2hlbiBib3RoIGZyb20gYW5kIHRvIGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgZWxzZSB7XG4gICAgICBpbm5lckRhdGUuZnJvbSA9IHRoaXMuZ2V0RGF5RnJvbU1vbWVudChzZWxlY3RlZERhdGUpO1xuICAgICAgaW5uZXJEYXRlLnRvID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFJhbmdlKGlubmVyRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRSYW5nZShyYW5nZTogRGF5UmFuZ2UpIHtcbiAgICBjb25zdCBuZXdSYW5nZTogRGF0ZVJhbmdlID0ge307XG4gICAgbmV3UmFuZ2UubGFiZWwgPSBQZXJpb2RMYWJlbC5DVVNUT01fUEVSSU9EO1xuXG4gICAgaWYgKHJhbmdlLmZyb20pIHtcbiAgICAgIG5ld1JhbmdlLmZyb20gPSB0aGlzLmdldERhdGVGcm9tRGF5KHJhbmdlLmZyb20pO1xuXG4gICAgICBpZiAocmFuZ2UudG8pIG5ld1JhbmdlLnRvID0gZm9ybWF0VG8obW9tZW50LnVuaXgocmFuZ2UudG8udGltZXN0YW1wKSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQobmV3UmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVTZWxlY3QobW9tZW50RGF0ZTogbW9tZW50Lk1vbWVudCkge1xuICAgIHRoaXMuaW5uZXJEYXRlID0gdGhpcy5nZXREYXlGcm9tTW9tZW50KG1vbWVudERhdGUpO1xuICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG1vbWVudERhdGUuZm9ybWF0KERFRkFVTFRfREFURV9GT1JNQVQpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Z1dHVyZURhdGUodGltZXN0YW1wOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZUZ1dHVyZURhdGUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpO1xuXG4gICAgcmV0dXJuIGRhdGUuaXNBZnRlcihub3cpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXItY29udGFpbmVyXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJtb250aC1zZWxlY3RvclwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0b3ItYnV0dG9uXCIgKGNsaWNrKT1cImluY3JlbWVudE1vbnRoKC0xKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uXCI+Y2hldnJvbl9sZWZ0PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJtb250aC15ZWFyLWRpc3BsYXlcIiBkYXRhLXRlc3RpZD1cIm1vbnRoLXllYXItZGlzcGxheVwiPnt7IG1vbnRoIH19IHt7IHllYXIgfX08L3NwYW4+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2VsZWN0b3ItYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlTmV4dE1vbnRoXCJcbiAgICAgIChjbGljayk9XCJpbmNyZW1lbnRNb250aCgxKVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uXCI+Y2hldnJvbl9yaWdodDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9oZWFkZXI+XG5cbiAgPG1haW4gY2xhc3M9XCJjYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheXMtaGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIndlZWstZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXNcIj57eyB3ZWVrRGF5Lm5hbWUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGF5cy1ibG9ja1wiIGRhdGEtdGVzdGlkPVwiZGF5cy1ibG9ja1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXkudGltZXN0YW1wKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXkuaXNGdXR1cmVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2RheSc6IHRydWUsXG4gICAgICAgICAgJ2Fub3RoZXItbW9udGgnOiBtb250aE51bWJlciAhPSBkYXkubW9udGgsXG4gICAgICAgICAgJ3NlbGVjdGVkJzogaXNEYXlTZWxlY3RlZChkYXkpLFxuICAgICAgICAgICdmaXJzdCc6IGlzRmlyc3RTZWxlY3RlZERheShkYXkpLFxuICAgICAgICAgICdsYXN0JzogaXNMYXN0U2VsZWN0ZWREYXkoZGF5KSxcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIHt7IGRheS5kYXkgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNrc3VpdGUtY2l0cnVzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNhbGVuZGFyL2RhdGUtcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFrQzVCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDO0FBQzFELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDbEcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQU85RixNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBTVcsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRXRDLGVBQVUsR0FBa0MsSUFBSSxZQUFZ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QUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxTQUFpQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwRTtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0UlUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsNk9DNUN4Qyw2dUNBd0NBOzsyRkRJYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCOzhCQUszQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCB0eXBlIFBlcmlvZExhYmVsID1cbiAgICAnVE9EQVknXG4gIHwgJ1lFU1RFUkRBWSdcbiAgfCAnTEFTVF83X0RBWVMnXG4gIHwgJ0xBU1RfMzBfREFZUydcbiAgfCAnVEhJU19NT05USCdcbiAgfCAnTEFTVF9RVUFSVEVSJ1xuICB8ICdDVVNUT01fUEVSSU9EJ1xuICB8IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBEYXkge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgZGF5OiBzdHJpbmc7XG4gIG1vbnRoOiBudW1iZXI7XG4gIHdlZWtEYXk6IG51bWJlcjtcbiAgZm9ybWF0dGVkOiBzdHJpbmc7XG4gIGlzRnV0dXJlOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXZWVrRGF5IHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nOyBsYWJlbD86IFBlcmlvZExhYmVsOyB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyVmFsdWUgPSBzdHJpbmcgfCBEYXRlUmFuZ2U7XG5cbnR5cGUgRGF5UmFuZ2UgPSB7IGZyb20/OiBEYXk7IHRvPzogRGF5OyBsYWJlbD86IHN0cmluZzsgfTtcblxudHlwZSBEYXRlUGlja2VySW5uZXJWYWx1ZSA9IERheSB8IERheVJhbmdlO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLUREVEhIOm1tOnNzWic7XG5leHBvcnQgY29uc3QgZm9ybWF0RnJvbSA9IChmcm9tOiBtb21lbnQuTW9tZW50KSA9PiBmcm9tLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKVxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvID0gKGZyb206IG1vbWVudC5Nb21lbnQpID0+IGZyb20uZW5kT2YoJ2RheScpLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc2stZGF0ZS1waWNrZXItY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzUmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZUZ1dHVyZURhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVRvZGF5QW5kRnV0dXJlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRhdGUhOiBEYXRlUGlja2VyVmFsdWU7XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZVBpY2tlclZhbHVlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVBpY2tlclZhbHVlPigpO1xuXG4gIHByaXZhdGUgaW5uZXJEYXRlITogRGF0ZVBpY2tlcklubmVyVmFsdWU7XG4gIHByaXZhdGUgZGlzcGxheURhdGUhOiBtb21lbnQuTW9tZW50O1xuICBwcml2YXRlIGZpcnN0RGF5T2ZXZWVrITogbnVtYmVyO1xuICBwcml2YXRlIF93ZWVrRGF5czogQXJyYXk8V2Vla0RheT4gPSBbXTtcbiAgcHJpdmF0ZSBfZGF5czogQXJyYXk8RGF5PiA9IFtdO1xuXG4gIGdldCBkYXlzKCk6IEFycmF5PERheT4ge1xuICAgIHJldHVybiB0aGlzLl9kYXlzXG4gIH1cblxuICBnZXQgbW9udGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGF0ZS5mb3JtYXQoJ01NTU0nKTtcbiAgfVxuXG4gIGdldCBtb250aE51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlEYXRlLm1vbnRoKCk7XG4gIH1cblxuICBnZXQgeWVhcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlEYXRlLmZvcm1hdCgnWVlZWScpO1xuICB9XG5cbiAgZ2V0IHdlZWtEYXlzKCk6IEFycmF5PFdlZWtEYXk+IHtcbiAgICByZXR1cm4gdGhpcy5fd2Vla0RheXM7XG4gIH1cblxuICBpc0RheVNlbGVjdGVkKGRheTogRGF5KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuXG4gICAgICBjb25zdCBmcm9tID0gKHRoaXMuaW5uZXJEYXRlIGFzIERheVJhbmdlKS5mcm9tPy50aW1lc3RhbXA7XG4gICAgICBjb25zdCB0byA9ICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkudG8/LnRpbWVzdGFtcDtcblxuICAgICAgaWYgKCFmcm9tKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCF0bykge1xuICAgICAgICByZXR1cm4gZGF5LnRpbWVzdGFtcCA9PT0gZnJvbTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRheS50aW1lc3RhbXAgPj0gZnJvbSAmJiBkYXkudGltZXN0YW1wIDw9IHRvO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5pbm5lckRhdGUgYXMgRGF5KT8udGltZXN0YW1wID09PSBkYXkudGltZXN0YW1wO1xuICB9XG5cbiAgaXNGaXJzdFNlbGVjdGVkRGF5KGRheTogRGF5KSB7XG4gICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgcmV0dXJuIGRheS5mb3JtYXR0ZWQgPT09ICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkuZnJvbT8uZm9ybWF0dGVkO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5pbm5lckRhdGUgYXMgRGF5KS5mb3JtYXR0ZWQgPT09IGRheS5mb3JtYXR0ZWQ7XG4gIH1cblxuICBpc0xhc3RTZWxlY3RlZERheShkYXk6IERheSkge1xuICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgIHJldHVybiBkYXkuZm9ybWF0dGVkID09PSAoKHRoaXMuaW5uZXJEYXRlIGFzIERheVJhbmdlKS50bz8uZm9ybWF0dGVkIHx8ICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkuZnJvbT8uZm9ybWF0dGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuaW5uZXJEYXRlIGFzIERheSkuZm9ybWF0dGVkID09PSBkYXkuZm9ybWF0dGVkO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hc3NpZ25Jbml0aWFsVmFsdWVzKCk7XG4gICAgdGhpcy5yZWZyZXNoRGlzcGxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NpZ25Jbml0aWFsVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgIGNvbnN0IHJlY2VpdmVkRGF0ZSA9IHRoaXMuZGF0ZSBhcyBEYXRlUmFuZ2U7XG4gICAgICBpZiAocmVjZWl2ZWREYXRlLmZyb20gJiYgcmVjZWl2ZWREYXRlLnRvKSB7XG4gICAgICAgICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkgPSB7XG4gICAgICAgICAgZnJvbTogdGhpcy5nZXREYXlGcm9tU3RyaW5nKHJlY2VpdmVkRGF0ZS5mcm9tKSxcbiAgICAgICAgICB0bzogdGhpcy5nZXREYXlGcm9tU3RyaW5nKHJlY2VpdmVkRGF0ZS50byksXG4gICAgICAgICAgbGFiZWw6IHJlY2VpdmVkRGF0ZS5sYWJlbCB8fCAnQ1VTVE9NX1BFUklPRCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkgPSB7XG4gICAgICAgICAgbGFiZWw6ICdDVVNUT01fUEVSSU9EJ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwbGF5RGF0ZSA9IG1vbWVudC51bml4KCh0aGlzLmlubmVyRGF0ZSBhcyBEYXlSYW5nZSkuZnJvbT8udGltZXN0YW1wIHx8IChEYXRlLm5vdygpIC8gMTAwMCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuaW5uZXJEYXRlID0gdGhpcy5nZXREYXlGcm9tU3RyaW5nKHRoaXMuZGF0ZSBhcyBzdHJpbmcpO1xuICAgICAgdGhpcy5kaXNwbGF5RGF0ZSA9IG1vbWVudC51bml4KHRoaXMuaW5uZXJEYXRlLnRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgdGhpcy5maXJzdERheU9mV2VlayA9IHRoaXMuZGlzcGxheURhdGUuY2xvbmUoKS5zdGFydE9mKCd3ZWVrJykuZGF5KCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEaXNwbGF5KCkge1xuICAgIHRoaXMuYnVpbGRXZWVrRGF5cygpO1xuICAgIHRoaXMuYnVpbGREYXlzKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkV2Vla0RheXMoKSB7XG4gICAgY29uc3Qgc3RhcnRPZldlZWsgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuc3RhcnRPZignd2VlaycpO1xuICAgIGNvbnN0IGVuZE9mV2VlayA9IHRoaXMuZGlzcGxheURhdGUuY2xvbmUoKS5lbmRPZignd2VlaycpO1xuICAgIHRoaXMuX3dlZWtEYXlzID0gW107XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLl93ZWVrRGF5cy5wdXNoKHtcbiAgICAgICAgbmFtZTogc3RhcnRPZldlZWsuZm9ybWF0KCdkZGQnKVxuICAgICAgfSk7XG5cbiAgICAgIHN0YXJ0T2ZXZWVrLmFkZCgxLCAnZGF5Jyk7XG4gICAgfVxuICAgIHdoaWxlIChzdGFydE9mV2Vlay5pc0JlZm9yZShlbmRPZldlZWspKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREYXlzKCkge1xuICAgIGxldCBzdGFydERheSA9IHRoaXMuZGlzcGxheURhdGUuY2xvbmUoKS5zdGFydE9mKCdtb250aCcpO1xuICAgIGxldCBlbmREYXkgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuZW5kT2YoJ21vbnRoJyk7XG5cbiAgICBsZXQgZGF5c09mUGFzdE1vbnRoOiBBcnJheTxEYXk+ID0gW107XG4gICAgbGV0IGRheXNPZlRoaXNNb250aDogQXJyYXk8RGF5PiA9IFtdO1xuICAgIGxldCBkYXlzT2ZOZXh0TW9udGg6IEFycmF5PERheT4gPSBbXTtcblxuICAgIC8vIEJ1aWxkcyB0aGlzIG1vbnRoIGRheXNcbiAgICBkYXlzT2ZUaGlzTW9udGggPSB0aGlzLmdldERheXNCZXR3ZWVuKHN0YXJ0RGF5LCBlbmREYXkpO1xuXG4gICAgLy8gQnVpbGRzIHBhc3QgbW9udGggZGF5c1xuICAgIGlmIChkYXlzT2ZUaGlzTW9udGhbMF0ud2Vla0RheSAhPT0gdGhpcy5maXJzdERheU9mV2Vlaykge1xuICAgICAgc3RhcnREYXkgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3RhcnREYXkgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ21vbnRoJykuZW5kT2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpO1xuICAgIH1cbiAgICBlbmREYXkgPSBzdGFydERheS5jbG9uZSgpLmVuZE9mKCdtb250aCcpO1xuICAgIGRheXNPZlBhc3RNb250aCA9IHRoaXMuZ2V0RGF5c0JldHdlZW4oc3RhcnREYXksIGVuZERheSk7XG5cbiAgICAvLyBCdWlsZHMgbmV4dCBtb250aCBkYXlzXG4gICAgc3RhcnREYXkgPSB0aGlzLmRpc3BsYXlEYXRlLmNsb25lKCkuYWRkKDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJyk7XG4gICAgZW5kRGF5ID0gc3RhcnREYXkuY2xvbmUoKS5lbmRPZignd2VlaycpO1xuICAgIGRheXNPZk5leHRNb250aCA9IHRoaXMuZ2V0RGF5c0JldHdlZW4oc3RhcnREYXksIGVuZERheSk7XG5cbiAgICB0aGlzLl9kYXlzID0gW1xuICAgICAgLi4uZGF5c09mUGFzdE1vbnRoLFxuICAgICAgLi4uZGF5c09mVGhpc01vbnRoLFxuICAgICAgLi4uZGF5c09mTmV4dE1vbnRoLFxuICAgIF07XG5cbiAgICAvLyBJZiBjYWxlbmRhciBpc24ndCBjb21wbGV0ZSB5ZXQgKGFsbCA3IGNvbHVtbnMgYW5kIDYgcm93cyBhcmUgZnVsbCksIGFkZHMgYW5vdGhlciB3ZWVrIHRvIGNvbXBsZXRlIHRoZSBjYWxlbmRhclxuICAgIGlmICh0aGlzLl9kYXlzLmxlbmd0aCA8IDQyKSB7XG4gICAgICBlbmREYXkgPSBlbmREYXkuY2xvbmUoKS5hZGQoMSwgJ2RheScpLmVuZE9mKCd3ZWVrJyk7XG4gICAgICBzdGFydERheSA9IGVuZERheS5jbG9uZSgpLnN0YXJ0T2YoJ3dlZWsnKTtcbiAgICAgIHRoaXMuX2RheXMucHVzaCguLi50aGlzLmdldERheXNCZXR3ZWVuKHN0YXJ0RGF5LCBlbmREYXkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERheXNCZXR3ZWVuKHN0YXJ0OiBtb21lbnQuTW9tZW50LCBlbmQ6IG1vbWVudC5Nb21lbnQpOiBBcnJheTxEYXk+IHtcbiAgICBzdGFydCA9IHN0YXJ0LmNsb25lKCk7XG4gICAgZW5kID0gZW5kLmNsb25lKCk7XG5cbiAgICBjb25zdCBkYXlzID0gW107XG4gICAgZG8ge1xuICAgICAgZGF5cy5wdXNoKHRoaXMuZ2V0RGF5RnJvbU1vbWVudChzdGFydCkpO1xuXG4gICAgICBzdGFydC5hZGQoMSwgJ2RheScpO1xuICAgIH1cbiAgICB3aGlsZSAoc3RhcnQuaXNCZWZvcmUoZW5kKSk7XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG4gIGdldERheUZyb21Nb21lbnQoZGF5OiBtb21lbnQuTW9tZW50KTogRGF5IHtcbiAgICBkYXkgPSBkYXkuY2xvbmUoKS5zdGFydE9mKCdkYXknKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IGRheS51bml4KCksXG4gICAgICBkYXk6IGRheS5mb3JtYXQoJ0QnKSxcbiAgICAgIG1vbnRoOiBkYXkubW9udGgoKSxcbiAgICAgIHdlZWtEYXk6IGRheS5kYXkoKSxcbiAgICAgIGZvcm1hdHRlZDogZGF5LmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKSxcbiAgICAgIGlzRnV0dXJlOiB0aGlzLmlzRnV0dXJlRGF0ZShkYXkudW5peCgpKSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLnNob3VsZERpc2FibGVEYXRlKGRheS51bml4KCkpLFxuICAgIH1cbiAgfVxuXG4gIGdldERheUZyb21TdHJpbmcoZGF0ZTogc3RyaW5nKTogRGF5IHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXlGcm9tTW9tZW50KG1vbWVudChkYXRlKSk7XG4gIH1cblxuICBnZXREYXRlRnJvbURheShkYXk6IERheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vbWVudC51bml4KGRheS50aW1lc3RhbXApLnN0YXJ0T2YoJ2RheScpLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKTtcbiAgfVxuXG4gIGluY3JlbWVudE1vbnRoKGFtb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5kaXNwbGF5RGF0ZS5hZGQoYW1vdW50LCAnbW9udGgnKTtcbiAgICB0aGlzLnJlZnJlc2hEaXNwbGF5KCk7XG4gIH1cblxuICBzZWxlY3REYXRlKHRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgY29uc3QgbW9tZW50RGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG5cbiAgICBpZiAodGhpcy5pc1JhbmdlKSByZXR1cm4gdGhpcy5oYW5kbGVSYW5nZVNlbGVjdChtb21lbnREYXRlKTtcbiAgICB0aGlzLmhhbmRsZVNpbmdsZVNlbGVjdChtb21lbnREYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmFuZ2VTZWxlY3Qoc2VsZWN0ZWREYXRlOiBtb21lbnQuTW9tZW50KSB7XG4gICAgY29uc3QgaW5uZXJEYXRlID0gKHRoaXMuaW5uZXJEYXRlIGFzIERheVJhbmdlKTtcblxuICAgIGlmICghaW5uZXJEYXRlLmZyb20pIHtcbiAgICAgIC8vIEZpcnN0IHNlbGVjdGlvblxuICAgICAgaW5uZXJEYXRlLmZyb20gPSB0aGlzLmdldERheUZyb21Nb21lbnQoc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2UgaWYgKCFpbm5lckRhdGUudG8pIHtcbiAgICAgIC8vIFNlY29uZCBzZWxlY3Rpb25cbiAgICAgIGNvbnN0IGFjdHVhbEZyb20gPSBtb21lbnQudW5peChpbm5lckRhdGUuZnJvbS50aW1lc3RhbXApO1xuXG4gICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzQmVmb3JlKGFjdHVhbEZyb20sICdkYXknKSkge1xuICAgICAgICAvLyBTZWxlY3RlZCBkYXRlIGlzIHBhc3QgdGhlIHByZXZpb3VzIHNlbGVjdGVkIGRhdGVcbiAgICAgICAgaW5uZXJEYXRlLnRvID0gaW5uZXJEYXRlLmZyb207XG4gICAgICAgIGlubmVyRGF0ZS5mcm9tID0gdGhpcy5nZXREYXlGcm9tTW9tZW50KHNlbGVjdGVkRGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZWxlY3RlZCBkYXRlIGlzIGZ1dHVyZSBvZiB0aGUgcHJldmlvdXMgc2VsZWN0ZWQgZGF0ZVxuICAgICAgICBpbm5lckRhdGUudG8gPSB0aGlzLmdldERheUZyb21Nb21lbnQoc2VsZWN0ZWREYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBTZWxlY3Rpb24gd2hlbiBib3RoIGZyb20gYW5kIHRvIGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICBpbm5lckRhdGUuZnJvbSA9IHRoaXMuZ2V0RGF5RnJvbU1vbWVudChzZWxlY3RlZERhdGUpO1xuICAgICAgaW5uZXJEYXRlLnRvID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFJhbmdlKGlubmVyRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRSYW5nZShyYW5nZTogRGF5UmFuZ2UpIHtcbiAgICBjb25zdCBuZXdSYW5nZTogRGF0ZVJhbmdlID0ge307XG4gICAgbmV3UmFuZ2UubGFiZWwgPSAnQ1VTVE9NX1BFUklPRCc7XG5cbiAgICBpZiAocmFuZ2UuZnJvbSkge1xuICAgICAgbmV3UmFuZ2UuZnJvbSA9IHRoaXMuZ2V0RGF0ZUZyb21EYXkocmFuZ2UuZnJvbSk7XG5cbiAgICAgIGlmIChyYW5nZS50bykgbmV3UmFuZ2UudG8gPSBmb3JtYXRUbyhtb21lbnQudW5peChyYW5nZS50by50aW1lc3RhbXApKTtcbiAgICAgIGVsc2UgbmV3UmFuZ2UudG8gPSBmb3JtYXRUbyhtb21lbnQudW5peChyYW5nZS5mcm9tLnRpbWVzdGFtcCkpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG5ld1JhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2luZ2xlU2VsZWN0KG1vbWVudERhdGU6IG1vbWVudC5Nb21lbnQpIHtcbiAgICB0aGlzLmlubmVyRGF0ZSA9IHRoaXMuZ2V0RGF5RnJvbU1vbWVudChtb21lbnREYXRlKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChtb21lbnREYXRlLmZvcm1hdChERUZBVUxUX0RBVEVfRk9STUFUKSk7XG4gIH1cblxuICBwdWJsaWMgaXNGdXR1cmVEYXRlKHRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgY29uc3Qgbm93ID0gbW9tZW50KCk7XG5cbiAgICByZXR1cm4gZGF0ZS5pc0FmdGVyKG5vdyk7XG4gIH1cblxuICBwdWJsaWMgaXNUb2RheURhdGUodGltZXN0YW1wOiBudW1iZXIpIHtcbiAgICBjb25zdCBkYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICBjb25zdCBub3cgPSBtb21lbnQoKTtcblxuICAgIHJldHVybiBkYXRlLmlzU2FtZShub3csICdkYXknKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG91bGREaXNhYmxlRGF0ZSh0aW1lc3RhbXA6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVUb2RheUFuZEZ1dHVyZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNGdXR1cmVEYXRlKHRpbWVzdGFtcCkgfHwgdGhpcy5pc1RvZGF5RGF0ZSh0aW1lc3RhbXApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVGdXR1cmVEYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0Z1dHVyZURhdGUodGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jYWxlbmRhci1jb250YWluZXJcIj5cbiAgPGhlYWRlciBjbGFzcz1cIm1vbnRoLXNlbGVjdG9yXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWxlY3Rvci1idXR0b25cIiAoY2xpY2spPVwiaW5jcmVtZW50TW9udGgoLTEpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb25cIj5jaGV2cm9uX2xlZnQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgICA8c3BhbiBjbGFzcz1cIm1vbnRoLXllYXItZGlzcGxheVwiIGRhdGEtdGVzdGlkPVwibW9udGgteWVhci1kaXNwbGF5XCI+e3sgbW9udGggfX0ge3sgeWVhciB9fTwvc3Bhbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJzZWxlY3Rvci1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cImluY3JlbWVudE1vbnRoKDEpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb25cIj5jaGV2cm9uX3JpZ2h0PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2hlYWRlcj5cblxuICA8bWFpbiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgPGRpdiBjbGFzcz1cIndlZWstZGF5cy1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1kYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5c1wiPnt7IHdlZWtEYXkubmFtZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkYXlzLWJsb2NrXCIgZGF0YS10ZXN0aWQ9XCJkYXlzLWJsb2NrXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheS50aW1lc3RhbXApXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRheS5kaXNhYmxlZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnZGF5JzogdHJ1ZSxcbiAgICAgICAgICAnYW5vdGhlci1tb250aCc6IG1vbnRoTnVtYmVyICE9IGRheS5tb250aCxcbiAgICAgICAgICAnc2VsZWN0ZWQnOiBpc0RheVNlbGVjdGVkKGRheSksXG4gICAgICAgICAgJ2ZpcnN0JzogaXNGaXJzdFNlbGVjdGVkRGF5KGRheSksXG4gICAgICAgICAgJ2xhc3QnOiBpc0xhc3RTZWxlY3RlZERheShkYXkpLFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5LmRheSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWFpbj5cbjwvZGl2PlxuIl19
|