@unifylib/ui-lib 1.1.26 → 1.1.28
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/iq-ui-lib.mjs +5 -0
- package/esm2022/lib/base-model/field-info.mjs +3 -1
- package/esm2022/lib/base-model/page-info.mjs +1 -1
- package/esm2022/lib/base-model/table-column.interface.mjs +1 -1
- package/esm2022/lib/components/action-comment/action-comment.component.mjs +3 -3
- package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +3 -3
- package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +2 -2
- package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +57 -7
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +3 -3
- package/esm2022/lib/components/base-table/base-table.component.mjs +68 -19
- package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +2 -2
- package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +33 -3
- package/esm2022/lib/components/paginator/paginator.component.mjs +32 -3
- package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +2 -2
- package/esm2022/lib/components/report-form/report-form.component.mjs +2 -2
- package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +14 -4
- package/esm2022/lib/components/shared/action-card/action-card.component.mjs +3 -3
- package/esm2022/lib/components/shared-list/shared-list.component.mjs +2 -2
- package/esm2022/lib/components/title-bar/title-bar.component.mjs +3 -3
- package/fesm2022/iq-ui-lib.mjs +6067 -0
- package/fesm2022/iq-ui-lib.mjs.map +1 -0
- package/fesm2022/unifylib-ui-lib.mjs +213 -45
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/base-model/field-info.d.ts +1 -0
- package/lib/base-model/page-info.d.ts +1 -0
- package/lib/base-model/table-column.interface.d.ts +2 -0
- package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +13 -2
- package/lib/components/base-table/base-table.component.d.ts +15 -3
- package/lib/components/item-line-editor/item-line-editor.component.d.ts +5 -2
- package/lib/components/paginator/paginator.component.d.ts +8 -1
- package/lib/components/section-form-canvas/section-form-canvas.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
|
-
import { CommonModule, formatDate } from '@angular/common';
|
|
2
|
+
import { CommonModule, formatDate, NgForOf } from '@angular/common';
|
|
3
3
|
import { FieldFilterComponent } from "../field-filter/field-filter.component";
|
|
4
4
|
import { TranslateModule } from "@ngx-translate/core";
|
|
5
5
|
import { MatButtonModule } from "@angular/material/button";
|
|
6
6
|
import { MatIcon } from "@angular/material/icon";
|
|
7
|
+
import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu";
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/common";
|
|
9
10
|
import * as i2 from "@ngx-translate/core";
|
|
@@ -11,10 +12,40 @@ import * as i3 from "@angular/material/button";
|
|
|
11
12
|
export class FilterBuilderComponent {
|
|
12
13
|
constructor() {
|
|
13
14
|
this.pendingFilters = [];
|
|
15
|
+
this.showExportButton = false;
|
|
14
16
|
this.filters = [];
|
|
15
17
|
this.filterInformation = new EventEmitter();
|
|
16
18
|
this.isEmpty = new EventEmitter();
|
|
17
19
|
this.applyFilter = new EventEmitter();
|
|
20
|
+
this.sortByClicked = new EventEmitter();
|
|
21
|
+
this.exportClicked = new EventEmitter();
|
|
22
|
+
}
|
|
23
|
+
isMobile() {
|
|
24
|
+
return typeof window !== 'undefined' && window.innerWidth <= 768;
|
|
25
|
+
}
|
|
26
|
+
getSortableColumns() {
|
|
27
|
+
if (!this.columns) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
return this.columns.filter(column => column.visible === true && column.enableSorting === true);
|
|
31
|
+
}
|
|
32
|
+
labelKey(column) {
|
|
33
|
+
if (!column || !column.property) {
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
36
|
+
const configuredKey = column.label ? column.label : column.property;
|
|
37
|
+
if (!this.pageInfo || !this.pageInfo.labelsSection) {
|
|
38
|
+
return configuredKey;
|
|
39
|
+
}
|
|
40
|
+
return configuredKey.startsWith(this.pageInfo.labelsSection)
|
|
41
|
+
? `${configuredKey}`
|
|
42
|
+
: `${this.pageInfo.labelsSection}.${configuredKey}`;
|
|
43
|
+
}
|
|
44
|
+
onSortByClick(columnProperty) {
|
|
45
|
+
this.sortByClicked.emit(columnProperty);
|
|
46
|
+
}
|
|
47
|
+
onExportClick(reportType) {
|
|
48
|
+
this.exportClicked.emit(reportType);
|
|
18
49
|
}
|
|
19
50
|
ngOnInit() {
|
|
20
51
|
this.switchToAdvanced();
|
|
@@ -50,10 +81,19 @@ export class FilterBuilderComponent {
|
|
|
50
81
|
}
|
|
51
82
|
}
|
|
52
83
|
doSearch() {
|
|
84
|
+
let searchStr = '';
|
|
53
85
|
const filtersArray = (this.filters || [])
|
|
54
86
|
.filter(f => !!f && f.fieldName && f.valueObject !== undefined && f.valueObject !== null && f.valueObject !== '')
|
|
55
|
-
.map(f =>
|
|
56
|
-
|
|
87
|
+
.map(f => {
|
|
88
|
+
const fieldInfo = this.filterFields?.find(field => field.property === f.fieldName);
|
|
89
|
+
if (fieldInfo?.multiLevelSearchEnable && f.valueObject) {
|
|
90
|
+
searchStr = f.valueObject;
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return { ...f };
|
|
94
|
+
})
|
|
95
|
+
.filter(f => f !== null);
|
|
96
|
+
this.filterInformation.emit({ filters: filtersArray, searchStr });
|
|
57
97
|
}
|
|
58
98
|
onApplyFilter() {
|
|
59
99
|
if (this.autoApplyTimeout) {
|
|
@@ -192,7 +232,7 @@ export class FilterBuilderComponent {
|
|
|
192
232
|
};
|
|
193
233
|
}
|
|
194
234
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
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" }, outputs: { filterInformation: "filterInformation", isEmpty: "isEmpty", applyFilter: "applyFilter" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div class=\"main-filter-builder\">\r\n\r\n <div class=\"filterForm\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\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:120px!important;max-width:120px!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}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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"], 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"] }] }); }
|
|
235
|
+
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\">\r\n\r\n <!-- Desktop View -->\r\n <div class=\"filterForm desktop-view\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile View -->\r\n <div class=\"mobile-view\">\r\n <!-- Mobile Row 1: Search Field and Export Button -->\r\n <div class=\"mobile-search-row\">\r\n <div class=\"mobile-search-field\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"mobile-field-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <button\r\n *ngIf=\"showExportButton\"\r\n mat-flat-button\r\n class=\"btn-export-mobile\"\r\n [matMenuTriggerFor]=\"exportMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>file_export</mat-icon>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\r\n <div class=\"mobile-filter-row\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-content\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.filterBy' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-sort-by\"\r\n [matMenuTriggerFor]=\"sortMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>unfold_more</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button \r\n *ngFor=\"let column of getSortableColumns()\" \r\n mat-menu-item \r\n (click)=\"onSortByClick(column.property)\">\r\n {{ labelKey(column) | translate }}\r\n </button>\r\n <button \r\n *ngIf=\"getSortableColumns().length === 0\" \r\n mat-menu-item \r\n disabled>\r\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\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:120px!important;max-width:120px!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:11px;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 .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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-datepicker){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:has(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-datepicker){display:none!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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-datepicker),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-datepicker),.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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-datepicker),.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"], 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"] }] }); }
|
|
196
236
|
}
|
|
197
237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterBuilderComponent, decorators: [{
|
|
198
238
|
type: Component,
|
|
@@ -201,8 +241,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
201
241
|
FieldFilterComponent,
|
|
202
242
|
TranslateModule,
|
|
203
243
|
MatButtonModule,
|
|
204
|
-
MatIcon
|
|
205
|
-
|
|
244
|
+
MatIcon,
|
|
245
|
+
MatMenu,
|
|
246
|
+
MatMenuItem,
|
|
247
|
+
MatMenuTrigger,
|
|
248
|
+
NgForOf
|
|
249
|
+
], template: "<div class=\"main-filter-builder\">\r\n\r\n <!-- Desktop View -->\r\n <div class=\"filterForm desktop-view\">\r\n <div class=\"filterForm__row\">\r\n <div class=\"filterForm__col\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"filterForm__filed-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <div class=\"button-group\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-apply-filter\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-text\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.applyFilter' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile View -->\r\n <div class=\"mobile-view\">\r\n <!-- Mobile Row 1: Search Field and Export Button -->\r\n <div class=\"mobile-search-row\">\r\n <div class=\"mobile-search-field\">\r\n <app-field-filter\r\n [editable]=\"isEditable()\"\r\n [filter]=\"filter\"\r\n [pageInfo]=\"pageInfo\"\r\n *ngIf=\"isEditable()\"\r\n [filterFields]=\"filterFields\"\r\n (filterFieldInformation)=\"formChanges($event)\"\r\n class=\"mobile-field-filter\"\r\n >\r\n </app-field-filter>\r\n </div>\r\n <button\r\n *ngIf=\"showExportButton\"\r\n mat-flat-button\r\n class=\"btn-export-mobile\"\r\n [matMenuTriggerFor]=\"exportMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>file_export</mat-icon>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #exportMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onExportClick('pdf')\">PDF</button>\r\n <button mat-menu-item (click)=\"onExportClick('xlsx')\">Excel</button>\r\n <button mat-menu-item (click)=\"onExportClick('csv')\">CSV</button>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Mobile Row 2: Filter By and Sort By Buttons -->\r\n <div class=\"mobile-filter-row\">\r\n <button\r\n mat-flat-button\r\n class=\"btn-filter-by\"\r\n (click)=\"onApplyFilter()\">\r\n <div class=\"button-content\">\r\n <mat-icon>filter_list</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.filterBy' | translate }}</span>\r\n </div>\r\n </button>\r\n <button\r\n mat-flat-button\r\n class=\"btn-sort-by\"\r\n [matMenuTriggerFor]=\"sortMenu\">\r\n <div class=\"button-content\">\r\n <mat-icon>unfold_more</mat-icon>\r\n <span>{{ 'FILTER-BUILDER.sortBy' | translate }}</span>\r\n <mat-icon class=\"arrow-icon\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n </button>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button \r\n *ngFor=\"let column of getSortableColumns()\" \r\n mat-menu-item \r\n (click)=\"onSortByClick(column.property)\">\r\n {{ labelKey(column) | translate }}\r\n </button>\r\n <button \r\n *ngIf=\"getSortableColumns().length === 0\" \r\n mat-menu-item \r\n disabled>\r\n {{ 'FILTER-BUILDER.noSortableColumns' | translate }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n\r\n<!-- <div *ngIf=\"checkIsEmpty()\" class=\"line-top\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"line-bottom\">-->\r\n<!-- <mat-divider></mat-divider>-->\r\n<!-- </div>-->\r\n\r\n<!-- <div class=\"action\">-->\r\n<!-- <button class=\"btn-none-background-primary action__clear\" mat-button (click)=\"deleteAll()\">-->\r\n<!-- {{'FILTER-BUILDER.clearAllFilters' | translate}}-->\r\n<!-- </button>-->\r\n<!-- <button class=\"btn-background-primary\" mat-button (click)=\"doSearch()\">-->\r\n<!-- {{'FILTER-BUILDER.search' | translate}}-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n</div>\r\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:120px!important;max-width:120px!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:11px;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 .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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-datepicker){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:has(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-datepicker){display:none!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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-datepicker),.main-filter-builder .mobile-field-filter ::ng-deep .field-column:has(mat-select){display:none!important}.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep .field-column mat-form-field:has(mat-datepicker),.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(input.mat-datepicker-input),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(.mat-datepicker-toggle),.main-filter-builder .mobile-field-filter ::ng-deep mat-form-field:has(mat-datepicker),.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"] }]
|
|
206
250
|
}], ctorParameters: () => [], propDecorators: { columns: [{
|
|
207
251
|
type: Input
|
|
208
252
|
}], isChecked: [{
|
|
@@ -213,14 +257,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
213
257
|
type: Input
|
|
214
258
|
}], pendingFilters: [{
|
|
215
259
|
type: Input
|
|
260
|
+
}], showExportButton: [{
|
|
261
|
+
type: Input
|
|
216
262
|
}], filterInformation: [{
|
|
217
263
|
type: Output
|
|
218
264
|
}], isEmpty: [{
|
|
219
265
|
type: Output
|
|
220
266
|
}], applyFilter: [{
|
|
221
267
|
type: Output
|
|
268
|
+
}], sortByClicked: [{
|
|
269
|
+
type: Output
|
|
270
|
+
}], exportClicked: [{
|
|
271
|
+
type: Output
|
|
222
272
|
}], onKeyDown: [{
|
|
223
273
|
type: HostListener,
|
|
224
274
|
args: ['keydown', ['$event']]
|
|
225
275
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBZS9DLE1BQU0sT0FBTyxzQkFBc0I7SUE4QmpDO1FBbEJBLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUduQyxZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQU01QixzQkFBaUIsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFHbkYsWUFBTyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRzdELGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFJM0QsQ0FBQztJQUVELFFBQVE7UUFHTixJ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QUNwQixlQUFlLDJGQUNmLGVBQWUsNE5BQ2YsT0FBTzs7NEZBSUUsc0JBQXNCO2tCQWJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUVsQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixPQUFPO3FCQUNSO3dEQU1ELE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBVU4saUJBQWlCO3NCQURoQixNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBK0JQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGZvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7RmllbGRJbmZvLCBQYWdlSW5mbywgVGFibGVDb2x1bW59IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7RmllbGRGaWx0ZXJ9IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsL2ZpZWxkLWZpbHRlci5tb2RlbFwiO1xyXG5pbXBvcnQge0ZpZWxkRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZpbHRlci1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRmllbGRGaWx0ZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uXHJcbiAgXSxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItYnVpbGRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBpc0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJGaWVsZHM6IEZpZWxkSW5mb1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnZUluZm86IFBhZ2VJbmZvO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGVuZGluZ0ZpbHRlcnM6IEZpZWxkRmlsdGVyW10gPSBbXTtcclxuXHJcbiAgZmlsdGVyOiBGaWVsZEZpbHRlcjtcclxuICBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoVGltZW91dDogYW55O1xyXG4gIHByaXZhdGUgYXV0b0FwcGx5VGltZW91dDogYW55O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJJbmZvcm1hdGlvbjogRXZlbnRFbWl0dGVyPEZpZWxkRmlsdGVyW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWVsZEZpbHRlcltdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBpc0VtcHR5OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGFwcGx5RmlsdGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuXHJcbiAgICB0aGlzLnN3aXRjaFRvQWR2YW5jZWQoKTtcclxuICAgIGlmICghdGhpcy5maWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyRmllbGRzICYmIHRoaXMuZmlsdGVyRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcy5tYXAoKCkgPT4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvQXBwbHlUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9BcHBseVRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmF1dG9BcHBseVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSkge1xyXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGlzSW5wdXRFbGVtZW50ID0gdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ1NFTEVDVCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcclxuXHJcbiAgICAgIGlmIChpc0lucHV0RWxlbWVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkFwcGx5RmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZG9TZWFyY2goKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQXJyYXkgPSAodGhpcy5maWx0ZXJzIHx8IFtdKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmICYmIGYuZmllbGROYW1lICYmIGYudmFsdWVPYmplY3QgIT09IHVuZGVmaW5lZCAmJiBmLnZhbHVlT2JqZWN0ICE9PSBudWxsICYmIGYudmFsdWVPYmplY3QgIT09ICcnKVxyXG4gICAgICAubWFwKGYgPT4gKHsuLi5mfSkpO1xyXG4gICAgdGhpcy5maWx0ZXJJbmZvcm1hdGlvbi5lbWl0KGZpbHRlcnNBcnJheSk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5RmlsdGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0b0FwcGx5VGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvQXBwbHlUaW1lb3V0KTtcclxuICAgICAgdGhpcy5hdXRvQXBwbHlUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwbHlGaWx0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZUF1dG9BcHBseSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9BcHBseVRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b0FwcGx5VGltZW91dCk7XHJcbiAgICAgIHRoaXMuYXV0b0FwcGx5VGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dG9BcHBseVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbkFwcGx5RmlsdGVyKCk7XHJcbiAgICAgIHRoaXMuYXV0b0FwcGx5VGltZW91dCA9IG51bGw7XHJcbiAgICB9LCAxMDAwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjaGVkdWxlU2VhcmNoKGRlbGF5TXM6IG51bWJlciA9IDgwMCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRvU2VhcmNoKCk7XHJcbiAgICB9LCBkZWxheU1zKTtcclxuICB9XHJcblxyXG4gIGZvcm1DaGFuZ2VzKCRldmVudDogYW55LCBpbmRleD86IG51bWJlciwgZmllbGRJbmZvPzogRmllbGRJbmZvKSB7XHJcbiAgICBpZiAodGhpcy5hdXRvQXBwbHlUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9BcHBseVRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmF1dG9BcHBseVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1hdElmRGF0ZSA9ICh0eXBlPzogc3RyaW5nLCB2YWx1ZT86IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXR5cGUgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcclxuICAgICAgaWYgKCh0eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkYXRlJykpIHtcclxuICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZSh2YWx1ZSwgJ3l5eXktTU0tZGQnLCAnZW5fVVMnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8ICFmaWVsZEluZm8pIHtcclxuICAgICAgaWYgKCF0aGlzLmZpbHRlckZpZWxkcyB8fCAhdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5kb1NlYXJjaCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJGaWVsZHMubWFwKChmaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gZmkucHJvcGVydHk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gJGV2ZW50ID8gJGV2ZW50W2NvbnRyb2xOYW1lXSA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBjb250cm9sTmFtZSA9PT0gJ2Zyb20nIHx8IGNvbnRyb2xOYW1lID09PSAndG8nID8gIGZpLnRhcmdldFByb3BlcnR5IDogY29udHJvbE5hbWU7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yOiBmaS5maWx0ZXJPcGVyYXRvciB8fCAnRVFVQUxTJyxcclxuICAgICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxyXG4gICAgICAgICAgZmllbGRUeXBlOiB0aGlzLnR5cGVNYXAoZmkudHlwZSkgYXMgYW55LFxyXG4gICAgICAgICAgdmFsdWVPYmplY3Q6IGZvcm1hdElmRGF0ZShmaS50eXBlLCB2YWx1ZSkgYXMgYW55XHJcbiAgICAgICAgfSBhcyBGaWVsZEZpbHRlcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBoYXNUZXh0RmllbGQgPSAodGhpcy5maWx0ZXJGaWVsZHMgfHwgW10pLnNvbWUoZmkgPT4gKChmaS50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndGV4dCcpKTtcclxuICAgICAgaWYgKGhhc1RleHRGaWVsZCkge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVTZWFyY2goKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRvU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2hlZHVsZUF1dG9BcHBseSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gW107XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWx0ZXJzLmxlbmd0aCA8IGluZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMubGVuZ3RoID0gaW5kZXggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250cm9sTmFtZSA9IGZpZWxkSW5mby5wcm9wZXJ0eTtcclxuICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoJGV2ZW50ICYmICRldmVudC5maWx0ZXJGaWVsZCAhPT0gdW5kZWZpbmVkICYmICRldmVudC5mcm9tVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb250cm9sTmFtZSA9ICRldmVudC5maWx0ZXJGaWVsZCB8fCBjb250cm9sTmFtZTtcclxuICAgICAgdmFsdWUgPSAkZXZlbnQuZnJvbVZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc1tpbmRleF0gPSB7XHJcbiAgICAgICAgZmllbGROYW1lOiBjb250cm9sTmFtZSxcclxuICAgICAgICBvcGVyYXRvcjogIGZpZWxkSW5mby5maWx0ZXJPcGVyYXRvciB8fCAnRVFVQUxTJyxcclxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJyxcclxuICAgICAgICBmaWVsZFR5cGU6IHRoaXMudHlwZU1hcChmaWVsZEluZm8udHlwZSkgYXMgYW55LFxyXG4gICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmllbGRJbmZvLnR5cGUsIHZhbHVlKSBhcyBhbnlcclxuICAgICAgfSBhcyBGaWVsZEZpbHRlcjtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzVGV4dEZpZWxkID0gKChmaWVsZEluZm8udHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnKTtcclxuICAgIGlmIChpc1RleHRGaWVsZCkge1xyXG4gICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRvU2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNjaGVkdWxlQXV0b0FwcGx5KCk7XHJcbiAgfVxyXG4gIHR5cGVNYXAoY29sVHlwZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0ID0gKGNvbFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodC5pbmNsdWRlcygnbnVtYmVyJykgfHwgdC5pbmNsdWRlcygnaW50JykgfHwgdCA9PT0gJ2xvbmcnKSByZXR1cm4gJ0xvbmcnO1xyXG4gICAgaWYgKHQuaW5jbHVkZXMoJ2RhdGUnKSB8fCB0LmluY2x1ZGVzKCd0aW1lJykpIHJldHVybiAnRGF0ZSc7XHJcbiAgICBpZiAodC5pbmNsdWRlcygnYm9vbCcpKSByZXR1cm4gJ0Jvb2xlYW4nO1xyXG4gICAgcmV0dXJuICdTdHJpbmcnO1xyXG4gIH1cclxuXHJcbiAgaXNFZGl0YWJsZShfaW5kZXg/OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZUFsbCgpIHtcclxuICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcclxuICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVyRmllbGRzID8gdGhpcy5maWx0ZXJGaWVsZHMubWFwKCgpID0+IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCkpIDogW107XHJcbiAgICB0aGlzLmlzRW1wdHkuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBzd2l0Y2hUb0FkdmFuY2VkKCkge1xyXG4gICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXIgfHwgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk6IEZpZWxkRmlsdGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGZpZWxkTmFtZTogJycsXHJcbiAgICAgIG9wZXJhdG9yOiAnJyxcclxuICAgICAgZmlsdGVyVHlwZTogJycsXHJcbiAgICAgIGZpZWxkVHlwZTogJycsXHJcbiAgICAgIHZhbHVlT2JqZWN0OiAnJ1xyXG4gICAgfSBhcyBGaWVsZEZpbHRlcjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tZmlsdGVyLWJ1aWxkZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJGb3JtX19yb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX2NvbFwiPlxyXG4gICAgICAgIDxhcHAtZmllbGQtZmlsdGVyXHJcbiAgICAgICAgICBbZWRpdGFibGVdPVwiaXNFZGl0YWJsZSgpXCJcclxuICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcclxuICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGUoKVwiXHJcbiAgICAgICAgICBbZmlsdGVyRmllbGRzXT1cImZpbHRlckZpZWxkc1wiXHJcbiAgICAgICAgICAoZmlsdGVyRmllbGRJbmZvcm1hdGlvbik9XCJmb3JtQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyRm9ybV9fZmlsZWQtZmlsdGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hcHAtZmllbGQtZmlsdGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4tYXBwbHktZmlsdGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5RmlsdGVyKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuYXBwbHlGaWx0ZXInIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48IS0tICA8ZGl2ICpuZ0lmPVwiY2hlY2tJc0VtcHR5KClcIiBjbGFzcz1cImxpbmUtdG9wXCI+LS0+XHJcbjwhLS0gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+LS0+XHJcbjwhLS0gIDwvZGl2Pi0tPlxyXG5cclxuPCEtLSAgPGRpdiBjbGFzcz1cImxpbmUtYm90dG9tXCI+LS0+XHJcbjwhLS0gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+LS0+XHJcbjwhLS0gIDwvZGl2Pi0tPlxyXG5cclxuPCEtLSAgPGRpdiBjbGFzcz1cImFjdGlvblwiPi0tPlxyXG48IS0tICAgIDxidXR0b24gY2xhc3M9XCJidG4tbm9uZS1iYWNrZ3JvdW5kLXByaW1hcnkgYWN0aW9uX19jbGVhclwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRlbGV0ZUFsbCgpXCI+LS0+XHJcbjwhLS0gICAgICB7eydGSUxURVItQlVJTERFUi5jbGVhckFsbEZpbHRlcnMnIHwgdHJhbnNsYXRlfX0tLT5cclxuPCEtLSAgICA8L2J1dHRvbj4tLT5cclxuPCEtLSAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWJhY2tncm91bmQtcHJpbWFyeVwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRvU2VhcmNoKClcIj4tLT5cclxuPCEtLSAgICAgIHt7J0ZJTFRFUi1CVUlMREVSLnNlYXJjaCcgfCB0cmFuc2xhdGV9fS0tPlxyXG48IS0tICAgIDwvYnV0dG9uPi0tPlxyXG48IS0tICA8L2Rpdj4tLT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
276
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR2xFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQW1CNUUsTUFBTSxPQUFPLHNCQUFzQjtJQXNDakM7UUExQkEsbUJBQWMsR0FBa0IsRUFBRSxDQUFDO1FBR25DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUdsQyxZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQU01QixzQkFBaUIsR0FBZ0UsSUFBSSxZQUFZLEVBQWlELENBQUM7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QkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQVVOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFJUCxPQUFPO3NCQUROLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBZ0VQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGUsIGZvcm1hdERhdGUsIE5nRm9yT2Z9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7RmllbGRJbmZvLCBQYWdlSW5mbywgVGFibGVDb2x1bW59IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7RmllbGRGaWx0ZXJ9IGZyb20gXCIuLi8uLi8uLi9iYXNlLW1vZGVsL2ZpZWxkLWZpbHRlci5tb2RlbFwiO1xyXG5pbXBvcnQge0ZpZWxkRmlsdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGQtZmlsdGVyL2ZpZWxkLWZpbHRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRNZW51LCBNYXRNZW51SXRlbSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWx0ZXItYnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZpZWxkRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbSxcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTmdGb3JPZlxyXG4gIF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KClcclxuICBjb2x1bW5zOiBUYWJsZUNvbHVtbjxhbnk+W107XHJcblxyXG5ASW5wdXQoKVxyXG4gIGlzQ2hlY2tlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIGZpbHRlckZpZWxkczogRmllbGRJbmZvW107XHJcbiAgQElucHV0KClcclxuICBwYWdlSW5mbzogUGFnZUluZm87XHJcbiAgQElucHV0KClcclxuICBwZW5kaW5nRmlsdGVyczogRmllbGRGaWx0ZXJbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dFeHBvcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZmlsdGVyOiBGaWVsZEZpbHRlcjtcclxuICBmaWx0ZXJzOiBGaWVsZEZpbHRlcltdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoVGltZW91dDogYW55O1xyXG4gIHByaXZhdGUgYXV0b0FwcGx5VGltZW91dDogYW55O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJJbmZvcm1hdGlvbjogRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyczogRmllbGRGaWx0ZXJbXSwgc2VhcmNoU3RyOiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaXNFbXB0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBhcHBseUZpbHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzb3J0QnlDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBleHBvcnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICB9XHJcblxyXG4gIGdldFNvcnRhYmxlQ29sdW1ucygpOiBUYWJsZUNvbHVtbjxhbnk+W10ge1xyXG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+XHJcbiAgICAgIGNvbHVtbi52aXNpYmxlID09PSB0cnVlICYmIGNvbHVtbi5lbmFibGVTb3J0aW5nID09PSB0cnVlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxLZXkoY29sdW1uOiBUYWJsZUNvbHVtbjxhbnk+KTogc3RyaW5nIHtcclxuICAgIGlmICghY29sdW1uIHx8ICFjb2x1bW4ucHJvcGVydHkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eTtcclxuICAgIGlmICghdGhpcy5wYWdlSW5mbyB8fCAhdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBjb25maWd1cmVkS2V5O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXkuc3RhcnRzV2l0aCh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pXHJcbiAgICAgID8gYCR7Y29uZmlndXJlZEtleX1gXHJcbiAgICAgIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcclxuICB9XHJcblxyXG4gIG9uU29ydEJ5Q2xpY2soY29sdW1uUHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0QnlDbGlja2VkLmVtaXQoY29sdW1uUHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBvcnRDbGljayhyZXBvcnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwb3J0Q2xpY2tlZC5lbWl0KHJlcG9ydFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG5cclxuICAgIHRoaXMuc3dpdGNoVG9BZHZhbmNlZCgpO1xyXG4gICAgaWYgKCF0aGlzLmZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWx0ZXJGaWVsZHMgJiYgdGhpcy5maWx0ZXJGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVyRmllbGRzLm1hcCgoKSA9PiB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0KTtcclxuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmF1dG9BcHBseVRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b0FwcGx5VGltZW91dCk7XHJcbiAgICAgIHRoaXMuYXV0b0FwcGx5VGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5KSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgY29uc3QgaXNJbnB1dEVsZW1lbnQgPSB0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YWdOYW1lID09PSAnU0VMRUNUJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG5cclxuICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQXBwbHlGaWx0ZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkb1NlYXJjaCgpIHtcclxuICAgIGxldCBzZWFyY2hTdHIgPSAnJztcclxuICAgIGNvbnN0IGZpbHRlcnNBcnJheSA9ICh0aGlzLmZpbHRlcnMgfHwgW10pXHJcbiAgICAgIC5maWx0ZXIoZiA9PiAhIWYgJiYgZi5maWVsZE5hbWUgJiYgZi52YWx1ZU9iamVjdCAhPT0gdW5kZWZpbmVkICYmIGYudmFsdWVPYmplY3QgIT09IG51bGwgJiYgZi52YWx1ZU9iamVjdCAhPT0gJycpXHJcbiAgICAgIC5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgZmllbGRJbmZvID0gdGhpcy5maWx0ZXJGaWVsZHM/LmZpbmQoZmllbGQgPT4gZmllbGQucHJvcGVydHkgPT09IGYuZmllbGROYW1lKTtcclxuICAgICAgICBpZiAoZmllbGRJbmZvPy5tdWx0aUxldmVsU2VhcmNoRW5hYmxlICYmIGYudmFsdWVPYmplY3QpIHtcclxuICAgICAgICAgIHNlYXJjaFN0ciA9IGYudmFsdWVPYmplY3Q7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsuLi5mfTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcihmID0+IGYgIT09IG51bGwpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVySW5mb3JtYXRpb24uZW1pdCh7IGZpbHRlcnM6IGZpbHRlcnNBcnJheSwgc2VhcmNoU3RyIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseUZpbHRlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9BcHBseVRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b0FwcGx5VGltZW91dCk7XHJcbiAgICAgIHRoaXMuYXV0b0FwcGx5VGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NoZWR1bGVBdXRvQXBwbHkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRvQXBwbHlUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9BcHBseVRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmF1dG9BcHBseVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRvQXBwbHlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMub25BcHBseUZpbHRlcigpO1xyXG4gICAgICB0aGlzLmF1dG9BcHBseVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfSwgMTAwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZVNlYXJjaChkZWxheU1zOiBudW1iZXIgPSA4MDApIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kb1NlYXJjaCgpO1xyXG4gICAgfSwgZGVsYXlNcyk7XHJcbiAgfVxyXG5cclxuICBmb3JtQ2hhbmdlcygkZXZlbnQ6IGFueSwgaW5kZXg/OiBudW1iZXIsIGZpZWxkSW5mbz86IEZpZWxkSW5mbykge1xyXG4gICAgaWYgKHRoaXMuYXV0b0FwcGx5VGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvQXBwbHlUaW1lb3V0KTtcclxuICAgICAgdGhpcy5hdXRvQXBwbHlUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtYXRJZkRhdGUgPSAodHlwZT86IHN0cmluZywgdmFsdWU/OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0eXBlIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gdmFsdWU7XHJcbiAgICAgIGlmICgodHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsICd5eXl5LU1NLWRkJywgJ2VuX1VTJyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhZmllbGRJbmZvKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXJGaWVsZHMgfHwgIXRoaXMuZmlsdGVyRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZG9TZWFyY2goKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVyRmllbGRzLm1hcCgoZmkpID0+IHtcclxuICAgICAgICBjb25zdCBjb250cm9sTmFtZSA9IGZpLnByb3BlcnR5O1xyXG4gICAgICAgIGxldCB2YWx1ZSA9ICRldmVudCA/ICRldmVudFtjb250cm9sTmFtZV0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0RmllbGRGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gY29udHJvbE5hbWUgPT09ICdmcm9tJyB8fCBjb250cm9sTmFtZSA9PT0gJ3RvJyA/ICBmaS50YXJnZXRQcm9wZXJ0eSA6IGNvbnRyb2xOYW1lO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcjogZmkuZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXHJcbiAgICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJyxcclxuICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy50eXBlTWFwKGZpLnR5cGUpIGFzIGFueSxcclxuICAgICAgICAgIHZhbHVlT2JqZWN0OiBmb3JtYXRJZkRhdGUoZmkudHlwZSwgdmFsdWUpIGFzIGFueVxyXG4gICAgICAgIH0gYXMgRmllbGRGaWx0ZXI7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgaGFzVGV4dEZpZWxkID0gKHRoaXMuZmlsdGVyRmllbGRzIHx8IFtdKS5zb21lKGZpID0+ICgoZmkudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RleHQnKSk7XHJcbiAgICAgIGlmIChoYXNUZXh0RmllbGQpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlU2VhcmNoKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kb1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVBdXRvQXBwbHkoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5maWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVycy5sZW5ndGggPCBpbmRleCArIDEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCA9IGluZGV4ICsgMTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29udHJvbE5hbWUgPSBmaWVsZEluZm8ucHJvcGVydHk7XHJcbiAgICBsZXQgdmFsdWUgPSAkZXZlbnQgPyAkZXZlbnRbY29udHJvbE5hbWVdIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKCRldmVudCAmJiAkZXZlbnQuZmlsdGVyRmllbGQgIT09IHVuZGVmaW5lZCAmJiAkZXZlbnQuZnJvbVZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29udHJvbE5hbWUgPSAkZXZlbnQuZmlsdGVyRmllbGQgfHwgY29udHJvbE5hbWU7XHJcbiAgICAgIHZhbHVlID0gJGV2ZW50LmZyb21WYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzW2luZGV4XSA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnNbaW5kZXhdID0ge1xyXG4gICAgICAgIGZpZWxkTmFtZTogY29udHJvbE5hbWUsXHJcbiAgICAgICAgb3BlcmF0b3I6ICBmaWVsZEluZm8uZmlsdGVyT3BlcmF0b3IgfHwgJ0VRVUFMUycsXHJcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXHJcbiAgICAgICAgZmllbGRUeXBlOiB0aGlzLnR5cGVNYXAoZmllbGRJbmZvLnR5cGUpIGFzIGFueSxcclxuICAgICAgICB2YWx1ZU9iamVjdDogZm9ybWF0SWZEYXRlKGZpZWxkSW5mby50eXBlLCB2YWx1ZSkgYXMgYW55XHJcbiAgICAgIH0gYXMgRmllbGRGaWx0ZXI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc1RleHRGaWVsZCA9ICgoZmllbGRJbmZvLnR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0Jyk7XHJcbiAgICBpZiAoaXNUZXh0RmllbGQpIHtcclxuICAgICAgdGhpcy5zY2hlZHVsZVNlYXJjaCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kb1NlYXJjaCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY2hlZHVsZUF1dG9BcHBseSgpO1xyXG4gIH1cclxuICB0eXBlTWFwKGNvbFR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdCA9IChjb2xUeXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHQuaW5jbHVkZXMoJ251bWJlcicpIHx8IHQuaW5jbHVkZXMoJ2ludCcpIHx8IHQgPT09ICdsb25nJykgcmV0dXJuICdMb25nJztcclxuICAgIGlmICh0LmluY2x1ZGVzKCdkYXRlJykgfHwgdC5pbmNsdWRlcygndGltZScpKSByZXR1cm4gJ0RhdGUnO1xyXG4gICAgaWYgKHQuaW5jbHVkZXMoJ2Jvb2wnKSkgcmV0dXJuICdCb29sZWFuJztcclxuICAgIHJldHVybiAnU3RyaW5nJztcclxuICB9XHJcblxyXG4gIGlzRWRpdGFibGUoX2luZGV4PzogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVBbGwoKSB7XHJcbiAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XHJcbiAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlckZpZWxkcyA/IHRoaXMuZmlsdGVyRmllbGRzLm1hcCgoKSA9PiB0aGlzLmNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpKSA6IFtdO1xyXG4gICAgdGhpcy5pc0VtcHR5LmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3dpdGNoVG9BZHZhbmNlZCgpIHtcclxuICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyIHx8IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMuY3JlYXRlRGVmYXVsdEZpZWxkRmlsdGVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRGaWVsZEZpbHRlcigpOiBGaWVsZEZpbHRlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmaWVsZE5hbWU6ICcnLFxyXG4gICAgICBvcGVyYXRvcjogJycsXHJcbiAgICAgIGZpbHRlclR5cGU6ICcnLFxyXG4gICAgICBmaWVsZFR5cGU6ICcnLFxyXG4gICAgICB2YWx1ZU9iamVjdDogJydcclxuICAgIH0gYXMgRmllbGRGaWx0ZXI7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYWluLWZpbHRlci1idWlsZGVyXCI+XHJcblxyXG4gIDwhLS0gRGVza3RvcCBWaWV3IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJGb3JtIGRlc2t0b3Atdmlld1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlckZvcm1fX3Jvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyRm9ybV9fY29sXCI+XHJcbiAgICAgICAgPGFwcC1maWVsZC1maWx0ZXJcclxuICAgICAgICAgIFtlZGl0YWJsZV09XCJpc0VkaXRhYmxlKClcIlxyXG4gICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxyXG4gICAgICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZSgpXCJcclxuICAgICAgICAgIFtmaWx0ZXJGaWVsZHNdPVwiZmlsdGVyRmllbGRzXCJcclxuICAgICAgICAgIChmaWx0ZXJGaWVsZEluZm9ybWF0aW9uKT1cImZvcm1DaGFuZ2VzKCRldmVudClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXJGb3JtX19maWxlZC1maWx0ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2FwcC1maWVsZC1maWx0ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0bi1hcHBseS1maWx0ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICdGSUxURVItQlVJTERFUi5hcHBseUZpbHRlcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBNb2JpbGUgVmlldyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLXZpZXdcIj5cclxuICAgIDwhLS0gTW9iaWxlIFJvdyAxOiBTZWFyY2ggRmllbGQgYW5kIEV4cG9ydCBCdXR0b24gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLXNlYXJjaC1yb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1zZWFyY2gtZmllbGRcIj5cclxuICAgICAgICA8YXBwLWZpZWxkLWZpbHRlclxyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImlzRWRpdGFibGUoKVwiXHJcbiAgICAgICAgICBbZmlsdGVyXT1cImZpbHRlclwiXHJcbiAgICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlKClcIlxyXG4gICAgICAgICAgW2ZpbHRlckZpZWxkc109XCJmaWx0ZXJGaWVsZHNcIlxyXG4gICAgICAgICAgKGZpbHRlckZpZWxkSW5mb3JtYXRpb24pPVwiZm9ybUNoYW5nZXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICBjbGFzcz1cIm1vYmlsZS1maWVsZC1maWx0ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2FwcC1maWVsZC1maWx0ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0bi1leHBvcnQtbW9iaWxlXCJcclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZXhwb3J0TWVudVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmZpbGVfZXhwb3J0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93LWljb25cIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjZXhwb3J0TWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRXhwb3J0Q2xpY2soJ3BkZicpXCI+UERGPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkV4cG9ydENsaWNrKCd4bHN4JylcIj5FeGNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FeHBvcnRDbGljaygnY3N2JylcIj5DU1Y8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTW9iaWxlIFJvdyAyOiBGaWx0ZXIgQnkgYW5kIFNvcnQgQnkgQnV0dG9ucyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtZmlsdGVyLXJvd1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4tZmlsdGVyLWJ5XCJcclxuICAgICAgICAoY2xpY2spPVwib25BcHBseUZpbHRlcigpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ0ZJTFRFUi1CVUlMREVSLmZpbHRlckJ5JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0bi1zb3J0LWJ5XCJcclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic29ydE1lbnVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj57eyAnRklMVEVSLUJVSUxERVIuc29ydEJ5JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFycm93LWljb25cIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjc29ydE1lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZ2V0U29ydGFibGVDb2x1bW5zKClcIiBcclxuICAgICAgICAgIG1hdC1tZW51LWl0ZW0gXHJcbiAgICAgICAgICAoY2xpY2spPVwib25Tb3J0QnlDbGljayhjb2x1bW4ucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICB7eyBsYWJlbEtleShjb2x1bW4pIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICpuZ0lmPVwiZ2V0U29ydGFibGVDb2x1bW5zKCkubGVuZ3RoID09PSAwXCIgXHJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtIFxyXG4gICAgICAgICAgZGlzYWJsZWQ+XHJcbiAgICAgICAgICB7eyAnRklMVEVSLUJVSUxERVIubm9Tb3J0YWJsZUNvbHVtbnMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwhLS0gIDxkaXYgKm5nSWY9XCJjaGVja0lzRW1wdHkoKVwiIGNsYXNzPVwibGluZS10b3BcIj4tLT5cclxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cclxuPCEtLSAgPC9kaXY+LS0+XHJcblxyXG48IS0tICA8ZGl2IGNsYXNzPVwibGluZS1ib3R0b21cIj4tLT5cclxuPCEtLSAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4tLT5cclxuPCEtLSAgPC9kaXY+LS0+XHJcblxyXG48IS0tICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+LS0+XHJcbjwhLS0gICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1ub25lLWJhY2tncm91bmQtcHJpbWFyeSBhY3Rpb25fX2NsZWFyXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQWxsKClcIj4tLT5cclxuPCEtLSAgICAgIHt7J0ZJTFRFUi1CVUlMREVSLmNsZWFyQWxsRmlsdGVycycgfCB0cmFuc2xhdGV9fS0tPlxyXG48IS0tICAgIDwvYnV0dG9uPi0tPlxyXG48IS0tICAgIDxidXR0b24gY2xhc3M9XCJidG4tYmFja2dyb3VuZC1wcmltYXJ5XCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZG9TZWFyY2goKVwiPi0tPlxyXG48IS0tICAgICAge3snRklMVEVSLUJVSUxERVIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19LS0+XHJcbjwhLS0gICAgPC9idXR0b24+LS0+XHJcbjwhLS0gIDwvZGl2Pi0tPlxyXG48L2Rpdj5cclxuIl19
|