ngx-st-tables 17.0.28 → 17.0.30

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.
@@ -48,11 +48,11 @@ export class ConfigurationsComponent {
48
48
  this.changeConfig.emit(this.selectedConfig?.configId || null);
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ConfigurationsComponent, selector: "st-configurations[configurationsSettings]", inputs: { configurationsSettings: "configurationsSettings", configurations: "configurations", initSelectedConfig: "initSelectedConfig" }, outputs: { createNewConfig: "createNewConfig", removeConfig: "removeConfig", changeConfig: "changeConfig" }, ngImport: i0, template: "<div class=\"col-auto row align-items-center\" style=\"padding: 0\">\n @if (!creatingConfiguration && !removingConfiguration) {\n <mat-form-field class=\"col-auto\" style=\"padding-right: 0\">\n <mat-label>{{ configurationsSettings.selectLabel }}</mat-label>\n <mat-select\n [(ngModel)]=\"selectedConfig\"\n (ngModelChange)=\"selectedConfigChanged()\"\n >\n <mat-option [value]=\"null\"></mat-option>\n @for (config of configurations; track config) {\n <mat-option [value]=\"config\">{{ config.configName }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"showCreateConfiguration()\"\n >\n <mat-icon> add </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n [disabled]=\"!selectedConfig\"\n (click)=\"deleteConfiguration()\"\n >\n <mat-icon> delete </mat-icon>\n </button>\n }\n\n @if (creatingConfiguration) {\n <mat-form-field class=\"col-auto\">\n <mat-label>{{ configurationsSettings.createLabel }}</mat-label>\n <input matInput [(ngModel)]=\"createConfigurationName\" />\n </mat-form-field>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"saveCreateConfiguration()\"\n [disabled]=\"!createConfigurationName\"\n >\n <mat-icon> done </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n (click)=\"hideCreateConfiguration()\"\n >\n <mat-icon> close </mat-icon>\n </button>\n }\n\n @if (removingConfiguration) {\n <p class=\"col-auto\" style=\"margin: 0; font-weight: bold; font-size: 16px\">\n {{ configurationsSettings.deleteWarningTitle }}\n </p>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"acceptDeleteConfiguration()\"\n >\n <mat-icon> done </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n (click)=\"declineDeleteConfiguration()\"\n >\n <mat-icon> close </mat-icon>\n </button>\n }\n</div>\n", styles: [".green-icon span{color:#2e7d32}.red-icon span{color:#c62828}\n"], dependencies: [{ kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ConfigurationsComponent, selector: "st-configurations[configurationsSettings]", inputs: { configurationsSettings: "configurationsSettings", configurations: "configurations", initSelectedConfig: "initSelectedConfig" }, outputs: { createNewConfig: "createNewConfig", removeConfig: "removeConfig", changeConfig: "changeConfig" }, ngImport: i0, template: "<div class=\"col-auto row align-items-center\" style=\"padding: 0\">\r\n @if (!creatingConfiguration && !removingConfiguration) {\r\n <mat-form-field class=\"col-auto\" style=\"padding-right: 0\">\r\n <mat-label>{{ configurationsSettings.selectLabel }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"selectedConfig\"\r\n (ngModelChange)=\"selectedConfigChanged()\"\r\n >\r\n <mat-option [value]=\"null\"></mat-option>\r\n @for (config of configurations; track config) {\r\n <mat-option [value]=\"config\">{{ config.configName }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"showCreateConfiguration()\"\r\n >\r\n <mat-icon> add </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n [disabled]=\"!selectedConfig\"\r\n (click)=\"deleteConfiguration()\"\r\n >\r\n <mat-icon> delete </mat-icon>\r\n </button>\r\n }\r\n\r\n @if (creatingConfiguration) {\r\n <mat-form-field class=\"col-auto\">\r\n <mat-label>{{ configurationsSettings.createLabel }}</mat-label>\r\n <input matInput [(ngModel)]=\"createConfigurationName\" />\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"saveCreateConfiguration()\"\r\n [disabled]=\"!createConfigurationName\"\r\n >\r\n <mat-icon> done </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n (click)=\"hideCreateConfiguration()\"\r\n >\r\n <mat-icon> close </mat-icon>\r\n </button>\r\n }\r\n\r\n @if (removingConfiguration) {\r\n <p class=\"col-auto\" style=\"margin: 0; font-weight: bold; font-size: 16px\">\r\n {{ configurationsSettings.deleteWarningTitle }}\r\n </p>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"acceptDeleteConfiguration()\"\r\n >\r\n <mat-icon> done </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n (click)=\"declineDeleteConfiguration()\"\r\n >\r\n <mat-icon> close </mat-icon>\r\n </button>\r\n }\r\n</div>\r\n", styles: [".green-icon span{color:#2e7d32}.red-icon span{color:#c62828}\n"], dependencies: [{ kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationsComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'st-configurations[configurationsSettings]', template: "<div class=\"col-auto row align-items-center\" style=\"padding: 0\">\n @if (!creatingConfiguration && !removingConfiguration) {\n <mat-form-field class=\"col-auto\" style=\"padding-right: 0\">\n <mat-label>{{ configurationsSettings.selectLabel }}</mat-label>\n <mat-select\n [(ngModel)]=\"selectedConfig\"\n (ngModelChange)=\"selectedConfigChanged()\"\n >\n <mat-option [value]=\"null\"></mat-option>\n @for (config of configurations; track config) {\n <mat-option [value]=\"config\">{{ config.configName }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"showCreateConfiguration()\"\n >\n <mat-icon> add </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n [disabled]=\"!selectedConfig\"\n (click)=\"deleteConfiguration()\"\n >\n <mat-icon> delete </mat-icon>\n </button>\n }\n\n @if (creatingConfiguration) {\n <mat-form-field class=\"col-auto\">\n <mat-label>{{ configurationsSettings.createLabel }}</mat-label>\n <input matInput [(ngModel)]=\"createConfigurationName\" />\n </mat-form-field>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"saveCreateConfiguration()\"\n [disabled]=\"!createConfigurationName\"\n >\n <mat-icon> done </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n (click)=\"hideCreateConfiguration()\"\n >\n <mat-icon> close </mat-icon>\n </button>\n }\n\n @if (removingConfiguration) {\n <p class=\"col-auto\" style=\"margin: 0; font-weight: bold; font-size: 16px\">\n {{ configurationsSettings.deleteWarningTitle }}\n </p>\n <button\n mat-icon-button\n class=\"col-auto green-icon\"\n (click)=\"acceptDeleteConfiguration()\"\n >\n <mat-icon> done </mat-icon>\n </button>\n <button\n mat-icon-button\n class=\"col-auto red-icon\"\n (click)=\"declineDeleteConfiguration()\"\n >\n <mat-icon> close </mat-icon>\n </button>\n }\n</div>\n", styles: [".green-icon span{color:#2e7d32}.red-icon span{color:#c62828}\n"] }]
55
+ args: [{ selector: 'st-configurations[configurationsSettings]', template: "<div class=\"col-auto row align-items-center\" style=\"padding: 0\">\r\n @if (!creatingConfiguration && !removingConfiguration) {\r\n <mat-form-field class=\"col-auto\" style=\"padding-right: 0\">\r\n <mat-label>{{ configurationsSettings.selectLabel }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"selectedConfig\"\r\n (ngModelChange)=\"selectedConfigChanged()\"\r\n >\r\n <mat-option [value]=\"null\"></mat-option>\r\n @for (config of configurations; track config) {\r\n <mat-option [value]=\"config\">{{ config.configName }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"showCreateConfiguration()\"\r\n >\r\n <mat-icon> add </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n [disabled]=\"!selectedConfig\"\r\n (click)=\"deleteConfiguration()\"\r\n >\r\n <mat-icon> delete </mat-icon>\r\n </button>\r\n }\r\n\r\n @if (creatingConfiguration) {\r\n <mat-form-field class=\"col-auto\">\r\n <mat-label>{{ configurationsSettings.createLabel }}</mat-label>\r\n <input matInput [(ngModel)]=\"createConfigurationName\" />\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"saveCreateConfiguration()\"\r\n [disabled]=\"!createConfigurationName\"\r\n >\r\n <mat-icon> done </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n (click)=\"hideCreateConfiguration()\"\r\n >\r\n <mat-icon> close </mat-icon>\r\n </button>\r\n }\r\n\r\n @if (removingConfiguration) {\r\n <p class=\"col-auto\" style=\"margin: 0; font-weight: bold; font-size: 16px\">\r\n {{ configurationsSettings.deleteWarningTitle }}\r\n </p>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto green-icon\"\r\n (click)=\"acceptDeleteConfiguration()\"\r\n >\r\n <mat-icon> done </mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"col-auto red-icon\"\r\n (click)=\"declineDeleteConfiguration()\"\r\n >\r\n <mat-icon> close </mat-icon>\r\n </button>\r\n }\r\n</div>\r\n", styles: [".green-icon span{color:#2e7d32}.red-icon span{color:#c62828}\n"] }]
56
56
  }], ctorParameters: () => [], propDecorators: { configurationsSettings: [{
57
57
  type: Input
58
58
  }], configurations: [{
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
66
66
  }], changeConfig: [{
67
67
  type: Output
68
68
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvY29uZmlndXJhdGlvbnMvY29uZmlndXJhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvY29uZmlndXJhdGlvbnMvY29uZmlndXJhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBUy9FLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsSUFDSSxrQkFBa0IsQ0FBQyxNQUErQztRQUNwRSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBaUJEO1FBZEEsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUczRCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3hELGlCQUFZLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0QsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLDRCQUF1QixHQUFXLEVBQUUsQ0FBQztRQUNyQywwQkFBcUIsR0FBWSxLQUFLLENBQUM7SUFJeEIsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQix1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0EvRFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1VDVHBDLG1xRUF5RUE7OzRGRGhFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsMkNBQTJDO3dEQU1yRCxzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFNTixlQUFlO3NCQURkLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RDb25maWd1cmF0aW9uc1NldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3QtY29uZmlndXJhdGlvbnMtc2V0dGluZ3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zdC1sb2NhbC1zdG9yYWdlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdC1jb25maWd1cmF0aW9uc1tjb25maWd1cmF0aW9uc1NldHRpbmdzXScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maWd1cmF0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlndXJhdGlvbnNTZXR0aW5nczogU3RDb25maWd1cmF0aW9uc1NldHRpbmdzTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlndXJhdGlvbnM6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGluaXRTZWxlY3RlZENvbmZpZyhjb25maWc6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbmZpZyA9IGNvbmZpZztcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNyZWF0ZU5ld0NvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlbW92ZUNvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNoYW5nZUNvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjcmVhdGluZ0NvbmZpZ3VyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjcmVhdGVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcmVtb3ZpbmdDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ29uZmlnOiBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB8IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBzaG93Q3JlYXRlQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHRoaXMuY3JlYXRpbmdDb25maWd1cmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuY3JlYXRlQ29uZmlndXJhdGlvbk5hbWUgPSAnJztcclxuICB9XHJcblxyXG4gIGhpZGVDcmVhdGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5jcmVhdGluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3JlYXRlQ29uZmlndXJhdGlvbk5hbWUgPSAnJztcclxuICB9XHJcblxyXG4gIHNhdmVDcmVhdGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5jcmVhdGluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBudWxsO1xyXG4gICAgdGhpcy5jcmVhdGVOZXdDb25maWcuZW1pdCh0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25OYW1lKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICB0aGlzLnJlbW92aW5nQ29uZmlndXJhdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhY2NlcHREZWxldGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5yZW1vdmluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBudWxsO1xyXG4gICAgdGhpcy5yZW1vdmVDb25maWcuZW1pdCh0aGlzLnNlbGVjdGVkQ29uZmlnIS5jb25maWdJZCk7XHJcbiAgfVxyXG5cclxuICBkZWNsaW5lRGVsZXRlQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHRoaXMucmVtb3ZpbmdDb25maWd1cmF0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZENvbmZpZ0NoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmNoYW5nZUNvbmZpZy5lbWl0KHRoaXMuc2VsZWN0ZWRDb25maWc/LmNvbmZpZ0lkIHx8IG51bGwpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMFwiPlxuICBAaWYgKCFjcmVhdGluZ0NvbmZpZ3VyYXRpb24gJiYgIXJlbW92aW5nQ29uZmlndXJhdGlvbikge1xuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbC1hdXRvXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwXCI+XG4gICAgICA8bWF0LWxhYmVsPnt7IGNvbmZpZ3VyYXRpb25zU2V0dGluZ3Muc2VsZWN0TGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb25maWdcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZENvbmZpZ0NoYW5nZWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJudWxsXCI+PC9tYXQtb3B0aW9uPlxuICAgICAgICBAZm9yIChjb25maWcgb2YgY29uZmlndXJhdGlvbnM7IHRyYWNrIGNvbmZpZykge1xuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJjb25maWdcIj57eyBjb25maWcuY29uZmlnTmFtZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIGdyZWVuLWljb25cIlxuICAgICAgKGNsaWNrKT1cInNob3dDcmVhdGVDb25maWd1cmF0aW9uKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj4gYWRkIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIHJlZC1pY29uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRDb25maWdcIlxuICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbmZpZ3VyYXRpb24oKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPiBkZWxldGUgPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZiAoY3JlYXRpbmdDb25maWd1cmF0aW9uKSB7XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgY29uZmlndXJhdGlvbnNTZXR0aW5ncy5jcmVhdGVMYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiY3JlYXRlQ29uZmlndXJhdGlvbk5hbWVcIiAvPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIGdyZWVuLWljb25cIlxuICAgICAgKGNsaWNrKT1cInNhdmVDcmVhdGVDb25maWd1cmF0aW9uKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjcmVhdGVDb25maWd1cmF0aW9uTmFtZVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPiBkb25lIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIHJlZC1pY29uXCJcbiAgICAgIChjbGljayk9XCJoaWRlQ3JlYXRlQ29uZmlndXJhdGlvbigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+IGNsb3NlIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIH1cblxuICBAaWYgKHJlbW92aW5nQ29uZmlndXJhdGlvbikge1xuICAgIDxwIGNsYXNzPVwiY29sLWF1dG9cIiBzdHlsZT1cIm1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTZweFwiPlxuICAgICAge3sgY29uZmlndXJhdGlvbnNTZXR0aW5ncy5kZWxldGVXYXJuaW5nVGl0bGUgfX1cbiAgICA8L3A+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIGdyZWVuLWljb25cIlxuICAgICAgKGNsaWNrKT1cImFjY2VwdERlbGV0ZUNvbmZpZ3VyYXRpb24oKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPiBkb25lIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIHJlZC1pY29uXCJcbiAgICAgIChjbGljayk9XCJkZWNsaW5lRGVsZXRlQ29uZmlndXJhdGlvbigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+IGNsb3NlIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIH1cbjwvZGl2PlxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvY29uZmlndXJhdGlvbnMvY29uZmlndXJhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvY29uZmlndXJhdGlvbnMvY29uZmlndXJhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBUy9FLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsSUFDSSxrQkFBa0IsQ0FBQyxNQUErQztRQUNwRSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBaUJEO1FBZEEsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUczRCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3hELGlCQUFZLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0QsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLDRCQUF1QixHQUFXLEVBQUUsQ0FBQztRQUNyQywwQkFBcUIsR0FBWSxLQUFLLENBQUM7SUFJeEIsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQix1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0EvRFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1VDVHBDLHF6RUF5RUE7OzRGRGhFYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsMkNBQTJDO3dEQU1yRCxzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFNTixlQUFlO3NCQURkLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RDb25maWd1cmF0aW9uc1NldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3QtY29uZmlndXJhdGlvbnMtc2V0dGluZ3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zdC1sb2NhbC1zdG9yYWdlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdC1jb25maWd1cmF0aW9uc1tjb25maWd1cmF0aW9uc1NldHRpbmdzXScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maWd1cmF0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlndXJhdGlvbnNTZXR0aW5nczogU3RDb25maWd1cmF0aW9uc1NldHRpbmdzTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29uZmlndXJhdGlvbnM6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGluaXRTZWxlY3RlZENvbmZpZyhjb25maWc6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbmZpZyA9IGNvbmZpZztcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNyZWF0ZU5ld0NvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlbW92ZUNvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNoYW5nZUNvbmZpZzogRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjcmVhdGluZ0NvbmZpZ3VyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjcmVhdGVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcmVtb3ZpbmdDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ29uZmlnOiBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB8IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBzaG93Q3JlYXRlQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHRoaXMuY3JlYXRpbmdDb25maWd1cmF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuY3JlYXRlQ29uZmlndXJhdGlvbk5hbWUgPSAnJztcclxuICB9XHJcblxyXG4gIGhpZGVDcmVhdGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5jcmVhdGluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3JlYXRlQ29uZmlndXJhdGlvbk5hbWUgPSAnJztcclxuICB9XHJcblxyXG4gIHNhdmVDcmVhdGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5jcmVhdGluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBudWxsO1xyXG4gICAgdGhpcy5jcmVhdGVOZXdDb25maWcuZW1pdCh0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25OYW1lKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICB0aGlzLnJlbW92aW5nQ29uZmlndXJhdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhY2NlcHREZWxldGVDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5yZW1vdmluZ0NvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBudWxsO1xyXG4gICAgdGhpcy5yZW1vdmVDb25maWcuZW1pdCh0aGlzLnNlbGVjdGVkQ29uZmlnIS5jb25maWdJZCk7XHJcbiAgfVxyXG5cclxuICBkZWNsaW5lRGVsZXRlQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHRoaXMucmVtb3ZpbmdDb25maWd1cmF0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZENvbmZpZ0NoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmNoYW5nZUNvbmZpZy5lbWl0KHRoaXMuc2VsZWN0ZWRDb25maWc/LmNvbmZpZ0lkIHx8IG51bGwpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMFwiPlxyXG4gIEBpZiAoIWNyZWF0aW5nQ29uZmlndXJhdGlvbiAmJiAhcmVtb3ZpbmdDb25maWd1cmF0aW9uKSB7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2wtYXV0b1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMFwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IGNvbmZpZ3VyYXRpb25zU2V0dGluZ3Muc2VsZWN0TGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29uZmlnXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZENvbmZpZ0NoYW5nZWQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPjwvbWF0LW9wdGlvbj5cclxuICAgICAgICBAZm9yIChjb25maWcgb2YgY29uZmlndXJhdGlvbnM7IHRyYWNrIGNvbmZpZykge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImNvbmZpZ1wiPnt7IGNvbmZpZy5jb25maWdOYW1lIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiY29sLWF1dG8gZ3JlZW4taWNvblwiXHJcbiAgICAgIChjbGljayk9XCJzaG93Q3JlYXRlQ29uZmlndXJhdGlvbigpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPiBhZGQgPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJjb2wtYXV0byByZWQtaWNvblwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRDb25maWdcIlxyXG4gICAgICAoY2xpY2spPVwiZGVsZXRlQ29uZmlndXJhdGlvbigpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPiBkZWxldGUgPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIH1cclxuXHJcbiAgQGlmIChjcmVhdGluZ0NvbmZpZ3VyYXRpb24pIHtcclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3sgY29uZmlndXJhdGlvbnNTZXR0aW5ncy5jcmVhdGVMYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJjcmVhdGVDb25maWd1cmF0aW9uTmFtZVwiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJjb2wtYXV0byBncmVlbi1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cInNhdmVDcmVhdGVDb25maWd1cmF0aW9uKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWNyZWF0ZUNvbmZpZ3VyYXRpb25OYW1lXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPiBkb25lIDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiY29sLWF1dG8gcmVkLWljb25cIlxyXG4gICAgICAoY2xpY2spPVwiaGlkZUNyZWF0ZUNvbmZpZ3VyYXRpb24oKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj4gY2xvc2UgPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIH1cclxuXHJcbiAgQGlmIChyZW1vdmluZ0NvbmZpZ3VyYXRpb24pIHtcclxuICAgIDxwIGNsYXNzPVwiY29sLWF1dG9cIiBzdHlsZT1cIm1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTZweFwiPlxyXG4gICAgICB7eyBjb25maWd1cmF0aW9uc1NldHRpbmdzLmRlbGV0ZVdhcm5pbmdUaXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJjb2wtYXV0byBncmVlbi1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cImFjY2VwdERlbGV0ZUNvbmZpZ3VyYXRpb24oKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj4gZG9uZSA8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBjbGFzcz1cImNvbC1hdXRvIHJlZC1pY29uXCJcclxuICAgICAgKGNsaWNrKT1cImRlY2xpbmVEZWxldGVDb25maWd1cmF0aW9uKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+IGNsb3NlIDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -226,11 +226,11 @@ export class LocalTableComponent {
226
226
  this.setDisplayedColumns();
227
227
  }
228
228
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalTableComponent, deps: [{ token: i1.LocalTableService }, { token: i0.ChangeDetectorRef }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LocalTableComponent, selector: "ngx-st-local-table", inputs: { tableSettings: "tableSettings", globalSearchSettings: "globalSearchSettings", pageSize: "pageSize", allowPickColumns: "allowPickColumns", configurationsSettings: "configurationsSettings", localStorageName: "localStorageName", bindSearchToUrl: "bindSearchToUrl", columns: "columns", data: "data" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<div class=\"local-table\">\n <div class=\"row align-items-center\">\n @if (configurationsSettings || allowPickColumns) {\n <div class=\"col row align-items-center\" style=\"padding: 0\">\n @if (allowPickColumns) {\n <div class=\"col-auto\" style=\"padding: 0\">\n <button\n mat-icon-button\n class=\"col-auto\"\n [matMenuTriggerFor]=\"columnsMenu\"\n >\n <mat-icon> view_week </mat-icon>\n </button>\n <mat-menu #columnsMenu=\"matMenu\" xPosition=\"after\">\n @for (column of columnsArray; track column) {\n @if (!column.notShowInColumnPick) {\n <div mat-menu-item>\n <mat-checkbox\n [(ngModel)]=\"column.visible\"\n (ngModelChange)=\"columnVisibleChanged(column)\"\n style=\"margin-top: 5px\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ column.translateColumnName }}\n </mat-checkbox>\n </div>\n }\n }\n </mat-menu>\n </div>\n }\n @if (configurationsSettings) {\n <st-configurations\n [configurationsSettings]=\"configurationsSettings\"\n [configurations]=\"configurations\"\n [initSelectedConfig]=\"initConfig\"\n (createNewConfig)=\"newConfigCreated($event)\"\n (removeConfig)=\"configRemoved($event)\"\n (changeConfig)=\"configChanged($event)\"\n ></st-configurations>\n }\n </div>\n }\n\n @if (globalSearchSettings?.show) {\n <div class=\"col\" style=\"padding: 0; margin-bottom: -15px\">\n <mat-form-field>\n <mat-label>{{ globalSearchSettings?.label || 'Search' }}</mat-label>\n <input matInput (keyup)=\"applySearch()\" [(ngModel)]=\"searchModel\" />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"clearSearch()\"\n >\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n\n <table\n [ngClass]=\"{ 'no-hover': !tableSettings?.rowClickAction }\"\n mat-table\n [dataSource]=\"tableSource\"\n matSort\n >\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th\n mat-header-cell\n *matHeaderCellDef\n style=\"{{\n columns[column].width ? 'width:' + columns[column].width : ''\n }}\"\n mat-sort-header\n [disabled]=\"!columns[column].sort\"\n >\n {{ columns[column].translateColumnName }}\n @if (columns[column].search) {\n <mat-icon\n class=\"search-icon\"\n [matMenuTriggerFor]=\"menu\"\n (click)=\"$event.stopPropagation()\"\n >\n search\n </mat-icon>\n }\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <mat-form-field class=\"col\">\n <mat-label>{{\n columns[column].searchLabel || 'Search'\n }}</mat-label>\n <input\n matInput\n (keyup)=\"applySearch()\"\n [(ngModel)]=\"searchModel\"\n (click)=\"$event.stopPropagation()\"\n />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"searchModel = ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </mat-menu>\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n style=\"{{\n columns[column].width ? 'width:' + columns[column].width : ''\n }}\"\n >\n @if (columns[column].actions && columns[column].actions!.length > 0) {\n <div\n class=\"actions-container\"\n style=\"overflow-y: hidden\"\n [ngClass]=\"{ 'justify-content-end': columns[column].flexRight }\"\n >\n @for (action of columns[column].actions; track action) {\n @if (checkIfActionVisible(element, action)) {\n @if (!action.url && action.action) {\n <button\n style=\"padding: 7px 7px; width: 40px; height: 40px\"\n class=\"col-auto\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"{{ action.tooltipName || '' }}\"\n [matTooltipDisabled]=\"!!!action.tooltipName\"\n (click)=\"action.action(element)\"\n >\n <mat-icon>{{ action.iconName }}</mat-icon>\n </button>\n }\n @if (action.url) {\n <a [routerLink]=\"action.url\">\n <button\n class=\"col-auto\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"{{ action.tooltipName || '' }}\"\n [matTooltipDisabled]=\"!!!action.tooltipName\"\n >\n <mat-icon>{{ action.iconName }}</mat-icon>\n </button>\n </a>\n }\n }\n }\n </div>\n }\n @if (!columns[column].actions) {\n @if (columns[column].translateValue) {\n <p style=\"margin: 0; padding: 0\">\n {{ columns[column].translateValue![element[column]] || '' }}\n </p>\n }\n @if (!columns[column].translateValue) {\n @if (!columns[column].type || columns[column].type === 'string') {\n <p style=\"margin: 0; padding: 0\">{{ element[column] }}</p>\n }\n @if (columns[column].type === 'date') {\n <p style=\"margin: 0; padding: 0\">\n {{ element[column] | stDateTimeFormatPipe }}\n </p>\n }\n }\n }\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"\n tableSettings?.rowClickAction ? tableSettings.rowClickAction(row) : null\n \"\n ></tr>\n </table>\n <mat-paginator\n [pageIndex]=\"pageIndex\"\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\n (page)=\"pageChanged($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n</div>\n", styles: ["", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.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: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i14.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i15.ConfigurationsComponent, selector: "st-configurations[configurationsSettings]", inputs: ["configurationsSettings", "configurations", "initSelectedConfig"], outputs: ["createNewConfig", "removeConfig", "changeConfig"] }, { kind: "pipe", type: i16.DateTimeFormatPipe, name: "stDateTimeFormatPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LocalTableComponent, selector: "ngx-st-local-table", inputs: { tableSettings: "tableSettings", globalSearchSettings: "globalSearchSettings", pageSize: "pageSize", allowPickColumns: "allowPickColumns", configurationsSettings: "configurationsSettings", localStorageName: "localStorageName", bindSearchToUrl: "bindSearchToUrl", columns: "columns", data: "data" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<div class=\"local-table\">\r\n <div class=\"row align-items-center\">\r\n @if (configurationsSettings || allowPickColumns) {\r\n <div class=\"col row align-items-center\" style=\"padding: 0\">\r\n @if (allowPickColumns) {\r\n <div class=\"col-auto\" style=\"padding: 0\">\r\n <button\r\n mat-icon-button\r\n class=\"col-auto\"\r\n [matMenuTriggerFor]=\"columnsMenu\"\r\n >\r\n <mat-icon> view_week </mat-icon>\r\n </button>\r\n <mat-menu #columnsMenu=\"matMenu\" xPosition=\"after\">\r\n @for (column of columnsArray; track column) {\r\n @if (!column.notShowInColumnPick) {\r\n <div mat-menu-item>\r\n <mat-checkbox\r\n [(ngModel)]=\"column.visible\"\r\n (ngModelChange)=\"columnVisibleChanged(column)\"\r\n style=\"margin-top: 5px\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n {{ column.translateColumnName }}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (configurationsSettings) {\r\n <st-configurations\r\n [configurationsSettings]=\"configurationsSettings\"\r\n [configurations]=\"configurations\"\r\n [initSelectedConfig]=\"initConfig\"\r\n (createNewConfig)=\"newConfigCreated($event)\"\r\n (removeConfig)=\"configRemoved($event)\"\r\n (changeConfig)=\"configChanged($event)\"\r\n ></st-configurations>\r\n }\r\n </div>\r\n }\r\n\r\n @if (globalSearchSettings?.show) {\r\n <div class=\"col\" style=\"padding: 0; margin-bottom: -15px\">\r\n <mat-form-field>\r\n <mat-label>{{ globalSearchSettings?.label || 'Search' }}</mat-label>\r\n <input matInput (keyup)=\"applySearch()\" [(ngModel)]=\"searchModel\" />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearSearch()\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </div>\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !tableSettings?.rowClickAction }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of displayedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{\r\n columns[column].width ? 'width:' + columns[column].width : ''\r\n }}\"\r\n mat-sort-header\r\n [disabled]=\"!columns[column].sort\"\r\n >\r\n {{ columns[column].translateColumnName }}\r\n @if (columns[column].search) {\r\n <mat-icon\r\n class=\"search-icon\"\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n search\r\n </mat-icon>\r\n }\r\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\r\n <mat-form-field class=\"col\">\r\n <mat-label>{{\r\n columns[column].searchLabel || 'Search'\r\n }}</mat-label>\r\n <input\r\n matInput\r\n (keyup)=\"applySearch()\"\r\n [(ngModel)]=\"searchModel\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"searchModel = ''\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </mat-menu>\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{\r\n columns[column].width ? 'width:' + columns[column].width : ''\r\n }}\"\r\n >\r\n @if (columns[column].actions && columns[column].actions!.length > 0) {\r\n <div\r\n class=\"actions-container\"\r\n style=\"overflow-y: hidden\"\r\n [ngClass]=\"{ 'justify-content-end': columns[column].flexRight }\"\r\n >\r\n @for (action of columns[column].actions; track action) {\r\n @if (checkIfActionVisible(element, action)) {\r\n @if (!action.url && action.action) {\r\n <button\r\n style=\"padding: 7px 7px; width: 40px; height: 40px\"\r\n class=\"col-auto\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"{{ action.tooltipName || '' }}\"\r\n [matTooltipDisabled]=\"!!!action.tooltipName\"\r\n (click)=\"action.action(element)\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button\r\n class=\"col-auto\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"{{ action.tooltipName || '' }}\"\r\n [matTooltipDisabled]=\"!!!action.tooltipName\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n @if (!columns[column].actions) {\r\n @if (columns[column].translateValue) {\r\n <p style=\"margin: 0; padding: 0\">\r\n {{ columns[column].translateValue![element[column]] || '' }}\r\n </p>\r\n }\r\n @if (!columns[column].translateValue) {\r\n @if (!columns[column].type || columns[column].type === 'string') {\r\n <p style=\"margin: 0; padding: 0\">{{ element[column] }}</p>\r\n }\r\n @if (columns[column].type === 'date') {\r\n <p style=\"margin: 0; padding: 0\">\r\n {{ element[column] | stDateTimeFormatPipe }}\r\n </p>\r\n }\r\n }\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"\r\n tableSettings?.rowClickAction ? tableSettings.rowClickAction(row) : null\r\n \"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n (page)=\"pageChanged($event)\"\r\n [showFirstLastButtons]=\"true\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: ["", ".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.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: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i14.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i15.ConfigurationsComponent, selector: "st-configurations[configurationsSettings]", inputs: ["configurationsSettings", "configurations", "initSelectedConfig"], outputs: ["createNewConfig", "removeConfig", "changeConfig"] }, { kind: "pipe", type: i16.DateTimeFormatPipe, name: "stDateTimeFormatPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
230
230
  }
231
231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalTableComponent, decorators: [{
232
232
  type: Component,
233
- args: [{ selector: 'ngx-st-local-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"local-table\">\n <div class=\"row align-items-center\">\n @if (configurationsSettings || allowPickColumns) {\n <div class=\"col row align-items-center\" style=\"padding: 0\">\n @if (allowPickColumns) {\n <div class=\"col-auto\" style=\"padding: 0\">\n <button\n mat-icon-button\n class=\"col-auto\"\n [matMenuTriggerFor]=\"columnsMenu\"\n >\n <mat-icon> view_week </mat-icon>\n </button>\n <mat-menu #columnsMenu=\"matMenu\" xPosition=\"after\">\n @for (column of columnsArray; track column) {\n @if (!column.notShowInColumnPick) {\n <div mat-menu-item>\n <mat-checkbox\n [(ngModel)]=\"column.visible\"\n (ngModelChange)=\"columnVisibleChanged(column)\"\n style=\"margin-top: 5px\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ column.translateColumnName }}\n </mat-checkbox>\n </div>\n }\n }\n </mat-menu>\n </div>\n }\n @if (configurationsSettings) {\n <st-configurations\n [configurationsSettings]=\"configurationsSettings\"\n [configurations]=\"configurations\"\n [initSelectedConfig]=\"initConfig\"\n (createNewConfig)=\"newConfigCreated($event)\"\n (removeConfig)=\"configRemoved($event)\"\n (changeConfig)=\"configChanged($event)\"\n ></st-configurations>\n }\n </div>\n }\n\n @if (globalSearchSettings?.show) {\n <div class=\"col\" style=\"padding: 0; margin-bottom: -15px\">\n <mat-form-field>\n <mat-label>{{ globalSearchSettings?.label || 'Search' }}</mat-label>\n <input matInput (keyup)=\"applySearch()\" [(ngModel)]=\"searchModel\" />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"clearSearch()\"\n >\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n\n <table\n [ngClass]=\"{ 'no-hover': !tableSettings?.rowClickAction }\"\n mat-table\n [dataSource]=\"tableSource\"\n matSort\n >\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th\n mat-header-cell\n *matHeaderCellDef\n style=\"{{\n columns[column].width ? 'width:' + columns[column].width : ''\n }}\"\n mat-sort-header\n [disabled]=\"!columns[column].sort\"\n >\n {{ columns[column].translateColumnName }}\n @if (columns[column].search) {\n <mat-icon\n class=\"search-icon\"\n [matMenuTriggerFor]=\"menu\"\n (click)=\"$event.stopPropagation()\"\n >\n search\n </mat-icon>\n }\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <mat-form-field class=\"col\">\n <mat-label>{{\n columns[column].searchLabel || 'Search'\n }}</mat-label>\n <input\n matInput\n (keyup)=\"applySearch()\"\n [(ngModel)]=\"searchModel\"\n (click)=\"$event.stopPropagation()\"\n />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"searchModel = ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </mat-menu>\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n style=\"{{\n columns[column].width ? 'width:' + columns[column].width : ''\n }}\"\n >\n @if (columns[column].actions && columns[column].actions!.length > 0) {\n <div\n class=\"actions-container\"\n style=\"overflow-y: hidden\"\n [ngClass]=\"{ 'justify-content-end': columns[column].flexRight }\"\n >\n @for (action of columns[column].actions; track action) {\n @if (checkIfActionVisible(element, action)) {\n @if (!action.url && action.action) {\n <button\n style=\"padding: 7px 7px; width: 40px; height: 40px\"\n class=\"col-auto\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"{{ action.tooltipName || '' }}\"\n [matTooltipDisabled]=\"!!!action.tooltipName\"\n (click)=\"action.action(element)\"\n >\n <mat-icon>{{ action.iconName }}</mat-icon>\n </button>\n }\n @if (action.url) {\n <a [routerLink]=\"action.url\">\n <button\n class=\"col-auto\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"{{ action.tooltipName || '' }}\"\n [matTooltipDisabled]=\"!!!action.tooltipName\"\n >\n <mat-icon>{{ action.iconName }}</mat-icon>\n </button>\n </a>\n }\n }\n }\n </div>\n }\n @if (!columns[column].actions) {\n @if (columns[column].translateValue) {\n <p style=\"margin: 0; padding: 0\">\n {{ columns[column].translateValue![element[column]] || '' }}\n </p>\n }\n @if (!columns[column].translateValue) {\n @if (!columns[column].type || columns[column].type === 'string') {\n <p style=\"margin: 0; padding: 0\">{{ element[column] }}</p>\n }\n @if (columns[column].type === 'date') {\n <p style=\"margin: 0; padding: 0\">\n {{ element[column] | stDateTimeFormatPipe }}\n </p>\n }\n }\n }\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"\n tableSettings?.rowClickAction ? tableSettings.rowClickAction(row) : null\n \"\n ></tr>\n </table>\n <mat-paginator\n [pageIndex]=\"pageIndex\"\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\n (page)=\"pageChanged($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n</div>\n", styles: [".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"] }]
233
+ args: [{ selector: 'ngx-st-local-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"local-table\">\r\n <div class=\"row align-items-center\">\r\n @if (configurationsSettings || allowPickColumns) {\r\n <div class=\"col row align-items-center\" style=\"padding: 0\">\r\n @if (allowPickColumns) {\r\n <div class=\"col-auto\" style=\"padding: 0\">\r\n <button\r\n mat-icon-button\r\n class=\"col-auto\"\r\n [matMenuTriggerFor]=\"columnsMenu\"\r\n >\r\n <mat-icon> view_week </mat-icon>\r\n </button>\r\n <mat-menu #columnsMenu=\"matMenu\" xPosition=\"after\">\r\n @for (column of columnsArray; track column) {\r\n @if (!column.notShowInColumnPick) {\r\n <div mat-menu-item>\r\n <mat-checkbox\r\n [(ngModel)]=\"column.visible\"\r\n (ngModelChange)=\"columnVisibleChanged(column)\"\r\n style=\"margin-top: 5px\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n {{ column.translateColumnName }}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (configurationsSettings) {\r\n <st-configurations\r\n [configurationsSettings]=\"configurationsSettings\"\r\n [configurations]=\"configurations\"\r\n [initSelectedConfig]=\"initConfig\"\r\n (createNewConfig)=\"newConfigCreated($event)\"\r\n (removeConfig)=\"configRemoved($event)\"\r\n (changeConfig)=\"configChanged($event)\"\r\n ></st-configurations>\r\n }\r\n </div>\r\n }\r\n\r\n @if (globalSearchSettings?.show) {\r\n <div class=\"col\" style=\"padding: 0; margin-bottom: -15px\">\r\n <mat-form-field>\r\n <mat-label>{{ globalSearchSettings?.label || 'Search' }}</mat-label>\r\n <input matInput (keyup)=\"applySearch()\" [(ngModel)]=\"searchModel\" />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"clearSearch()\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </div>\r\n\r\n <table\r\n [ngClass]=\"{ 'no-hover': !tableSettings?.rowClickAction }\"\r\n mat-table\r\n [dataSource]=\"tableSource\"\r\n matSort\r\n >\r\n @for (column of displayedColumns; track column) {\r\n <ng-container [matColumnDef]=\"column\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"{{\r\n columns[column].width ? 'width:' + columns[column].width : ''\r\n }}\"\r\n mat-sort-header\r\n [disabled]=\"!columns[column].sort\"\r\n >\r\n {{ columns[column].translateColumnName }}\r\n @if (columns[column].search) {\r\n <mat-icon\r\n class=\"search-icon\"\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n search\r\n </mat-icon>\r\n }\r\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\r\n <mat-form-field class=\"col\">\r\n <mat-label>{{\r\n columns[column].searchLabel || 'Search'\r\n }}</mat-label>\r\n <input\r\n matInput\r\n (keyup)=\"applySearch()\"\r\n [(ngModel)]=\"searchModel\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"searchModel = ''\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </mat-menu>\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n style=\"{{\r\n columns[column].width ? 'width:' + columns[column].width : ''\r\n }}\"\r\n >\r\n @if (columns[column].actions && columns[column].actions!.length > 0) {\r\n <div\r\n class=\"actions-container\"\r\n style=\"overflow-y: hidden\"\r\n [ngClass]=\"{ 'justify-content-end': columns[column].flexRight }\"\r\n >\r\n @for (action of columns[column].actions; track action) {\r\n @if (checkIfActionVisible(element, action)) {\r\n @if (!action.url && action.action) {\r\n <button\r\n style=\"padding: 7px 7px; width: 40px; height: 40px\"\r\n class=\"col-auto\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"{{ action.tooltipName || '' }}\"\r\n [matTooltipDisabled]=\"!!!action.tooltipName\"\r\n (click)=\"action.action(element)\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n }\r\n @if (action.url) {\r\n <a [routerLink]=\"action.url\">\r\n <button\r\n class=\"col-auto\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"{{ action.tooltipName || '' }}\"\r\n [matTooltipDisabled]=\"!!!action.tooltipName\"\r\n >\r\n <mat-icon>{{ action.iconName }}</mat-icon>\r\n </button>\r\n </a>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n @if (!columns[column].actions) {\r\n @if (columns[column].translateValue) {\r\n <p style=\"margin: 0; padding: 0\">\r\n {{ columns[column].translateValue![element[column]] || '' }}\r\n </p>\r\n }\r\n @if (!columns[column].translateValue) {\r\n @if (!columns[column].type || columns[column].type === 'string') {\r\n <p style=\"margin: 0; padding: 0\">{{ element[column] }}</p>\r\n }\r\n @if (columns[column].type === 'date') {\r\n <p style=\"margin: 0; padding: 0\">\r\n {{ element[column] | stDateTimeFormatPipe }}\r\n </p>\r\n }\r\n }\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"\r\n tableSettings?.rowClickAction ? tableSettings.rowClickAction(row) : null\r\n \"\r\n ></tr>\r\n </table>\r\n <mat-paginator\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n (page)=\"pageChanged($event)\"\r\n [showFirstLastButtons]=\"true\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: [".st-material-table .search-form button{height:40px}.st-material-table .search-form mat-form-field:first-child{padding-left:0}.st-material-table .search-form mat-form-field:last-child{padding-right:0}.st-material-table .search-form .clear{padding:0}.st-material-table .search-form .clear mat-icon{height:20px;width:20px;font-size:20px;cursor:pointer}.st-material-table table{width:100%;box-shadow:none}.st-material-table table th.mat-mdc-header-cell,.st-material-table table td.mat-mdc-cell,.st-material-table table td.mat-mdc-footer-cell{padding:0}.st-material-table table th.mat-mdc-header-cell:first-of-type,.st-material-table table td.mat-mdc-cell:first-of-type,.st-material-table table td.mat-mdc-footer-cell:first-of-type{padding-left:12px}.st-material-table table th.mat-mdc-header-cell:last-of-type,.st-material-table table td.mat-mdc-cell:last-of-type,.st-material-table table td.mat-mdc-footer-cell:last-of-type{padding-right:12px}.st-material-table table thead tr{background-color:#fff9c4;height:40px!important}.st-material-table table thead tr th{border-color:#fdd835;font-size:.9rem;font-weight:600;color:#424242}.st-material-table table tbody{background-color:transparent!important}.st-material-table table tbody>tr{cursor:pointer}.st-material-table table tbody>tr.active{background-color:#a5d6a7}.st-material-table table tbody>tr.active td{border-bottom-color:#81c784!important}.st-material-table table tbody>tr:hover{background-color:#f5f5f5}.st-material-table table tbody>tr.disabled{cursor:not-allowed}.st-material-table table tbody>tr.disabled:hover{background-color:inherit!important}.st-material-table table tbody>tr.detail-row{height:0;cursor:default}.st-material-table table tbody>tr.detail-row:hover{background-color:transparent}.st-material-table table tbody>tr.detail-row .element-detail{overflow:hidden;display:flex}.st-material-table table tbody>tr.detail-row .element-detail p{padding:20px 0;margin-bottom:0;white-space:pre-wrap}.st-material-table table tbody>tr td i.active-row{color:#1b5e20;font-weight:700;font-size:25px;height:25px;width:25px;margin-top:2px}.st-material-table table tbody>tr td>div{max-height:200px;overflow:hidden;overflow-y:auto}.st-material-table table tbody>tr td a button{color:#000}.st-material-table table tbody>tr td a mat-icon{color:#333}.st-material-table table .mat-column-active{width:48px}.st-material-table table.no-hover tbody tr{cursor:default}.st-material-table table.no-hover tbody tr.active{background-color:transparent!important}.st-material-table table.no-hover tbody tr.active td{border-bottom-color:#0000001f!important}.st-material-table table.no-hover tbody tr:hover{background-color:transparent!important}.st-material-table table.no-hover tbody tr:hover td{border-bottom-color:#0000001f!important}.st-material-table table.admin-table .actions-cell{width:100px}.dark-theme .st-material-table table{background-color:transparent!important}.dark-theme .st-material-table table thead tr{background-color:#5e4803!important}.dark-theme .st-material-table table thead tr th{border-color:#816204!important;color:#e0e0e0!important}.dark-theme .st-material-table tbody tr:hover{background-color:var(--primeng-table-hover-background)!important}.dark-theme mat-paginator{background-color:transparent!important}.dark-theme .reorder-column-list .reorder-column-element{background-color:#424242!important;color:#eee!important}.dark-theme .reorder-column-list .reorder-column-element p,.dark-theme .reorder-column-list .reorder-column-element mat-icon{color:#eee!important}.dark-theme .filter .filter-title{color:#eee!important}\n"] }]
234
234
  }], ctorParameters: () => [{ type: i1.LocalTableService }, { type: i0.ChangeDetectorRef }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { paginator: [{
235
235
  type: ViewChild,
236
236
  args: [MatPaginator]
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
256
256
  }], data: [{
257
257
  type: Input
258
258
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvbG9jYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvbG9jYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUtoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0I3RCxNQUFNLE9BQU8sbUJBQW1CO0lBeUI5QixJQUNJLE9BQU8sQ0FBQyxPQUFpQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUNJLElBQUksQ0FBQyxJQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFB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QUFFO1lBQ3ZCLEtBQUssRUFBRSxhQUFhLElBQUksS0FBSztZQUM3QixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQyxNQUFNLENBQUMsT0FBTztnQkFDWixlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0E3UVUsbUJBQW1CO21HQUFuQixtQkFBbUIseVpBQ25CLFlBQVksdUVBQ1osT0FBTyxnRENuQ3BCLGszTkFpTUE7OzRGRGhLYSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQU1iLHVCQUF1QixDQUFDLE1BQU07d0tBR3RCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBR2xCLGFBQWE7c0JBRFosS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQWNGLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3RUYWJsZVNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3QtdGFibGUtc2V0dGluZ3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTdEdsb2JhbFNlYXJjaFNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3QtZ2xvYmFsLXNlYXJjaC1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IFN0Q29uZmlndXJhdGlvbnNTZXR0aW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0LWNvbmZpZ3VyYXRpb25zLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgU3RMb2NhbFRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0LWxvY2FsLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7XHJcbiAgTG9jYWxUYWJsZUFjdGlvbkNvbHVtbk1vZGVsLFxyXG4gIFN0TG9jYWxUYWJsZUNvbHVtbk1vZGVsLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9zdC1sb2NhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdC1sb2NhbC1zdG9yYWdlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc3QtbG9jYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9sb2NhbC10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vLi4vLi4vYXNzZXRzL2Jhc2UtdGFibGUuc2NzcycsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGVTZXR0aW5nczogU3RUYWJsZVNldHRpbmdzTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2xvYmFsU2VhcmNoU2V0dGluZ3M6IFN0R2xvYmFsU2VhcmNoU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgQElucHV0KClcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dQaWNrQ29sdW1uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbmZpZ3VyYXRpb25zU2V0dGluZ3M6IFN0Q29uZmlndXJhdGlvbnNTZXR0aW5nc01vZGVsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxvY2FsU3RvcmFnZU5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRTZWFyY2hUb1VybDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5zKGNvbHVtbnM6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmNvbHVtbnNBcnJheSA9IHRoaXMuZ2V0Q29sdW1uc0FycmF5KCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zKCk6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbnM6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRhKGRhdGE6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCBbXTtcclxuICAgIHRoaXMuc2V0VGFibGVTb3VyY2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgc2VhcmNoTW9kZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRhYmxlU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBjb2x1bW5zQXJyYXk6IFN0TG9jYWxUYWJsZUNvbHVtbk1vZGVsW107XHJcbiAgY29uZmlndXJhdGlvbnM6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsW10gPSBbXTtcclxuICBpbml0Q29uZmlnOiBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB8IG51bGwgPSBudWxsO1xyXG4gIGFjdGl2ZUNvbmZpZzogU3RMb2NhbFN0b3JhZ2VDb25maWd1cmF0aW9uTW9kZWwgfCBudWxsID0gbnVsbDtcclxuICBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2NhbFRhYmxlU2VydmljZTogTG9jYWxUYWJsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKSB7XHJcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKTtcclxuICAgICAgaWYgKHBhZ2VTaXplKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhZ2VTaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmxvY2FsVGFibGVTZXJ2aWNlLmxvY2FsU3RvcmFnZU5hbWUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncz8ubG9jYWxTdG9yYWdlTmFtZSB8fCAnJztcclxuICAgICAgdGhpcy5sb2FkQ29uZmlncygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcucGFnZVNpemUgPSByZXMucGFnZVNpemU7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcuc29ydEZpZWxkTmFtZSA9IHJlcy5hY3RpdmU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZy5zb3J0RGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbjtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJpbmRTZWFyY2hUb1VybCkge1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoVG9VcmwoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVQYWdlSW5kZXgnKSkge1xyXG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFyc2VJbnQocGFyYW1zLmdldCgnc3RMb2NhbFRhYmxlUGFnZUluZGV4JykgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVQYWdlU2l6ZScpKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoJ3N0TG9jYWxUYWJsZVBhZ2VTaXplJykgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RmllbGROYW1lJykgJiZcclxuICAgICAgICBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0LnNvcnQoe1xyXG4gICAgICAgICAgaWQ6IHBhcmFtcy5nZXQoJ3N0TG9jYWxUYWJsZVNvcnRGaWVsZE5hbWUnKSB8fCAnJyxcclxuICAgICAgICAgIHN0YXJ0OlxyXG4gICAgICAgICAgICA8U29ydERpcmVjdGlvbj5wYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uJykgfHwgJ2FzYycsXHJcbiAgICAgICAgICBkaXNhYmxlQ2xlYXI6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoTW9kZWwgPSBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTZWFyY2gnKSB8fCAnJztcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoTW9kZWwpIHtcclxuICAgICAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWwudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2VhcmNoKCkge1xyXG4gICAgdGhpcy50YWJsZVNvdXJjZS5maWx0ZXIgPSB0aGlzLnNlYXJjaE1vZGVsLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy51cGRhdGVTZWFyY2hUb1VybCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaE1vZGVsID0gJyc7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWw7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLnVwZGF0ZVNlYXJjaFRvVXJsKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmQWN0aW9uVmlzaWJsZShyb3c6IGFueSwgYWN0aW9uOiBMb2NhbFRhYmxlQWN0aW9uQ29sdW1uTW9kZWwpIHtcclxuICAgIGlmIChhY3Rpb24uc2hvdykge1xyXG4gICAgICByZXR1cm4gYWN0aW9uLnNob3cocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29sdW1uVmlzaWJsZUNoYW5nZWQoY29sdW1uOiBTdExvY2FsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgdGhpcy5zZXREaXNwbGF5ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgbmV3Q29uZmlnQ3JlYXRlZChuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5ld0NvbmZpZyA9IHRoaXMuZ2VuZXJhdGVOZXdDb25maWcobmFtZSk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnB1c2gobmV3Q29uZmlnKTtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLmluaXRDb25maWcgPSBuZXdDb25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maWdSZW1vdmVkKGNvbmZpZ0lkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbnMgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmZpbHRlcihcclxuICAgICAgY29uZmlnID0+IGNvbmZpZy5jb25maWdJZCAhPT0gY29uZmlnSWRcclxuICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlnQ2hhbmdlZChjb25maWdJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb25maWcgPSBjb25maWdJZFxyXG4gICAgICA/IHRoaXMuY29uZmlndXJhdGlvbnMuZmluZChjb25maWcgPT4gY29uZmlnLmNvbmZpZ0lkID09PSBjb25maWdJZCkhXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICB0aGlzLnNldFRhYmxlQ29uZmlnKFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLmNvbHVtbnNEaXNhYmxlZCxcclxuICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZy5zb3J0RmllbGROYW1lLFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLnNvcnREaXJlY3Rpb25cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcodGhpcy5wYWdlU2l6ZSwgW10sIG51bGwsIG51bGwpO1xyXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdlQ2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMudXBkYXRlU2VhcmNoVG9VcmwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VhcmNoVG9VcmwoKSB7XHJcbiAgICBpZiAodGhpcy5iaW5kU2VhcmNoVG9VcmwpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgIHN0TG9jYWxUYWJsZVNlYXJjaDogdGhpcy5zZWFyY2hNb2RlbCxcclxuICAgICAgICBzdExvY2FsVGFibGVQYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LFxyXG4gICAgICAgIHN0TG9jYWxUYWJsZVBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuICAgICAgICBzdExvY2FsVGFibGVTb3J0RmllbGROYW1lOiAnJyxcclxuICAgICAgICBzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuc29ydC5kaXJlY3Rpb24gJiYgdGhpcy5zb3J0LmFjdGl2ZSkge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICBzdExvY2FsVGFibGVTb3J0RmllbGROYW1lOiB0aGlzLnNvcnQuYWN0aXZlLFxyXG4gICAgICAgICAgc3RMb2NhbFRhYmxlU29ydERpcmVjdGlvbjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgdGhpcy5sb2NhbFRhYmxlU2VydmljZS5zYXZlQ29uZmlncyh0aGlzLmNvbmZpZ3VyYXRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVTb3VyY2UoKSB7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLl9kYXRhKTtcclxuICAgIHRoaXMudGFibGVTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWw7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREaXNwbGF5ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5maWx0ZXIoY29sdW1uID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNbY29sdW1uXS52aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbHVtbnNBcnJheSgpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9jb2x1bW5zKS5tYXAoY29sdW1uID0+IHRoaXMuX2NvbHVtbnNbY29sdW1uXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRDb25maWdzKCkge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9ucyA9IHRoaXMubG9jYWxUYWJsZVNlcnZpY2UuZ2V0Q29uZmlncygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0NvbmZpZyhjb25maWdOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbmZpZ0lkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXHJcbiAgICAgIGNvbmZpZ05hbWU6IGNvbmZpZ05hbWUsXHJcbiAgICAgIGNvbHVtbnNEaXNhYmxlZDogdGhpcy5jb2x1bW5zQXJyYXlcclxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLnZpc2libGUpXHJcbiAgICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLnRyYW5zbGF0ZUNvbHVtbk5hbWUpLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHNvcnRGaWVsZE5hbWU6XHJcbiAgICAgICAgdGhpcy5zb3J0LmRpcmVjdGlvbiAmJiB0aGlzLnNvcnQuYWN0aXZlID8gdGhpcy5zb3J0LmFjdGl2ZSA6IG51bGwsXHJcbiAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydC5kaXJlY3Rpb24gfHwgbnVsbCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYmxlQ29uZmlnKFxyXG4gICAgcGFnZVNpemU6IG51bWJlcixcclxuICAgIGRpc2FibGVkQ29sdW1uczogc3RyaW5nW10sXHJcbiAgICBzb3J0RmllbGROYW1lOiBudWxsIHwgc3RyaW5nLFxyXG4gICAgc29ydERpcmVjdGlvbjogbnVsbCB8IFNvcnREaXJlY3Rpb25cclxuICApIHtcclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLnNvcnQuc29ydCh7XHJcbiAgICAgIGlkOiBzb3J0RmllbGROYW1lIHx8ICcnLFxyXG4gICAgICBzdGFydDogc29ydERpcmVjdGlvbiB8fCAnYXNjJyxcclxuICAgICAgZGlzYWJsZUNsZWFyOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBjb2x1bW4udmlzaWJsZSA9XHJcbiAgICAgICAgZGlzYWJsZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uLnRyYW5zbGF0ZUNvbHVtbk5hbWUpID09PSAtMTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5ZWRDb2x1bW5zKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2NhbC10YWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIEBpZiAoY29uZmlndXJhdGlvbnNTZXR0aW5ncyB8fCBhbGxvd1BpY2tDb2x1bW5zKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDBcIj5cbiAgICAgICAgQGlmIChhbGxvd1BpY2tDb2x1bW5zKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCIgc3R5bGU9XCJwYWRkaW5nOiAwXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvbC1hdXRvXCJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbHVtbnNNZW51XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPiB2aWV3X3dlZWsgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNjb2x1bW5zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJhZnRlclwiPlxuICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uc0FycmF5OyB0cmFjayBjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFjb2x1bW4ubm90U2hvd0luQ29sdW1uUGljaykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW4udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29sdW1uVmlzaWJsZUNoYW5nZWQoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHhcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLnRyYW5zbGF0ZUNvbHVtbk5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChjb25maWd1cmF0aW9uc1NldHRpbmdzKSB7XG4gICAgICAgICAgPHN0LWNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICBbY29uZmlndXJhdGlvbnNTZXR0aW5nc109XCJjb25maWd1cmF0aW9uc1NldHRpbmdzXCJcbiAgICAgICAgICAgIFtjb25maWd1cmF0aW9uc109XCJjb25maWd1cmF0aW9uc1wiXG4gICAgICAgICAgICBbaW5pdFNlbGVjdGVkQ29uZmlnXT1cImluaXRDb25maWdcIlxuICAgICAgICAgICAgKGNyZWF0ZU5ld0NvbmZpZyk9XCJuZXdDb25maWdDcmVhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgKHJlbW92ZUNvbmZpZyk9XCJjb25maWdSZW1vdmVkKCRldmVudClcIlxuICAgICAgICAgICAgKGNoYW5nZUNvbmZpZyk9XCJjb25maWdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgID48L3N0LWNvbmZpZ3VyYXRpb25zPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGdsb2JhbFNlYXJjaFNldHRpbmdzPy5zaG93KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJwYWRkaW5nOiAwOyBtYXJnaW4tYm90dG9tOiAtMTVweFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBnbG9iYWxTZWFyY2hTZXR0aW5ncz8ubGFiZWwgfHwgJ1NlYXJjaCcgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5U2VhcmNoKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE1vZGVsXCIgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6IDIycHhcIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDx0YWJsZVxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLWhvdmVyJzogIXRhYmxlU2V0dGluZ3M/LnJvd0NsaWNrQWN0aW9uIH1cIlxuICAgIG1hdC10YWJsZVxuICAgIFtkYXRhU291cmNlXT1cInRhYmxlU291cmNlXCJcbiAgICBtYXRTb3J0XG4gID5cbiAgICBAZm9yIChjb2x1bW4gb2YgZGlzcGxheWVkQ29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uXCI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgc3R5bGU9XCJ7e1xuICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW5zW2NvbHVtbl0ud2lkdGggOiAnJ1xuICAgICAgICAgIH19XCJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbHVtbnNbY29sdW1uXS5zb3J0XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbHVtbnNbY29sdW1uXS50cmFuc2xhdGVDb2x1bW5OYW1lIH19XG4gICAgICAgICAgQGlmIChjb2x1bW5zW2NvbHVtbl0uc2VhcmNoKSB7XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHNlYXJjaFxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tcbiAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl0uc2VhcmNoTGFiZWwgfHwgJ1NlYXJjaCdcbiAgICAgICAgICAgICAgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwiYXBwbHlTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hNb2RlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hNb2RlbCA9ICcnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGRcbiAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIlxuICAgICAgICAgIHN0eWxlPVwie3tcbiAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS53aWR0aCA/ICd3aWR0aDonICsgY29sdW1uc1tjb2x1bW5dLndpZHRoIDogJydcbiAgICAgICAgICB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGNvbHVtbnNbY29sdW1uXS5hY3Rpb25zICYmIGNvbHVtbnNbY29sdW1uXS5hY3Rpb25zIS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2p1c3RpZnktY29udGVudC1lbmQnOiBjb2x1bW5zW2NvbHVtbl0uZmxleFJpZ2h0IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgY29sdW1uc1tjb2x1bW5dLmFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICAgICAgICAgIEBpZiAoY2hlY2tJZkFjdGlvblZpc2libGUoZWxlbWVudCwgYWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgQGlmICghYWN0aW9uLnVybCAmJiBhY3Rpb24uYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDdweCA3cHg7IHdpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHhcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcE5hbWUgfHwgJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiISEhYWN0aW9uLnRvb2x0aXBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmFjdGlvbihlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3sgYWN0aW9uLmljb25OYW1lIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiYWN0aW9uLnVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcE5hbWUgfHwgJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhISFhY3Rpb24udG9vbHRpcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBhY3Rpb24uaWNvbk5hbWUgfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghY29sdW1uc1tjb2x1bW5dLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIEBpZiAoY29sdW1uc1tjb2x1bW5dLnRyYW5zbGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luOiAwOyBwYWRkaW5nOiAwXCI+XG4gICAgICAgICAgICAgICAge3sgY29sdW1uc1tjb2x1bW5dLnRyYW5zbGF0ZVZhbHVlIVtlbGVtZW50W2NvbHVtbl1dIHx8ICcnIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWNvbHVtbnNbY29sdW1uXS50cmFuc2xhdGVWYWx1ZSkge1xuICAgICAgICAgICAgICBAaWYgKCFjb2x1bW5zW2NvbHVtbl0udHlwZSB8fCBjb2x1bW5zW2NvbHVtbl0udHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMDsgcGFkZGluZzogMFwiPnt7IGVsZW1lbnRbY29sdW1uXSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGNvbHVtbnNbY29sdW1uXS50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMDsgcGFkZGluZzogMFwiPlxuICAgICAgICAgICAgICAgICAge3sgZWxlbWVudFtjb2x1bW5dIHwgc3REYXRlVGltZUZvcm1hdFBpcGUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgIDx0clxuICAgICAgbWF0LXJvd1xuICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICB0YWJsZVNldHRpbmdzPy5yb3dDbGlja0FjdGlvbiA/IHRhYmxlU2V0dGluZ3Mucm93Q2xpY2tBY3Rpb24ocm93KSA6IG51bGxcbiAgICAgIFwiXG4gICAgPjwvdHI+XG4gIDwvdGFibGU+XG4gIDxtYXQtcGFnaW5hdG9yXG4gICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAxNSwgMjAsIDI1XVwiXG4gICAgKHBhZ2UpPVwicGFnZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxuICA+PC9tYXQtcGFnaW5hdG9yPlxuPC9kaXY+XG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvbG9jYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbG9jYWwtdGFibGUvbG9jYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUtoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0I3RCxNQUFNLE9BQU8sbUJBQW1CO0lBeUI5QixJQUNJLE9BQU8sQ0FBQyxPQUFpQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUNJLElBQUksQ0FBQyxJQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFB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QUFFO1lBQ3ZCLEtBQUssRUFBRSxhQUFhLElBQUksS0FBSztZQUM3QixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQyxNQUFNLENBQUMsT0FBTztnQkFDWixlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0E3UVUsbUJBQW1CO21HQUFuQixtQkFBbUIseVpBQ25CLFlBQVksdUVBQ1osT0FBTyxnRENuQ3BCLG92T0FpTUE7OzRGRGhLYSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQU1iLHVCQUF1QixDQUFDLE1BQU07d0tBR3RCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBR2xCLGFBQWE7c0JBRFosS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQWNGLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3RUYWJsZVNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3QtdGFibGUtc2V0dGluZ3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTdEdsb2JhbFNlYXJjaFNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3QtZ2xvYmFsLXNlYXJjaC1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IFN0Q29uZmlndXJhdGlvbnNTZXR0aW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0LWNvbmZpZ3VyYXRpb25zLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgU3RMb2NhbFRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0LWxvY2FsLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7XHJcbiAgTG9jYWxUYWJsZUFjdGlvbkNvbHVtbk1vZGVsLFxyXG4gIFN0TG9jYWxUYWJsZUNvbHVtbk1vZGVsLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9zdC1sb2NhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdC1sb2NhbC1zdG9yYWdlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc3QtbG9jYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9sb2NhbC10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vLi4vLi4vYXNzZXRzL2Jhc2UtdGFibGUuc2NzcycsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGVTZXR0aW5nczogU3RUYWJsZVNldHRpbmdzTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2xvYmFsU2VhcmNoU2V0dGluZ3M6IFN0R2xvYmFsU2VhcmNoU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgQElucHV0KClcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dQaWNrQ29sdW1uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbmZpZ3VyYXRpb25zU2V0dGluZ3M6IFN0Q29uZmlndXJhdGlvbnNTZXR0aW5nc01vZGVsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxvY2FsU3RvcmFnZU5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRTZWFyY2hUb1VybDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5zKGNvbHVtbnM6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmNvbHVtbnNBcnJheSA9IHRoaXMuZ2V0Q29sdW1uc0FycmF5KCk7XHJcbiAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zKCk6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbnM6IFN0TG9jYWxUYWJsZUNvbHVtbnNNb2RlbCA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRhKGRhdGE6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCBbXTtcclxuICAgIHRoaXMuc2V0VGFibGVTb3VyY2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgc2VhcmNoTW9kZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRhYmxlU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBjb2x1bW5zQXJyYXk6IFN0TG9jYWxUYWJsZUNvbHVtbk1vZGVsW107XHJcbiAgY29uZmlndXJhdGlvbnM6IFN0TG9jYWxTdG9yYWdlQ29uZmlndXJhdGlvbk1vZGVsW10gPSBbXTtcclxuICBpbml0Q29uZmlnOiBTdExvY2FsU3RvcmFnZUNvbmZpZ3VyYXRpb25Nb2RlbCB8IG51bGwgPSBudWxsO1xyXG4gIGFjdGl2ZUNvbmZpZzogU3RMb2NhbFN0b3JhZ2VDb25maWd1cmF0aW9uTW9kZWwgfCBudWxsID0gbnVsbDtcclxuICBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2NhbFRhYmxlU2VydmljZTogTG9jYWxUYWJsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKSB7XHJcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKTtcclxuICAgICAgaWYgKHBhZ2VTaXplKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhZ2VTaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLmxvY2FsVGFibGVTZXJ2aWNlLmxvY2FsU3RvcmFnZU5hbWUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncz8ubG9jYWxTdG9yYWdlTmFtZSB8fCAnJztcclxuICAgICAgdGhpcy5sb2FkQ29uZmlncygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnNTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcucGFnZVNpemUgPSByZXMucGFnZVNpemU7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcuc29ydEZpZWxkTmFtZSA9IHJlcy5hY3RpdmU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZy5zb3J0RGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbjtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJpbmRTZWFyY2hUb1VybCkge1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoVG9VcmwoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVQYWdlSW5kZXgnKSkge1xyXG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFyc2VJbnQocGFyYW1zLmdldCgnc3RMb2NhbFRhYmxlUGFnZUluZGV4JykgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVQYWdlU2l6ZScpKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoJ3N0TG9jYWxUYWJsZVBhZ2VTaXplJykgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RmllbGROYW1lJykgJiZcclxuICAgICAgICBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0LnNvcnQoe1xyXG4gICAgICAgICAgaWQ6IHBhcmFtcy5nZXQoJ3N0TG9jYWxUYWJsZVNvcnRGaWVsZE5hbWUnKSB8fCAnJyxcclxuICAgICAgICAgIHN0YXJ0OlxyXG4gICAgICAgICAgICA8U29ydERpcmVjdGlvbj5wYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uJykgfHwgJ2FzYycsXHJcbiAgICAgICAgICBkaXNhYmxlQ2xlYXI6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoTW9kZWwgPSBwYXJhbXMuZ2V0KCdzdExvY2FsVGFibGVTZWFyY2gnKSB8fCAnJztcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoTW9kZWwpIHtcclxuICAgICAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWwudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2VhcmNoKCkge1xyXG4gICAgdGhpcy50YWJsZVNvdXJjZS5maWx0ZXIgPSB0aGlzLnNlYXJjaE1vZGVsLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy51cGRhdGVTZWFyY2hUb1VybCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaE1vZGVsID0gJyc7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWw7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLnVwZGF0ZVNlYXJjaFRvVXJsKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmQWN0aW9uVmlzaWJsZShyb3c6IGFueSwgYWN0aW9uOiBMb2NhbFRhYmxlQWN0aW9uQ29sdW1uTW9kZWwpIHtcclxuICAgIGlmIChhY3Rpb24uc2hvdykge1xyXG4gICAgICByZXR1cm4gYWN0aW9uLnNob3cocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29sdW1uVmlzaWJsZUNoYW5nZWQoY29sdW1uOiBTdExvY2FsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgdGhpcy5zZXREaXNwbGF5ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgbmV3Q29uZmlnQ3JlYXRlZChuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5ld0NvbmZpZyA9IHRoaXMuZ2VuZXJhdGVOZXdDb25maWcobmFtZSk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnB1c2gobmV3Q29uZmlnKTtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLmluaXRDb25maWcgPSBuZXdDb25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maWdSZW1vdmVkKGNvbmZpZ0lkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbnMgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmZpbHRlcihcclxuICAgICAgY29uZmlnID0+IGNvbmZpZy5jb25maWdJZCAhPT0gY29uZmlnSWRcclxuICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ3NUb0xvY2FsU3RvcmFnZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlnQ2hhbmdlZChjb25maWdJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb25maWcgPSBjb25maWdJZFxyXG4gICAgICA/IHRoaXMuY29uZmlndXJhdGlvbnMuZmluZChjb25maWcgPT4gY29uZmlnLmNvbmZpZ0lkID09PSBjb25maWdJZCkhXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUNvbmZpZykge1xyXG4gICAgICB0aGlzLnNldFRhYmxlQ29uZmlnKFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLmNvbHVtbnNEaXNhYmxlZCxcclxuICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZy5zb3J0RmllbGROYW1lLFxyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnLnNvcnREaXJlY3Rpb25cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcodGhpcy5wYWdlU2l6ZSwgW10sIG51bGwsIG51bGwpO1xyXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdlQ2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMudXBkYXRlU2VhcmNoVG9VcmwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VhcmNoVG9VcmwoKSB7XHJcbiAgICBpZiAodGhpcy5iaW5kU2VhcmNoVG9VcmwpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgIHN0TG9jYWxUYWJsZVNlYXJjaDogdGhpcy5zZWFyY2hNb2RlbCxcclxuICAgICAgICBzdExvY2FsVGFibGVQYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LFxyXG4gICAgICAgIHN0TG9jYWxUYWJsZVBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuICAgICAgICBzdExvY2FsVGFibGVTb3J0RmllbGROYW1lOiAnJyxcclxuICAgICAgICBzdExvY2FsVGFibGVTb3J0RGlyZWN0aW9uOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuc29ydC5kaXJlY3Rpb24gJiYgdGhpcy5zb3J0LmFjdGl2ZSkge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICBzdExvY2FsVGFibGVTb3J0RmllbGROYW1lOiB0aGlzLnNvcnQuYWN0aXZlLFxyXG4gICAgICAgICAgc3RMb2NhbFRhYmxlU29ydERpcmVjdGlvbjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnc1RvTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgdGhpcy5sb2NhbFRhYmxlU2VydmljZS5zYXZlQ29uZmlncyh0aGlzLmNvbmZpZ3VyYXRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVTb3VyY2UoKSB7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLl9kYXRhKTtcclxuICAgIHRoaXMudGFibGVTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICB0aGlzLnRhYmxlU291cmNlLmZpbHRlciA9IHRoaXMuc2VhcmNoTW9kZWw7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREaXNwbGF5ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKS5maWx0ZXIoY29sdW1uID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNbY29sdW1uXS52aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbHVtbnNBcnJheSgpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9jb2x1bW5zKS5tYXAoY29sdW1uID0+IHRoaXMuX2NvbHVtbnNbY29sdW1uXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRDb25maWdzKCkge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9ucyA9IHRoaXMubG9jYWxUYWJsZVNlcnZpY2UuZ2V0Q29uZmlncygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0NvbmZpZyhjb25maWdOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbmZpZ0lkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXHJcbiAgICAgIGNvbmZpZ05hbWU6IGNvbmZpZ05hbWUsXHJcbiAgICAgIGNvbHVtbnNEaXNhYmxlZDogdGhpcy5jb2x1bW5zQXJyYXlcclxuICAgICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLnZpc2libGUpXHJcbiAgICAgICAgLm1hcChjb2x1bW4gPT4gY29sdW1uLnRyYW5zbGF0ZUNvbHVtbk5hbWUpLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHNvcnRGaWVsZE5hbWU6XHJcbiAgICAgICAgdGhpcy5zb3J0LmRpcmVjdGlvbiAmJiB0aGlzLnNvcnQuYWN0aXZlID8gdGhpcy5zb3J0LmFjdGl2ZSA6IG51bGwsXHJcbiAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydC5kaXJlY3Rpb24gfHwgbnVsbCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYmxlQ29uZmlnKFxyXG4gICAgcGFnZVNpemU6IG51bWJlcixcclxuICAgIGRpc2FibGVkQ29sdW1uczogc3RyaW5nW10sXHJcbiAgICBzb3J0RmllbGROYW1lOiBudWxsIHwgc3RyaW5nLFxyXG4gICAgc29ydERpcmVjdGlvbjogbnVsbCB8IFNvcnREaXJlY3Rpb25cclxuICApIHtcclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLnNvcnQuc29ydCh7XHJcbiAgICAgIGlkOiBzb3J0RmllbGROYW1lIHx8ICcnLFxyXG4gICAgICBzdGFydDogc29ydERpcmVjdGlvbiB8fCAnYXNjJyxcclxuICAgICAgZGlzYWJsZUNsZWFyOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBjb2x1bW4udmlzaWJsZSA9XHJcbiAgICAgICAgZGlzYWJsZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uLnRyYW5zbGF0ZUNvbHVtbk5hbWUpID09PSAtMTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5ZWRDb2x1bW5zKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2NhbC10YWJsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICBAaWYgKGNvbmZpZ3VyYXRpb25zU2V0dGluZ3MgfHwgYWxsb3dQaWNrQ29sdW1ucykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDBcIj5cclxuICAgICAgICBAaWYgKGFsbG93UGlja0NvbHVtbnMpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiIHN0eWxlPVwicGFkZGluZzogMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtYXV0b1wiXHJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbHVtbnNNZW51XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj4gdmlld193ZWVrIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bWF0LW1lbnUgI2NvbHVtbnNNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImFmdGVyXCI+XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnNBcnJheTsgdHJhY2sgY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFjb2x1bW4ubm90U2hvd0luQ29sdW1uUGljaykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW4udmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb2x1bW5WaXNpYmxlQ2hhbmdlZChjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi50cmFuc2xhdGVDb2x1bW5OYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNvbmZpZ3VyYXRpb25zU2V0dGluZ3MpIHtcclxuICAgICAgICAgIDxzdC1jb25maWd1cmF0aW9uc1xyXG4gICAgICAgICAgICBbY29uZmlndXJhdGlvbnNTZXR0aW5nc109XCJjb25maWd1cmF0aW9uc1NldHRpbmdzXCJcclxuICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb25zXT1cImNvbmZpZ3VyYXRpb25zXCJcclxuICAgICAgICAgICAgW2luaXRTZWxlY3RlZENvbmZpZ109XCJpbml0Q29uZmlnXCJcclxuICAgICAgICAgICAgKGNyZWF0ZU5ld0NvbmZpZyk9XCJuZXdDb25maWdDcmVhdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAocmVtb3ZlQ29uZmlnKT1cImNvbmZpZ1JlbW92ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2VDb25maWcpPVwiY29uZmlnQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgID48L3N0LWNvbmZpZ3VyYXRpb25zPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChnbG9iYWxTZWFyY2hTZXR0aW5ncz8uc2hvdykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJwYWRkaW5nOiAwOyBtYXJnaW4tYm90dG9tOiAtMTVweFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3sgZ2xvYmFsU2VhcmNoU2V0dGluZ3M/LmxhYmVsIHx8ICdTZWFyY2gnIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5U2VhcmNoKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE1vZGVsXCIgLz5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG5cclxuICA8dGFibGVcclxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLWhvdmVyJzogIXRhYmxlU2V0dGluZ3M/LnJvd0NsaWNrQWN0aW9uIH1cIlxyXG4gICAgbWF0LXRhYmxlXHJcbiAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZVNvdXJjZVwiXHJcbiAgICBtYXRTb3J0XHJcbiAgPlxyXG4gICAgQGZvciAoY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnM7IHRyYWNrIGNvbHVtbikge1xyXG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uXCI+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICBzdHlsZT1cInt7XHJcbiAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS53aWR0aCA/ICd3aWR0aDonICsgY29sdW1uc1tjb2x1bW5dLndpZHRoIDogJydcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW5zW2NvbHVtbl0uc29ydFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sdW1uc1tjb2x1bW5dLnRyYW5zbGF0ZUNvbHVtbk5hbWUgfX1cclxuICAgICAgICAgIEBpZiAoY29sdW1uc1tjb2x1bW5dLnNlYXJjaCkge1xyXG4gICAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pY29uXCJcclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBzZWFyY2hcclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e1xyXG4gICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNlYXJjaExhYmVsIHx8ICdTZWFyY2gnXHJcbiAgICAgICAgICAgICAgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwiYXBwbHlTZWFyY2goKVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaE1vZGVsXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoTW9kZWwgPSAnJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCJcclxuICAgICAgICAgIHN0eWxlPVwie3tcclxuICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW5zW2NvbHVtbl0ud2lkdGggOiAnJ1xyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZiAoY29sdW1uc1tjb2x1bW5dLmFjdGlvbnMgJiYgY29sdW1uc1tjb2x1bW5dLmFjdGlvbnMhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogY29sdW1uc1tjb2x1bW5dLmZsZXhSaWdodCB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb2x1bW5zW2NvbHVtbl0uYWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNoZWNrSWZBY3Rpb25WaXNpYmxlKGVsZW1lbnQsIGFjdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgQGlmICghYWN0aW9uLnVybCAmJiBhY3Rpb24uYWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA3cHggN3B4OyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcE5hbWUgfHwgJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhISFhY3Rpb24udG9vbHRpcE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5hY3Rpb24oZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBhY3Rpb24uaWNvbk5hbWUgfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uLnVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cImFjdGlvbi51cmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IGFjdGlvbi50b29sdGlwTmFtZSB8fCAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiISEhYWN0aW9uLnRvb2x0aXBOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGFjdGlvbi5pY29uTmFtZSB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghY29sdW1uc1tjb2x1bW5dLmFjdGlvbnMpIHtcclxuICAgICAgICAgICAgQGlmIChjb2x1bW5zW2NvbHVtbl0udHJhbnNsYXRlVmFsdWUpIHtcclxuICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMDsgcGFkZGluZzogMFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sdW1uc1tjb2x1bW5dLnRyYW5zbGF0ZVZhbHVlIVtlbGVtZW50W2NvbHVtbl1dIHx8ICcnIH19XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoIWNvbHVtbnNbY29sdW1uXS50cmFuc2xhdGVWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIEBpZiAoIWNvbHVtbnNbY29sdW1uXS50eXBlIHx8IGNvbHVtbnNbY29sdW1uXS50eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDA7IHBhZGRpbmc6IDBcIj57eyBlbGVtZW50W2NvbHVtbl0gfX08L3A+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uc1tjb2x1bW5dLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDA7IHBhZGRpbmc6IDBcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZWxlbWVudFtjb2x1bW5dIHwgc3REYXRlVGltZUZvcm1hdFBpcGUgfX1cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuXHJcbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gICAgPHRyXHJcbiAgICAgIG1hdC1yb3dcclxuICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgdGFibGVTZXR0aW5ncz8ucm93Q2xpY2tBY3Rpb24gPyB0YWJsZVNldHRpbmdzLnJvd0NsaWNrQWN0aW9uKHJvdykgOiBudWxsXHJcbiAgICAgIFwiXHJcbiAgICA+PC90cj5cclxuICA8L3RhYmxlPlxyXG4gIDxtYXQtcGFnaW5hdG9yXHJcbiAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMTUsIDIwLCAyNV1cIlxyXG4gICAgKHBhZ2UpPVwicGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgPjwvbWF0LXBhZ2luYXRvcj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -125,11 +125,11 @@ export class MaterialTableCaptionComponent extends StSubscribeDestroyComponent {
125
125
  filtersKeys.filter(key => this.filters[key]).length || 0;
126
126
  }
127
127
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableCaptionComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: { showGlobalSearch: "showGlobalSearch", tableTitle: "tableTitle", allowPickColumns: "allowPickColumns", allowReorderColumns: "allowReorderColumns", initGlobalSearch: "initGlobalSearch", initFilters: "initFilters", columns: "columns" }, outputs: { captionDataChanged: "captionDataChanged", resetTableSettings: "resetTableSettings" }, usesInheritance: true, ngImport: i0, template: "@if (\r\n allowPickColumns ||\r\n tableTitle ||\r\n allowReorderColumns ||\r\n showGlobalSearch ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns || tableTitle || allowReorderColumns) &&\r\n (showGlobalSearch || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns && !tableTitle && !allowReorderColumns\r\n }\"\r\n >\r\n @if (allowPickColumns || tableTitle || allowReorderColumns) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle) {\r\n <p class=\"table-title\">{{ tableTitle }}</p>\r\n }\r\n\r\n @if (allowPickColumns) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns || tableTitle) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"'Search'\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [".st-material-table-caption{width:100%;margin-top:5px;padding:0 5px;min-height:48px}.st-material-table-caption>.col-auto{padding:0}.st-material-table-caption .table-title{font-size:1.4rem;margin-bottom:0}.st-material-table-caption .reorder-icon{transform:scaleX(-1) rotate(90deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i8.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i10.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MaterialTableCaptionComponent, selector: "st-material-table-caption", inputs: { showGlobalSearch: "showGlobalSearch", tableTitle: "tableTitle", allowPickColumns: "allowPickColumns", allowReorderColumns: "allowReorderColumns", initGlobalSearch: "initGlobalSearch", initFilters: "initFilters", columns: "columns" }, outputs: { captionDataChanged: "captionDataChanged", resetTableSettings: "resetTableSettings" }, usesInheritance: true, ngImport: i0, template: "@if (\r\n allowPickColumns ||\r\n tableTitle ||\r\n allowReorderColumns ||\r\n showGlobalSearch ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns || tableTitle || allowReorderColumns) &&\r\n (showGlobalSearch || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns && !tableTitle && !allowReorderColumns\r\n }\"\r\n >\r\n @if (allowPickColumns || tableTitle || allowReorderColumns) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle) {\r\n <p class=\"table-title\">{{ tableTitle }}</p>\r\n }\r\n\r\n @if (allowPickColumns) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value!.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns || tableTitle) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"'Search'\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [".st-material-table-caption{width:100%;margin-top:5px;padding:0 5px;min-height:48px}.st-material-table-caption>.col-auto{padding:0}.st-material-table-caption .table-title{font-size:1.4rem;margin-bottom:0}.st-material-table-caption .reorder-icon{transform:scaleX(-1) rotate(90deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i8.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i10.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
129
  }
130
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaterialTableCaptionComponent, decorators: [{
131
131
  type: Component,
132
- args: [{ selector: 'st-material-table-caption', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (\r\n allowPickColumns ||\r\n tableTitle ||\r\n allowReorderColumns ||\r\n showGlobalSearch ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns || tableTitle || allowReorderColumns) &&\r\n (showGlobalSearch || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns && !tableTitle && !allowReorderColumns\r\n }\"\r\n >\r\n @if (allowPickColumns || tableTitle || allowReorderColumns) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle) {\r\n <p class=\"table-title\">{{ tableTitle }}</p>\r\n }\r\n\r\n @if (allowPickColumns) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns || tableTitle) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"'Search'\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [".st-material-table-caption{width:100%;margin-top:5px;padding:0 5px;min-height:48px}.st-material-table-caption>.col-auto{padding:0}.st-material-table-caption .table-title{font-size:1.4rem;margin-bottom:0}.st-material-table-caption .reorder-icon{transform:scaleX(-1) rotate(90deg)}\n"] }]
132
+ args: [{ selector: 'st-material-table-caption', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (\r\n allowPickColumns ||\r\n tableTitle ||\r\n allowReorderColumns ||\r\n showGlobalSearch ||\r\n showFilterButton\r\n) {\r\n <div\r\n class=\"st-material-table-caption row align-items-center\"\r\n [ngClass]=\"{\r\n 'justify-content-between':\r\n (allowPickColumns || tableTitle || allowReorderColumns) &&\r\n (showGlobalSearch || showFilterButton),\r\n 'justify-content-end':\r\n !allowPickColumns && !tableTitle && !allowReorderColumns\r\n }\"\r\n >\r\n @if (allowPickColumns || tableTitle || allowReorderColumns) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (tableTitle) {\r\n <p class=\"table-title\">{{ tableTitle }}</p>\r\n }\r\n\r\n @if (allowPickColumns) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"selectedColumns\" multiple>\r\n <mat-select-trigger>\r\n {{ selectedColumns.value ? selectedColumns.value!.length : 0 }}\r\n columns selected\r\n </mat-select-trigger>\r\n @for (column of columns; track column.field) {\r\n <mat-option [value]=\"column.field\">{{\r\n column.selectColumnLabel || column.header\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n\r\n @if (allowPickColumns || tableTitle) {\r\n <button mat-icon-button (click)=\"resetTable()\">\r\n <mat-icon class=\"reorder-icon\">refresh</mat-icon>\r\n </button>\r\n }\r\n\r\n @if (allowReorderColumns) {\r\n <button mat-icon-button (click)=\"openReorderColumnsDialog()\">\r\n <mat-icon class=\"reorder-icon\">low_priority</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (showGlobalSearch || showFilterButton) {\r\n <div class=\"col-auto d-flex align-items-center\">\r\n @if (showFilterButton) {\r\n <!-- @if (activeFiltersCount) {-->\r\n <!-- <button-->\r\n <!-- mat-icon-button-->\r\n <!-- (click)=\"clearAllFilters()\"-->\r\n <!-- [matTooltip]=\"'Clear Filters'\"-->\r\n <!-- >-->\r\n <!-- <mat-icon>filter_alt_off</mat-icon>-->\r\n <!-- </button>-->\r\n <!-- }-->\r\n\r\n <button mat-icon-button (click)=\"openFilterDialog()\">\r\n <mat-icon\r\n [matBadge]=\"activeFiltersCount\"\r\n [matBadgeHidden]=\"!activeFiltersCount\"\r\n [matBadgeSize]=\"'small'\"\r\n matBadgePosition=\"before\"\r\n >filter_alt</mat-icon\r\n >\r\n </button>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n [formControl]=\"globalSearch\"\r\n [placeholder]=\"'Search'\"\r\n />\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n (click)=\"globalSearch.setValue('')\"\r\n >\r\n <mat-icon style=\"font-size: 22px\">close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [".st-material-table-caption{width:100%;margin-top:5px;padding:0 5px;min-height:48px}.st-material-table-caption>.col-auto{padding:0}.st-material-table-caption .table-title{font-size:1.4rem;margin-bottom:0}.st-material-table-caption .reorder-icon{transform:scaleX(-1) rotate(90deg)}\n"] }]
133
133
  }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { showGlobalSearch: [{
134
134
  type: Input
135
135
  }], tableTitle: [{
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
149
149
  }], resetTableSettings: [{
150
150
  type: Output
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUtY2FwdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLDJCQUEyQixHQUM1QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtDQUFrQyxHQUVuQyxNQUFNLHVFQUF1RSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLG1GQUFtRixDQUFDOzs7Ozs7Ozs7Ozs7QUFRNUksTUFBTSxPQUFPLDZCQUNYLFNBQVEsMkJBQTJCO0lBcUJuQyxJQUNJLE9BQU8sQ0FBQyxJQUFzQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFD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QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQWhLVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qiw2YUNuQzFDLGc2R0FrR0E7OzRGRC9EYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNOzhFQU8vQyxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7Z0JBYU4sa0JBQWtCO3NCQURqQixNQUFNO2dCQUlQLGtCQUFrQjtzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdEdsb2JhbFNlYXJjaFNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3QtZ2xvYmFsLXNlYXJjaC1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy92aWV3L3ZpZXctc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgU3RCYXNlU2VydmljZSxcclxuICBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnQsXHJcbn0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHtcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgZmlsdGVyLFxyXG4gIHRha2UsXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtcclxuICBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50LFxyXG4gIE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dSZXN1bHQsXHJcbn0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZU9yZGVyQ29sdW1uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1vcmRlci1jb2x1bW4tZGlhbG9nL21hdGVyaWFsLXRhYmxlLW9yZGVyLWNvbHVtbi1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3QtbWF0ZXJpYWwtdGFibGUtY2FwdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFibGVDYXB0aW9uQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KClcclxuICBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYmxlVGl0bGUgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd1BpY2tDb2x1bW5zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd1Jlb3JkZXJDb2x1bW5zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBpbml0R2xvYmFsU2VhcmNoID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5pdEZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgY29sdW1ucyhkYXRhOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGRhdGEgPyBkYXRhIDogW107XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb2x1bW5zOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjYXB0aW9uRGF0YUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJQ2FwdGlvbkRhdGFDaGFuZ2VkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVzZXRUYWJsZVNldHRpbmdzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBzaG93RmlsdGVyQnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ29sdW1ucyA9IG5ldyBGb3JtQ29udHJvbCg8c3RyaW5nW10+W10pO1xyXG4gIGdsb2JhbFNlYXJjaCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gIGFjdGl2ZUZpbHRlcnNDb3VudCA9IDA7XHJcblxyXG4gIHByaXZhdGUgY29sdW1uc09yZGVyOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgZmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaC5zZXRWYWx1ZSh0aGlzLmluaXRHbG9iYWxTZWFyY2ggfHwgJycpO1xyXG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5pbml0RmlsdGVycyB8fCB7fTtcclxuICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyc0NvdW50KCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1pdENhcHRpb25EYXRhQ2hhbmdlZCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcclxuICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycilcclxuICAgICAgICApLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSg0MDApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0Q2FwdGlvbkRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZpbHRlckRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgIC5vcGVuKE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpbml0RmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWF4V2lkdGg6ICc0NTBweCcsXHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICB9KVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlKDEpLCBmaWx0ZXIoU3RCYXNlU2VydmljZS5ub3ROdWxsKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gcmVzLmZpbHRlcnM7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXJzQ291bnQoKTtcclxuICAgICAgICB0aGlzLmVtaXRDYXB0aW9uRGF0YUNoYW5nZWQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuUmVvcmRlckNvbHVtbnNEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1xyXG4gICAgICAub3BlbihNYXRlcmlhbFRhYmxlT3JkZXJDb2x1bW5EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtYXhXaWR0aDogJzQ1MHB4JyxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2UoMSksIGZpbHRlcihTdEJhc2VTZXJ2aWNlLm5vdE51bGwpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgY29sdW1uc09yZGVyOiBzdHJpbmdbXSB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zT3JkZXIgPSByZXN1bHQuY29sdW1uc09yZGVyO1xyXG4gICAgICAgIHRoaXMuZW1pdENhcHRpb25EYXRhQ2hhbmdlZCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0VGFibGUoKSB7XHJcbiAgICB0aGlzLnJlc2V0VGFibGVTZXR0aW5ncy5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgY29uc3QgZmlsdGVyc0tleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpO1xyXG4gICAgZmlsdGVyc0tleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5maWx0ZXJzW2tleV0pIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnNba2V5XSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcnNDb3VudCgpO1xyXG4gICAgdGhpcy5lbWl0Q2FwdGlvbkRhdGFDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRDYXB0aW9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmNhcHRpb25EYXRhQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgc2VsZWN0ZWRDb2x1bW5zOiB0aGlzLnNlbGVjdGVkQ29sdW1ucy52YWx1ZSB8fCBbXSxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLmdsb2JhbFNlYXJjaC52YWx1ZSB8fCAnJyxcclxuICAgICAgY29sdW1uc09yZGVyOiB0aGlzLmNvbHVtbnNPcmRlciB8fCBbXSxcclxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5zRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKTtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckJ1dHRvbiA9IGNvbHVtbnNGaWx0ZXJzLmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5zZXRWYWx1ZShcclxuICAgICAgdGhpcy5fY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC52aXNpYmxlKS5tYXAoY29sID0+IGNvbC5maWVsZCkgfHwgW11cclxuICAgICk7XHJcbiAgICB0aGlzLmNvbHVtbnNPcmRlciA9IHRoaXMuX2NvbHVtbnMubWFwKGNvbCA9PiBjb2wuZmllbGQpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBY3RpdmVGaWx0ZXJzQ291bnQoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycyk7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9XHJcbiAgICAgIGZpbHRlcnNLZXlzLmZpbHRlcihrZXkgPT4gdGhpcy5maWx0ZXJzW2tleV0pLmxlbmd0aCB8fCAwO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FwdGlvbkRhdGFDaGFuZ2VkIHtcclxuICBzZWxlY3RlZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIGdsb2JhbFNlYXJjaDogc3RyaW5nO1xyXG4gIGNvbHVtbnNPcmRlcjogc3RyaW5nW107XHJcbiAgZmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxufVxyXG4iLCJAaWYgKFxyXG4gIGFsbG93UGlja0NvbHVtbnMgfHxcclxuICB0YWJsZVRpdGxlIHx8XHJcbiAgYWxsb3dSZW9yZGVyQ29sdW1ucyB8fFxyXG4gIHNob3dHbG9iYWxTZWFyY2ggfHxcclxuICBzaG93RmlsdGVyQnV0dG9uXHJcbikge1xyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic3QtbWF0ZXJpYWwtdGFibGUtY2FwdGlvbiByb3cgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJzpcclxuICAgICAgICAoYWxsb3dQaWNrQ29sdW1ucyB8fCB0YWJsZVRpdGxlIHx8IGFsbG93UmVvcmRlckNvbHVtbnMpICYmXHJcbiAgICAgICAgKHNob3dHbG9iYWxTZWFyY2ggfHwgc2hvd0ZpbHRlckJ1dHRvbiksXHJcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzpcclxuICAgICAgICAhYWxsb3dQaWNrQ29sdW1ucyAmJiAhdGFibGVUaXRsZSAmJiAhYWxsb3dSZW9yZGVyQ29sdW1uc1xyXG4gICAgfVwiXHJcbiAgPlxyXG4gICAgQGlmIChhbGxvd1BpY2tDb2x1bW5zIHx8IHRhYmxlVGl0bGUgfHwgYWxsb3dSZW9yZGVyQ29sdW1ucykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAodGFibGVUaXRsZSkge1xyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHRhYmxlVGl0bGUgfX08L3A+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGFsbG93UGlja0NvbHVtbnMpIHtcclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwic2VsZWN0ZWRDb2x1bW5zXCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkQ29sdW1ucy52YWx1ZSA/IHNlbGVjdGVkQ29sdW1ucy52YWx1ZS5sZW5ndGggOiAwIH19XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zIHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImNvbHVtbi5maWVsZFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5zZWxlY3RDb2x1bW5MYWJlbCB8fCBjb2x1bW4uaGVhZGVyXHJcbiAgICAgICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGFsbG93UGlja0NvbHVtbnMgfHwgdGFibGVUaXRsZSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0VGFibGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJyZW9yZGVyLWljb25cIj5yZWZyZXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChhbGxvd1Jlb3JkZXJDb2x1bW5zKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlblJlb3JkZXJDb2x1bW5zRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicmVvcmRlci1pY29uXCI+bG93X3ByaW9yaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChzaG93R2xvYmFsU2VhcmNoIHx8IHNob3dGaWx0ZXJCdXR0b24pIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICBAaWYgKHNob3dGaWx0ZXJCdXR0b24pIHtcclxuICAgICAgICAgIDwhLS0gICAgICAgIEBpZiAoYWN0aXZlRmlsdGVyc0NvdW50KSB7LS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICAgIDxidXR0b24tLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24tLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGxGaWx0ZXJzKClcIi0tPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidDbGVhciBGaWx0ZXJzJ1wiLS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICAgID4tLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2FsdF9vZmY8L21hdC1pY29uPi0tPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICA8L2J1dHRvbj4tLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgIH0tLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlckRpYWxvZygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgICAgIFttYXRCYWRnZV09XCJhY3RpdmVGaWx0ZXJzQ291bnRcIlxyXG4gICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhYWN0aXZlRmlsdGVyc0NvdW50XCJcclxuICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIidzbWFsbCdcIlxyXG4gICAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJiZWZvcmVcIlxyXG4gICAgICAgICAgICAgID5maWx0ZXJfYWx0PC9tYXQtaWNvblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoc2hvd0dsb2JhbFNlYXJjaCkge1xyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWFyY2gnXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdsb2JhbFNlYXJjaC5zZXRWYWx1ZSgnJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4XCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUtY2FwdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29tcG9uZW50cy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLDJCQUEyQixHQUM1QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtDQUFrQyxHQUVuQyxNQUFNLHVFQUF1RSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLG1GQUFtRixDQUFDOzs7Ozs7Ozs7Ozs7QUFRNUksTUFBTSxPQUFPLDZCQUNYLFNBQVEsMkJBQTJCO0lBcUJuQyxJQUNJLE9BQU8sQ0FBQyxJQUFzQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFD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QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQWhLVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qiw2YUNuQzFDLGk2R0FrR0E7OzRGRC9EYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNOzhFQU8vQyxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7Z0JBYU4sa0JBQWtCO3NCQURqQixNQUFNO2dCQUlQLGtCQUFrQjtzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdEdsb2JhbFNlYXJjaFNldHRpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3QtZ2xvYmFsLXNlYXJjaC1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy92aWV3L3ZpZXctc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgU3RCYXNlU2VydmljZSxcclxuICBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnQsXHJcbn0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHtcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgZmlsdGVyLFxyXG4gIHRha2UsXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtcclxuICBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50LFxyXG4gIE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dSZXN1bHQsXHJcbn0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZU9yZGVyQ29sdW1uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1vcmRlci1jb2x1bW4tZGlhbG9nL21hdGVyaWFsLXRhYmxlLW9yZGVyLWNvbHVtbi1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3QtbWF0ZXJpYWwtdGFibGUtY2FwdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLXRhYmxlLWNhcHRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFibGVDYXB0aW9uQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KClcclxuICBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYmxlVGl0bGUgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd1BpY2tDb2x1bW5zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd1Jlb3JkZXJDb2x1bW5zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBpbml0R2xvYmFsU2VhcmNoID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5pdEZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgY29sdW1ucyhkYXRhOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGRhdGEgPyBkYXRhIDogW107XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb2x1bW5zOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjYXB0aW9uRGF0YUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJQ2FwdGlvbkRhdGFDaGFuZ2VkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVzZXRUYWJsZVNldHRpbmdzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBzaG93RmlsdGVyQnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ29sdW1ucyA9IG5ldyBGb3JtQ29udHJvbCg8c3RyaW5nW10+W10pO1xyXG4gIGdsb2JhbFNlYXJjaCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gIGFjdGl2ZUZpbHRlcnNDb3VudCA9IDA7XHJcblxyXG4gIHByaXZhdGUgY29sdW1uc09yZGVyOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgZmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaC5zZXRWYWx1ZSh0aGlzLmluaXRHbG9iYWxTZWFyY2ggfHwgJycpO1xyXG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5pbml0RmlsdGVycyB8fCB7fTtcclxuICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyc0NvdW50KCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1pdENhcHRpb25EYXRhQ2hhbmdlZCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcclxuICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycilcclxuICAgICAgICApLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSg0MDApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0Q2FwdGlvbkRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZpbHRlckRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgIC5vcGVuKE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpbml0RmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWF4V2lkdGg6ICc0NTBweCcsXHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICB9KVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlKDEpLCBmaWx0ZXIoU3RCYXNlU2VydmljZS5ub3ROdWxsKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gcmVzLmZpbHRlcnM7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXJzQ291bnQoKTtcclxuICAgICAgICB0aGlzLmVtaXRDYXB0aW9uRGF0YUNoYW5nZWQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuUmVvcmRlckNvbHVtbnNEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1xyXG4gICAgICAub3BlbihNYXRlcmlhbFRhYmxlT3JkZXJDb2x1bW5EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtYXhXaWR0aDogJzQ1MHB4JyxcclxuICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2UoMSksIGZpbHRlcihTdEJhc2VTZXJ2aWNlLm5vdE51bGwpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgY29sdW1uc09yZGVyOiBzdHJpbmdbXSB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zT3JkZXIgPSByZXN1bHQuY29sdW1uc09yZGVyO1xyXG4gICAgICAgIHRoaXMuZW1pdENhcHRpb25EYXRhQ2hhbmdlZCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0VGFibGUoKSB7XHJcbiAgICB0aGlzLnJlc2V0VGFibGVTZXR0aW5ncy5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xyXG4gICAgY29uc3QgZmlsdGVyc0tleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpO1xyXG4gICAgZmlsdGVyc0tleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5maWx0ZXJzW2tleV0pIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnNba2V5XSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcnNDb3VudCgpO1xyXG4gICAgdGhpcy5lbWl0Q2FwdGlvbkRhdGFDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRDYXB0aW9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmNhcHRpb25EYXRhQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgc2VsZWN0ZWRDb2x1bW5zOiB0aGlzLnNlbGVjdGVkQ29sdW1ucy52YWx1ZSB8fCBbXSxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLmdsb2JhbFNlYXJjaC52YWx1ZSB8fCAnJyxcclxuICAgICAgY29sdW1uc09yZGVyOiB0aGlzLmNvbHVtbnNPcmRlciB8fCBbXSxcclxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5zRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKTtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckJ1dHRvbiA9IGNvbHVtbnNGaWx0ZXJzLmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5zZXRWYWx1ZShcclxuICAgICAgdGhpcy5fY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC52aXNpYmxlKS5tYXAoY29sID0+IGNvbC5maWVsZCkgfHwgW11cclxuICAgICk7XHJcbiAgICB0aGlzLmNvbHVtbnNPcmRlciA9IHRoaXMuX2NvbHVtbnMubWFwKGNvbCA9PiBjb2wuZmllbGQpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBY3RpdmVGaWx0ZXJzQ291bnQoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycyk7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9XHJcbiAgICAgIGZpbHRlcnNLZXlzLmZpbHRlcihrZXkgPT4gdGhpcy5maWx0ZXJzW2tleV0pLmxlbmd0aCB8fCAwO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FwdGlvbkRhdGFDaGFuZ2VkIHtcclxuICBzZWxlY3RlZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIGdsb2JhbFNlYXJjaDogc3RyaW5nO1xyXG4gIGNvbHVtbnNPcmRlcjogc3RyaW5nW107XHJcbiAgZmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxufVxyXG4iLCJAaWYgKFxyXG4gIGFsbG93UGlja0NvbHVtbnMgfHxcclxuICB0YWJsZVRpdGxlIHx8XHJcbiAgYWxsb3dSZW9yZGVyQ29sdW1ucyB8fFxyXG4gIHNob3dHbG9iYWxTZWFyY2ggfHxcclxuICBzaG93RmlsdGVyQnV0dG9uXHJcbikge1xyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic3QtbWF0ZXJpYWwtdGFibGUtY2FwdGlvbiByb3cgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJzpcclxuICAgICAgICAoYWxsb3dQaWNrQ29sdW1ucyB8fCB0YWJsZVRpdGxlIHx8IGFsbG93UmVvcmRlckNvbHVtbnMpICYmXHJcbiAgICAgICAgKHNob3dHbG9iYWxTZWFyY2ggfHwgc2hvd0ZpbHRlckJ1dHRvbiksXHJcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzpcclxuICAgICAgICAhYWxsb3dQaWNrQ29sdW1ucyAmJiAhdGFibGVUaXRsZSAmJiAhYWxsb3dSZW9yZGVyQ29sdW1uc1xyXG4gICAgfVwiXHJcbiAgPlxyXG4gICAgQGlmIChhbGxvd1BpY2tDb2x1bW5zIHx8IHRhYmxlVGl0bGUgfHwgYWxsb3dSZW9yZGVyQ29sdW1ucykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIEBpZiAodGFibGVUaXRsZSkge1xyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHRhYmxlVGl0bGUgfX08L3A+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGFsbG93UGlja0NvbHVtbnMpIHtcclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwic2VsZWN0ZWRDb2x1bW5zXCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkQ29sdW1ucy52YWx1ZSA/IHNlbGVjdGVkQ29sdW1ucy52YWx1ZSEubGVuZ3RoIDogMCB9fVxyXG4gICAgICAgICAgICAgICAgY29sdW1ucyBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJjb2x1bW4uZmllbGRcIj57e1xyXG4gICAgICAgICAgICAgICAgICBjb2x1bW4uc2VsZWN0Q29sdW1uTGFiZWwgfHwgY29sdW1uLmhlYWRlclxyXG4gICAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChhbGxvd1BpY2tDb2x1bW5zIHx8IHRhYmxlVGl0bGUpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldFRhYmxlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicmVvcmRlci1pY29uXCI+cmVmcmVzaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoYWxsb3dSZW9yZGVyQ29sdW1ucykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5SZW9yZGVyQ29sdW1uc0RpYWxvZygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJlb3JkZXItaWNvblwiPmxvd19wcmlvcml0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoc2hvd0dsb2JhbFNlYXJjaCB8fCBzaG93RmlsdGVyQnV0dG9uKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzaG93RmlsdGVyQnV0dG9uKSB7XHJcbiAgICAgICAgICA8IS0tICAgICAgICBAaWYgKGFjdGl2ZUZpbHRlcnNDb3VudCkgey0tPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICA8YnV0dG9uLS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uLS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCItLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInQ2xlYXIgRmlsdGVycydcIi0tPlxyXG4gICAgICAgICAgPCEtLSAgICAgICAgICA+LS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICAgICAgPG1hdC1pY29uPmZpbHRlcl9hbHRfb2ZmPC9tYXQtaWNvbj4tLT5cclxuICAgICAgICAgIDwhLS0gICAgICAgICAgPC9idXR0b24+LS0+XHJcbiAgICAgICAgICA8IS0tICAgICAgICB9LS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GaWx0ZXJEaWFsb2coKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiYWN0aXZlRmlsdGVyc0NvdW50XCJcclxuICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIWFjdGl2ZUZpbHRlcnNDb3VudFwiXHJcbiAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYmVmb3JlXCJcclxuICAgICAgICAgICAgICA+ZmlsdGVyX2FsdDwvbWF0LWljb25cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHNob3dHbG9iYWxTZWFyY2gpIHtcclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJnbG9iYWxTZWFyY2hcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VhcmNoJ1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJnbG9iYWxTZWFyY2guc2V0VmFsdWUoJycpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMjJweFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19