@unifylib/ui-lib 1.2.25 → 1.2.27
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/advanced-filter/field-filter/field-filter.component.mjs +12 -2
- package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +36 -3
- package/fesm2022/iq-ui-lib.mjs +46 -3
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/lib/components/advanced-filter/field-filter/field-filter.component.d.ts +1 -0
- package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -12,10 +12,20 @@ export class FieldFilterComponent {
|
|
|
12
12
|
}
|
|
13
13
|
formChanges($event) {
|
|
14
14
|
this.filterForm = $event;
|
|
15
|
-
this.filterForm.valueChanges.subscribe(
|
|
15
|
+
this.filterForm.valueChanges.subscribe(() => {
|
|
16
|
+
this.syncDateRangeValidity();
|
|
16
17
|
this.filterFieldInformation.emit(this.filterForm.value);
|
|
17
18
|
});
|
|
18
19
|
}
|
|
20
|
+
syncDateRangeValidity() {
|
|
21
|
+
const fromControl = this.filterForm.get('from');
|
|
22
|
+
const toControl = this.filterForm.get('to');
|
|
23
|
+
if (!fromControl || !toControl) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
fromControl.updateValueAndValidity({ onlySelf: true, emitEvent: false });
|
|
27
|
+
toControl.updateValueAndValidity({ onlySelf: true, emitEvent: false });
|
|
28
|
+
}
|
|
19
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
30
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FieldFilterComponent, isStandalone: true, selector: "app-field-filter", inputs: { filter: "filter", pageInfo: "pageInfo", filterFields: "filterFields", item: "item", editable: "editable", filterResetNonce: "filterResetNonce" }, outputs: { selectedValue: "selectedValue", filterFieldInformation: "filterFieldInformation" }, ngImport: i0, template: "\n<app-base-form-canvas\n [pageInfo]=\"pageInfo\"\n [fields]=\"filterFields\"\n [editable]=\"editable\"\n [filterResetNonce]=\"filterResetNonce\"\n (formUpdated)=\"formChanges($event)\"\n>\n</app-base-form-canvas>\n", styles: [""], dependencies: [{ kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "attachmentsAlwaysEditable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }] }); }
|
|
21
31
|
}
|
|
@@ -41,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
41
51
|
}], filterFieldInformation: [{
|
|
42
52
|
type: Output
|
|
43
53
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWR2YW5jZWQtZmlsdGVyL2ZpZWxkLWZpbHRlci9maWVsZC1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFJdkcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sbURBQW1ELENBQUM7O0FBWTFGLE1BQU0sT0FBTyxvQkFBb0I7SUE0Qi9CO1FBWEEsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFHckIsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUczRCwyQkFBc0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVwRCxDQUFDO0lBRWpCLFFBQVE7SUFFUixDQUFDO0lBR0QsV0FBVyxDQUFDLE1BQWlCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFDRCxXQUFXLENBQUMsc0JBQXNCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQzsrR0FuRFUsb0JBQW9CO21HQUFwQixvQkFBb0IsdVVDaEJqQyw0UEFTQSwwRERFSSx1QkFBdUI7OzRGQUtkLG9CQUFvQjtrQkFWaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FFaEIsSUFBSSxXQUNQO3dCQUNQLHVCQUF1QjtxQkFDeEI7d0RBT0QsTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBTU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixhQUFhO3NCQURaLE1BQU07Z0JBSVAsc0JBQXNCO3NCQURyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQge0ZpZWxkSW5mbywgUGFnZUluZm99IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsXCI7XG5pbXBvcnQge0Jhc2VGb3JtQ2FudmFzQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vYmFzZS1mb3JtLWNhbnZhcy9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmllbGQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudFxuICBdLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEZpZWxkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0ICB7XG5cbiAgQElucHV0KClcbiAgZmlsdGVyOiBGaWVsZEZpbHRlcjtcblxuICBASW5wdXQoKVxuICBwYWdlSW5mbzogUGFnZUluZm87XG5cbiAgQElucHV0KClcbiAgZmlsdGVyRmllbGRzOiBGaWVsZEluZm9bXTtcblxuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG5cbiAgQElucHV0KClcbiAgaXRlbTogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGVkaXRhYmxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZmlsdGVyUmVzZXROb25jZSA9IDA7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlckZpZWxkSW5mb3JtYXRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cblxuICBmb3JtQ2hhbmdlcygkZXZlbnQ6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9ICRldmVudDtcbiAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNEYXRlUmFuZ2VWYWxpZGl0eSgpO1xuICAgICAgdGhpcy5maWx0ZXJGaWVsZEluZm9ybWF0aW9uLmVtaXQodGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0RhdGVSYW5nZVZhbGlkaXR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGZyb21Db250cm9sID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnZnJvbScpO1xuICAgIGNvbnN0IHRvQ29udHJvbCA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3RvJyk7XG4gICAgaWYgKCFmcm9tQ29udHJvbCB8fCAhdG9Db250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZyb21Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0b0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG59XG4iLCJcbjxhcHAtYmFzZS1mb3JtLWNhbnZhc1xuICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxuICAgICAgICBbZmllbGRzXT1cImZpbHRlckZpZWxkc1wiXG4gICAgICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZVwiXG4gICAgICAgIFtmaWx0ZXJSZXNldE5vbmNlXT1cImZpbHRlclJlc2V0Tm9uY2VcIlxuICAgICAgICAoZm9ybVVwZGF0ZWQpPVwiZm9ybUNoYW5nZXMoJGV2ZW50KVwiXG4+XG48L2FwcC1iYXNlLWZvcm0tY2FudmFzPlxuIl19
|
|
@@ -17,6 +17,7 @@ export class FilterBuilderComponent {
|
|
|
17
17
|
this.pendingFilters = [];
|
|
18
18
|
this.showExportButton = false;
|
|
19
19
|
this.filters = [];
|
|
20
|
+
this.dateRangeInvalid = false;
|
|
20
21
|
this.filterResetNonce = 0;
|
|
21
22
|
this.filterInformation = new EventEmitter();
|
|
22
23
|
this.isEmpty = new EventEmitter();
|
|
@@ -105,6 +106,9 @@ export class FilterBuilderComponent {
|
|
|
105
106
|
this.filterInformation.emit({ filters: filtersArray, searchStr });
|
|
106
107
|
}
|
|
107
108
|
onApplyFilter() {
|
|
109
|
+
if (this.dateRangeInvalid) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
108
112
|
setTimeout(() => {
|
|
109
113
|
this.doSearch();
|
|
110
114
|
this.applyFilter.emit();
|
|
@@ -130,6 +134,7 @@ export class FilterBuilderComponent {
|
|
|
130
134
|
return value;
|
|
131
135
|
};
|
|
132
136
|
if (index === undefined || !fieldInfo) {
|
|
137
|
+
this.dateRangeInvalid = this.isDateRangeInvalid($event);
|
|
133
138
|
if (!this.filterFields || !this.filterFields.length) {
|
|
134
139
|
this.filters = [];
|
|
135
140
|
this.doSearch();
|
|
@@ -233,6 +238,34 @@ export class FilterBuilderComponent {
|
|
|
233
238
|
valueObject: ''
|
|
234
239
|
};
|
|
235
240
|
}
|
|
241
|
+
isDateRangeInvalid(value) {
|
|
242
|
+
if (!value || typeof value !== 'object') {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
const record = value;
|
|
246
|
+
const fromTime = this.toTimestamp(record['from']);
|
|
247
|
+
const toTime = this.toTimestamp(record['to']);
|
|
248
|
+
if (fromTime === null || toTime === null) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
return fromTime > toTime;
|
|
252
|
+
}
|
|
253
|
+
toTimestamp(value) {
|
|
254
|
+
if (value === undefined || value === null || value === '') {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
if (value instanceof Date) {
|
|
258
|
+
return Number.isNaN(value.getTime()) ? null : value.getTime();
|
|
259
|
+
}
|
|
260
|
+
if (typeof value === 'object') {
|
|
261
|
+
const primitive = value.valueOf();
|
|
262
|
+
if (typeof primitive === 'number' && Number.isFinite(primitive)) {
|
|
263
|
+
return primitive;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const parsed = new Date(value).getTime();
|
|
267
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
268
|
+
}
|
|
236
269
|
hasFilterValue(value) {
|
|
237
270
|
if (value === undefined || value === null || value === '') {
|
|
238
271
|
return false;
|
|
@@ -251,7 +284,7 @@ export class FilterBuilderComponent {
|
|
|
251
284
|
return options.length === 0 || !options.every((code) => selected.includes(code));
|
|
252
285
|
}
|
|
253
286
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
254
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:4px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover{background:#fafafa!important}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover,.main-filter-builder .btn-sort-by:hover{background:#fafafa!important}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
287
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterBuilderComponent, isStandalone: true, selector: "app-filter-builder", inputs: { columns: "columns", isChecked: "isChecked", filterFields: "filterFields", pageInfo: "pageInfo", pendingFilters: "pendingFilters", showExportButton: "showExportButton" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter", sortByClicked: "sortByClicked", exportClicked: "exportClicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldFilterComponent, selector: "app-field-filter", inputs: ["filter", "pageInfo", "filterFields", "item", "editable", "filterResetNonce"], outputs: ["selectedValue", "filterFieldInformation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
|
|
255
288
|
}
|
|
256
289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, decorators: [{
|
|
257
290
|
type: Component,
|
|
@@ -265,7 +298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
265
298
|
MatMenuItem,
|
|
266
299
|
MatMenuTrigger,
|
|
267
300
|
NgForOf
|
|
268
|
-
], template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:4px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover{background:#fafafa!important}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover,.main-filter-builder .btn-sort-by:hover{background:#fafafa!important}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}\n"] }]
|
|
301
|
+
], template: "<div class=\"main-filter-builder\">\n\n <!-- Desktop View -->\n <div class=\"filterForm desktop-view\">\n <div class=\"filterForm__row\">\n <div class=\"filterForm__col\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"filterForm__filed-filter\"\n >\n </app-field-filter>\n </div>\n <div class=\"button-group\">\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n (click)=\"onClearFilters()\">\n <div class=\"button-text\">\n <mat-icon>clear_all</mat-icon>\n <span>{{ 'FILTER-BUILDER.clearFilters' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-apply-filter\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-text\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Mobile View -->\n <div class=\"mobile-view\">\n <!-- Mobile Row 1: Search Field and Export Button -->\n <div class=\"mobile-search-row\">\n <div class=\"mobile-search-field\">\n <app-field-filter\n [editable]=\"isEditable()\"\n [filter]=\"filter\"\n [pageInfo]=\"pageInfo\"\n *ngIf=\"isEditable()\"\n [filterFields]=\"filterFields\"\n [filterResetNonce]=\"filterResetNonce\"\n (filterFieldInformation)=\"formChanges($event)\"\n class=\"mobile-field-filter\"\n >\n </app-field-filter>\n </div>\n <button\n *ngIf=\"showExportButton\"\n mat-flat-button\n class=\"btn-export-mobile\"\n [matMenuTriggerFor]=\"exportMenu\">\n <div class=\"button-content\">\n <mat-icon>file_export</mat-icon>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\n </mat-menu>\n </div>\n\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\n <div class=\"mobile-filter-row\">\n <button\n mat-flat-button\n class=\"btn-filter-by btn-filter-by--icon-only\"\n type=\"button\"\n (click)=\"onClearFilters()\"\n [attr.aria-label]=\"'FILTER-BUILDER.clearFilters' | translate\">\n <div class=\"button-content\">\n <mat-icon>delete_sweep</mat-icon>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-filter-by\"\n type=\"button\"\n [disabled]=\"dateRangeInvalid\"\n (click)=\"onApplyFilter()\">\n <div class=\"button-content\">\n <mat-icon>filter_list</mat-icon>\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\n </div>\n </button>\n <button\n mat-flat-button\n class=\"btn-sort-by\"\n type=\"button\"\n [matMenuTriggerFor]=\"sortMenu\">\n <div class=\"button-content\">\n <mat-icon>unfold_more</mat-icon>\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\n </div>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n <button\n *ngFor=\"let column of getSortableColumns()\"\n mat-menu-item\n (click)=\"onSortByClick(column.property)\">\n {{ labelKey(column) | translate }}\n </button>\n <button\n *ngIf=\"getSortableColumns().length === 0\"\n mat-menu-item\n disabled>\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\n </button>\n </mat-menu>\n </div>\n </div>\n\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"line-bottom\">-->\n<!-- <mat-divider></mat-divider>-->\n<!-- </div>-->\n\n<!-- <div class=\"action\">-->\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\n<!-- </button>-->\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\n<!-- </button>-->\n<!-- </div>-->\n</div>\n", styles: [".main-filter-builder{width:100%;max-width:100%;box-sizing:border-box;flex:1 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;min-height:48px;margin-bottom:7px}.main-filter-builder .filterForm{display:flex;width:100%;max-width:100%;box-sizing:border-box;align-items:center}.main-filter-builder .filterForm__row{display:flex;align-items:center;gap:16px;margin:0;flex-wrap:nowrap;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.main-filter-builder .filterForm__col{flex:1 1 auto;min-width:0;max-width:none;width:auto}.main-filter-builder .filterForm__filed-filter{margin:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:16px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-content{width:100%!important;display:flex!important;flex-direction:row!important;align-items:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-row{display:flex!important;gap:16px;align-items:center;flex-wrap:nowrap;width:100%!important}.main-filter-builder .filterForm__filed-filter ::ng-deep .form-column{flex:0 0 auto;width:100%}.main-filter-builder .filterForm__filed-filter ::ng-deep .row-container{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep .field-column{flex:0 0 auto;width:auto}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field{width:auto!important;margin:0!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:44px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:44px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:10px!important;height:28px!important;color:#0d4261!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix{padding-left:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-suffix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important;margin-top:6px}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-select{font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#888!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button{width:24px!important;height:24px!important;padding:0!important}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-datepicker-toggle .mat-icon-button mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261}.main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{height:0!important;min-height:0!important;margin:0!important;padding:0!important}.main-filter-builder .filterForm .action-filter{flex:0 0 auto}.main-filter-builder .filterForm .action-filter .edit-design{margin:auto}.main-filter-builder .filterForm .action-filter .edit-design__add-button{background:#fff!important;color:var(--primary-color)!important;height:48px;width:48px;border-radius:5px;border:#D9D9D9 solid 1px;margin:30px 0 0}.main-filter-builder .filterForm .action-filter .edit-design__add-button__add-button-text{margin:0 5px}.main-filter-builder .line-top mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .advanced-button{display:flex;flex-wrap:wrap;gap:8px}.main-filter-builder .advanced-button .view{background:#e3fbff!important;border:1px solid #00ABC8!important;border-radius:6px!important;margin:10px 0;padding:6px 8px;height:32px;margin-top:0!important;display:flex;align-items:center;gap:6px}.main-filter-builder .advanced-button .view__filed{margin-top:-3px;display:inline-block;color:#1c355e;font-weight:400;font-size:14px;line-height:16px;font-style:normal;text-align:center!important}.main-filter-builder .advanced-button .view__close{margin-left:6px}.main-filter-builder .advanced-button .view__close__icon{color:#1c355e;font-size:14px;cursor:pointer;display:inline-block}.main-filter-builder .line-bottom mat-divider{width:98%;margin:0 auto 10px}.main-filter-builder .action{justify-content:end;padding:5px 10px 10px}.main-filter-builder .action__clear{border:none!important;margin:0 5px}@media (max-width: 599.98px){.main-filter-builder .filterForm__row{flex-wrap:wrap}.main-filter-builder .filterForm .action-filter .edit-design__add-button{width:100%;height:45px;margin:5px 5px 10px}}@media (min-width: 600px){.main-filter-builder .add-text-responsive{display:none}}.main-filter-builder .button-group{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end;gap:8px!important;flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;height:46px!important;white-space:nowrap!important;min-width:0!important;max-width:none!important}.main-filter-builder .btn-apply-filter{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:46px!important;min-width:120px!important;padding:0 16px!important;box-shadow:none!important}.main-filter-builder .btn-apply-filter .button-text{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-apply-filter mat-icon{font-size:24px;width:24px;height:30px;color:#0d4261}.main-filter-builder .btn-apply-filter span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-apply-filter:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-apply-filter:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .mobile-view{display:none;flex-direction:column;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-filter-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .btn-filter-by,.main-filter-builder .btn-sort-by{background:#fff!important;border:1px solid #3e627b!important;border-radius:8px!important;height:40px!important;flex:1 1 0!important;min-width:0!important;padding:0 16px!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important}.main-filter-builder .btn-filter-by .button-content,.main-filter-builder .btn-sort-by .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-filter-by mat-icon,.main-filter-builder .btn-sort-by mat-icon{font-size:24px;width:24px;height:28px;color:#0d4261}.main-filter-builder .btn-filter-by span,.main-filter-builder .btn-sort-by span{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1;color:#0d4261;white-space:nowrap}.main-filter-builder .btn-filter-by:hover:not(:disabled),.main-filter-builder .btn-sort-by:hover:not(:disabled){background:#fafafa!important}.main-filter-builder .btn-filter-by:disabled,.main-filter-builder .btn-sort-by:disabled{opacity:.45;cursor:not-allowed}.main-filter-builder .btn-sort-by{border:1px solid #0d4261!important}.main-filter-builder .btn-sort-by .sort-icons{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:24px;width:24px;flex-shrink:0}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up,.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{font-size:16px;width:16px;height:8px;line-height:8px;margin:0;color:#0d4261}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-up{margin-bottom:-2px}.main-filter-builder .btn-sort-by .sort-icons .sort-arrow-down{margin-top:-2px}.main-filter-builder .btn-sort-by .arrow-icon{font-size:16px;width:16px;height:16px;margin-left:auto}.main-filter-builder .btn-filter-by.btn-filter-by--icon-only{flex:0 0 44px!important;min-width:44px!important;max-width:48px!important;padding:0 6px!important}.main-filter-builder .mobile-search-row{display:flex;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box}.main-filter-builder .mobile-search-field{flex:1;min-width:0;width:100%;max-width:none}.main-filter-builder .btn-export-mobile{background:transparent!important;border:none!important;border-radius:8px!important;height:40px!important;width:60px!important;padding:0!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;flex-shrink:0!important}.main-filter-builder .btn-export-mobile .button-content{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.main-filter-builder .btn-export-mobile mat-icon{font-size:24px;width:24px;height:24px;color:#0d4261}.main-filter-builder .btn-export-mobile .arrow-icon{font-size:16px;width:16px;height:16px}.main-filter-builder .btn-export-mobile:hover{background:#fafafa!important}.main-filter-builder .mobile-field-filter{margin:0!important;width:100%!important}.main-filter-builder .mobile-field-filter ::ng-deep .main-form-canvas{display:flex!important;flex-direction:row!important;align-items:center!important;margin-top:0!important;width:100%!important;flex-wrap:nowrap!important;gap:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-wrapper{display:flex!important;flex-direction:row!important;align-items:center!important;flex:1 1 auto!important;width:100%!important;min-width:0!important}.main-filter-builder .mobile-field-filter ::ng-deep .form-content{width:100%!important;align-items:center!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field{width:100%!important;margin:0!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{min-height:40px!important;padding:0 16px!important;display:flex!important;align-items:center!important;border-top:none!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-input-control{height:40px!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important;color:#000!important;overflow:visible!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-outline{border:1px solid #b7b7b7!important;border-radius:8px!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix{padding-right:4px!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field .mat-mdc-form-field-icon-prefix mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#0d4261!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field input::placeholder{color:#888!important;font-weight:300!important;font-size:16px!important;line-height:1.2!important}@media (max-width: 768px){.main-filter-builder .desktop-view{display:none!important}.main-filter-builder .mobile-view{display:flex!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.multi-state-filter){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-select){display:none!important}}@media (min-width: 769px){.main-filter-builder .desktop-view{display:flex!important}.main-filter-builder .mobile-view{display:none!important}}:host-context([dir=ltr]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-right:0!important}:host-context([dir=rtl]) .main-filter-builder .filterForm__filed-filter ::ng-deep mat-form-field .mat-mdc-form-field-infix{padding-left:0!important}\n"] }]
|
|
269
302
|
}], ctorParameters: () => [], propDecorators: { columns: [{
|
|
270
303
|
type: Input
|
|
271
304
|
}], isChecked: [{
|
|
@@ -292,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
292
325
|
type: HostListener,
|
|
293
326
|
args: ['keydown', ['$event']]
|
|
294
327
|
}] } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBbUI1RSxNQUFNLE9BQU8sc0JBQXNCO0lBMENqQztRQXhDaUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFH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QkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQTREUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TGl2ZUFubm91bmNlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGZvcm1hdERhdGUsIE5nRm9yT2Z9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0ZpZWxkSW5mbywgUGFnZUluZm8sIFRhYmxlQ29sdW1ufSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGaWVsZEZpbHRlcn0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQge0ZpZWxkRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsdGVyLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZpZWxkRmlsdGVyQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbixcbiAgICBNYXRNZW51LFxuICAgIE1hdE1lbnVJdGVtLFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE5nRm9yT2ZcbiAgXSxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGl2ZUFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xuXG4gIEBJbnB1dCgpXG4gIGlzQ2hlY2tlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZmlsdGVyRmllbGRzOiBGaWVsZEluZm9bXTtcbiAgQElucHV0KClcbiAgcGFnZUluZm86IFBhZ2VJbmZvO1xuICBASW5wdXQoKVxuICBwZW5kaW5nRmlsdGVyczogRmllbGRGaWx0ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmaWx0ZXI6IEZpZWxkRmlsdGVyO1xuICBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdID0gW107XG5cbiAgcHJpdmF0ZSBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgZmlsdGVyUmVzZXROb25jZSA9IDA7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlckluZm9ybWF0aW9uOiBFdmVudEVtaXR0ZXI8eyBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdLCBzZWFyY2hTdHI6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdLCBzZWFyY2hTdHI6IHN0cmluZyB9PigpO1xuXG4gIEBPdXRwdXQoKVxuICBpc0VtcHR5OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFwcGx5RmlsdGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNvcnRCeUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGV4cG9ydENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xuICB9XG5cbiAgZ2V0U29ydGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uPGFueT5bXSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+XG4gICAgICBjb2x1bW4udmlzaWJsZSA9PT0gdHJ1ZSAmJiBjb2x1bW4uZW5hYmxlU29ydGluZyA9PT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICBsYWJlbEtleShjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4pOiBzdHJpbmcge1xuICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eTtcbiAgICBpZiAoIXRoaXMucGFnZUluZm8gfHwgIXRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBgJHtjb25maWd1cmVkS2V5fWBcbiAgICAgIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcbiAgfVxuXG4gIG9uU29ydEJ5Q2xpY2soY29sdW1uUHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc29ydEJ5Q2xpY2tlZC5lbWl0KGNvbHVtblByb3BlcnR5KTtcbiAgfVxuXG4gIG9uRXhwb3J0Q2xpY2socmVwb3J0VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5leHBvcnRDbGlja2VkLmVtaXQocmVwb3J0VHlwZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuXG4gICAgdGhpcy5zd2l0Y2hUb0FkdmFuY2VkKCk7XG4gICAgaWYgKCF0aGlzLmZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWx0ZXJGaWVsZHMgJiYgdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKCkgPT4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaXNJbnB1dEVsZW1lbnQgPSB0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fFxuICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyB8fFxuICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ1NFTEVDVCcgfHxcbiAgICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xuXG4gICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICAgICAgICB0aGlzLm9uQXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25BcHBseUZpbHRlcigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZG9TZWFyY2goKSB7XG4gICAgbGV0IHNlYXJjaFN0ciA9ICcnO1xuICAgIGNvbnN0IGZpbHRlcnNBcnJheSA9ICh0aGlzLmZpbHRlcnMgfHwgW10pXG4gICAgICAuZmlsdGVyKGYgPT4gISFmICYmICEhZi5maWVsZE5hbWUgJiYgdGhpcy5oYXNGaWx0ZXJWYWx1ZShmLnZhbHVlT2JqZWN0KSlcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkSW5mbyA9IHRoaXMuZmlsdGVyRmllbGRzPy5maW5kKGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmLmZpZWxkTmFtZSk7XG4gICAgICAgIGlmIChmaWVsZEluZm8/Lm11bHRpTGV2ZWxTZWFyY2hFbmFibGUgJiYgZi52YWx1ZU9iamVjdCkge1xuICAgICAgICAgIHNlYXJjaFN0ciA9IGYudmFsdWVPYmplY3Q7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsuLi5mfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGYgPT4gZiAhPT0gbnVsbCk7XG5cbiAgICB0aGlzLmZpbHRlckluZm9ybWF0aW9uLmVtaXQoeyBmaWx0ZXJzOiBmaWx0ZXJzQXJyYXksIHNlYXJjaFN0ciB9KTtcbiAgfVxuXG4gIG9uQXBwbHlGaWx0ZXIoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQoKTtcbiAgICAgIGNvbnN0IG1zZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0JBU0VfVEFCTEUuZmlsdGVyQXBwbGllZCcpO1xuICAgICAgdm9pZCB0aGlzLmxpdmVBbm5vdW5jZXIuYW5ub3VuY2UobXNnLCAncG9saXRlJyk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlU2VhcmNoKGRlbGF5TXM6IG51bWJlciA9IDgwMCkge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIGZvcm1DaGFuZ2VzKCRldmVudDogYW55LCBpbmRleD86IG51bWJlciwgZmllbGRJbmZvPzogRmllbGRJbmZvKSB7XG4gICAgY29uc3QgZm9ybWF0SWZEYXRlID0gKHR5cGU/OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gICAgICBpZiAoIXR5cGUgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcbiAgICAgIGlmICgodHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXREYXRlKHZhbHVlLCAneXl5eS1NTS1kZCcsICdlbl9VUycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhZmllbGRJbmZvKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsdGVyRmllbGRzIHx8ICF0aGlzLmZpbHRlckZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKGZpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gZmkucHJvcGVydHk7XG4gICAgICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpbHRlclZhbHVlQWN0aXZlKGZpLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBjb250cm9sTmFtZSA9PT0gJ2Zyb20nIHx8IGNvbnRyb2xOYW1lID09PSAndG8nID8gIGZpLnRhcmdldFByb3BlcnR5IDogY29udHJvbE5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBvcGVyYXRvcjogZmkuZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXG4gICAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgICAgZmllbGRUeXBlOiB0aGlzLnR5cGVNYXAoZmkudHlwZSkgYXMgYW55LFxuICAgICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmkudHlwZSwgdmFsdWUpIGFzIGFueVxuICAgICAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGhhc1RleHRGaWVsZCA9ICh0aGlzLmZpbHRlckZpZWxkcyB8fCBbXSkuc29tZShmaSA9PiAoKGZpLnR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0JykpO1xuICAgICAgaWYgKGhhc1RleHRGaWVsZCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWx0ZXJzLmxlbmd0aCA8IGluZGV4ICsgMSkge1xuICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCA9IGluZGV4ICsgMTtcbiAgICB9XG5cbiAgICBsZXQgY29udHJvbE5hbWUgPSBmaWVsZEluZm8ucHJvcGVydHk7XG4gICAgbGV0IHZhbHVlID0gJGV2ZW50ID8gJGV2ZW50W2NvbnRyb2xOYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoJGV2ZW50ICYmICRldmVudC5maWx0ZXJGaWVsZCAhPT0gdW5kZWZpbmVkICYmICRldmVudC5mcm9tVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udHJvbE5hbWUgPSAkZXZlbnQuZmlsdGVyRmllbGQgfHwgY29udHJvbE5hbWU7XG4gICAgICB2YWx1ZSA9ICRldmVudC5mcm9tVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzRmlsdGVyVmFsdWVBY3RpdmUoZmllbGRJbmZvLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1tpbmRleF0gPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0ge1xuICAgICAgICBmaWVsZE5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICBvcGVyYXRvcjogIGZpZWxkSW5mby5maWx0ZXJPcGVyYXRvciB8fCAnRVFVQUxTJyxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgIGZpZWxkVHlwZTogdGhpcy50eXBlTWFwKGZpZWxkSW5mby50eXBlKSBhcyBhbnksXG4gICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmllbGRJbmZvLnR5cGUsIHZhbHVlKSBhcyBhbnlcbiAgICAgIH0gYXMgRmllbGRGaWx0ZXI7XG4gICAgfVxuICAgIGNvbnN0IGlzVGV4dEZpZWxkID0gKChmaWVsZEluZm8udHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnKTtcbiAgICBpZiAoaXNUZXh0RmllbGQpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVTZWFyY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb1NlYXJjaCgpO1xuICAgIH1cbiAgfVxuICB0eXBlTWFwKGNvbFR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHQgPSAoY29sVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodC5pbmNsdWRlcygnbnVtYmVyJykgfHwgdC5pbmNsdWRlcygnaW50JykgfHwgdCA9PT0gJ2xvbmcnKSByZXR1cm4gJ0xvbmcnO1xuICAgIGlmICh0LmluY2x1ZGVzKCdkYXRlJykgfHwgdC5pbmNsdWRlcygndGltZScpKSByZXR1cm4gJ0RhdGUnO1xuICAgIGlmICh0LmluY2x1ZGVzKCdib29sJykpIHJldHVybiAnQm9vbGVhbic7XG4gICAgcmV0dXJuICdTdHJpbmcnO1xuICB9XG5cbiAgaXNFZGl0YWJsZShfaW5kZXg/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgZGVsZXRlQWxsKCkge1xuICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcyA/IHRoaXMuZmlsdGVyRmllbGRzLm1hcCgoKSA9PiB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpKSA6IFtdO1xuICAgIHRoaXMuaXNFbXB0eS5lbWl0KHRydWUpO1xuICB9XG5cbiAgb25DbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlclJlc2V0Tm9uY2UrKztcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVsZXRlQWxsKCksIDApO1xuICB9XG5cbiAgc3dpdGNoVG9BZHZhbmNlZCgpIHtcbiAgICBpZiAodGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXIgfHwgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpOiBGaWVsZEZpbHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkTmFtZTogJycsXG4gICAgICBvcGVyYXRvcjogJycsXG4gICAgICBmaWx0ZXJUeXBlOiAnJyxcbiAgICAgIGZpZWxkVHlwZTogJycsXG4gICAgICB2YWx1ZU9iamVjdDogJydcbiAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNGaWx0ZXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsdGVyVmFsdWVBY3RpdmUoZmllbGRJbmZvOiBGaWVsZEluZm8sIHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0ZpbHRlclZhbHVlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoKGZpZWxkSW5mby50eXBlIHx8ICcnKSAhPT0gJ211bHRpLXN0YXRlLWNoZWNrYm94Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBmaWVsZEluZm8ubGlzdE9wdGlvbnMgfHwgW107XG4gICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoID09PSAwIHx8ICFvcHRpb25zLmV2ZXJ5KChjb2RlOiBzdHJpbmcpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGNvZGUpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1haW4tZmlsdGVyLWJ1aWxkZXJcIj5cblxuICA8IS0tIERlc2t0b3AgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm0gZGVza3RvcC12aWV3XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX3Jvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX2NvbFwiPlxuICAgICAgICA8YXBwLWZpZWxkLWZpbHRlclxuICAgICAgICAgIFtlZGl0YWJsZV09XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxuICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgICBbZmlsdGVyRmllbGRzXT1cImZpbHRlckZpZWxkc1wiXG4gICAgICAgICAgW2ZpbHRlclJlc2V0Tm9uY2VdPVwiZmlsdGVyUmVzZXROb25jZVwiXG4gICAgICAgICAgKGZpbHRlckZpZWxkSW5mb3JtYXRpb24pPVwiZm9ybUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXJGb3JtX19maWxlZC1maWx0ZXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWZpZWxkLWZpbHRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tYXBwbHktZmlsdGVyXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuY2xlYXJGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1hcHBseS1maWx0ZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5RmlsdGVyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuYXBwbHlGaWx0ZXInIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE1vYmlsZSBWaWV3IC0tPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLXZpZXdcIj5cbiAgICA8IS0tIE1vYmlsZSBSb3cgMTogU2VhcmNoIEZpZWxkIGFuZCBFeHBvcnQgQnV0dG9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtc2VhcmNoLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1zZWFyY2gtZmllbGRcIj5cbiAgICAgICAgPGFwcC1maWVsZC1maWx0ZXJcbiAgICAgICAgICBbZWRpdGFibGVdPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgICBbZmlsdGVyXT1cImZpbHRlclwiXG4gICAgICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcbiAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgICAgW2ZpbHRlckZpZWxkc109XCJmaWx0ZXJGaWVsZHNcIlxuICAgICAgICAgIFtmaWx0ZXJSZXNldE5vbmNlXT1cImZpbHRlclJlc2V0Tm9uY2VcIlxuICAgICAgICAgIChmaWx0ZXJGaWVsZEluZm9ybWF0aW9uKT1cImZvcm1DaGFuZ2VzKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwibW9iaWxlLWZpZWxkLWZpbHRlclwiXG4gICAgICAgID5cbiAgICAgICAgPC9hcHAtZmllbGQtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1leHBvcnQtbW9iaWxlXCJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImV4cG9ydE1lbnVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmZpbGVfZXhwb3J0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhcnJvdy1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bWF0LW1lbnUgI2V4cG9ydE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FeHBvcnRDbGljaygncGRmJylcIj5QREY8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkV4cG9ydENsaWNrKCd4bHN4JylcIj5FeGNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRXhwb3J0Q2xpY2soJ2NzdicpXCI+Q1NWPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb2JpbGUgUm93IDI6IEZpbHRlciBCeSBhbmQgU29ydCBCeSBCdXR0b25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtZmlsdGVyLXJvd1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZmlsdGVyLWJ5IGJ0bi1maWx0ZXItYnktLWljb24tb25seVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZJTFRFUi1CVUlMREVSLmNsZWFyRmlsdGVycycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9zd2VlcDwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1maWx0ZXItYnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlGaWx0ZXIoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5hcHBseUZpbHRlcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1zb3J0LWJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzb3J0TWVudVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LWljb24+dW5mb2xkX21vcmU8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5zb3J0QnknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93LWljb25cIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtbWVudSAjc29ydE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGdldFNvcnRhYmxlQ29sdW1ucygpXCJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU29ydEJ5Q2xpY2soY29sdW1uLnByb3BlcnR5KVwiPlxuICAgICAgICAgIHt7IGxhYmVsS2V5KGNvbHVtbikgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImdldFNvcnRhYmxlQ29sdW1ucygpLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgIGRpc2FibGVkPlxuICAgICAgICAgIHt7ICdGSUxURVItQlVJTERFUi5ub1NvcnRhYmxlQ29sdW1ucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPCEtLSAgPGRpdiAqbmdJZj1cImNoZWNrSXNFbXB0eSgpXCIgY2xhc3M9XCJsaW5lLXRvcFwiPi0tPlxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cbjwhLS0gIDwvZGl2Pi0tPlxuXG48IS0tICA8ZGl2IGNsYXNzPVwibGluZS1ib3R0b21cIj4tLT5cbjwhLS0gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+LS0+XG48IS0tICA8L2Rpdj4tLT5cblxuPCEtLSAgPGRpdiBjbGFzcz1cImFjdGlvblwiPi0tPlxuPCEtLSAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLW5vbmUtYmFja2dyb3VuZC1wcmltYXJ5IGFjdGlvbl9fY2xlYXJcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkZWxldGVBbGwoKVwiPi0tPlxuPCEtLSAgICAgIHt7J0ZJTFRFUi1CVUlMREVSLmNsZWFyQWxsRmlsdGVycycgfCB0cmFuc2xhdGV9fS0tPlxuPCEtLSAgICA8L2J1dHRvbj4tLT5cbjwhLS0gICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1iYWNrZ3JvdW5kLXByaW1hcnlcIiBtYXQtYnV0dG9uIChjbGljayk9XCJkb1NlYXJjaCgpXCI+LS0+XG48IS0tICAgICAge3snRklMVEVSLUJVSUxERVIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19LS0+XG48IS0tICAgIDwvYnV0dG9uPi0tPlxuPCEtLSAgPC9kaXY+LS0+XG48L2Rpdj5cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBbUI1RSxNQUFNLE9BQU8sc0JBQXNCO0lBMkNqQztRQXpDaUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFH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QVcsc0lBQ1gsY0FBYzs7NEZBS0wsc0JBQXNCO2tCQWpCbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FFbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxPQUFPO3FCQUNSO3dEQVNELE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBWU4saUJBQWlCO3NCQURoQixNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkE0RFAsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xpdmVBbm5vdW5jZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlLCBmb3JtYXREYXRlLCBOZ0Zvck9mfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGaWVsZEluZm8sIFBhZ2VJbmZvLCBUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7RmllbGRGaWx0ZXJ9IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsL2ZpZWxkLWZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHtGaWVsZEZpbHRlckNvbXBvbmVudH0gZnJvbSBcIi4uL2ZpZWxkLWZpbHRlci9maWVsZC1maWx0ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbHRlci1idWlsZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGaWVsZEZpbHRlckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgTWF0TWVudSxcbiAgICBNYXRNZW51SXRlbSxcbiAgICBNYXRNZW51VHJpZ2dlcixcbiAgICBOZ0Zvck9mXG4gIF0sXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1idWlsZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxpdmVBbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXTtcblxuICBASW5wdXQoKVxuICBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGZpbHRlckZpZWxkczogRmllbGRJbmZvW107XG4gIEBJbnB1dCgpXG4gIHBhZ2VJbmZvOiBQYWdlSW5mbztcbiAgQElucHV0KClcbiAgcGVuZGluZ0ZpbHRlcnM6IEZpZWxkRmlsdGVyW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzaG93RXhwb3J0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsdGVyOiBGaWVsZEZpbHRlcjtcbiAgZmlsdGVyczogRmllbGRGaWx0ZXJbXSA9IFtdO1xuICBkYXRlUmFuZ2VJbnZhbGlkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgZmlsdGVyUmVzZXROb25jZSA9IDA7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlckluZm9ybWF0aW9uOiBFdmVudEVtaXR0ZXI8eyBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdLCBzZWFyY2hTdHI6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdLCBzZWFyY2hTdHI6IHN0cmluZyB9PigpO1xuXG4gIEBPdXRwdXQoKVxuICBpc0VtcHR5OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFwcGx5RmlsdGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNvcnRCeUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGV4cG9ydENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xuICB9XG5cbiAgZ2V0U29ydGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uPGFueT5bXSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+XG4gICAgICBjb2x1bW4udmlzaWJsZSA9PT0gdHJ1ZSAmJiBjb2x1bW4uZW5hYmxlU29ydGluZyA9PT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICBsYWJlbEtleShjb2x1bW46IFRhYmxlQ29sdW1uPGFueT4pOiBzdHJpbmcge1xuICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eTtcbiAgICBpZiAoIXRoaXMucGFnZUluZm8gfHwgIXRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBgJHtjb25maWd1cmVkS2V5fWBcbiAgICAgIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcbiAgfVxuXG4gIG9uU29ydEJ5Q2xpY2soY29sdW1uUHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc29ydEJ5Q2xpY2tlZC5lbWl0KGNvbHVtblByb3BlcnR5KTtcbiAgfVxuXG4gIG9uRXhwb3J0Q2xpY2socmVwb3J0VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5leHBvcnRDbGlja2VkLmVtaXQocmVwb3J0VHlwZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuXG4gICAgdGhpcy5zd2l0Y2hUb0FkdmFuY2VkKCk7XG4gICAgaWYgKCF0aGlzLmZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWx0ZXJGaWVsZHMgJiYgdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKCkgPT4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaXNJbnB1dEVsZW1lbnQgPSB0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fFxuICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyB8fFxuICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ1NFTEVDVCcgfHxcbiAgICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xuXG4gICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICAgICAgICB0aGlzLm9uQXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25BcHBseUZpbHRlcigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZG9TZWFyY2goKSB7XG4gICAgbGV0IHNlYXJjaFN0ciA9ICcnO1xuICAgIGNvbnN0IGZpbHRlcnNBcnJheSA9ICh0aGlzLmZpbHRlcnMgfHwgW10pXG4gICAgICAuZmlsdGVyKGYgPT4gISFmICYmICEhZi5maWVsZE5hbWUgJiYgdGhpcy5oYXNGaWx0ZXJWYWx1ZShmLnZhbHVlT2JqZWN0KSlcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkSW5mbyA9IHRoaXMuZmlsdGVyRmllbGRzPy5maW5kKGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmLmZpZWxkTmFtZSk7XG4gICAgICAgIGlmIChmaWVsZEluZm8/Lm11bHRpTGV2ZWxTZWFyY2hFbmFibGUgJiYgZi52YWx1ZU9iamVjdCkge1xuICAgICAgICAgIHNlYXJjaFN0ciA9IGYudmFsdWVPYmplY3Q7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsuLi5mfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGYgPT4gZiAhPT0gbnVsbCk7XG5cbiAgICB0aGlzLmZpbHRlckluZm9ybWF0aW9uLmVtaXQoeyBmaWx0ZXJzOiBmaWx0ZXJzQXJyYXksIHNlYXJjaFN0ciB9KTtcbiAgfVxuXG4gIG9uQXBwbHlGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlSW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIuZW1pdCgpO1xuICAgICAgY29uc3QgbXNnID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnQkFTRV9UQUJMRS5maWx0ZXJBcHBsaWVkJyk7XG4gICAgICB2b2lkIHRoaXMubGl2ZUFubm91bmNlci5hbm5vdW5jZShtc2csICdwb2xpdGUnKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVTZWFyY2goZGVsYXlNczogbnVtYmVyID0gODAwKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kb1NlYXJjaCgpO1xuICAgIH0sIGRlbGF5TXMpO1xuICB9XG5cbiAgZm9ybUNoYW5nZXMoJGV2ZW50OiBhbnksIGluZGV4PzogbnVtYmVyLCBmaWVsZEluZm8/OiBGaWVsZEluZm8pIHtcbiAgICBjb25zdCBmb3JtYXRJZkRhdGUgPSAodHlwZT86IHN0cmluZywgdmFsdWU/OiBhbnkpID0+IHtcbiAgICAgIGlmICghdHlwZSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHZhbHVlO1xuICAgICAgaWYgKCh0eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkYXRlJykpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsICd5eXl5LU1NLWRkJywgJ2VuX1VTJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcblxuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8ICFmaWVsZEluZm8pIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlSW52YWxpZCA9IHRoaXMuaXNEYXRlUmFuZ2VJbnZhbGlkKCRldmVudCk7XG4gICAgICBpZiAoIXRoaXMuZmlsdGVyRmllbGRzIHx8ICF0aGlzLmZpbHRlckZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuZG9TZWFyY2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKGZpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gZmkucHJvcGVydHk7XG4gICAgICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpbHRlclZhbHVlQWN0aXZlKGZpLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBjb250cm9sTmFtZSA9PT0gJ2Zyb20nIHx8IGNvbnRyb2xOYW1lID09PSAndG8nID8gIGZpLnRhcmdldFByb3BlcnR5IDogY29udHJvbE5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBvcGVyYXRvcjogZmkuZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXG4gICAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgICAgZmllbGRUeXBlOiB0aGlzLnR5cGVNYXAoZmkudHlwZSkgYXMgYW55LFxuICAgICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmkudHlwZSwgdmFsdWUpIGFzIGFueVxuICAgICAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGhhc1RleHRGaWVsZCA9ICh0aGlzLmZpbHRlckZpZWxkcyB8fCBbXSkuc29tZShmaSA9PiAoKGZpLnR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0JykpO1xuICAgICAgaWYgKGhhc1RleHRGaWVsZCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWx0ZXJzLmxlbmd0aCA8IGluZGV4ICsgMSkge1xuICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCA9IGluZGV4ICsgMTtcbiAgICB9XG5cbiAgICBsZXQgY29udHJvbE5hbWUgPSBmaWVsZEluZm8ucHJvcGVydHk7XG4gICAgbGV0IHZhbHVlID0gJGV2ZW50ID8gJGV2ZW50W2NvbnRyb2xOYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoJGV2ZW50ICYmICRldmVudC5maWx0ZXJGaWVsZCAhPT0gdW5kZWZpbmVkICYmICRldmVudC5mcm9tVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udHJvbE5hbWUgPSAkZXZlbnQuZmlsdGVyRmllbGQgfHwgY29udHJvbE5hbWU7XG4gICAgICB2YWx1ZSA9ICRldmVudC5mcm9tVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzRmlsdGVyVmFsdWVBY3RpdmUoZmllbGRJbmZvLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1tpbmRleF0gPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0ge1xuICAgICAgICBmaWVsZE5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICBvcGVyYXRvcjogIGZpZWxkSW5mby5maWx0ZXJPcGVyYXRvciB8fCAnRVFVQUxTJyxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgIGZpZWxkVHlwZTogdGhpcy50eXBlTWFwKGZpZWxkSW5mby50eXBlKSBhcyBhbnksXG4gICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmllbGRJbmZvLnR5cGUsIHZhbHVlKSBhcyBhbnlcbiAgICAgIH0gYXMgRmllbGRGaWx0ZXI7XG4gICAgfVxuICAgIGNvbnN0IGlzVGV4dEZpZWxkID0gKChmaWVsZEluZm8udHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnKTtcbiAgICBpZiAoaXNUZXh0RmllbGQpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVTZWFyY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb1NlYXJjaCgpO1xuICAgIH1cbiAgfVxuICB0eXBlTWFwKGNvbFR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHQgPSAoY29sVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodC5pbmNsdWRlcygnbnVtYmVyJykgfHwgdC5pbmNsdWRlcygnaW50JykgfHwgdCA9PT0gJ2xvbmcnKSByZXR1cm4gJ0xvbmcnO1xuICAgIGlmICh0LmluY2x1ZGVzKCdkYXRlJykgfHwgdC5pbmNsdWRlcygndGltZScpKSByZXR1cm4gJ0RhdGUnO1xuICAgIGlmICh0LmluY2x1ZGVzKCdib29sJykpIHJldHVybiAnQm9vbGVhbic7XG4gICAgcmV0dXJuICdTdHJpbmcnO1xuICB9XG5cbiAgaXNFZGl0YWJsZShfaW5kZXg/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgZGVsZXRlQWxsKCkge1xuICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcbiAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcyA/IHRoaXMuZmlsdGVyRmllbGRzLm1hcCgoKSA9PiB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpKSA6IFtdO1xuICAgIHRoaXMuaXNFbXB0eS5lbWl0KHRydWUpO1xuICB9XG5cbiAgb25DbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlclJlc2V0Tm9uY2UrKztcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGVsZXRlQWxsKCksIDApO1xuICB9XG5cbiAgc3dpdGNoVG9BZHZhbmNlZCgpIHtcbiAgICBpZiAodGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXIgfHwgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpOiBGaWVsZEZpbHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkTmFtZTogJycsXG4gICAgICBvcGVyYXRvcjogJycsXG4gICAgICBmaWx0ZXJUeXBlOiAnJyxcbiAgICAgIGZpZWxkVHlwZTogJycsXG4gICAgICB2YWx1ZU9iamVjdDogJydcbiAgICB9IGFzIEZpZWxkRmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGVSYW5nZUludmFsaWQodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcmVjb3JkID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgZnJvbVRpbWUgPSB0aGlzLnRvVGltZXN0YW1wKHJlY29yZFsnZnJvbSddKTtcbiAgICBjb25zdCB0b1RpbWUgPSB0aGlzLnRvVGltZXN0YW1wKHJlY29yZFsndG8nXSk7XG4gICAgaWYgKGZyb21UaW1lID09PSBudWxsIHx8IHRvVGltZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbVRpbWUgPiB0b1RpbWU7XG4gIH1cblxuICBwcml2YXRlIHRvVGltZXN0YW1wKHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gbnVsbCA6IHZhbHVlLmdldFRpbWUoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHByaW1pdGl2ZSA9ICh2YWx1ZSBhcyB7IHZhbHVlT2Y6ICgpID0+IHVua25vd24gfSkudmFsdWVPZigpO1xuICAgICAgaWYgKHR5cGVvZiBwcmltaXRpdmUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShwcmltaXRpdmUpKSB7XG4gICAgICAgIHJldHVybiBwcmltaXRpdmU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHZhbHVlIGFzIHN0cmluZyB8IG51bWJlcikuZ2V0VGltZSgpO1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc0ZpbHRlclZhbHVlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWx0ZXJWYWx1ZUFjdGl2ZShmaWVsZEluZm86IEZpZWxkSW5mbywgdmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzRmlsdGVyVmFsdWUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICgoZmllbGRJbmZvLnR5cGUgfHwgJycpICE9PSAnbXVsdGktc3RhdGUtY2hlY2tib3gnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgY29uc3Qgb3B0aW9ucyA9IGZpZWxkSW5mby5saXN0T3B0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4gb3B0aW9ucy5sZW5ndGggPT09IDAgfHwgIW9wdGlvbnMuZXZlcnkoKGNvZGU6IHN0cmluZykgPT4gc2VsZWN0ZWQuaW5jbHVkZXMoY29kZSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1maWx0ZXItYnVpbGRlclwiPlxuXG4gIDwhLS0gRGVza3RvcCBWaWV3IC0tPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyRm9ybSBkZXNrdG9wLXZpZXdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyRm9ybV9fcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyRm9ybV9fY29sXCI+XG4gICAgICAgIDxhcHAtZmllbGQtZmlsdGVyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXG4gICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcbiAgICAgICAgICBbZmlsdGVyUmVzZXROb25jZV09XCJmaWx0ZXJSZXNldE5vbmNlXCJcbiAgICAgICAgICAoZmlsdGVyRmllbGRJbmZvcm1hdGlvbik9XCJmb3JtQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlckZvcm1fX2ZpbGVkLWZpbHRlclwiXG4gICAgICAgID5cbiAgICAgICAgPC9hcHAtZmllbGQtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1hcHBseS1maWx0ZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyRmlsdGVycygpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXJfYWxsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5jbGVhckZpbHRlcnMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWFwcGx5LWZpbHRlclwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGVSYW5nZUludmFsaWRcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5RmlsdGVyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuYXBwbHlGaWx0ZXInIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIE1vYmlsZSBWaWV3IC0tPlxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLXZpZXdcIj5cbiAgICA8IS0tIE1vYmlsZSBSb3cgMTogU2VhcmNoIEZpZWxkIGFuZCBFeHBvcnQgQnV0dG9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtc2VhcmNoLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1zZWFyY2gtZmllbGRcIj5cbiAgICAgICAgPGFwcC1maWVsZC1maWx0ZXJcbiAgICAgICAgICBbZWRpdGFibGVdPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgICBbZmlsdGVyXT1cImZpbHRlclwiXG4gICAgICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcbiAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgICAgW2ZpbHRlckZpZWxkc109XCJmaWx0ZXJGaWVsZHNcIlxuICAgICAgICAgIFtmaWx0ZXJSZXNldE5vbmNlXT1cImZpbHRlclJlc2V0Tm9uY2VcIlxuICAgICAgICAgIChmaWx0ZXJGaWVsZEluZm9ybWF0aW9uKT1cImZvcm1DaGFuZ2VzKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwibW9iaWxlLWZpZWxkLWZpbHRlclwiXG4gICAgICAgID5cbiAgICAgICAgPC9hcHAtZmllbGQtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1leHBvcnQtbW9iaWxlXCJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImV4cG9ydE1lbnVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmZpbGVfZXhwb3J0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhcnJvdy1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bWF0LW1lbnUgI2V4cG9ydE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FeHBvcnRDbGljaygncGRmJylcIj5QREY8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkV4cG9ydENsaWNrKCd4bHN4JylcIj5FeGNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRXhwb3J0Q2xpY2soJ2NzdicpXCI+Q1NWPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb2JpbGUgUm93IDI6IEZpbHRlciBCeSBhbmQgU29ydCBCeSBCdXR0b25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtZmlsdGVyLXJvd1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tZmlsdGVyLWJ5IGJ0bi1maWx0ZXItYnktLWljb24tb25seVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhckZpbHRlcnMoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZJTFRFUi1CVUlMREVSLmNsZWFyRmlsdGVycycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9zd2VlcDwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1maWx0ZXItYnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRhdGVSYW5nZUludmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwib25BcHBseUZpbHRlcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0ZJTFRFUi1CVUlMREVSLmFwcGx5RmlsdGVyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLXNvcnQtYnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNvcnRNZW51XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj51bmZvbGRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0ZJTFRFUi1CVUlMREVSLnNvcnRCeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXJyb3ctaWNvblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNzb3J0TWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZ2V0U29ydGFibGVDb2x1bW5zKClcIlxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAoY2xpY2spPVwib25Tb3J0QnlDbGljayhjb2x1bW4ucHJvcGVydHkpXCI+XG4gICAgICAgICAge3sgbGFiZWxLZXkoY29sdW1uKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiZ2V0U29ydGFibGVDb2x1bW5zKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgZGlzYWJsZWQ+XG4gICAgICAgICAge3sgJ0ZJTFRFUi1CVUlMREVSLm5vU29ydGFibGVDb2x1bW5zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48IS0tICA8ZGl2ICpuZ0lmPVwiY2hlY2tJc0VtcHR5KClcIiBjbGFzcz1cImxpbmUtdG9wXCI+LS0+XG48IS0tICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPi0tPlxuPCEtLSAgPC9kaXY+LS0+XG5cbjwhLS0gIDxkaXYgY2xhc3M9XCJsaW5lLWJvdHRvbVwiPi0tPlxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cbjwhLS0gIDwvZGl2Pi0tPlxuXG48IS0tICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+LS0+XG48IS0tICAgIDxidXR0b24gY2xhc3M9XCJidG4tbm9uZS1iYWNrZ3JvdW5kLXByaW1hcnkgYWN0aW9uX19jbGVhclwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRlbGV0ZUFsbCgpXCI+LS0+XG48IS0tICAgICAge3snRklMVEVSLUJVSUxERVIuY2xlYXJBbGxGaWx0ZXJzJyB8IHRyYW5zbGF0ZX19LS0+XG48IS0tICAgIDwvYnV0dG9uPi0tPlxuPCEtLSAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWJhY2tncm91bmQtcHJpbWFyeVwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRvU2VhcmNoKClcIj4tLT5cbjwhLS0gICAgICB7eydGSUxURVItQlVJTERFUi5zZWFyY2gnIHwgdHJhbnNsYXRlfX0tLT5cbjwhLS0gICAgPC9idXR0b24+LS0+XG48IS0tICA8L2Rpdj4tLT5cbjwvZGl2PlxuIl19
|