ngx-wapp-components 1.22.12 → 1.22.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/tables/w-table/w-table.component.mjs +6 -3
- package/fesm2015/ngx-wapp-components.mjs +5 -2
- package/fesm2015/ngx-wapp-components.mjs.map +1 -1
- package/fesm2020/ngx-wapp-components.mjs +5 -2
- package/fesm2020/ngx-wapp-components.mjs.map +1 -1
- package/lib/tables/w-table/w-table.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -18,13 +18,13 @@ import * as i13 from "../../shared/pipes/w-date.pipe";
|
|
|
18
18
|
export class WTableComponent {
|
|
19
19
|
constructor(confirmationService) {
|
|
20
20
|
this.confirmationService = confirmationService;
|
|
21
|
-
this.selectedElements = [];
|
|
22
21
|
this.translateObjectName = "object";
|
|
23
22
|
this.selectAll = false;
|
|
24
23
|
this.tableMinWidth = 70;
|
|
25
24
|
this.tableSkeletons = [{ name: '' }, { name: '' }, { name: '' }, { name: '' }];
|
|
26
25
|
this._totalRecords = 0;
|
|
27
26
|
this.wappDateFormat = WDatePipeFormatType;
|
|
27
|
+
this.selectedElements = [];
|
|
28
28
|
this.rowsPerPage = 0;
|
|
29
29
|
this.loading = true;
|
|
30
30
|
this.onElementSelect = new EventEmitter();
|
|
@@ -264,13 +264,16 @@ export class WTableComponent {
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
WTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
267
|
-
WTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTableComponent, selector: "w-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTableObject: "wappTableObject" }, outputs: { onElementSelect: "onElementSelect", onViewElementSelect: "onViewElementSelect", onCopyElementSelect: "onCopyElementSelect", onEditElementSelect: "onEditElementSelect", onCustomElementSelect: "onCustomElementSelect", onDeleteElementSelect: "onDeleteElementSelect", onNewElementSelect: "onNewElementSelect", onPageChange: "onPageChange", onSelectedElementsChange: "onSelectedElementsChange", onSecondaryCheckboxChange: "onSecondaryCheckboxChange" }, providers: [ConfirmationService], viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "dataTable", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"w-table-styles\" [ngClass]=\"{'w-table-no-buttons' : !wappTableObject.hasEditButton && !wappTableObject.hasDeleteButton && !wappTableObject.hasCopyButton && !wappTableObject.customButtonConfig}\"\r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"wappTableObject.hasPaginator\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': wappTableObject.tableMinWidth!}\"\r\n (onPage)=\"pageChange($event)\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template pTemplate=\"caption\" *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch || wappTableObject.hasTotalPagingSelector\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"wappTableObject.hasCheckbox\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[0]) : 'text-center'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else sortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers; index as i\"\r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] == tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #sortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\" \r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] === tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton || wappTableObject.hasViewButton || wappTableObject.hasCopyButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasClickableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasClickableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.columns[i])\" \r\n [src]=\"readProperty(element, wappTableObject.columns[i])\" \r\n class=\"element-image-width\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-badge [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"'info'\"></w-badge> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ColoredBadge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <div *ngFor=\"let badge of wappTableObject.coloredBadge; index as ind\">\r\n <w-badge *ngIf=\"badge.coloredBadgeProperty == readProperty(element, wappTableObject.columns[i])\"\r\n [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"badge.color\"></w-badge>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.columns[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.SecondaryCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-lazy-selectable-row' : ''\">\r\n <p-checkbox [(ngModel)]=\"element[wappTableObject.columns[i]]\" [binary]=\"true\" inputId=\"binary\" (ngModelChange)=\"onSecondaryCheckboxChanges(element)\"></p-checkbox>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.d }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.D }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.g }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.G }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.BuisinessDateTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.Business }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Week\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\" \r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-button-week [value]=\"readProperty(element, wappTableObject.columns[i])\" [translations]=\"wappTableObject.weekButtonTranslations ? wappTableObject.weekButtonTranslations : []\" [defaultEsp]=\"wappTableObject.weekButtonDefaultEsp ?? false\"></w-button-week>\r\n </td>\r\n </ng-template>\r\n <td *ngIf=\"wappTableObject.hasCustomButton || wappTableObject?.hasEditButton || wappTableObject?.hasCopyButton || wappTableObject?.hasDeleteButton || wappTableObject?.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton && !wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableViewProperty)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button *ngIf=\"!customButtonConfig?.disableProperty\"\r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\"\r\n type=\"table\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view' + getButtonCustomColorClass(customButtonConfig.color!) \">\r\n </w-button>\r\n <w-button *ngIf=\"customButtonConfig?.disableProperty\" \r\n type=\"table\" \r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\" \r\n [disabled]=\"readProperty(element, customButtonConfig?.disableProperty!)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n type=\"table\" (onClick)=\"editElement(element)\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableEditProperty\" \r\n type=\"table\" (onClick)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n type=\"table\" (onClick)=\"confirmCopy($event, element)\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-copy\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <span *ngIf=\"wappTableObject?.hasDeleteButton\">\r\n <w-button *ngIf=\"wappTableObject.disableDeleteProperty; else noDisableDelete\" \r\n type=\"table\" (onClick)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n <ng-template #noDisableDelete>\r\n <w-button *ngIf=\"!wappTableObject?.disableDelete && !wappTableObject.disableDeleteProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"confirmDelete($event, element)\" \r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"w-table-lazy-empty-message-padding\">\r\n <td [attr.colspan]=\"calculateColspan()\">{{wappTableObject.emptyMessage ? wappTableObject.emptyMessage : 'No matches.'}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"w-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"wappTableObject.hasPaginator\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject?.hasDeleteButton || wappTableObject?.hasEditButton || wappTableObject?.hasViewButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton || wappTableObject.hasCopyButton || wappTableObject.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\" \r\n icon=\"pi-eye\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [icon]=\"customButtonConfig?.icon!\" type=\"table\" [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n icon=\"pi-pencil\" type=\"table\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n icon=\"pi-copy\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasDeleteButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n icon=\"pi-trash\" type=\"table\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.w-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.w-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.w-table-selectable-row{cursor:pointer}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:8px;border-bottom-right-radius:8px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-top-left-radius:8px;border-bottom-left-radius:8px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:6px 8px 5px}::ng-deep .w-table-no-buttons .p-datatable .p-datatable-tbody>tr>td{padding:16px 8px 15px!important}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td:empty{padding-top:22px!important;padding-bottom:21px!important}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .darkBlue1.p-button.p-button-icon-only>.p-button-icon{color:#0020c7!important}::ng-deep .w-table-styles .darkBlue2.p-button.p-button-icon-only>.p-button-icon{color:#4765ff!important}::ng-deep .w-table-styles .darkBlue3.p-button.p-button-icon-only>.p-button-icon{color:#adbaff!important}::ng-deep .w-table-styles .purple1.p-button.p-button-icon-only>.p-button-icon{color:#7b00c7!important}::ng-deep .w-table-styles .purple2.p-button.p-button-icon-only>.p-button-icon{color:#b947ff!important}::ng-deep .w-table-styles .purple3.p-button.p-button-icon-only>.p-button-icon{color:#e0adff!important}::ng-deep .w-table-styles .pink1.p-button.p-button-icon-only>.p-button-icon{color:#c700b3!important}::ng-deep .w-table-styles .pink2.p-button.p-button-icon-only>.p-button-icon{color:#ff61ef!important}::ng-deep .w-table-styles .pink3.p-button.p-button-icon-only>.p-button-icon{color:#ffadf7!important}::ng-deep .w-table-styles .green1.p-button.p-button-icon-only>.p-button-icon{color:#87c700!important}::ng-deep .w-table-styles .green2.p-button.p-button-icon-only>.p-button-icon{color:#ccff61!important}::ng-deep .w-table-styles .green3.p-button.p-button-icon-only>.p-button-icon{color:#e5ffad!important}::ng-deep .w-table-styles .error1.p-button.p-button-icon-only>.p-button-icon{color:#fb7c7c!important}::ng-deep .w-table-styles .error2.p-button.p-button-icon-only>.p-button-icon{color:#f55!important}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.height-input{height:32px}.w-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.w-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.w-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-datatable .p-datatable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-datatable .p-datatable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .p-datatable .p-datatable-tbody>tr.w-table-lazy-empty-message-padding>td{padding:16px 12px 15px!important}::ng-deep .w-table-styles .p-disabled,.p-component:disabled{opacity:.3;box-shadow:none!important}.w-table-buttons{gap:12px}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i7.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i7.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i7.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i8.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "component", type: i10.WButtonComponent, selector: "w-button", inputs: ["type", "label", "size", "icon", "iconPos", "tooltipPosition", "tooltip", "disabled", "loading", "buttonClass"], outputs: ["onClick"] }, { kind: "component", type: i11.WBadgeComponent, selector: "w-badge", inputs: ["label", "color", "tooltip", "maxWidthOverflow"] }, { kind: "component", type: i12.WButtonWeekComponent, selector: "w-button-week", inputs: ["value", "translations", "defaultEsp"], outputs: ["onDayClick"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i13.WDatePipe, name: "wappDate" }] });
|
|
267
|
+
WTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTableComponent, selector: "w-table", inputs: { elements: "elements", selectedElements: "selectedElements", rowsPerPage: "rowsPerPage", loading: "loading", wappTableObject: "wappTableObject" }, outputs: { onElementSelect: "onElementSelect", onViewElementSelect: "onViewElementSelect", onCopyElementSelect: "onCopyElementSelect", onEditElementSelect: "onEditElementSelect", onCustomElementSelect: "onCustomElementSelect", onDeleteElementSelect: "onDeleteElementSelect", onNewElementSelect: "onNewElementSelect", onPageChange: "onPageChange", onSelectedElementsChange: "onSelectedElementsChange", onSecondaryCheckboxChange: "onSecondaryCheckboxChange" }, providers: [ConfirmationService], viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "dataTable", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"w-table-styles\" [ngClass]=\"{'w-table-no-buttons' : !wappTableObject.hasEditButton && !wappTableObject.hasDeleteButton && !wappTableObject.hasCopyButton && !wappTableObject.customButtonConfig}\"\r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"wappTableObject.hasPaginator\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': wappTableObject.tableMinWidth!}\"\r\n (onPage)=\"pageChange($event)\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template pTemplate=\"caption\" *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch || wappTableObject.hasTotalPagingSelector\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"wappTableObject.hasCheckbox\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[0]) : 'text-center'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else sortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers; index as i\"\r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] == tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #sortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\" \r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] === tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton || wappTableObject.hasViewButton || wappTableObject.hasCopyButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasClickableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasClickableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.columns[i])\" \r\n [src]=\"readProperty(element, wappTableObject.columns[i])\" \r\n class=\"element-image-width\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-badge [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"'info'\"></w-badge> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ColoredBadge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <div *ngFor=\"let badge of wappTableObject.coloredBadge; index as ind\">\r\n <w-badge *ngIf=\"badge.coloredBadgeProperty == readProperty(element, wappTableObject.columns[i])\"\r\n [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"badge.color\"></w-badge>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.columns[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.SecondaryCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-lazy-selectable-row' : ''\">\r\n <p-checkbox [(ngModel)]=\"element[wappTableObject.columns[i]]\" [binary]=\"true\" inputId=\"binary\" (ngModelChange)=\"onSecondaryCheckboxChanges(element)\"></p-checkbox>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.d }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.D }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.g }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.G }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.BuisinessDateTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.Business }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Week\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\" \r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-button-week [value]=\"readProperty(element, wappTableObject.columns[i])\" [translations]=\"wappTableObject.weekButtonTranslations ? wappTableObject.weekButtonTranslations : []\" [defaultEsp]=\"wappTableObject.weekButtonDefaultEsp ?? false\"></w-button-week>\r\n </td>\r\n </ng-template>\r\n <td *ngIf=\"wappTableObject.hasCustomButton || wappTableObject?.hasEditButton || wappTableObject?.hasCopyButton || wappTableObject?.hasDeleteButton || wappTableObject?.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton && !wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableViewProperty)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button *ngIf=\"!customButtonConfig?.disableProperty\"\r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\"\r\n type=\"table\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view' + getButtonCustomColorClass(customButtonConfig.color!) \">\r\n </w-button>\r\n <w-button *ngIf=\"customButtonConfig?.disableProperty\" \r\n type=\"table\" \r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\" \r\n [disabled]=\"readProperty(element, customButtonConfig?.disableProperty!)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n type=\"table\" (onClick)=\"editElement(element)\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableEditProperty\" \r\n type=\"table\" (onClick)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n type=\"table\" (onClick)=\"confirmCopy($event, element)\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-copy\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <span *ngIf=\"wappTableObject?.hasDeleteButton\">\r\n <w-button *ngIf=\"wappTableObject.disableDeleteProperty; else noDisableDelete\" \r\n type=\"table\" (onClick)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n <ng-template #noDisableDelete>\r\n <w-button *ngIf=\"!wappTableObject?.disableDelete && !wappTableObject.disableDeleteProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"confirmDelete($event, element)\" \r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"w-table-lazy-empty-message-padding\">\r\n <td [attr.colspan]=\"calculateColspan()\">{{wappTableObject.emptyMessage ? wappTableObject.emptyMessage : 'No matches.'}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"w-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"wappTableObject.hasPaginator\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject?.hasDeleteButton || wappTableObject?.hasEditButton || wappTableObject?.hasViewButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton || wappTableObject.hasCopyButton || wappTableObject.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\" \r\n icon=\"pi-eye\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [icon]=\"customButtonConfig?.icon!\" type=\"table\" [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n icon=\"pi-pencil\" type=\"table\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n icon=\"pi-copy\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasDeleteButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n icon=\"pi-trash\" type=\"table\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.w-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.w-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.w-table-selectable-row{cursor:pointer}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:8px;border-bottom-right-radius:8px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-top-left-radius:8px;border-bottom-left-radius:8px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:6px 8px 5px}::ng-deep .w-table-no-buttons .p-datatable .p-datatable-tbody>tr>td{padding:16px 8px 15px!important}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td:empty{padding-top:22px!important;padding-bottom:21px!important}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .darkBlue1.p-button.p-button-icon-only>.p-button-icon{color:#0020c7!important}::ng-deep .w-table-styles .darkBlue2.p-button.p-button-icon-only>.p-button-icon{color:#4765ff!important}::ng-deep .w-table-styles .darkBlue3.p-button.p-button-icon-only>.p-button-icon{color:#adbaff!important}::ng-deep .w-table-styles .purple1.p-button.p-button-icon-only>.p-button-icon{color:#7b00c7!important}::ng-deep .w-table-styles .purple2.p-button.p-button-icon-only>.p-button-icon{color:#b947ff!important}::ng-deep .w-table-styles .purple3.p-button.p-button-icon-only>.p-button-icon{color:#e0adff!important}::ng-deep .w-table-styles .pink1.p-button.p-button-icon-only>.p-button-icon{color:#c700b3!important}::ng-deep .w-table-styles .pink2.p-button.p-button-icon-only>.p-button-icon{color:#ff61ef!important}::ng-deep .w-table-styles .pink3.p-button.p-button-icon-only>.p-button-icon{color:#ffadf7!important}::ng-deep .w-table-styles .green1.p-button.p-button-icon-only>.p-button-icon{color:#87c700!important}::ng-deep .w-table-styles .green2.p-button.p-button-icon-only>.p-button-icon{color:#ccff61!important}::ng-deep .w-table-styles .green3.p-button.p-button-icon-only>.p-button-icon{color:#e5ffad!important}::ng-deep .w-table-styles .error1.p-button.p-button-icon-only>.p-button-icon{color:#fb7c7c!important}::ng-deep .w-table-styles .error2.p-button.p-button-icon-only>.p-button-icon{color:#f55!important}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.height-input{height:32px}.w-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.w-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.w-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-datatable .p-datatable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-datatable .p-datatable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .p-datatable .p-datatable-tbody>tr.w-table-lazy-empty-message-padding>td{padding:16px 12px 15px!important}::ng-deep .w-table-styles .p-disabled,.p-component:disabled{opacity:.3;box-shadow:none!important}.w-table-buttons{gap:12px}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i7.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i7.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i7.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i8.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i9.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "component", type: i10.WButtonComponent, selector: "w-button", inputs: ["type", "label", "size", "icon", "iconPos", "tooltipPosition", "tooltip", "disabled", "loading", "buttonClass"], outputs: ["onClick"] }, { kind: "component", type: i11.WBadgeComponent, selector: "w-badge", inputs: ["label", "color", "tooltip", "maxWidthOverflow"] }, { kind: "component", type: i12.WButtonWeekComponent, selector: "w-button-week", inputs: ["value", "translations", "defaultEsp"], outputs: ["onDayClick"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i13.WDatePipe, name: "wappDate" }] });
|
|
268
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableComponent, decorators: [{
|
|
269
269
|
type: Component,
|
|
270
270
|
args: [{ selector: 'w-table', providers: [ConfirmationService], template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableObject\" [class.table-container]=\"wappTableObject.tableContainer\">\r\n <p-table class=\"w-table-styles\" [ngClass]=\"{'w-table-no-buttons' : !wappTableObject.hasEditButton && !wappTableObject.hasDeleteButton && !wappTableObject.hasCopyButton && !wappTableObject.customButtonConfig}\"\r\n *ngIf=\"!loading; else loadingTable\" #table \r\n [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" \r\n [paginator]=\"wappTableObject.hasPaginator\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" \r\n [rows]=\"rowsPerPage\"\r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n [rowHover]=\"true\" [tableStyle]=\"{'min-width': wappTableObject.tableMinWidth!}\"\r\n (onPage)=\"pageChange($event)\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template pTemplate=\"caption\" *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch || wappTableObject.hasTotalPagingSelector\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"wappTableObject.hasCheckbox\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[0]) : 'text-center'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else sortableColumns\">\r\n <th *ngFor=\"let header of wappTableObject?.headers; index as i\"\r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] == tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n <ng-template #sortableColumns>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\" \r\n [class.image-header]=\"wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i] === tableColumnTypes.Image \"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[wappTableObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableObject.columnTypes[wappTableObject.hasCheckbox ? i+1 : i])\">\r\n {{wappTableObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton || wappTableObject.hasViewButton || wappTableObject.hasCopyButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element>\r\n <tr [ngClass]=\"wappTableObject.hasClickableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasClickableRow ? onElement(element) : ''\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! && wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\">\r\n <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <img *ngIf=\"readProperty(element, wappTableObject.columns[i])\" \r\n [src]=\"readProperty(element, wappTableObject.columns[i])\" \r\n class=\"element-image-width\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-badge [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"'info'\"></w-badge> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ColoredBadge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <div *ngFor=\"let badge of wappTableObject.coloredBadge; index as ind\">\r\n <w-badge *ngIf=\"badge.coloredBadgeProperty == readProperty(element, wappTableObject.columns[i])\"\r\n [label]=\"readProperty(element, wappTableObject.columns[i])\" [color]=\"badge.color\"></w-badge>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.columns[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.SecondaryCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-lazy-selectable-row' : ''\">\r\n <p-checkbox [(ngModel)]=\"element[wappTableObject.columns[i]]\" [binary]=\"true\" inputId=\"binary\" (ngModelChange)=\"onSecondaryCheckboxChanges(element)\"></p-checkbox>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.d }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.D }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.g }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.G }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.BuisinessDateTime\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n {{ readProperty(element, wappTableObject.columns[i]) | wappDate : wappDateFormat.Business }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Week\" \r\n [ngClass]=\"wappTableObject.columnAlign ? getTableColumnAlignClass(wappTableObject.columnAlign[i]) : 'text-center'\" \r\n (click)=\"wappTableObject.hasClickableRow ? viewElement(element) : ''\" [class]=\"wappTableObject.hasClickableRow ? 'w-table-selectable-row' : ''\">\r\n <w-button-week [value]=\"readProperty(element, wappTableObject.columns[i])\" [translations]=\"wappTableObject.weekButtonTranslations ? wappTableObject.weekButtonTranslations : []\" [defaultEsp]=\"wappTableObject.weekButtonDefaultEsp ?? false\"></w-button-week>\r\n </td>\r\n </ng-template>\r\n <td *ngIf=\"wappTableObject.hasCustomButton || wappTableObject?.hasEditButton || wappTableObject?.hasCopyButton || wappTableObject?.hasDeleteButton || wappTableObject?.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton && !wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableViewProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"viewElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableViewProperty)\" \r\n icon=\"pi-eye\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button *ngIf=\"!customButtonConfig?.disableProperty\"\r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\"\r\n type=\"table\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view' + getButtonCustomColorClass(customButtonConfig.color!) \">\r\n </w-button>\r\n <w-button *ngIf=\"customButtonConfig?.disableProperty\" \r\n type=\"table\" \r\n (onClick)=\"customElement({buttonId: customButtonConfig.buttonId, element: element})\" \r\n [disabled]=\"readProperty(element, customButtonConfig?.disableProperty!)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n [icon]=\"customButtonConfig?.icon!\"\r\n [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n type=\"table\" (onClick)=\"editElement(element)\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject.disableEditProperty\" \r\n type=\"table\" (onClick)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-pencil\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n type=\"table\" (onClick)=\"confirmCopy($event, element)\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-copy\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <span *ngIf=\"wappTableObject?.hasDeleteButton\">\r\n <w-button *ngIf=\"wappTableObject.disableDeleteProperty; else noDisableDelete\" \r\n type=\"table\" (onClick)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n <ng-template #noDisableDelete>\r\n <w-button *ngIf=\"!wappTableObject?.disableDelete && !wappTableObject.disableDeleteProperty\" \r\n type=\"table\" [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableObject.buttonTooltips?.position!\"\r\n (onClick)=\"confirmDelete($event, element)\" \r\n icon=\"pi-trash\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"w-table-lazy-empty-message-padding\">\r\n <td [attr.colspan]=\"calculateColspan()\">{{wappTableObject.emptyMessage ? wappTableObject.emptyMessage : 'No matches.'}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td colspan=\"8\">Loading elements.</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n \r\n <ng-template #loadingTable>\r\n <p-table class=\"w-table-styles\" [value]=\"tableSkeletons\" responsiveLayout=\"scroll\" [paginator]=\"wappTableObject.hasPaginator\" [rows]=\"rowsPerPage\" [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\" \r\n [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords : 'Showing ' + rowsPerPage + ' of ' + totalRecords\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter \r\n [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full height-input w-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-template #selectAllCheckbox><th></th></ng-template>\r\n <th *ngFor=\"let header of wappTableObject?.headers\">\r\n {{header}}\r\n </th>\r\n <th *ngIf=\"wappTableObject?.hasDeleteButton || wappTableObject?.hasEditButton || wappTableObject?.hasViewButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\">\r\n <tr height=\"70px\">\r\n <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton || wappTableObject.hasCopyButton || wappTableObject.hasViewButton\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <w-button *ngIf=\"wappTableObject?.hasViewButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.viewTooltip!\" \r\n icon=\"pi-eye\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <ng-template *ngIf=\"wappTableObject?.hasCustomButton\" ngFor let-customButtonConfig [ngForOf]=\"wappTableObject.customButtonConfig\" let-i=\"index\"> \r\n <w-button\r\n [tooltip]=\"wappTableObject.buttonTooltips?.customTooltip![i]\"\r\n [icon]=\"customButtonConfig?.icon!\" type=\"table\" [buttonClass]=\"'w-table-button-view ' + getButtonCustomColorClass(customButtonConfig.color!)\">\r\n </w-button>\r\n </ng-template>\r\n <w-button *ngIf=\"wappTableObject?.hasEditButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.editTooltip!\"\r\n icon=\"pi-pencil\" type=\"table\" buttonClass=\"w-table-button-edit\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.copyTooltip!\"\r\n icon=\"pi-copy\" type=\"table\" buttonClass=\"w-table-button-view\">\r\n </w-button>\r\n <w-button *ngIf=\"wappTableObject?.hasDeleteButton\" \r\n [tooltip]=\"wappTableObject.buttonTooltips?.deleteTooltip!\"\r\n icon=\"pi-trash\" type=\"table\" buttonClass=\"w-table-button-delete\">\r\n </w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.w-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.w-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.w-table-selectable-row{cursor:pointer}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-top-right-radius:8px;border-bottom-right-radius:8px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-top-left-radius:8px;border-bottom-left-radius:8px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:6px 8px 5px}::ng-deep .w-table-no-buttons .p-datatable .p-datatable-tbody>tr>td{padding:16px 8px 15px!important}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td:empty{padding-top:22px!important;padding-bottom:21px!important}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .darkBlue1.p-button.p-button-icon-only>.p-button-icon{color:#0020c7!important}::ng-deep .w-table-styles .darkBlue2.p-button.p-button-icon-only>.p-button-icon{color:#4765ff!important}::ng-deep .w-table-styles .darkBlue3.p-button.p-button-icon-only>.p-button-icon{color:#adbaff!important}::ng-deep .w-table-styles .purple1.p-button.p-button-icon-only>.p-button-icon{color:#7b00c7!important}::ng-deep .w-table-styles .purple2.p-button.p-button-icon-only>.p-button-icon{color:#b947ff!important}::ng-deep .w-table-styles .purple3.p-button.p-button-icon-only>.p-button-icon{color:#e0adff!important}::ng-deep .w-table-styles .pink1.p-button.p-button-icon-only>.p-button-icon{color:#c700b3!important}::ng-deep .w-table-styles .pink2.p-button.p-button-icon-only>.p-button-icon{color:#ff61ef!important}::ng-deep .w-table-styles .pink3.p-button.p-button-icon-only>.p-button-icon{color:#ffadf7!important}::ng-deep .w-table-styles .green1.p-button.p-button-icon-only>.p-button-icon{color:#87c700!important}::ng-deep .w-table-styles .green2.p-button.p-button-icon-only>.p-button-icon{color:#ccff61!important}::ng-deep .w-table-styles .green3.p-button.p-button-icon-only>.p-button-icon{color:#e5ffad!important}::ng-deep .w-table-styles .error1.p-button.p-button-icon-only>.p-button-icon{color:#fb7c7c!important}::ng-deep .w-table-styles .error2.p-button.p-button-icon-only>.p-button-icon{color:#f55!important}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.height-input{height:32px}.w-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.w-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.w-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-datatable .p-datatable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-datatable .p-datatable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .p-datatable .p-datatable-tbody>tr.w-table-lazy-empty-message-padding>td{padding:16px 12px 15px!important}::ng-deep .w-table-styles .p-disabled,.p-component:disabled{opacity:.3;box-shadow:none!important}.w-table-buttons{gap:12px}\n"] }]
|
|
271
271
|
}], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { elements: [{
|
|
272
272
|
type: Input,
|
|
273
273
|
args: ['elements']
|
|
274
|
+
}], selectedElements: [{
|
|
275
|
+
type: Input,
|
|
276
|
+
args: ['selectedElements']
|
|
274
277
|
}], rowsPerPage: [{
|
|
275
278
|
type: Input,
|
|
276
279
|
args: ['rowsPerPage']
|
|
@@ -317,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
317
320
|
type: ViewChild,
|
|
318
321
|
args: ['table']
|
|
319
322
|
}] } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZXMvdy10YWJsZS93LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlL3ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTeEosTUFBTSxPQUFPLGVBQWU7SUF3QzFCLFlBQ1UsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF4Q2xELHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUU3Qix3QkFBbUIsR0FBVyxRQUFRLENBQUE7UUFDdEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUUzQixtQkFBYyxHQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQVVsQyxtQkFBYyxHQUErQixtQkFBbUIsQ0FBQztRQUczQyxnQkFB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QUNFLFNBQVMsYUFHUixDQUFDLG1CQUFtQixDQUFDOzBHQXdCYixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ0ssV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhO2dCQUNGLE9BQU87c0JBQXhCLEtBQUs7dUJBQUMsU0FBUztnQkFDVSxlQUFlO3NCQUF4QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFRyxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFDTSxtQkFBbUI7c0JBQWpELE1BQU07dUJBQUMscUJBQXFCO2dCQUNFLG1CQUFtQjtzQkFBakQsTUFBTTt1QkFBQyxxQkFBcUI7Z0JBQ0UsbUJBQW1CO3NCQUFqRCxNQUFNO3VCQUFDLHFCQUFxQjtnQkFDSSxxQkFBcUI7c0JBQXJELE1BQU07dUJBQUMsdUJBQXVCO2dCQUNFLHFCQUFxQjtzQkFBckQsTUFBTTt1QkFBQyx1QkFBdUI7Z0JBQ0Qsa0JBQWtCO3NCQUEvQyxNQUFNO3VCQUFDLG9CQUFvQjtnQkFDSixZQUFZO3NCQUFuQyxNQUFNO3VCQUFDLGNBQWM7Z0JBQ2Msd0JBQXdCO3NCQUEzRCxNQUFNO3VCQUFDLDBCQUEwQjtnQkFDRyx5QkFBeUI7c0JBQTdELE1BQU07dUJBQUMsMkJBQTJCO2dCQUVkLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDQyxTQUFTO3NCQUE1QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBXYXBwVGFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3dhcHAtdGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21Db2xvciwgVGFibGVDb2x1bW5GaWx0ZXJUeXBlcywgVGFibGVDb2x1bW5UeXBlcywgV0RhdGVQaXBlRm9ybWF0VHlwZSwgV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZW51bXMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2VdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgV1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHNlbGVjdGVkRWxlbWVudHM6IGFueVtdID0gW107XHJcbiAgdHJhbnNsYXRpb25zOiBhbnk7XHJcbiAgdHJhbnNsYXRlT2JqZWN0TmFtZTogc3RyaW5nID0gXCJvYmplY3RcIlxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhYmxlTWluV2lkdGg6IG51bWJlciA9IDcwO1xyXG5cclxuICB0YWJsZVNrZWxldG9uczogYW55ID0gW3sgbmFtZTogJycgfSwgeyBuYW1lOiAnJyB9LCB7IG5hbWU6ICcnIH0sIHsgbmFtZTogJycgfV07XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcclxuXHJcbiAgc2V0IHRvdGFsUmVjb3Jkcyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl90b3RhbFJlY29yZHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0b3RhbFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcbiAgd2FwcERhdGVGb3JtYXQ6IHR5cGVvZiBXRGF0ZVBpcGVGb3JtYXRUeXBlID0gV0RhdGVQaXBlRm9ybWF0VHlwZTtcclxuXHJcbiAgQElucHV0KCdlbGVtZW50cycpIGVsZW1lbnRzITogYW55W107XHJcbiAgQElucHV0KCdyb3dzUGVyUGFnZScpIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgnbG9hZGluZycpIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgnd2FwcFRhYmxlT2JqZWN0Jykgd2FwcFRhYmxlT2JqZWN0ITogV2FwcFRhYmxlO1xyXG5cclxuICBAT3V0cHV0KCdvbkVsZW1lbnRTZWxlY3QnKSBvbkVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvblZpZXdFbGVtZW50U2VsZWN0Jykgb25WaWV3RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uQ29weUVsZW1lbnRTZWxlY3QnKSBvbkNvcHlFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25FZGl0RWxlbWVudFNlbGVjdCcpIG9uRWRpdEVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkN1c3RvbUVsZW1lbnRTZWxlY3QnKSBvbkN1c3RvbUVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkRlbGV0ZUVsZW1lbnRTZWxlY3QnKSBvbkRlbGV0ZUVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoJ29uTmV3RWxlbWVudFNlbGVjdCcpIG9uTmV3RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCdvblBhZ2VDaGFuZ2UnKSBvblBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvblNlbGVjdGVkRWxlbWVudHNDaGFuZ2UnKSBvblNlbGVjdGVkRWxlbWVudHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvblNlY29uZGFyeUNoZWNrYm94Q2hhbmdlJykgb25TZWNvbmRhcnlDaGVja2JveENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgZGF0YVRhYmxlITogVGFibGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10gJiYgY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10/LmN1cnJlbnRWYWx1ZS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLm9uTmV3RWxlbWVudFNlbGVjdC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25FbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkVsZW1lbnRTZWxlY3QuZW1pdChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHZpZXdFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblZpZXdFbGVtZW50U2VsZWN0LmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBlZGl0RWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25FZGl0RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tRWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25DdXN0b21FbGVtZW50U2VsZWN0LmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICByZWFkUHJvcGVydHkob2JqOiBhbnksIHByb3A6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBfaW5kZXggPSBwcm9wLmluZGV4T2YoJy4nKVxyXG4gICAgaWYgKF9pbmRleCA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlYWRQcm9wZXJ0eShvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpbcHJvcF07XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybU11bHRpcGxlRGVsZXRlTGFiZWwsXHJcbiAgICAgIGljb246IFwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGVcIixcclxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbmZpcm1EZWxldGVCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZEVsZW1lbnRzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0ZWRFbGVtZW50cygpIHtcclxuICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEVsZW1lbnRzKVxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlKGV2ZW50OiBFdmVudCwgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtU2luZ2xlRGVsZXRlTGFiZWwsXHJcbiAgICAgIGljb246IFwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGVcIixcclxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbmZpcm1EZWxldGVCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVTaW5nbGVFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNpbmdsZUVsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uRGVsZXRlRWxlbWVudFNlbGVjdC5lbWl0KFtlbGVtZW50XSlcclxuICB9XHJcblxyXG4gIGNvcHlFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkNvcHlFbGVtZW50U2VsZWN0LmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtQ29weShldmVudDogRXZlbnQsIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybUNvcHlCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3B5RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSh2YWx1ZSA9IFtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IHZhbHVlLmxlbmd0aCA9PT0gdGhpcy5lbGVtZW50cy5sZW5ndGg7XHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSB2YWx1ZTtcclxuICAgIHRoaXMub25TZWxlY3RlZEVsZW1lbnRzQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEVsZW1lbnRzKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWxsQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5jaGVja2VkO1xyXG5cclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMud2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveCA/IHRoaXMuZ2V0U2VsZWN0YWJsZUVsZW1lbnRzKHRoaXMuZWxlbWVudHMpIDogdGhpcy5lbGVtZW50cztcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25TZWxlY3RlZEVsZW1lbnRzQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEVsZW1lbnRzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGFibGVFbGVtZW50cyhhbGxFbGVtZW50czogYW55W10pIHtcclxuICAgIHJldHVybiBhbGxFbGVtZW50cy5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT4gIXRoaXMucmVhZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMud2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveCEpKTtcclxuICB9XHJcblxyXG4gIG9uU2Vjb25kYXJ5Q2hlY2tib3hDaGFuZ2VzKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblNlY29uZGFyeUNoZWNrYm94Q2hhbmdlLmVtaXQoZWxlbWVudClcclxuICB9XHJcblxyXG4gIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcih0YWJsZTogVGFibGUpIHtcclxuICAgIHRhYmxlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhYmxlQ29sdW1uRmlsdGVyVHlwZXMoKTogdHlwZW9mIFRhYmxlQ29sdW1uRmlsdGVyVHlwZXMge1xyXG4gICAgcmV0dXJuIFRhYmxlQ29sdW1uRmlsdGVyVHlwZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhYmxlQ29sdW1uVHlwZXMoKTogdHlwZW9mIFRhYmxlQ29sdW1uVHlwZXMge1xyXG4gICAgcmV0dXJuIFRhYmxlQ29sdW1uVHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXRCb29sZWFuQ29sdW1uQ2xhc3MoaW5kZXg6IG51bWJlciwgdmFsdWVQcm9wZXJ0eTogYm9vbGVhbikge1xyXG4gICAgY29uc3QgYm9vbGVhbkljb25DbGFzc2VzID0gW107XHJcblxyXG4gICAgaWYgKHZhbHVlUHJvcGVydHkgPT0gdHJ1ZSkge1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbiA/PyAnJyk7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZVByb3BlcnR5ID09IGZhbHNlKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLmZhbHNlSWNvbiA/PyAnJyk7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLmZhbHNlSWNvbkNvbG9yID8/ICcnKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWVQcm9wZXJ0eSA9PSBudWxsKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLm51bGxJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0ubnVsbEljb25Db2xvciA/PyAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGJvb2xlYW5JY29uQ2xhc3NlcztcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuZGF0YVRhYmxlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3MoYWxpZ25tZW50OiBudW1iZXIpIHtcclxuICAgIGlmIChhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5SaWdodCkgcmV0dXJuICd0ZXh0LXJpZ2h0JztcclxuICAgIGlmIChhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5MZWZ0KSByZXR1cm4gJ3RleHQtbGVmdCc7XHJcbiAgICBpZiAoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuQ2VudGVyKSByZXR1cm4gJ3RleHQtY2VudGVyJztcclxuICAgIHJldHVybiAndGV4dC1sZWZ0J1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzRGVmYXVsdEJ5Q29sdW1uVHlwZShjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGVzKSB7XHJcbiAgICBpZiAoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLlRleHQpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmIChjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuQ3VycmVuY3kpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmIChjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuRGF0ZSkgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgaWYgKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5CYWRnZSkgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICBpZiAoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLkJvb2xlYW4pIHJldHVybiAndGV4dC1jZW50ZXInO1xyXG4gICAgaWYgKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5JbWFnZSkgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICBpZiAoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLk51bWJlcikgcmV0dXJuICd0ZXh0LXJpZ2h0JztcclxuICAgIHJldHVybiAndGV4dC1sZWZ0J1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlQ29sc3BhbigpIHtcclxuICAgIGxldCBjb2xzcGFuID0gdGhpcy53YXBwVGFibGVPYmplY3QuaGVhZGVycy5sZW5ndGg7XHJcbiAgICB0aGlzLndhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveCA/XHJcbiAgICAgIGNvbHNwYW4gKz0gMSA6ICcnO1xyXG4gICAgdGhpcy5oYXNBY3Rpb25CdXR0b25zKCkgP1xyXG4gICAgICBjb2xzcGFuICs9IDEgOiAnJztcclxuICAgIHJldHVybiBjb2xzcGFuO1xyXG4gIH1cclxuXHJcbiAgaGFzQWN0aW9uQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLndhcHBUYWJsZU9iamVjdC5oYXNDb3B5QnV0dG9uIHx8XHJcbiAgICAgIHRoaXMud2FwcFRhYmxlT2JqZWN0Lmhhc0VkaXRCdXR0b24gfHxcclxuICAgICAgdGhpcy53YXBwVGFibGVPYmplY3QuaGFzVmlld0J1dHRvbiB8fFxyXG4gICAgICB0aGlzLndhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b24gfHxcclxuICAgICAgdGhpcy53YXBwVGFibGVPYmplY3QuaGFzQ3VzdG9tQnV0dG9uID9cclxuICAgICAgdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcGFnZUNoYW5nZShlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25DdXN0b21Db2xvckNsYXNzKGN1c3RvbUNvbG9yOiBDdXN0b21Db2xvcikge1xyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IuZGFya0JsdWUxKSB7IHJldHVybiAnZGFya0JsdWUxJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5kYXJrQmx1ZTIpIHsgcmV0dXJuICdkYXJrQmx1ZTInIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLmRhcmtCbHVlMykgeyByZXR1cm4gJ2RhcmtCbHVlMycgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IucHVycGxlMSkgeyByZXR1cm4gJ3B1cnBsZTEnIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLnB1cnBsZTIpIHsgcmV0dXJuICdwdXJwbGUyJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5wdXJwbGUzKSB7IHJldHVybiAncHVycGxlMycgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IucGluazEpIHsgcmV0dXJuICdwaW5rMScgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IucGluazIpIHsgcmV0dXJuICdwaW5rMicgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IucGluazMpIHsgcmV0dXJuICdwaW5rMycgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IuZ3JlZW4xKSB7IHJldHVybiAnZ3JlZW4xJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5ncmVlbjIpIHsgcmV0dXJuICdncmVlbjInIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLmdyZWVuMykgeyByZXR1cm4gJ2dyZWVuMycgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IuZXJyb3IxKSB7IHJldHVybiAnZXJyb3IxJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5lcnJvcjIpIHsgcmV0dXJuICdlcnJvcjInIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmZpbHRlci1wYW5lbFwiPjwvbmctY29udGVudD5cclxuPGRpdiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdFwiIFtjbGFzcy50YWJsZS1jb250YWluZXJdPVwid2FwcFRhYmxlT2JqZWN0LnRhYmxlQ29udGFpbmVyXCI+XHJcbiAgICA8cC10YWJsZSBjbGFzcz1cInctdGFibGUtc3R5bGVzXCIgW25nQ2xhc3NdPVwieyd3LXRhYmxlLW5vLWJ1dHRvbnMnIDogIXdhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uICYmICF3YXBwVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uICYmICF3YXBwVGFibGVPYmplY3QuaGFzQ29weUJ1dHRvbiAmJiAhd2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZ31cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIGxvYWRpbmdUYWJsZVwiICN0YWJsZSBcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW1lbnRzXCIgZGF0YUtleT1cInt7d2FwcFRhYmxlT2JqZWN0LmlkZW50aWZpY2F0b3J9fVwiIFxyXG4gICAgICAgICAgICBbcGFnaW5hdG9yXT1cIndhcHBUYWJsZU9iamVjdC5oYXNQYWdpbmF0b3JcIlxyXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlbGVjdGVkRWxlbWVudHNcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0QWxsXT1cInNlbGVjdEFsbFwiIChzZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgIFtyb3dzXT1cInJvd3NQZXJQYWdlXCJcclxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwid2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSArICcgJyArICByb3dzUGVyUGFnZSArICcgZGUgJyArIHRvdGFsUmVjb3JkcyEgOiAnU2hvd2luZyAnICsgcm93c1BlclBhZ2UgKyAnIG9mICcgKyB0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJ3YXBwVGFibGVPYmplY3QuZ2xvYmFsRmlsdGVyRmllbGRzIVwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxyXG4gICAgICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogd2FwcFRhYmxlT2JqZWN0LnRhYmxlTWluV2lkdGghfVwiXHJcbiAgICAgICAgICAgIChvblBhZ2UpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDbGVhckJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3QuaGFzR2xvYmFsU2VhcmNoIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNUb3RhbFBhZ2luZ1NlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzVG90YWxQYWdpbmdTZWxlY3RvclwiIGNsYXNzPVwic2hvd2luZy1wZXItcGFnZVwiPiB7e3dhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzVG90YWxQYWdpbmdTZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGF5b3V0PVwiaG9yaXpvbnRhbFwiIGlucHV0SWQ9XCJob3Jpem9udGFsXCIgc3Bpbm5lck1vZGU9XCJob3Jpem9udGFsXCIgW3N0ZXBdPVwiMVwiIFttaW5dPVwiMVwiIFttYXhdPVwidG90YWxSZWNvcmRzIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzR2xvYmFsU2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAjZmlsdGVyIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcih0YWJsZSwgJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwid2FwcFRhYmxlT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyXCIgY2xhc3M9XCJ3LWZ1bGwgaGVpZ2h0LWlucHV0IHctaW5wdXRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnblswXSkgOiAndGV4dC1jZW50ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdC5oYXNTb3J0YWJsZUNvbHVtbnM7IGVsc2Ugc29ydGFibGVDb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHdhcHBUYWJsZU9iamVjdD8uaGVhZGVyczsgaW5kZXggYXMgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaW1hZ2UtaGVhZGVyXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlc1t3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSA9PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW3dhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveCA/IGkrMSA6IGldKSA6IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzc0RlZmF1bHRCeUNvbHVtblR5cGUod2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzW3dhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveCA/IGkrMSA6IGldKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2hlYWRlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzb3J0YWJsZUNvbHVtbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmlsdGVyVHlwZSBbbmdGb3JPZl09XCJ3YXBwVGFibGVPYmplY3QuaGVhZGVyc1wiIGxldC1pPVwiaW5kZXhcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggW3BTb3J0YWJsZUNvbHVtbl09XCJ3YXBwVGFibGVPYmplY3Quc29ydGFibGVOYW1lc1tpXVwiICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaW1hZ2UtaGVhZGVyXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlc1t3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSA9PT0gdGFibGVDb2x1bW5UeXBlcy5JbWFnZSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25bd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94ID8gaSsxIDogaV0pIDogZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzRGVmYXVsdEJ5Q29sdW1uVHlwZSh3YXBwVGFibGVPYmplY3QuY29sdW1uVHlwZXNbd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94ID8gaSsxIDogaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7d2FwcFRhYmxlT2JqZWN0LmhlYWRlcnNbaV19fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LnNvcnRhYmxlTmFtZXNbaV0gIT0gbnVsbFwiIFtmaWVsZF09XCJ3YXBwVGFibGVPYmplY3Quc29ydGFibGVOYW1lc1tpXVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNWaWV3QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNDb3B5QnV0dG9uXCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbGVtZW50PlxyXG4gICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICdwLXNlbGVjdGFibGUtcm93JyA6ICcnXCIgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyBvbkVsZW1lbnQoZWxlbWVudCkgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2x1bW5UeXBlIFtuZ0Zvck9mXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlcyFcIiBsZXQtaT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzPy5DaGVja2JveCEgJiYgIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveFwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRocyFbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5kaXNhYmxlQ2hlY2tib3g7IGVsc2UgYWN0aXZlQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cImVsZW1lbnRcIiBbZGlzYWJsZWRdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5kaXNhYmxlQ2hlY2tib3gpXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGl2ZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiZWxlbWVudFwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxlbWVudC1pbWFnZS13aWR0aFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5UZXh0XCIgIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLk51bWJlclwiICBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1yaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQ3VycmVuY3lcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1yaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIHwgY3VycmVuY3kgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5CYWRnZVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1iYWRnZSBbbGFiZWxdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKVwiIFtjb2xvcl09XCInaW5mbydcIj48L3ctYmFkZ2U+ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQ29sb3JlZEJhZGdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2Ygd2FwcFRhYmxlT2JqZWN0LmNvbG9yZWRCYWRnZTsgaW5kZXggYXMgaW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1iYWRnZSAqbmdJZj1cImJhZGdlLmNvbG9yZWRCYWRnZVByb3BlcnR5ID09IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pXCIgW2NvbG9yXT1cImJhZGdlLmNvbG9yXCI+PC93LWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5Cb29sZWFuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGlcIiBbbmdDbGFzc109XCJnZXRCb29sZWFuQ29sdW1uQ2xhc3MoaSwgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuU2Vjb25kYXJ5Q2hlY2tib3hcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLWxhenktc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJlbGVtZW50W3dhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldXVwiIFtiaW5hcnldPVwidHJ1ZVwiIGlucHV0SWQ9XCJiaW5hcnlcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlY29uZGFyeUNoZWNrYm94Q2hhbmdlcyhlbGVtZW50KVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5EYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5TaG9ydERhdGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LmQgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5Mb25nRGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuRCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkdlbmVyYWxEYXRlVGltZVNob3J0VGltZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuZyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkdlbmVyYWxEYXRlVGltZUxvbmdUaW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5HIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQnVpc2luZXNzRGF0ZVRpbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LkJ1c2luZXNzIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuV2Vla1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24td2VlayBbdmFsdWVdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKVwiIFt0cmFuc2xhdGlvbnNdPVwid2FwcFRhYmxlT2JqZWN0LndlZWtCdXR0b25UcmFuc2xhdGlvbnMgPyB3YXBwVGFibGVPYmplY3Qud2Vla0J1dHRvblRyYW5zbGF0aW9ucyA6IFtdXCIgIFtkZWZhdWx0RXNwXT1cIndhcHBUYWJsZU9iamVjdC53ZWVrQnV0dG9uRGVmYXVsdEVzcCA/PyBmYWxzZVwiPjwvdy1idXR0b24td2Vlaz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNDdXN0b21CdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Py5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdD8uaGFzQ29weUJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3Q/Lmhhc1ZpZXdCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy10YWJsZS1idXR0b25zIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc1ZpZXdCdXR0b24gJiYgIXdhcHBUYWJsZU9iamVjdC5kaXNhYmxlVmlld1Byb3BlcnR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy52aWV3VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLWV5ZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuZGlzYWJsZVZpZXdQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8udmlld1Rvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJ2aWV3RWxlbWVudChlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVWaWV3UHJvcGVydHkpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLWV5ZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0N1c3RvbUJ1dHRvblwiIG5nRm9yIGxldC1jdXN0b21CdXR0b25Db25maWcgW25nRm9yT2ZdPVwid2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZ1wiIGxldC1pPVwiaW5kZXhcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCIhY3VzdG9tQnV0dG9uQ29uZmlnPy5kaXNhYmxlUHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjdXN0b21FbGVtZW50KHtidXR0b25JZDogY3VzdG9tQnV0dG9uQ29uZmlnLmJ1dHRvbklkLCBlbGVtZW50OiBlbGVtZW50fSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5jdXN0b21Ub29sdGlwIVtpXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjdXN0b21CdXR0b25Db25maWc/Lmljb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbkNsYXNzXT1cIid3LXRhYmxlLWJ1dHRvbi12aWV3JyArIGdldEJ1dHRvbkN1c3RvbUNvbG9yQ2xhc3MoY3VzdG9tQnV0dG9uQ29uZmlnLmNvbG9yISkgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwiY3VzdG9tQnV0dG9uQ29uZmlnPy5kaXNhYmxlUHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImN1c3RvbUVsZW1lbnQoe2J1dHRvbklkOiBjdXN0b21CdXR0b25Db25maWcuYnV0dG9uSWQsIGVsZW1lbnQ6IGVsZW1lbnR9KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIGN1c3RvbUJ1dHRvbkNvbmZpZz8uZGlzYWJsZVByb3BlcnR5ISlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmN1c3RvbVRvb2x0aXAhW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImN1c3RvbUJ1dHRvbkNvbmZpZz8uaWNvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiJ3ctdGFibGUtYnV0dG9uLXZpZXcgJyArIGdldEJ1dHRvbkN1c3RvbUNvbG9yQ2xhc3MoY3VzdG9tQnV0dG9uQ29uZmlnLmNvbG9yISlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzRWRpdEJ1dHRvbiAmJiAhd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmVkaXRUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgKG9uQ2xpY2spPVwiZWRpdEVsZW1lbnQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaS1wZW5jaWxcIiBidXR0b25DbGFzcz1cInctdGFibGUtYnV0dG9uLWVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiAob25DbGljayk9XCJlZGl0RWxlbWVudChlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmVkaXRUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXBlbmNpbFwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NvcHlCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiAob25DbGljayk9XCJjb25maXJtQ29weSgkZXZlbnQsIGVsZW1lbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5jb3B5VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaS1jb3B5XCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNEZWxldGVCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5kaXNhYmxlRGVsZXRlUHJvcGVydHk7IGVsc2Ugbm9EaXNhYmxlRGVsZXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiIChvbkNsaWNrKT1cImNvbmZpcm1EZWxldGUoJGV2ZW50LCBlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVEZWxldGVQcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmRlbGV0ZVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaS10cmFzaFwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0Rpc2FibGVEZWxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdD8uZGlzYWJsZURlbGV0ZSAmJiAhd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVEZWxldGVQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5kZWxldGVUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjb25maXJtRGVsZXRlKCRldmVudCwgZWxlbWVudClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaS10cmFzaFwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInctdGFibGUtbGF6eS1lbXB0eS1tZXNzYWdlLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNhbGN1bGF0ZUNvbHNwYW4oKVwiPnt7d2FwcFRhYmxlT2JqZWN0LmVtcHR5TWVzc2FnZSA/IHdhcHBUYWJsZU9iamVjdC5lbXB0eU1lc3NhZ2UgOiAnTm8gbWF0Y2hlcy4nfX08L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxvYWRpbmdib2R5XCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOFwiPkxvYWRpbmcgZWxlbWVudHMuPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdUYWJsZT5cclxuICAgIDxwLXRhYmxlIGNsYXNzPVwidy10YWJsZS1zdHlsZXNcIiBbdmFsdWVdPVwidGFibGVTa2VsZXRvbnNcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3BhZ2luYXRvcl09XCJ3YXBwVGFibGVPYmplY3QuaGFzUGFnaW5hdG9yXCIgW3Jvd3NdPVwicm93c1BlclBhZ2VcIiBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSA/IHdhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDbGVhckJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3QuaGFzR2xvYmFsU2VhcmNoXCIgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXBhZ2luYXRvciBwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc1RvdGFsUGFnaW5nU2VsZWN0b3JcIiBjbGFzcz1cInNob3dpbmctcGVyLXBhZ2VcIj4ge3t3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc1RvdGFsUGFnaW5nU2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBzaG93aW5nLXBlci1wYWdlXCIgW3NpemVdPVwiMVwiIFsobmdNb2RlbCldPVwicm93c1BlclBhZ2VcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIiBpbnB1dElkPVwiaG9yaXpvbnRhbFwiIHNwaW5uZXJNb2RlPVwiaG9yaXpvbnRhbFwiIFtzdGVwXT1cIjFcIiBbbWluXT1cIjFcIiBbbWF4XT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzR2xvYmFsU2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAjZmlsdGVyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwid2FwcFRhYmxlT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyXCIgY2xhc3M9XCJ3LWZ1bGwgaGVpZ2h0LWlucHV0IHctaW5wdXRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIiF3YXBwVGFibGVPYmplY3QuaGFzQ29sdW1uRmlsdGVycyAmJiB3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3g7IGVsc2Ugc2VsZWN0QWxsQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0QWxsQ2hlY2tib3g+PHRoPjwvdGg+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2Ygd2FwcFRhYmxlT2JqZWN0Py5oZWFkZXJzXCI+XHJcbiAgICAgICAgICAgIHt7aGVhZGVyfX1cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNEZWxldGVCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Py5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdD8uaGFzVmlld0J1dHRvblwiPjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICAgICAgICAgIDx0ciBoZWlnaHQ9XCI3MHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzXCIgW3N0eWxlLndpZHRoXT1cIml0ZW0gPT0gdGFibGVDb2x1bW5UeXBlcy5DaGVja2JveCA/ICc4cmVtJyA6ICcnXCIgPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCAqbmdJZj1cIml0ZW0gPT0gdGFibGVDb2x1bW5UeXBlcy5DaGVja2JveCAmJiAgd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8cC1za2VsZXRvbiAqbmdJZj1cIml0ZW0gIT0gdGFibGVDb2x1bW5UeXBlcy5DaGVja2JveFwiPjwvcC1za2VsZXRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzRWRpdEJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNDb3B5QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNWaWV3QnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy10YWJsZS1idXR0b25zIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzVmlld0J1dHRvblwiICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy52aWV3VG9vbHRpcCFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLWV5ZVwiIHR5cGU9XCJ0YWJsZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDdXN0b21CdXR0b25cIiBuZ0ZvciBsZXQtY3VzdG9tQnV0dG9uQ29uZmlnIFtuZ0Zvck9mXT1cIndhcHBUYWJsZU9iamVjdC5jdXN0b21CdXR0b25Db25maWdcIiBsZXQtaT1cImluZGV4XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uY3VzdG9tVG9vbHRpcCFbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY3VzdG9tQnV0dG9uQ29uZmlnPy5pY29uIVwiIHR5cGU9XCJ0YWJsZVwiIFtidXR0b25DbGFzc109XCIndy10YWJsZS1idXR0b24tdmlldyAnICsgZ2V0QnV0dG9uQ3VzdG9tQ29sb3JDbGFzcyhjdXN0b21CdXR0b25Db25maWcuY29sb3IhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNFZGl0QnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uZWRpdFRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXBlbmNpbFwiIHR5cGU9XCJ0YWJsZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNDb3B5QnV0dG9uXCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmNvcHlUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaS1jb3B5XCIgdHlwZT1cInRhYmxlXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmRlbGV0ZVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXRyYXNoXCIgdHlwZT1cInRhYmxlXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1kZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdGFibGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+Il19
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZXMvdy10YWJsZS93LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlL3ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTeEosTUFBTSxPQUFPLGVBQWU7SUF3QzFCLFlBQ1UsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF2Q2xELHdCQUFtQixHQUFXLFFBQVEsQ0FBQTtRQUN0QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBVWxDLG1CQUFjLEdBQStCLG1CQUFtQixDQUFDO1FBR3RDLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUNsQyxnQkFB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QUNFLFNBQVMsYUFHUixDQUFDLG1CQUFtQixDQUFDOzBHQXVCYixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1UsZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDSCxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUNVLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUVHLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCO2dCQUNNLG1CQUFtQjtzQkFBakQsTUFBTTt1QkFBQyxxQkFBcUI7Z0JBQ0UsbUJBQW1CO3NCQUFqRCxNQUFNO3VCQUFDLHFCQUFxQjtnQkFDRSxtQkFBbUI7c0JBQWpELE1BQU07dUJBQUMscUJBQXFCO2dCQUNJLHFCQUFxQjtzQkFBckQsTUFBTTt1QkFBQyx1QkFBdUI7Z0JBQ0UscUJBQXFCO3NCQUFyRCxNQUFNO3VCQUFDLHVCQUF1QjtnQkFDRCxrQkFBa0I7c0JBQS9DLE1BQU07dUJBQUMsb0JBQW9CO2dCQUNKLFlBQVk7c0JBQW5DLE1BQU07dUJBQUMsY0FBYztnQkFDYyx3QkFBd0I7c0JBQTNELE1BQU07dUJBQUMsMEJBQTBCO2dCQUNHLHlCQUF5QjtzQkFBN0QsTUFBTTt1QkFBQywyQkFBMkI7Z0JBRWQsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLFNBQVM7c0JBQTVCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IFdhcHBUYWJsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvd2FwcC10YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEN1c3RvbUNvbG9yLCBUYWJsZUNvbHVtbkZpbHRlclR5cGVzLCBUYWJsZUNvbHVtblR5cGVzLCBXRGF0ZVBpcGVGb3JtYXRUeXBlLCBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgdHJhbnNsYXRpb25zOiBhbnk7XHJcbiAgdHJhbnNsYXRlT2JqZWN0TmFtZTogc3RyaW5nID0gXCJvYmplY3RcIlxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhYmxlTWluV2lkdGg6IG51bWJlciA9IDcwO1xyXG5cclxuICB0YWJsZVNrZWxldG9uczogYW55ID0gW3sgbmFtZTogJycgfSwgeyBuYW1lOiAnJyB9LCB7IG5hbWU6ICcnIH0sIHsgbmFtZTogJycgfV07XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcclxuXHJcbiAgc2V0IHRvdGFsUmVjb3Jkcyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl90b3RhbFJlY29yZHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0b3RhbFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcbiAgd2FwcERhdGVGb3JtYXQ6IHR5cGVvZiBXRGF0ZVBpcGVGb3JtYXRUeXBlID0gV0RhdGVQaXBlRm9ybWF0VHlwZTtcclxuXHJcbiAgQElucHV0KCdlbGVtZW50cycpIGVsZW1lbnRzITogYW55W107XHJcbiAgQElucHV0KCdzZWxlY3RlZEVsZW1lbnRzJykgc2VsZWN0ZWRFbGVtZW50czogYW55W10gPSBbXTtcclxuICBASW5wdXQoJ3Jvd3NQZXJQYWdlJykgcm93c1BlclBhZ2U6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCdsb2FkaW5nJykgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCd3YXBwVGFibGVPYmplY3QnKSB3YXBwVGFibGVPYmplY3QhOiBXYXBwVGFibGU7XHJcblxyXG4gIEBPdXRwdXQoJ29uRWxlbWVudFNlbGVjdCcpIG9uRWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uVmlld0VsZW1lbnRTZWxlY3QnKSBvblZpZXdFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25Db3B5RWxlbWVudFNlbGVjdCcpIG9uQ29weUVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkVkaXRFbGVtZW50U2VsZWN0Jykgb25FZGl0RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uQ3VzdG9tRWxlbWVudFNlbGVjdCcpIG9uQ3VzdG9tRWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uRGVsZXRlRWxlbWVudFNlbGVjdCcpIG9uRGVsZXRlRWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgnb25OZXdFbGVtZW50U2VsZWN0Jykgb25OZXdFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoJ29uUGFnZUNoYW5nZScpIG9uUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uU2VsZWN0ZWRFbGVtZW50c0NoYW5nZScpIG9uU2VsZWN0ZWRFbGVtZW50c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uU2Vjb25kYXJ5Q2hlY2tib3hDaGFuZ2UnKSBvblNlY29uZGFyeUNoZWNrYm94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSBkYXRhVGFibGUhOiBUYWJsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXM/LlsnZWxlbWVudHMnXSAmJiBjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10/LmN1cnJlbnRWYWx1ZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpIHtcclxuICAgIHRoaXMub25OZXdFbGVtZW50U2VsZWN0LmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkVsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgdmlld0VsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uVmlld0VsZW1lbnRTZWxlY3QuZW1pdChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGVkaXRFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkVkaXRFbGVtZW50U2VsZWN0LmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21FbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkN1c3RvbUVsZW1lbnRTZWxlY3QuZW1pdChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHJlYWRQcm9wZXJ0eShvYmo6IGFueSwgcHJvcDogc3RyaW5nKTogYW55IHtcclxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIF9pbmRleCA9IHByb3AuaW5kZXhPZignLicpXHJcbiAgICBpZiAoX2luZGV4ID4gLTEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVhZFByb3BlcnR5KG9ialtwcm9wLnN1YnN0cmluZygwLCBfaW5kZXgpXSwgcHJvcC5zdWJzdHIoX2luZGV4ICsgMSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9ialtwcm9wXTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGVTZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtTXVsdGlwbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkRWxlbWVudHMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTZWxlY3RlZEVsZW1lbnRzKCkge1xyXG4gICAgdGhpcy5vbkRlbGV0ZUVsZW1lbnRTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGUoZXZlbnQ6IEV2ZW50LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbmZpcm1TaW5nbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVPYmplY3QuY29uZmlybURlbGV0ZUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVNpbmdsZUVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2luZ2xlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQoW2VsZW1lbnRdKVxyXG4gIH1cclxuXHJcbiAgY29weUVsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ29weUVsZW1lbnRTZWxlY3QuZW1pdChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1Db3B5KGV2ZW50OiBFdmVudCwgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtQ29weUxhYmVsLFxyXG4gICAgICBpY29uOiBcInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIsXHJcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLndhcHBUYWJsZU9iamVjdC5jb25maXJtQ29weUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvcHlFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHZhbHVlID0gW10pIHtcclxuICAgIHRoaXMuc2VsZWN0QWxsID0gdmFsdWUubGVuZ3RoID09PSB0aGlzLmVsZW1lbnRzLmxlbmd0aDtcclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRWxlbWVudHNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmNoZWNrZWQ7XHJcblxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy53YXBwVGFibGVPYmplY3QuZGlzYWJsZUNoZWNrYm94ID8gdGhpcy5nZXRTZWxlY3RhYmxlRWxlbWVudHModGhpcy5lbGVtZW50cykgOiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vblNlbGVjdGVkRWxlbWVudHNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRWxlbWVudHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0YWJsZUVsZW1lbnRzKGFsbEVsZW1lbnRzOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFsbEVsZW1lbnRzLmZpbHRlcigoZWxlbWVudDogYW55KSA9PiAhdGhpcy5yZWFkUHJvcGVydHkoZWxlbWVudCwgdGhpcy53YXBwVGFibGVPYmplY3QuZGlzYWJsZUNoZWNrYm94ISkpO1xyXG4gIH1cclxuXHJcbiAgb25TZWNvbmRhcnlDaGVja2JveENoYW5nZXMoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uU2Vjb25kYXJ5Q2hlY2tib3hDaGFuZ2UuZW1pdChlbGVtZW50KVxyXG4gIH1cclxuXHJcbiAgb25HbG9iYWxGaWx0ZXIodGFibGU6IFRhYmxlLCBldmVudDogRXZlbnQpIHtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyKHRhYmxlOiBUYWJsZSkge1xyXG4gICAgdGFibGUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5GaWx0ZXJUeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5GaWx0ZXJUeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5GaWx0ZXJUeXBlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVDb2x1bW5UeXBlcygpOiB0eXBlb2YgVGFibGVDb2x1bW5UeXBlcyB7XHJcbiAgICByZXR1cm4gVGFibGVDb2x1bW5UeXBlcztcclxuICB9XHJcblxyXG4gIGdldEJvb2xlYW5Db2x1bW5DbGFzcyhpbmRleDogbnVtYmVyLCB2YWx1ZVByb3BlcnR5OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBib29sZWFuSWNvbkNsYXNzZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodmFsdWVQcm9wZXJ0eSA9PSB0cnVlKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0udHJ1ZUljb25Db2xvciA/PyAnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlUHJvcGVydHkgPT0gZmFsc2UpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0uZmFsc2VJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0uZmFsc2VJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZVByb3BlcnR5ID09IG51bGwpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0ubnVsbEljb24gPz8gJycpO1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5udWxsSWNvbkNvbG9yID8/ICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYm9vbGVhbkljb25DbGFzc2VzO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5kYXRhVGFibGUuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyhhbGlnbm1lbnQ6IG51bWJlcikge1xyXG4gICAgaWYgKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLlJpZ2h0KSByZXR1cm4gJ3RleHQtcmlnaHQnO1xyXG4gICAgaWYgKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLkxlZnQpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmIChhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5DZW50ZXIpIHJldHVybiAndGV4dC1jZW50ZXInO1xyXG4gICAgcmV0dXJuICd0ZXh0LWxlZnQnXHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3NEZWZhdWx0QnlDb2x1bW5UeXBlKGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZXMpIHtcclxuICAgIGlmIChjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuVGV4dCkgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgaWYgKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeSkgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgaWYgKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5EYXRlKSByZXR1cm4gJ3RleHQtbGVmdCc7XHJcbiAgICBpZiAoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLkJhZGdlKSByZXR1cm4gJ3RleHQtY2VudGVyJztcclxuICAgIGlmIChjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuQm9vbGVhbikgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICBpZiAoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLkltYWdlKSByZXR1cm4gJ3RleHQtY2VudGVyJztcclxuICAgIGlmIChjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuTnVtYmVyKSByZXR1cm4gJ3RleHQtcmlnaHQnO1xyXG4gICAgcmV0dXJuICd0ZXh0LWxlZnQnXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVDb2xzcGFuKCkge1xyXG4gICAgbGV0IGNvbHNwYW4gPSB0aGlzLndhcHBUYWJsZU9iamVjdC5oZWFkZXJzLmxlbmd0aDtcclxuICAgIHRoaXMud2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94ID9cclxuICAgICAgY29sc3BhbiArPSAxIDogJyc7XHJcbiAgICB0aGlzLmhhc0FjdGlvbkJ1dHRvbnMoKSA/XHJcbiAgICAgIGNvbHNwYW4gKz0gMSA6ICcnO1xyXG4gICAgcmV0dXJuIGNvbHNwYW47XHJcbiAgfVxyXG5cclxuICBoYXNBY3Rpb25CdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2FwcFRhYmxlT2JqZWN0Lmhhc0NvcHlCdXR0b24gfHxcclxuICAgICAgdGhpcy53YXBwVGFibGVPYmplY3QuaGFzRWRpdEJ1dHRvbiB8fFxyXG4gICAgICB0aGlzLndhcHBUYWJsZU9iamVjdC5oYXNWaWV3QnV0dG9uIHx8XHJcbiAgICAgIHRoaXMud2FwcFRhYmxlT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvbiB8fFxyXG4gICAgICB0aGlzLndhcHBUYWJsZU9iamVjdC5oYXNDdXN0b21CdXR0b24gP1xyXG4gICAgICB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwYWdlQ2hhbmdlKGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGdldEJ1dHRvbkN1c3RvbUNvbG9yQ2xhc3MoY3VzdG9tQ29sb3I6IEN1c3RvbUNvbG9yKSB7XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5kYXJrQmx1ZTEpIHsgcmV0dXJuICdkYXJrQmx1ZTEnIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLmRhcmtCbHVlMikgeyByZXR1cm4gJ2RhcmtCbHVlMicgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IuZGFya0JsdWUzKSB7IHJldHVybiAnZGFya0JsdWUzJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5wdXJwbGUxKSB7IHJldHVybiAncHVycGxlMScgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IucHVycGxlMikgeyByZXR1cm4gJ3B1cnBsZTInIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLnB1cnBsZTMpIHsgcmV0dXJuICdwdXJwbGUzJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5waW5rMSkgeyByZXR1cm4gJ3BpbmsxJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5waW5rMikgeyByZXR1cm4gJ3BpbmsyJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5waW5rMykgeyByZXR1cm4gJ3BpbmszJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5ncmVlbjEpIHsgcmV0dXJuICdncmVlbjEnIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLmdyZWVuMikgeyByZXR1cm4gJ2dyZWVuMicgfVxyXG4gICAgaWYoY3VzdG9tQ29sb3IgPT0gQ3VzdG9tQ29sb3IuZ3JlZW4zKSB7IHJldHVybiAnZ3JlZW4zJyB9XHJcbiAgICBpZihjdXN0b21Db2xvciA9PSBDdXN0b21Db2xvci5lcnJvcjEpIHsgcmV0dXJuICdlcnJvcjEnIH1cclxuICAgIGlmKGN1c3RvbUNvbG9yID09IEN1c3RvbUNvbG9yLmVycm9yMikgeyByZXR1cm4gJ2Vycm9yMicgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLXBhbmVsXCI+PC9uZy1jb250ZW50PlxyXG48ZGl2ICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0XCIgW2NsYXNzLnRhYmxlLWNvbnRhaW5lcl09XCJ3YXBwVGFibGVPYmplY3QudGFibGVDb250YWluZXJcIj5cclxuICAgIDxwLXRhYmxlIGNsYXNzPVwidy10YWJsZS1zdHlsZXNcIiBbbmdDbGFzc109XCJ7J3ctdGFibGUtbm8tYnV0dG9ucycgOiAhd2FwcFRhYmxlT2JqZWN0Lmhhc0VkaXRCdXR0b24gJiYgIXdhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b24gJiYgIXdhcHBUYWJsZU9iamVjdC5oYXNDb3B5QnV0dG9uICYmICF3YXBwVGFibGVPYmplY3QuY3VzdG9tQnV0dG9uQ29uZmlnfVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbG9hZGluZ1RhYmxlXCIgI3RhYmxlIFxyXG4gICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudHNcIiBkYXRhS2V5PVwie3t3YXBwVGFibGVPYmplY3QuaWRlbnRpZmljYXRvcn19XCIgXHJcbiAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc1BhZ2luYXRvclwiXHJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0ZWRFbGVtZW50c1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCIgKHNlbGVjdEFsbENoYW5nZSk9XCJvblNlbGVjdEFsbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBcclxuICAgICAgICAgICAgW3Jvd3NdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSA/IHdhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzISA6ICdTaG93aW5nICcgKyByb3dzUGVyUGFnZSArICcgb2YgJyArIHRvdGFsUmVjb3JkcyFcIlxyXG4gICAgICAgICAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cIndhcHBUYWJsZU9iamVjdC5nbG9iYWxGaWx0ZXJGaWVsZHMhXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiXHJcbiAgICAgICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCIgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiB3YXBwVGFibGVPYmplY3QudGFibGVNaW5XaWR0aCF9XCJcclxuICAgICAgICAgICAgKG9uUGFnZSk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCIgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NsZWFyQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNHbG9iYWxTZWFyY2ggfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc1RvdGFsUGFnaW5nU2VsZWN0b3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1wYWdpbmF0b3IgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNUb3RhbFBhZ2luZ1NlbGVjdG9yXCIgY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNUb3RhbFBhZ2luZ1NlbGVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNHbG9iYWxTZWFyY2hcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHRhYmxlLCAkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgdy1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduWzBdKSA6ICd0ZXh0LWNlbnRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd2FwcFRhYmxlT2JqZWN0Lmhhc1NvcnRhYmxlQ29sdW1uczsgZWxzZSBzb3J0YWJsZUNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2Ygd2FwcFRhYmxlT2JqZWN0Py5oZWFkZXJzOyBpbmRleCBhcyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pbWFnZS1oZWFkZXJdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzW3dhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveCA/IGkrMSA6IGldID09IHRhYmxlQ29sdW1uVHlwZXMuSW1hZ2UgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25bd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94ID8gaSsxIDogaV0pIDogZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzRGVmYXVsdEJ5Q29sdW1uVHlwZSh3YXBwVGFibGVPYmplY3QuY29sdW1uVHlwZXNbd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94ID8gaSsxIDogaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aGVhZGVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NvcnRhYmxlQ29sdW1ucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1maWx0ZXJUeXBlIFtuZ0Zvck9mXT1cIndhcHBUYWJsZU9iamVjdC5oZWFkZXJzXCIgbGV0LWk9XCJpbmRleFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbcFNvcnRhYmxlQ29sdW1uXT1cIndhcHBUYWJsZU9iamVjdC5zb3J0YWJsZU5hbWVzW2ldXCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pbWFnZS1oZWFkZXJdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzW3dhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveCA/IGkrMSA6IGldID09PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnblt3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSkgOiBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3NEZWZhdWx0QnlDb2x1bW5UeXBlKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5UeXBlc1t3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t3YXBwVGFibGVPYmplY3QuaGVhZGVyc1tpXX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Quc29ydGFibGVOYW1lc1tpXSAhPSBudWxsXCIgW2ZpZWxkXT1cIndhcHBUYWJsZU9iamVjdC5zb3J0YWJsZU5hbWVzW2ldXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0VkaXRCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc1ZpZXdCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0NvcHlCdXR0b25cIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVsZW1lbnQ+XHJcbiAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3Atc2VsZWN0YWJsZS1yb3cnIDogJydcIiAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IG9uRWxlbWVudChlbGVtZW50KSA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNvbHVtblR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtblR5cGVzIVwiIGxldC1pPVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXM/LkNoZWNrYm94ISAmJiAgd2FwcFRhYmxlT2JqZWN0Lmhhc0NoZWNrYm94XCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzIVtpXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveDsgZWxzZSBhY3RpdmVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiZWxlbWVudFwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVDaGVja2JveClcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aXZlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJlbGVtZW50XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuSW1hZ2VcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGVtZW50LWltYWdlLXdpZHRoXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlRleHRcIiAgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuTnVtYmVyXCIgIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LXJpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LXJpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfCBjdXJyZW5jeSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJhZGdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJhZGdlIFtsYWJlbF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pXCIgW2NvbG9yXT1cIidpbmZvJ1wiPjwvdy1iYWRnZT4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5Db2xvcmVkQmFkZ2VcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiYWRnZSBvZiB3YXBwVGFibGVPYmplY3QuY29sb3JlZEJhZGdlOyBpbmRleCBhcyBpbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJhZGdlICpuZ0lmPVwiYmFkZ2UuY29sb3JlZEJhZGdlUHJvcGVydHkgPT0gcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSlcIiBbY29sb3JdPVwiYmFkZ2UuY29sb3JcIj48L3ctYmFkZ2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJvb2xlYW5cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cImdldEJvb2xlYW5Db2x1bW5DbGFzcyhpLCByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5TZWNvbmRhcnlDaGVja2JveFwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImVsZW1lbnRbd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV1dXCIgW2JpbmFyeV09XCJ0cnVlXCIgaW5wdXRJZD1cImJpbmFyeVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2Vjb25kYXJ5Q2hlY2tib3hDaGFuZ2VzKGVsZW1lbnQpXCI+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkRhdGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfCB3YXBwRGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlNob3J0RGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkxvbmdEYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5EIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuR2VuZXJhbERhdGVUaW1lU2hvcnRUaW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuR2VuZXJhbERhdGVUaW1lTG9uZ1RpbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gdmlld0VsZW1lbnQoZWxlbWVudCkgOiAnJ1wiIFtjbGFzc109XCJ3YXBwVGFibGVPYmplY3QuaGFzQ2xpY2thYmxlUm93ID8gJ3ctdGFibGUtc2VsZWN0YWJsZS1yb3cnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuY29sdW1uc1tpXSkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LkcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5CdWlzaW5lc3NEYXRlVGltZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyB2aWV3RWxlbWVudChlbGVtZW50KSA6ICcnXCIgW2NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5oYXNDbGlja2FibGVSb3cgPyAndy10YWJsZS1zZWxlY3RhYmxlLXJvdycgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZU9iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuQnVzaW5lc3MgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5XZWVrXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/IHZpZXdFbGVtZW50KGVsZW1lbnQpIDogJydcIiBbY2xhc3NdPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0NsaWNrYWJsZVJvdyA/ICd3LXRhYmxlLXNlbGVjdGFibGUtcm93JyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbi13ZWVrIFt2YWx1ZV09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlT2JqZWN0LmNvbHVtbnNbaV0pXCIgW3RyYW5zbGF0aW9uc109XCJ3YXBwVGFibGVPYmplY3Qud2Vla0J1dHRvblRyYW5zbGF0aW9ucyA/IHdhcHBUYWJsZU9iamVjdC53ZWVrQnV0dG9uVHJhbnNsYXRpb25zIDogW11cIiAgW2RlZmF1bHRFc3BdPVwid2FwcFRhYmxlT2JqZWN0LndlZWtCdXR0b25EZWZhdWx0RXNwID8/IGZhbHNlXCI+PC93LWJ1dHRvbi13ZWVrPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Lmhhc0N1c3RvbUJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3Q/Lmhhc0VkaXRCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Py5oYXNDb3B5QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdD8uaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdD8uaGFzVmlld0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbnMgZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzVmlld0J1dHRvbiAmJiAhd2FwcFRhYmxlT2JqZWN0LmRpc2FibGVWaWV3UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnZpZXdUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktZXllXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5kaXNhYmxlVmlld1Byb3BlcnR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy52aWV3VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgW2Rpc2FibGVkXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZGlzYWJsZVZpZXdQcm9wZXJ0eSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktZXllXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzQ3VzdG9tQnV0dG9uXCIgbmdGb3IgbGV0LWN1c3RvbUJ1dHRvbkNvbmZpZyBbbmdGb3JPZl09XCJ3YXBwVGFibGVPYmplY3QuY3VzdG9tQnV0dG9uQ29uZmlnXCIgbGV0LWk9XCJpbmRleFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIiFjdXN0b21CdXR0b25Db25maWc/LmRpc2FibGVQcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImN1c3RvbUVsZW1lbnQoe2J1dHRvbklkOiBjdXN0b21CdXR0b25Db25maWcuYnV0dG9uSWQsIGVsZW1lbnQ6IGVsZW1lbnR9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmN1c3RvbVRvb2x0aXAhW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImN1c3RvbUJ1dHRvbkNvbmZpZz8uaWNvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiJ3ctdGFibGUtYnV0dG9uLXZpZXcnICsgZ2V0QnV0dG9uQ3VzdG9tQ29sb3JDbGFzcyhjdXN0b21CdXR0b25Db25maWcuY29sb3IhKSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJjdXN0b21CdXR0b25Db25maWc/LmRpc2FibGVQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY3VzdG9tRWxlbWVudCh7YnV0dG9uSWQ6IGN1c3RvbUJ1dHRvbkNvbmZpZy5idXR0b25JZCwgZWxlbWVudDogZWxlbWVudH0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgY3VzdG9tQnV0dG9uQ29uZmlnPy5kaXNhYmxlUHJvcGVydHkhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uY3VzdG9tVG9vbHRpcCFbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY3VzdG9tQnV0dG9uQ29uZmlnPy5pY29uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25DbGFzc109XCIndy10YWJsZS1idXR0b24tdmlldyAnICsgZ2V0QnV0dG9uQ3VzdG9tQ29sb3JDbGFzcyhjdXN0b21CdXR0b25Db25maWcuY29sb3IhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNFZGl0QnV0dG9uICYmICF3YXBwVGFibGVPYmplY3QuZGlzYWJsZUVkaXRQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uZWRpdFRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiAob25DbGljayk9XCJlZGl0RWxlbWVudChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXBlbmNpbFwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuZGlzYWJsZUVkaXRQcm9wZXJ0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiIChvbkNsaWNrKT1cImVkaXRFbGVtZW50KGVsZW1lbnQpXCIgW2Rpc2FibGVkXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZGlzYWJsZUVkaXRQcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uZWRpdFRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktcGVuY2lsXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1lZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzQ29weUJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiIChvbkNsaWNrKT1cImNvbmZpcm1Db3B5KCRldmVudCwgZWxlbWVudClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmNvcHlUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLWNvcHlcIiBidXR0b25DbGFzcz1cInctdGFibGUtYnV0dG9uLXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0LmRpc2FibGVEZWxldGVQcm9wZXJ0eTsgZWxzZSBub0Rpc2FibGVEZWxldGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRhYmxlXCIgKG9uQ2xpY2spPVwiY29uZmlybURlbGV0ZSgkZXZlbnQsIGVsZW1lbnQpXCIgW2Rpc2FibGVkXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uZGVsZXRlVG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXRyYXNoXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1kZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGlzYWJsZURlbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCIhd2FwcFRhYmxlT2JqZWN0Py5kaXNhYmxlRGVsZXRlICYmICF3YXBwVGFibGVPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGFibGVcIiBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmRlbGV0ZVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNvbmZpcm1EZWxldGUoJGV2ZW50LCBlbGVtZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLXRyYXNoXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1kZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidy10YWJsZS1sYXp5LWVtcHR5LW1lc3NhZ2UtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY2FsY3VsYXRlQ29sc3BhbigpXCI+e3t3YXBwVGFibGVPYmplY3QuZW1wdHlNZXNzYWdlID8gd2FwcFRhYmxlT2JqZWN0LmVtcHR5TWVzc2FnZSA6ICdObyBtYXRjaGVzLid9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibG9hZGluZ2JvZHlcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI4XCI+TG9hZGluZyBlbGVtZW50cy48L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdGFibGU+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RhYmxlPlxyXG4gICAgPHAtdGFibGUgY2xhc3M9XCJ3LXRhYmxlLXN0eWxlc1wiIFt2YWx1ZV09XCJ0YWJsZVNrZWxldG9uc1wiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbcGFnaW5hdG9yXT1cIndhcHBUYWJsZU9iamVjdC5oYXNQYWdpbmF0b3JcIiBbcm93c109XCJyb3dzUGVyUGFnZVwiIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID8gd2FwcFRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMgOiAnU2hvd2luZyAnICsgcm93c1BlclBhZ2UgKyAnIG9mICcgKyB0b3RhbFJlY29yZHNcIlxyXG4gICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NsZWFyQnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNHbG9iYWxTZWFyY2hcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzVG90YWxQYWdpbmdTZWxlY3RvclwiIGNsYXNzPVwic2hvd2luZy1wZXItcGFnZVwiPiB7e3dhcHBUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3QuaGFzVG90YWxQYWdpbmdTZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGF5b3V0PVwiaG9yaXpvbnRhbFwiIGlucHV0SWQ9XCJob3Jpem9udGFsXCIgc3Bpbm5lck1vZGU9XCJob3Jpem9udGFsXCIgW3N0ZXBdPVwiMVwiIFttaW5dPVwiMVwiIFttYXhdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNHbG9iYWxTZWFyY2hcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgdy1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwiIXdhcHBUYWJsZU9iamVjdC5oYXNDb2x1bW5GaWx0ZXJzICYmIHdhcHBUYWJsZU9iamVjdC5oYXNDaGVja2JveDsgZWxzZSBzZWxlY3RBbGxDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3RBbGxDaGVja2JveD48dGg+PC90aD48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiB3YXBwVGFibGVPYmplY3Q/LmhlYWRlcnNcIj5cclxuICAgICAgICAgICAge3toZWFkZXJ9fVxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0RlbGV0ZUJ1dHRvbiB8fCB3YXBwVGFibGVPYmplY3Q/Lmhhc0VkaXRCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Py5oYXNWaWV3QnV0dG9uXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIj5cclxuICAgICAgICAgICAgPHRyIGhlaWdodD1cIjcwcHhcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3YXBwVGFibGVPYmplY3QuY29sdW1uVHlwZXNcIiBbc3R5bGUud2lkdGhdPVwiaXRlbSA9PSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94ID8gJzhyZW0nIDogJydcIiA+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94ICpuZ0lmPVwiaXRlbSA9PSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94ICYmICB3YXBwVGFibGVPYmplY3QuaGFzQ2hlY2tib3hcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDxwLXNrZWxldG9uICpuZ0lmPVwiaXRlbSAhPSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94XCI+PC9wLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIndhcHBUYWJsZU9iamVjdC5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc0NvcHlCdXR0b24gfHwgd2FwcFRhYmxlT2JqZWN0Lmhhc1ZpZXdCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbnMgZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlT2JqZWN0Py5oYXNWaWV3QnV0dG9uXCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJ3YXBwVGFibGVPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnZpZXdUb29sdGlwIVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktZXllXCIgdHlwZT1cInRhYmxlXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0N1c3RvbUJ1dHRvblwiIG5nRm9yIGxldC1jdXN0b21CdXR0b25Db25maWcgW25nRm9yT2ZdPVwid2FwcFRhYmxlT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZ1wiIGxldC1pPVwiaW5kZXhcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5jdXN0b21Ub29sdGlwIVtpXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjdXN0b21CdXR0b25Db25maWc/Lmljb24hXCIgdHlwZT1cInRhYmxlXCIgW2J1dHRvbkNsYXNzXT1cIid3LXRhYmxlLWJ1dHRvbi12aWV3ICcgKyBnZXRCdXR0b25DdXN0b21Db2xvckNsYXNzKGN1c3RvbUJ1dHRvbkNvbmZpZy5jb2xvciEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0VkaXRCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwid2FwcFRhYmxlT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5lZGl0VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktcGVuY2lsXCIgdHlwZT1cInRhYmxlXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1lZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gKm5nSWY9XCJ3YXBwVGFibGVPYmplY3Q/Lmhhc0NvcHlCdXR0b25cIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uY29weVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpLWNvcHlcIiB0eXBlPVwidGFibGVcIiBidXR0b25DbGFzcz1cInctdGFibGUtYnV0dG9uLXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUYWJsZU9iamVjdD8uaGFzRGVsZXRlQnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIndhcHBUYWJsZU9iamVjdC5idXR0b25Ub29sdGlwcz8uZGVsZXRlVG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGktdHJhc2hcIiB0eXBlPVwidGFibGVcIiBidXR0b25DbGFzcz1cInctdGFibGUtYnV0dG9uLWRlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG48cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD4iXX0=
|