@firestitch/filter 18.2.83 → 18.2.85
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/app/components/filter/filter.component.d.ts +0 -12
- package/app/components/filter-chips/filter-chips.component.d.ts +7 -1
- package/app/components/filters-item/range/range.component.d.ts +1 -0
- package/app/components/filters-item/select/select.component.d.ts +2 -5
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/models/items/base-item.d.ts +2 -1
- package/esm2022/app/components/filter/filter.component.mjs +4 -31
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +57 -11
- package/esm2022/app/components/filters-item/date/date.component.mjs +3 -3
- package/esm2022/app/components/filters-item/range/range.component.mjs +29 -10
- package/esm2022/app/components/filters-item/select/select.component.mjs +6 -17
- package/esm2022/app/models/items/base-item.mjs +13 -10
- package/esm2022/app/models/items/keyword-item.mjs +2 -2
- package/esm2022/app/models/items/text-item.mjs +2 -2
- package/fesm2022/firestitch-filter.mjs +109 -82
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsyncPipe } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, QueryList, ViewChildren, inject } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, QueryList, ViewChildren, inject, signal } from '@angular/core';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
5
5
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
@@ -10,7 +10,7 @@ import { FsChipComponent, FsChipModule } from '@firestitch/chip';
|
|
|
10
10
|
import { FsButtonDirective } from '@firestitch/form';
|
|
11
11
|
import { FsMessage } from '@firestitch/message';
|
|
12
12
|
import { FsSelectButtonModule } from '@firestitch/selectbutton';
|
|
13
|
-
import { BehaviorSubject, delay, take, tap } from 'rxjs';
|
|
13
|
+
import { BehaviorSubject, delay, merge, skip, take, tap } from 'rxjs';
|
|
14
14
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
15
|
import { ItemType } from '../../enums';
|
|
16
16
|
import { FILTER_DRAWER_DATA } from '../../injectors';
|
|
@@ -26,6 +26,8 @@ export class FsFilterChipsComponent {
|
|
|
26
26
|
chips;
|
|
27
27
|
ItemType = ItemType;
|
|
28
28
|
secondaryItems = [];
|
|
29
|
+
moreFilterItems = signal([]);
|
|
30
|
+
clearFiltersVisible = signal(false);
|
|
29
31
|
_filterController = inject(FilterController);
|
|
30
32
|
_dialog = inject(MatDialog);
|
|
31
33
|
_message = inject(FsMessage);
|
|
@@ -37,8 +39,7 @@ export class FsFilterChipsComponent {
|
|
|
37
39
|
_elementRef = inject(ElementRef);
|
|
38
40
|
_hasSecondaryValue$ = new BehaviorSubject(false);
|
|
39
41
|
get items() {
|
|
40
|
-
return this._filterController.items
|
|
41
|
-
.filter((item) => !item.isTypeKeyword);
|
|
42
|
+
return this._filterController.items;
|
|
42
43
|
}
|
|
43
44
|
addFilter(event) {
|
|
44
45
|
const item = event.value;
|
|
@@ -49,10 +50,6 @@ export class FsFilterChipsComponent {
|
|
|
49
50
|
}), takeUntilDestroyed(this._destroyRef))
|
|
50
51
|
.subscribe();
|
|
51
52
|
}
|
|
52
|
-
get disabledItems() {
|
|
53
|
-
return this.items
|
|
54
|
-
.filter((item) => !item.secondaryVisible && !item.hasValue && !item.primary && item.visible);
|
|
55
|
-
}
|
|
56
53
|
get hasSecondaryValue$() {
|
|
57
54
|
return this._hasSecondaryValue$.asObservable();
|
|
58
55
|
}
|
|
@@ -67,6 +64,8 @@ export class FsFilterChipsComponent {
|
|
|
67
64
|
this.secondaryItems = this.items
|
|
68
65
|
.filter((item) => !item.primary);
|
|
69
66
|
this._initHasSecondaryValue();
|
|
67
|
+
this._initMoreFilterItems();
|
|
68
|
+
this._initClearFiltersVisible();
|
|
70
69
|
}
|
|
71
70
|
clear() {
|
|
72
71
|
this._filterController.items
|
|
@@ -177,6 +176,9 @@ export class FsFilterChipsComponent {
|
|
|
177
176
|
item.clear();
|
|
178
177
|
}
|
|
179
178
|
}
|
|
179
|
+
removeItem(item) {
|
|
180
|
+
item.secondaryHide();
|
|
181
|
+
}
|
|
180
182
|
_attachContainer(overlayRef, item, name) {
|
|
181
183
|
const injector = this._createInjector(item, name);
|
|
182
184
|
const containerPortal = new ComponentPortal(FilterItemDialogComponent, undefined, injector);
|
|
@@ -192,6 +194,50 @@ export class FsFilterChipsComponent {
|
|
|
192
194
|
parent: this._injector,
|
|
193
195
|
});
|
|
194
196
|
}
|
|
197
|
+
_initMoreFilterItems() {
|
|
198
|
+
merge(...this.items
|
|
199
|
+
.reduce((accum, item) => {
|
|
200
|
+
return [
|
|
201
|
+
...accum,
|
|
202
|
+
item.visible$
|
|
203
|
+
.pipe(skip(1)),
|
|
204
|
+
item.secondaryVisible$
|
|
205
|
+
.pipe(skip(1)),
|
|
206
|
+
];
|
|
207
|
+
}, []))
|
|
208
|
+
.pipe(tap(() => {
|
|
209
|
+
this._updateMoreFilterItems();
|
|
210
|
+
}), takeUntilDestroyed(this._destroyRef))
|
|
211
|
+
.subscribe();
|
|
212
|
+
this._updateMoreFilterItems();
|
|
213
|
+
}
|
|
214
|
+
_initClearFiltersVisible() {
|
|
215
|
+
merge(...this.items
|
|
216
|
+
.reduce((accum, item) => {
|
|
217
|
+
return [
|
|
218
|
+
...accum,
|
|
219
|
+
item.visible$
|
|
220
|
+
.pipe(skip(1)),
|
|
221
|
+
item.hasValue$
|
|
222
|
+
.pipe(skip(1)),
|
|
223
|
+
];
|
|
224
|
+
}, []))
|
|
225
|
+
.pipe(tap(() => {
|
|
226
|
+
this._updateClearItems();
|
|
227
|
+
}), takeUntilDestroyed(this._destroyRef))
|
|
228
|
+
.subscribe();
|
|
229
|
+
this._updateClearItems();
|
|
230
|
+
}
|
|
231
|
+
_updateMoreFilterItems() {
|
|
232
|
+
this.moreFilterItems
|
|
233
|
+
.set(this.items
|
|
234
|
+
.filter((item) => !item.primary && item.visible && !item.secondaryVisible));
|
|
235
|
+
}
|
|
236
|
+
_updateClearItems() {
|
|
237
|
+
this.clearFiltersVisible
|
|
238
|
+
.set(this.items
|
|
239
|
+
.some((item) => item.clearable && item.hasValue && item.visible));
|
|
240
|
+
}
|
|
195
241
|
_initHasSecondaryValue() {
|
|
196
242
|
this._hasSecondaryValue$.next(this.hasSecondaryValue);
|
|
197
243
|
this._filterController.change$
|
|
@@ -201,7 +247,7 @@ export class FsFilterChipsComponent {
|
|
|
201
247
|
.subscribe();
|
|
202
248
|
}
|
|
203
249
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
204
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)
|
|
250
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeItem(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of moreFilterItems(); track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n }\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (clearFiltersVisible()) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i2.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
205
251
|
}
|
|
206
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
|
|
207
253
|
type: Component,
|
|
@@ -214,9 +260,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
214
260
|
MatButtonModule,
|
|
215
261
|
FsButtonDirective,
|
|
216
262
|
FormsModule,
|
|
217
|
-
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)
|
|
263
|
+
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeItem(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of moreFilterItems(); track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n }\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (clearFiltersVisible()) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
|
|
218
264
|
}], propDecorators: { chips: [{
|
|
219
265
|
type: ViewChildren,
|
|
220
266
|
args: [FsChipComponent]
|
|
221
267
|
}] } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFxQixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxL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Wjs4QkFLTSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25Jbml0LCBRdWVyeUxpc3QsIFN0YXRpY1Byb3ZpZGVyLCBWaWV3Q2hpbGRyZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRklMVEVSX0RSQVdFUl9EQVRBIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci1pdGVtLWRpYWxvZyc7XG5pbXBvcnQgeyBGc0ZpbHRlclNhdmVkRmlsdGVyTWFuYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1jaGlwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItY2hpcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgRnNDaGlwTW9kdWxlLFxuICAgIE1hdFNlbGVjdCxcbiAgICBNYXRPcHRpb24sXG4gICAgRnNTZWxlY3RCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkcmVuKEZzQ2hpcENvbXBvbmVudCkgXG4gIHB1YmxpYyBjaGlwczogUXVlcnlMaXN0PEZzQ2hpcENvbXBvbmVudD47XG5cbiAgcHVibGljIEl0ZW1UeXBlID0gSXRlbVR5cGU7XG4gIHB1YmxpYyBzZWNvbmRhcnlJdGVtczogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10gPSBbXTtcblxuICBwcml2YXRlIF9maWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9kaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF9zYXZlZEZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoU2F2ZWRGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9oYXNTZWNvbmRhcnlWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1R5cGVLZXl3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWx0ZXIoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xuICAgIGNvbnN0IGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiA9IGV2ZW50LnZhbHVlO1xuICAgIGl0ZW0uc2Vjb25kYXJ5U2hvdygpO1xuXG4gICAgdGhpcy5jaGlwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZGVsYXkoMTAwKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5DaGlwKGl0ZW0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZEl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zZWNvbmRhcnlWaXNpYmxlICYmICFpdGVtLmhhc1ZhbHVlICYmICFpdGVtLnByaW1hcnkgJiYgaXRlbS52aXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlckNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0ucHJpbWFyeSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnByaW1hcnkpO1xuXG4gICAgdGhpcy5faW5pdEhhc1NlY29uZGFyeVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5jbGVhcmFibGUpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgICAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmNsZWFyKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UoKTtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9wZW5DaGlwKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1maWx0ZXItaXRlbT1cIiR7aXRlbS5uYW1lfVwiXWApO1xuXG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogZWwub2Zmc2V0SGVpZ2h0ICsgMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oZWwpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgIFxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwYW5lbENsYXNzOiAnZnMtc2lkZW5hdi1tZW51LW92ZXJsYXktcGFuZScsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fYXR0YWNoQ29udGFpbmVyKHRoaXMuX292ZXJsYXlSZWYsIGl0ZW0sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldE5lc3RlZEVsZW1lbnQoZWw6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBpZihlbCkge1xuICAgICAgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRFbGVtZW50KGVsLnBhcmVudEVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgXG4gIHB1YmxpYyBzYXZlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU2F2ZWRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmNyZWF0ZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlXG4gICAgICAgICAgICAuc3VjY2VzcyhgQ3JlYXRlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyXG4gICAgICAuc2F2ZUFzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH0gXG5cbiAgcHVibGljIG1hbmFnZVNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDaGlwKFxuICAgIGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgXG4gICAgY2hpcDogeyBuYW1lPzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0sXG4gICkge1xuICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgfVxuXG4gICAgaWYoY2hpcC5uYW1lKSB7XG4gICAgICBpdGVtLmNsZWFyQnlOYW1lKGNoaXAubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpICYmIChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgQGZvciAoY2hpcCBvZiBpdGVtLmNoaXBzJCB8IGFzeW5jOyB0cmFjayBjaGlwLmxhYmVsKSB7XG4gICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0sIGNoaXAubmFtZSlcIj5cbiAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX06XG4gICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgW2ljb25dPVwiJ2NhbmNlbF9jaXJjbGVfb3V0bGluZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXAoaXRlbSwgY2hpcClcIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoKGl0ZW0udmlzaWJsZSQgfCBhc3luYykgJiYgKGl0ZW0ubm90VmFsdWUkIHwgYXN5bmMpICYmIChpdGVtLnNlY29uZGFyeVZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICA8ZnMtY2hpcFxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0pXCJcbiAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiPlxuICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgIFtpY29uXT1cIidhZGRfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnMtY2hpcD5cbiAgICB9XG4gIH1cbiAgPG1hdC1zZWxlY3RcbiAgICAgIGNsYXNzPVwibW9yZS1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgZnNTZWxlY3RCdXR0b25cbiAgICAgIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIlxuICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ01vcmUgZmlsdGVycydcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgQGZvciAoaXRlbSBvZiBkaXNhYmxlZEl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgQGlmIChzYXZlZEZpbHRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgIFVwZGF0ZSBmaWx0ZXJzXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgICAgU2F2ZSBhcyBuZXdcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwibWFuYWdlU2F2ZWRGaWx0ZXJzKClcIj5cbiAgICAgICAgVmlldyBhbGxcbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgPGFcbiAgICAgIGNsYXNzPVwiY2xlYXJcIlxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XG4gICAgQ2xlYXIgZmlsdGVyc1xuICA8L2E+XG59Il19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxl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O1FBQ3hELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQTFTVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixxR0FFbkIsZUFBZSxnRENqRC9CLG1uR0FnR0Msc3lCRDNERyxTQUFTLDZDQUNULFlBQVkscWhCQUNaLFNBQVMsd2VBQ1QsU0FBUyxvSkFDVCxvQkFBb0IsMk1BQ3BCLGVBQWUsNE1BQ2YsaUJBQWlCLG9KQUNqQixXQUFXOzs0RkFHRixzQkFBc0I7a0JBakJsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7cUJBQ1o7OEJBS00sS0FBSztzQkFEWCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBTdGF0aWNQcm92aWRlciwgVmlld0NoaWxkcmVuLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCBtZXJnZSwgc2tpcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfREFUQSB9IGZyb20gJy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXItaXRlbS1kaWFsb2cnO1xuaW1wb3J0IHsgRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3NhdmVkLWZpbHRlci9zYXZlZC1maWx0ZXItbWFuYWdlL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZzQ2hpcE1vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEZzU2VsZWN0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpIFxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBJdGVtVHlwZSA9IEl0ZW1UeXBlO1xuICBwdWJsaWMgc2Vjb25kYXJ5SXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG4gIHB1YmxpYyBtb3JlRmlsdGVySXRlbXMgPSBzaWduYWw8QmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10+KFtdKTtcbiAgcHVibGljIGNsZWFyRmlsdGVyc1Zpc2libGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgX3NhdmVkRmlsdGVyQ29udHJvbGxlciA9IGluamVjdChTYXZlZEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgX292ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2hhc1NlY29uZGFyeVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zO1xuICB9XG5cbiAgcHVibGljIGFkZEZpbHRlcihldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XG4gICAgY29uc3QgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+ID0gZXZlbnQudmFsdWU7XG4gICAgaXRlbS5zZWNvbmRhcnlTaG93KCk7XG5cbiAgICB0aGlzLmNoaXBzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3BlbkNoaXAoaXRlbSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzU2Vjb25kYXJ5VmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlckNvbnRyb2xsZXIoKTogU2F2ZWRGaWx0ZXJDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTZWNvbmRhcnlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaGFzVmFsdWUgJiYgaXRlbS52aXNpYmxlICYmICFpdGVtLnByaW1hcnkpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vjb25kYXJ5SXRlbXMgPSB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5wcmltYXJ5KTtcblxuICAgIHRoaXMuX2luaXRIYXNTZWNvbmRhcnlWYWx1ZSgpO1xuICAgIHRoaXMuX2luaXRNb3JlRmlsdGVySXRlbXMoKTtcbiAgICB0aGlzLl9pbml0Q2xlYXJGaWx0ZXJzVmlzaWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uY2xlYXJhYmxlKVxuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYoIWl0ZW0uc2Vjb25kYXJ5KSB7XG4gICAgICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbS5jbGVhcihmYWxzZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY2hhbmdlKCk7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNldEFjdGl2ZUZpbHRlcihudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ2hpcChpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIG5hbWU6IHN0cmluZyA9IG51bGwpIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAucXVlcnlTZWxlY3RvcihgW2RhdGEtZmlsdGVyLWl0ZW09XCIke2l0ZW0ubmFtZX1cIl1gKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgIG9mZnNldFk6IGVsLm9mZnNldEhlaWdodCArIDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICBcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcGFuZWxDbGFzczogJ2ZzLXNpZGVuYXYtbWVudS1vdmVybGF5LXBhbmUnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2F0dGFjaENvbnRhaW5lcih0aGlzLl9vdmVybGF5UmVmLCBpdGVtLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXN0ZWRFbGVtZW50KGVsOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgaWYoZWwpIHtcbiAgICAgIGlmKGVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkRWxlbWVudChlbC5wYXJlbnRFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIFxuICBwdWJsaWMgc2F2ZUFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXJcbiAgICAgIC5zYXZlKHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNhdmVkRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5jcmVhdGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVxuICAgICAgICAgICAgLnN1Y2Nlc3MoYENyZWF0ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmVBcygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9IFxuXG4gIHB1YmxpYyBtYW5hZ2VTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyTWFuYWdlQ29tcG9uZW50LCB7XG4gICAgICAgIGluamVjdG9yOiB0aGlzLl9pbmplY3RvcixcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIF9kZXN0cm95T3ZlcmxheSgpIHtcbiAgICBpZih0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ2hpcChcbiAgICBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIFxuICAgIGNoaXA6IHsgbmFtZT86IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9LFxuICApIHtcbiAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgIGl0ZW0uc2Vjb25kYXJ5SGlkZSgpO1xuICAgIH1cblxuICAgIGlmKGNoaXAubmFtZSkge1xuICAgICAgaXRlbS5jbGVhckJ5TmFtZShjaGlwLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+KSB7XG4gICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE1vcmVGaWx0ZXJJdGVtcygpIHtcbiAgICBtZXJnZShcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjdW0sIFxuICAgICAgICAgICAgaXRlbS52aXNpYmxlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICAgIGl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSwgW10pLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vcmVGaWx0ZXJJdGVtcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRlTW9yZUZpbHRlckl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Q2xlYXJGaWx0ZXJzVmlzaWJsZSgpIHtcbiAgICBtZXJnZShcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjdW0sIFxuICAgICAgICAgICAgaXRlbS52aXNpYmxlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICAgIGl0ZW0uaGFzVmFsdWUkXG4gICAgICAgICAgICAgIC5waXBlKHNraXAoMSkpLFxuICAgICAgICAgIF07XG4gICAgICAgIH0sIFtdKSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVDbGVhckl0ZW1zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl91cGRhdGVDbGVhckl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVNb3JlRmlsdGVySXRlbXMoKSB7XG4gICAgdGhpcy5tb3JlRmlsdGVySXRlbXNcbiAgICAgIC5zZXQodGhpcy5pdGVtc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5wcmltYXJ5ICYmIGl0ZW0udmlzaWJsZSAmJiAhaXRlbS5zZWNvbmRhcnlWaXNpYmxlKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDbGVhckl0ZW1zKCkge1xuICAgIHRoaXMuY2xlYXJGaWx0ZXJzVmlzaWJsZVxuICAgICAgLnNldCh0aGlzLml0ZW1zXG4gICAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLmNsZWFyYWJsZSAmJiBpdGVtLmhhc1ZhbHVlICYmIGl0ZW0udmlzaWJsZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICBAaWYgKChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgICBAZm9yIChjaGlwIG9mIGl0ZW0uY2hpcHMkIHwgYXN5bmM7IHRyYWNrIGNoaXAubGFiZWwpIHtcbiAgICAgICAgICA8ZnMtY2hpcFxuICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyNkZGQnXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2hpcChpdGVtLCBjaGlwLm5hbWUpXCI+XG4gICAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fTpcbiAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgICBbaWNvbl09XCInY2FuY2VsX2NpcmNsZV9vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwKGl0ZW0sIGNoaXApXCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZnMtY2hpcD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmICgoaXRlbS5ub3RWYWx1ZSQgfCBhc3luYykgJiYgKGl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSQgfCBhc3luYykpIHtcbiAgICAgICAgPGZzLWNoaXBcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIj5cbiAgICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmc0NoaXBTdWZmaXhcbiAgICAgICAgICAgIFtpY29uXT1cIidjYW5jZWxfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1jaGlwPlxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaWYgKG1vcmVGaWx0ZXJJdGVtcygpLmxlbmd0aCA+IDApIHtcbiAgICA8bWF0LXNlbGVjdFxuICAgICAgICBjbGFzcz1cIm1vcmUtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInTW9yZSBmaWx0ZXJzJ1wiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkRmlsdGVyKCRldmVudClcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIG1vcmVGaWx0ZXJJdGVtcygpOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgQGlmIChzYXZlZEZpbHRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgIFVwZGF0ZSBmaWx0ZXJzXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgICAgU2F2ZSBhcyBuZXdcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwibWFuYWdlU2F2ZWRGaWx0ZXJzKClcIj5cbiAgICAgICAgVmlldyBhbGxcbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgQGlmIChjbGVhckZpbHRlcnNWaXNpYmxlKCkpIHtcbiAgICA8YVxuICAgICAgICBjbGFzcz1cImNsZWFyXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPlxuICAgICAgQ2xlYXIgZmlsdGVyc1xuICAgIDwvYT5cbiAgfVxufSJdfQ==
|
|
@@ -34,7 +34,7 @@ export class DateComponent extends BaseItemComponent {
|
|
|
34
34
|
this.close();
|
|
35
35
|
}
|
|
36
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { kind: "component", type: i2.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "showMonth", "showYear", "showDay"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", styles: ["mat-form-field{width:185px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { kind: "component", type: i2.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "showMonth", "showYear", "showDay"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
@@ -46,10 +46,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
46
46
|
FsDatePickerModule,
|
|
47
47
|
FocusToItemDirective,
|
|
48
48
|
FsFormModule,
|
|
49
|
-
], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}" }]
|
|
49
|
+
], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", styles: ["mat-form-field{width:185px}\n"] }]
|
|
50
50
|
}], propDecorators: { autofocus: [{
|
|
51
51
|
type: Input
|
|
52
52
|
}], floatLabel: [{
|
|
53
53
|
type: Input
|
|
54
54
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUl0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFtQnJFLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQTBDO0lBRTNELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFFaEQsUUFBUSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFFL0IsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUM1QixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQztJQUVmLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVoRCxJQUFLLElBQUksQ0FBQyxJQUFxQixDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzt3R0F6QlUsYUFBYTs0RkFBYixhQUFhLGlLQ3pDMUIsMHVDQXlDQyx1RkRURyxZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsUUFBUSxnVUFDUixXQUFXLDhtQkFDWCxrQkFBa0IsaWFBQ2xCLG9CQUFvQixvR0FDcEIsWUFBWTs7NEZBR0gsYUFBYTtrQkFoQnpCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLFlBQVk7cUJBQ2I7OEJBSWUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IEZzRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5cblxuaW1wb3J0IHsgRm9jdXNUb0l0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ZvY3VzLXRvLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0ZW1EYXRlTW9kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2l0ZW0tZGF0ZS1tb2RlLmVudW0nO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQaWNrZXJWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3BpY2tlci12aWV3LXR5cGUuZW51bSc7XG5pbXBvcnQgdHlwZSB7IEJhc2VEYXRlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWRhdGUtaXRlbSc7XG5pbXBvcnQgdHlwZSB7IERhdGVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL2RhdGUtaXRlbSc7XG5pbXBvcnQgdHlwZSB7IERhdGVUaW1lSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9kYXRlLXRpbWUtaXRlbSc7XG5pbXBvcnQgeyBCYXNlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtaXRlbS9iYXNlLWl0ZW0uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWx0ZXItaXRlbS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZzRGF0ZVBpY2tlck1vZHVsZSxcbiAgICBGb2N1c1RvSXRlbURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlSXRlbUNvbXBvbmVudDxEYXRlSXRlbSB8IERhdGVUaW1lSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6ICdhdXRvJyB8ICdhbHdheXMnID0gJ2F1dG8nO1xuICBcbiAgcHVibGljIHZpZXdUeXBlID0gUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICBwdWJsaWMgaXRlbURhdGVNb2RlID0gSXRlbURhdGVNb2RlO1xuICBwdWJsaWMgc2hvd1llYXIgPSB0cnVlO1xuICBwdWJsaWMgc2hvd01vbnRoID0gdHJ1ZTtcbiAgcHVibGljIHNob3dEYXkgPSB0cnVlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMudmlld1R5cGUgPSB0aGlzLml0ZW0udHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWUgPyBcbiAgICAgIFBpY2tlclZpZXdUeXBlLkRhdGVUaW1lIDogUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICAgIGlmICgodGhpcy5pdGVtIGFzIEJhc2VEYXRlSXRlbSkubW9kZSA9PT0gSXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoWWVhcikge1xuICAgICAgdGhpcy5zaG93RGF5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5pdGVtLnZhbHVlID0gZXZlbnQ7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59XG4iLCJAaWYgKGl0ZW0ubW9kZSA9PT0gaXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoRGF5WWVhciB8fCBpdGVtLm1vZGUgPT09IGl0ZW1EYXRlTW9kZS5TY3JvbGxNb250aFllYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVTY3JvbGxQaWNrZXJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3Nob3dNb250aF09XCJzaG93TW9udGhcIlxuICAgICAgW3Nob3dEYXldPVwic2hvd0RheVwiXG4gICAgICBbc2hvd1llYXJdPVwic2hvd1llYXJcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSBAZWxzZSBpZiAoaXRlbS5tb2RlID09PSBpdGVtRGF0ZU1vZGUuQ2FsZW5kYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVQaWNrZXJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3ZpZXddPVwidmlld1R5cGVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSJdfQ==
|
|
@@ -2,34 +2,52 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
|
2
2
|
import { FormsModule } from '@angular/forms';
|
|
3
3
|
import { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';
|
|
4
4
|
import { MatInput } from '@angular/material/input';
|
|
5
|
+
import { FsCommonModule } from '@firestitch/common';
|
|
5
6
|
import { FsFormModule } from '@firestitch/form';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
8
|
import { FocusToItemDirective } from '../../../directives/focus-to-item.directive';
|
|
7
9
|
import { BaseItemComponent } from '../base-item/base-item.component';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "@angular/forms";
|
|
10
12
|
import * as i2 from "@firestitch/form";
|
|
13
|
+
import * as i3 from "@firestitch/common";
|
|
11
14
|
export class RangeComponent extends BaseItemComponent {
|
|
12
15
|
autofocusName;
|
|
13
16
|
floatLabel = 'auto';
|
|
14
17
|
min;
|
|
15
18
|
max;
|
|
16
19
|
ngOnInit() {
|
|
17
|
-
this.
|
|
18
|
-
|
|
20
|
+
this.item.value$
|
|
21
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
22
|
+
.subscribe((value) => {
|
|
23
|
+
this.min = value?.min;
|
|
24
|
+
this.max = value?.max;
|
|
25
|
+
this._cdRef.detectChanges();
|
|
26
|
+
});
|
|
19
27
|
}
|
|
20
28
|
ngOnDestroy() {
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
if (this.triggerChangeOn === 'close') {
|
|
30
|
+
this.item.value = {
|
|
31
|
+
min: this.min,
|
|
32
|
+
max: this.max,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
change() {
|
|
37
|
+
if (this.triggerChangeOn === 'change') {
|
|
38
|
+
this.item.value = {
|
|
39
|
+
min: this.min,
|
|
40
|
+
max: this.max,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
25
43
|
}
|
|
26
44
|
keyup(event) {
|
|
27
|
-
if (event.key === 'Enter' || event.code === 'Tab') {
|
|
45
|
+
if (this.triggerChangeOn === 'close' && (event.key === 'Enter' || event.code === 'Tab')) {
|
|
28
46
|
this.close();
|
|
29
47
|
}
|
|
30
48
|
}
|
|
31
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }, { kind: "directive", type: i3.FsModelChangeDirective, selector: "[fsModelChange]", inputs: ["fsModelChangeOptions"], outputs: ["fsModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
51
|
}
|
|
34
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, decorators: [{
|
|
35
53
|
type: Component,
|
|
@@ -42,10 +60,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
42
60
|
FocusToItemDirective,
|
|
43
61
|
FsFormModule,
|
|
44
62
|
MatSuffix,
|
|
45
|
-
|
|
63
|
+
FsCommonModule,
|
|
64
|
+
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
46
65
|
}], propDecorators: { autofocusName: [{
|
|
47
66
|
type: Input
|
|
48
67
|
}], floatLabel: [{
|
|
49
68
|
type: Input
|
|
50
69
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZpbHRlcnMtaXRlbS9yYW5nZS9yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3JhbmdlL3JhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQXFCckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBNEI7SUFFOUMsYUFBYSxDQUFTO0lBQ3RCLFVBQVUsR0FBc0IsTUFBTSxDQUFDO0lBRWhELEdBQUcsQ0FBUztJQUNaLEdBQUcsQ0FBUztJQUVaLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzthQUNkLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFHLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDZCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsS0FBb0I7UUFDL0IsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzt3R0ExQ1UsY0FBYzs0RkFBZCxjQUFjLDBLQ3hDM0IsaStDQTZETSx1TERoQ0YsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFNBQVMscUhBQ1QsUUFBUSxnVUFDUixXQUFXLGl4QkFDWCxvQkFBb0Isb0dBQ3BCLFlBQVksMGdCQUNaLFNBQVMsb0hBQ1QsY0FBYzs7NEZBR0wsY0FBYztrQkFsQjFCLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxjQUFjO3FCQUNmOzhCQUllLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0UHJlZml4LCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5pbXBvcnQgeyBGc0NvbW1vbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBGb2N1c1RvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmFuZ2VJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL3JhbmdlLWl0ZW0nO1xuaW1wb3J0IHsgQmFzZUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWl0ZW0vYmFzZS1pdGVtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmlsdGVyLWl0ZW0tcmFuZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBNYXRQcmVmaXgsXG4gICAgTWF0SW5wdXQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9jdXNUb0l0ZW1EaXJlY3RpdmUsXG4gICAgRnNGb3JtTW9kdWxlLFxuICAgIE1hdFN1ZmZpeCxcbiAgICBGc0NvbW1vbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBCYXNlSXRlbUNvbXBvbmVudDxSYW5nZUl0ZW0+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXNOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmbG9hdExhYmVsOiAnYXV0bycgfCAnYWx3YXlzJyA9ICdhdXRvJztcbiAgXG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW0udmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5taW4gPSB2YWx1ZT8ubWluO1xuICAgICAgICB0aGlzLm1heCA9IHZhbHVlPy5tYXg7XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmKHRoaXMudHJpZ2dlckNoYW5nZU9uID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLml0ZW0udmFsdWUgPSB7XG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgaWYodGhpcy50cmlnZ2VyQ2hhbmdlT24gPT09ICdjaGFuZ2UnKSB7XG4gICAgICB0aGlzLml0ZW0udmFsdWUgPSB7XG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmKHRoaXMudHJpZ2dlckNoYW5nZU9uID09PSAnY2xvc2UnICYmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ1RhYicpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIGNsYXNzPVwiZmlsdGVyLXJhbmdlLW1pblwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWxbMF0gfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICBAaWYgKGl0ZW0ucHJlZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRUZXh0UHJlZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmVmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0ucHJlZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAnbWluJyB8fCAhbWluXCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtaW5cIlxuICAgICAgKGZzTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKClcIlxuICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIlxuICAgICAgI2Zyb20+XG4gICAgQGlmIChpdGVtLnN1ZmZpeCkge1xuICAgICAgPHNwYW5cbiAgICAgICAgbWF0U3VmZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1zdWZmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0uc3VmZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIGNsYXNzPVwiZmlsdGVyLXJhbmdlLW1heFwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWxbMV0gfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICBAaWYgKGl0ZW0ucHJlZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRUZXh0UHJlZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmVmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0ucHJlZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAnbWF4JyB8fCAhIW1pblwiXG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFsobmdNb2RlbCldPVwibWF4XCJcbiAgICAgIChmc01vZGVsQ2hhbmdlKT1cImNoYW5nZSgpXCJcbiAgICAgIChrZXl1cCk9XCJrZXl1cCgkZXZlbnQpXCJcbiAgICAgICN0bz5cbiAgICBAaWYgKGl0ZW0uc3VmZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1ZmZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5zdWZmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj4iXX0=
|