keevo-components 1.8.70 → 1.8.72
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/README.md +24 -24
- package/esm2022/lib/api/base-components/base-component-button.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-chart.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-input.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component.mjs +1 -1
- package/esm2022/lib/api/components/chart/chart.config.mjs +1 -1
- package/esm2022/lib/api/components/chart/chart.model.mjs +1 -1
- package/esm2022/lib/api/components/chart/orchart.config.mjs +1 -1
- package/esm2022/lib/api/components/chart/orchart.item.mjs +1 -1
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +1 -1
- package/esm2022/lib/api/components/table/action-item.mjs +1 -1
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +1 -1
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +1 -1
- package/esm2022/lib/api/components/table/table.config.column.mjs +1 -1
- package/esm2022/lib/api/components/table/table.config.mjs +1 -1
- package/esm2022/lib/api/components/table/table.paginate.mjs +1 -1
- package/esm2022/lib/api/components/table/tabledit.config.mjs +1 -1
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +1 -1
- package/esm2022/lib/api/directives/template/template.directive.mjs +1 -1
- package/esm2022/lib/api/helpers/component-providers.mjs +1 -1
- package/esm2022/lib/api/helpers/keevo-validators.mjs +14 -5
- package/esm2022/lib/api/helpers/translate-primeng.mjs +1 -1
- package/esm2022/lib/api/models/aplicativo-model.mjs +12 -0
- package/esm2022/lib/api/models/master-combo-model.mjs +2 -0
- package/esm2022/lib/api/models/menu-model.mjs +2 -0
- package/esm2022/lib/api/modules/primeng.module.mjs +1 -1
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +1 -1
- package/esm2022/lib/api/pipes/mask.pipe.mjs +1 -1
- package/esm2022/lib/api/pipes/pipes.module.mjs +1 -1
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +1 -1
- package/esm2022/lib/api/services/base.api.service.mjs +1 -1
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +1 -1
- package/esm2022/lib/api/services/component.service.mjs +1 -1
- package/esm2022/lib/api/services/docs.service.mjs +129 -0
- package/esm2022/lib/api/services/form.service.mjs +1 -1
- package/esm2022/lib/api/services/imagens.service.mjs +1 -1
- package/esm2022/lib/api/services/notification.service.mjs +1 -1
- package/esm2022/lib/api/services/object.service.mjs +1 -1
- package/esm2022/lib/components/keevo-components.module.mjs +12 -5
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +3 -3
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +1 -1
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +1 -1
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +3 -3
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +1 -1
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +3 -3
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +1 -1
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +3 -3
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +3 -3
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +3 -3
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +1 -1
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +3 -3
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +1 -1
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +1 -1
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +3 -3
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +1 -1
- package/esm2022/lib/components/kv-menu/kv-menu.component.mjs +3 -3
- package/esm2022/lib/components/kv-menu/kv-menu.module.mjs +1 -1
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +3 -3
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +1 -1
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +3 -3
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +1 -1
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +3 -3
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +1 -1
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +3 -3
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +1 -1
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +1 -1
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +49 -0
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +32 -0
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +3 -3
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +1 -1
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +17 -15
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +1 -1
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +3 -3
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +1 -1
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +1 -1
- package/esm2022/lib/components/kv-workspace/kv-workspace.component.mjs +3 -3
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +1 -1
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/keevo-components.mjs +308 -95
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/api/helpers/keevo-validators.d.ts +1 -0
- package/lib/api/models/aplicativo-model.d.ts +22 -0
- package/lib/api/models/master-combo-model.d.ts +5 -0
- package/lib/api/models/menu-model.d.ts +10 -0
- package/lib/api/services/docs.service.d.ts +12 -0
- package/lib/components/keevo-components.module.d.ts +3 -2
- package/lib/components/kv-menu/kv-menu.component.d.ts +3 -1
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +21 -0
- package/lib/components/kv-stepper/kv-stepper.module.d.ts +10 -0
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-edit/kv-table-edit.component.d.ts +4 -4
- package/package.json +2 -2
- package/public-api.d.ts +5 -0
|
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
38
38
|
exports: [KvTableEditComponent]
|
|
39
39
|
}]
|
|
40
40
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtZWRpdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10YWJsZS1lZGl0L2t2LXRhYmxlLWVkaXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBZTFELE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQVpiLG9CQUFvQixhQUVqQyxZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCxjQUFjO1lBQ2QsZUFBZTtZQUNmLFdBQVc7WUFDWCxrQkFBa0IsYUFFVixvQkFBb0I7K0dBRW5CLGlCQUFpQixZQVYxQixZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCxjQUFjO1lBQ2QsZUFBZTtZQUNmLFdBQVc7WUFDWCxrQkFBa0I7OzJGQUlULGlCQUFpQjtrQkFiN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgS3ZCdXR0b25zTW9kdWxlLFxuICBLdklucHV0c01vZHVsZSxcbiAgUGlwZXNNb2R1bGUsXG4gIFByaW1lTmdNb2R1bGVcbn0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IEt2VGFibGVFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9rdi10YWJsZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NlbGVjdGJ1dHRvbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0t2VGFibGVFZGl0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQcmltZU5nTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEt2SW5wdXRzTW9kdWxlLFxuICAgIEt2QnV0dG9uc01vZHVsZSxcbiAgICBQaXBlc01vZHVsZSxcbiAgICBTZWxlY3RCdXR0b25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0t2VGFibGVFZGl0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLdlRhYmxlRWRpdE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -184,11 +184,11 @@ export class KvTreetableComponent {
|
|
|
184
184
|
return true;
|
|
185
185
|
}
|
|
186
186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvTreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela", tableCaptalized: "tableCaptalized", selectedItems: "selectedItems", paginator: "paginator", rows: "rows", pageLinks: "pageLinks", showFirstLastIcon: "showFirstLastIcon", totalRecords: "totalRecords", _templates: ["templates", "_templates"] }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [pageLinks]=\"pageLinks\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50]\"\r\n [showFirstLastIcon]=\"showFirstLastIcon\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n [(selection)]=\"selectedItems\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n currentPageReportTemplate=\"{first} - {last} de {{ totalRecords }}\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center {{tamanhoTela < 768 ? '' : 'input-search'}}\">\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ 'capitalize': tableCaptalized }\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#eaeaea;padding:2px 0 0!important;border-radius:5px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-top-left-radius:5px!important;border-bottom-left-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight", "selectionKeys"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvTreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela", tableCaptalized: "tableCaptalized", selectedItems: "selectedItems", paginator: "paginator", rows: "rows", pageLinks: "pageLinks", showFirstLastIcon: "showFirstLastIcon", totalRecords: "totalRecords", _templates: ["templates", "_templates"] }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], ngImport: i0, template: "<div>\n <p-treeTable\n #tt\n [value]=\"dataSource\"\n [columns]=\"config.columns\"\n [resizableColumns]=\"true\"\n [tableStyle]=\"{'min-width': '50rem'}\"\n [resizableColumns]=\"true\"\n [paginator]=\"paginator\"\n [rows]=\"rows\"\n [pageLinks]=\"pageLinks\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"[5, 10, 25, 50]\"\n [showFirstLastIcon]=\"showFirstLastIcon\"\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\n [(selection)]=\"selectedItems\"\n [lazy]=\"config.lazy\"\n (onLazyLoad)=\"paginate($event)\"\n currentPageReportTemplate=\"{first} - {last} de {{ totalRecords }}\"\n >\n\n <ng-template\n pTemplate=\"caption\"\n *ngIf=\"config.enableCation\"\n >\n <div\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\n <div class=\"col-12 flex flex-column\">\n <div\n *ngIf=\"config.title\"\n class=\"text-md font-bold my-3\"\n >\n {{ config.title }}\n </div>\n <div\n *ngIf=\"config.subtitle\"\n class=\"text-sm mb-4 font-medium\"\n >\n {{ config.subtitle }}\n </div>\n </div>\n\n <div\n class=\"flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center {{tamanhoTela < 768 ? '' : 'input-search'}}\">\n <span\n *ngIf=\"config.enableFilter\"\n class=\"p-input-icon-left\"\n >\n <i class=\"pi pi-search\"></i>\n\n <input\n pInputText\n pAutoFocus\n [autofocus]=\"true\"\n type=\"text\"\n (input)=\"onGlobalFilter(tt, $event)\"\n placeholder=\"Pesquisar...\"\n class=\"h-2rem\"\n />\n </span>\n\n </div>\n\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\n <div\n *ngFor=\"let action of config.actionsLote\"\n class=\"btns-options\"\n >\n <button\n id=\"actionLoteBtns\"\n pButton\n *ngIf=\"\n (selectedItems.length > 0 || action.showAcoesLote) &&\n exibirCampo(action, this.action)\n \"\n class=\"actionLoteBtns p-button-raised p-button-text\"\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\n [tooltipPosition]=\"'bottom'\"\n [style.backgroundColor]=\"\n retornarCampo(action, selectedItems, 'btnColor')\n \"\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\n >\n <span\n class=\"material-symbols-outlined md-22\"\n [style.color]=\"\n retornarCampo(action, selectedItems, 'iconBtnColor')\n \"\n >\n {{ retornarCampo(action, selectedItems, \"icon\") }}\n </span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th\n *ngFor=\"let col of columns; index as i\"\n [ttSortableColumn]=\"col.field\"\n [ttSortableColumnDisabled]=\"col.sortable === false\"\n class=\"text-sm\"\n [style.width]=\"col.width\"\n >\n <div>\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\n <div *ngIf=\"i == 0 && config.enableSelect\">\n <p-treeTableHeaderCheckbox\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\n </div>\n\n <div\n [class]=\"\n centralizarColunas(col) && alignColunasHeader(col) == ''\n ? 'flex flex-row justify-content-center'\n : 'flex flex-row'\n \"\n [style]=\"alignColunasHeader(col)\"\n >\n <span>{{ col.header }}</span>\n <p-sortIcon\n *ngIf=\"col.sortable === true\"\n [field]=\"col.field\"\n style=\"font-size: 10px\"\n ></p-sortIcon>\n\n <span\n *ngIf=\"col.headerTooltip\"\n class=\"material-symbols-outlined flex align-items-center\"\n [pTooltip]=\"col.headerTooltip\"\n >info</span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th\n *ngFor=\"let col of columns\"\n ttResizableColumn\n [style.width]=\"col.width\"\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\n >\n {{ col.header }} <br>\n </th>\n\n <th\n [style.width]=\"5\"\n *ngIf=\"config.actions.length > 0\"\n ></th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowNode\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n >\n <tr\n [ttRow]=\"rowNode\"\n (dblclick)=\"doubleClick($event, rowData)\"\n [ngClass]=\"{ 'capitalize': tableCaptalized }\"\n >\n <td\n *ngFor=\"let col of columns; let i = index\"\n [style]=\"returnStyleRow(col, rowNode)\"\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\n >\n\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\n <div\n class=\"w-full-h-full flex align-items-center\"\n *ngIf=\"i == 0\"\n >\n <p-treeTableToggler\n class=\"hiddenVisible\"\n [rowNode]=\"rowNode\"\n ></p-treeTableToggler>\n\n <p-treeTableCheckbox\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\n (click)=\"activeItemLote(selectedItems)\"\n [value]=\"rowNode\"\n *ngIf=\"config.enableSelect == true\"\n ></p-treeTableCheckbox>\n\n <!-- \n <p-treeTableToggler\n [rowNode]=\"rowNode\"\n *ngIf=\"!rightCollapse\"\n ></p-treeTableToggler>\n <p-treeTableToggler\n class=\"hiddenVisible\"\n [rowNode]=\"rowNode\"\n *ngIf=\"rightCollapse\"\n ></p-treeTableToggler> -->\n </div>\n\n\n <div class=\"flex flex-row align-items-center\">\n <div class=\"flex flex-row align-items-center justify-content-center\">\n\n <i\n *ngIf=\"col.boolean\"\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\n style=\"font-size: 1.1rem;\"\n ></i>\n\n\n <div\n class=\"flex flex-column\"\n *ngIf=\"!col.boolean\"\n >\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\n\n <p\n *ngIf=\"col.subtitle\"\n class=\"m-0 text-xs font-semibold\"\n >{{rowData[col.subtitle]}}</p>\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\n <ng-container\n *ngIf=\"getCustomTemplate(col.template.name)\"\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\n >\n </ng-container>\n </span>\n\n </td>\n\n\n <td\n style=\"border-left: none;\"\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\n >\n\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\n <div\n class=\"flex flex-row justify-content-center gap-1\"\n *ngIf=\"acoesLinhaTabela\"\n >\n <p-button\n *ngFor=\"let action of config.actions\"\n icon=\"pi {{action.icon}}\"\n [rounded]=\"true\"\n [severity]=\"action.severity ? action.severity : 'secondary'\"\n [style]=\"{width: '2rem', height: '2rem'}\"\n (onClick)=\"action.command($event)\"\n ></p-button>\n\n </div>\n\n <span\n *ngIf=\"!acoesLinhaTabela\"\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\n style=\"font-size: 22px\"\n (click)=\"menu.toggle($event); activeItem(rowData)\"\n >\n more_horiz\n </span>\n\n <div *ngFor=\"let action of config.actions\">\n {{ criarMenusModal(rowData) }}\n </div>\n\n <p-menu\n #menu\n [popup]=\"true\"\n [model]=\"menuItems\"\n appendTo=\"body\"\n ></p-menu>\n\n </div>\n\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\n\n <div\n *ngFor=\"let actionPai of config.actionsPai\"\n class=\"flex justify-content-end\"\n >\n\n <p-button\n icon=\"pi {{actionPai.icon}}\"\n [rounded]=\"true\"\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\n [style]=\"{width: '2rem', height: '2rem'}\"\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\n ></p-button>\n\n </div>\n\n </div>\n\n </td>\n\n </tr>\n </ng-template>\n\n </p-treeTable>\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#eaeaea;padding:2px 0 0!important;border-radius:5px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-top-left-radius:5px!important;border-bottom-left-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight", "selectionKeys"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
188
188
|
}
|
|
189
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, decorators: [{
|
|
190
190
|
type: Component,
|
|
191
|
-
args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [pageLinks]=\"pageLinks\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPageOptions]=\"[5, 10, 25, 50]\"\r\n [showFirstLastIcon]=\"showFirstLastIcon\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n [(selection)]=\"selectedItems\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n currentPageReportTemplate=\"{first} - {last} de {{ totalRecords }}\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center {{tamanhoTela < 768 ? '' : 'input-search'}}\">\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ 'capitalize': tableCaptalized }\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </span>\r\n\r\n </td>\r\n\r\n\r\n <td\r\n style=\"border-left: none;\"\r\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\r\n >\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n class=\"flex flex-row justify-content-center gap-1\"\r\n *ngIf=\"acoesLinhaTabela\"\r\n >\r\n <p-button\r\n *ngFor=\"let action of config.actions\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#eaeaea;padding:2px 0 0!important;border-radius:5px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-top-left-radius:5px!important;border-bottom-left-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
191
|
+
args: [{ selector: 'kv-tree-table', template: "<div>\n <p-treeTable\n #tt\n [value]=\"dataSource\"\n [columns]=\"config.columns\"\n [resizableColumns]=\"true\"\n [tableStyle]=\"{'min-width': '50rem'}\"\n [resizableColumns]=\"true\"\n [paginator]=\"paginator\"\n [rows]=\"rows\"\n [pageLinks]=\"pageLinks\"\n [totalRecords]=\"totalRecords\"\n [rowsPerPageOptions]=\"[5, 10, 25, 50]\"\n [showFirstLastIcon]=\"showFirstLastIcon\"\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\n [(selection)]=\"selectedItems\"\n [lazy]=\"config.lazy\"\n (onLazyLoad)=\"paginate($event)\"\n currentPageReportTemplate=\"{first} - {last} de {{ totalRecords }}\"\n >\n\n <ng-template\n pTemplate=\"caption\"\n *ngIf=\"config.enableCation\"\n >\n <div\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\n <div class=\"col-12 flex flex-column\">\n <div\n *ngIf=\"config.title\"\n class=\"text-md font-bold my-3\"\n >\n {{ config.title }}\n </div>\n <div\n *ngIf=\"config.subtitle\"\n class=\"text-sm mb-4 font-medium\"\n >\n {{ config.subtitle }}\n </div>\n </div>\n\n <div\n class=\"flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center {{tamanhoTela < 768 ? '' : 'input-search'}}\">\n <span\n *ngIf=\"config.enableFilter\"\n class=\"p-input-icon-left\"\n >\n <i class=\"pi pi-search\"></i>\n\n <input\n pInputText\n pAutoFocus\n [autofocus]=\"true\"\n type=\"text\"\n (input)=\"onGlobalFilter(tt, $event)\"\n placeholder=\"Pesquisar...\"\n class=\"h-2rem\"\n />\n </span>\n\n </div>\n\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\n <div\n *ngFor=\"let action of config.actionsLote\"\n class=\"btns-options\"\n >\n <button\n id=\"actionLoteBtns\"\n pButton\n *ngIf=\"\n (selectedItems.length > 0 || action.showAcoesLote) &&\n exibirCampo(action, this.action)\n \"\n class=\"actionLoteBtns p-button-raised p-button-text\"\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\n [tooltipPosition]=\"'bottom'\"\n [style.backgroundColor]=\"\n retornarCampo(action, selectedItems, 'btnColor')\n \"\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\n >\n <span\n class=\"material-symbols-outlined md-22\"\n [style.color]=\"\n retornarCampo(action, selectedItems, 'iconBtnColor')\n \"\n >\n {{ retornarCampo(action, selectedItems, \"icon\") }}\n </span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th\n *ngFor=\"let col of columns; index as i\"\n [ttSortableColumn]=\"col.field\"\n [ttSortableColumnDisabled]=\"col.sortable === false\"\n class=\"text-sm\"\n [style.width]=\"col.width\"\n >\n <div>\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\n <div *ngIf=\"i == 0 && config.enableSelect\">\n <p-treeTableHeaderCheckbox\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\n </div>\n\n <div\n [class]=\"\n centralizarColunas(col) && alignColunasHeader(col) == ''\n ? 'flex flex-row justify-content-center'\n : 'flex flex-row'\n \"\n [style]=\"alignColunasHeader(col)\"\n >\n <span>{{ col.header }}</span>\n <p-sortIcon\n *ngIf=\"col.sortable === true\"\n [field]=\"col.field\"\n style=\"font-size: 10px\"\n ></p-sortIcon>\n\n <span\n *ngIf=\"col.headerTooltip\"\n class=\"material-symbols-outlined flex align-items-center\"\n [pTooltip]=\"col.headerTooltip\"\n >info</span>\n </div>\n </div>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th\n *ngFor=\"let col of columns\"\n ttResizableColumn\n [style.width]=\"col.width\"\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\n >\n {{ col.header }} <br>\n </th>\n\n <th\n [style.width]=\"5\"\n *ngIf=\"config.actions.length > 0\"\n ></th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowNode\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n >\n <tr\n [ttRow]=\"rowNode\"\n (dblclick)=\"doubleClick($event, rowData)\"\n [ngClass]=\"{ 'capitalize': tableCaptalized }\"\n >\n <td\n *ngFor=\"let col of columns; let i = index\"\n [style]=\"returnStyleRow(col, rowNode)\"\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\n >\n\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\n <div\n class=\"w-full-h-full flex align-items-center\"\n *ngIf=\"i == 0\"\n >\n <p-treeTableToggler\n class=\"hiddenVisible\"\n [rowNode]=\"rowNode\"\n ></p-treeTableToggler>\n\n <p-treeTableCheckbox\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\n (click)=\"activeItemLote(selectedItems)\"\n [value]=\"rowNode\"\n *ngIf=\"config.enableSelect == true\"\n ></p-treeTableCheckbox>\n\n <!-- \n <p-treeTableToggler\n [rowNode]=\"rowNode\"\n *ngIf=\"!rightCollapse\"\n ></p-treeTableToggler>\n <p-treeTableToggler\n class=\"hiddenVisible\"\n [rowNode]=\"rowNode\"\n *ngIf=\"rightCollapse\"\n ></p-treeTableToggler> -->\n </div>\n\n\n <div class=\"flex flex-row align-items-center\">\n <div class=\"flex flex-row align-items-center justify-content-center\">\n\n <i\n *ngIf=\"col.boolean\"\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\n style=\"font-size: 1.1rem;\"\n ></i>\n\n\n <div\n class=\"flex flex-column\"\n *ngIf=\"!col.boolean\"\n >\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\n\n <p\n *ngIf=\"col.subtitle\"\n class=\"m-0 text-xs font-semibold\"\n >{{rowData[col.subtitle]}}</p>\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <span *ngIf=\"col.template && validateShowTemplate(rowNode, col)\">\n <ng-container\n *ngIf=\"getCustomTemplate(col.template.name)\"\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\n >\n </ng-container>\n </span>\n\n </td>\n\n\n <td\n style=\"border-left: none;\"\n *ngIf=\"config.actions.length > 0 || config.actionsPai\"\n >\n\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\n <div\n class=\"flex flex-row justify-content-center gap-1\"\n *ngIf=\"acoesLinhaTabela\"\n >\n <p-button\n *ngFor=\"let action of config.actions\"\n icon=\"pi {{action.icon}}\"\n [rounded]=\"true\"\n [severity]=\"action.severity ? action.severity : 'secondary'\"\n [style]=\"{width: '2rem', height: '2rem'}\"\n (onClick)=\"action.command($event)\"\n ></p-button>\n\n </div>\n\n <span\n *ngIf=\"!acoesLinhaTabela\"\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\n style=\"font-size: 22px\"\n (click)=\"menu.toggle($event); activeItem(rowData)\"\n >\n more_horiz\n </span>\n\n <div *ngFor=\"let action of config.actions\">\n {{ criarMenusModal(rowData) }}\n </div>\n\n <p-menu\n #menu\n [popup]=\"true\"\n [model]=\"menuItems\"\n appendTo=\"body\"\n ></p-menu>\n\n </div>\n\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\n\n <div\n *ngFor=\"let actionPai of config.actionsPai\"\n class=\"flex justify-content-end\"\n >\n\n <p-button\n icon=\"pi {{actionPai.icon}}\"\n [rounded]=\"true\"\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\n [style]=\"{width: '2rem', height: '2rem'}\"\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\n ></p-button>\n\n </div>\n\n </div>\n\n </td>\n\n </tr>\n </ng-template>\n\n </p-treeTable>\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#eaeaea;padding:2px 0 0!important;border-radius:5px}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-top-left-radius:5px!important;border-bottom-left-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
192
192
|
}], propDecorators: { config: [{
|
|
193
193
|
type: Input
|
|
194
194
|
}], dataSource: [{
|
|
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
231
231
|
type: HostListener,
|
|
232
232
|
args: ['window:resize', ['$event']]
|
|
233
233
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS10YWJsZS9rdi10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFPckYsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU9FLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBTXBCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsU0FBSSxHQUFHLEVBQUUsQ0FBQTtRQUNULGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixzQkFBaUIsR0FBRyxLQUFLLENBQUE7UUFHeEIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELHFCQUFnQixHQUFzQixJQUFJ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QW5OVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixpcUJBNEJkLGlCQUFpQiw2QkNuRHBDLG1wYkFnVU07OzJGRHpTTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTs4QkFVaEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNNkIsU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBQ2QsVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUdsQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW1Db21tYW5kRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcclxuXHJcbmltcG9ydCB7IEt2TWVudUl0ZW0gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYXBpL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdHJlZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUcmVldGFibGVDb21wb25lbnQge1xyXG5cclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG4gIGNvbW1hbmRFdmVudCE6IE1lbnVJdGVtQ29tbWFuZEV2ZW50O1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY29lc0xpbmhhVGFiZWxhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFibGVDYXB0YWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcbiAgQElucHV0KCkgcGFnaW5hdG9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcm93cyA9IDEwXHJcbiAgQElucHV0KCkgcGFnZUxpbmtzID0gMlxyXG4gIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uID0gZmFsc2VcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMhOiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XHJcbiAgQElucHV0KCd0ZW1wbGF0ZXMnKSBfdGVtcGxhdGVzITogYW55O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMudGFtYW5ob1RlbGEgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW0uZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtTG90ZShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtTG90ZS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID1cclxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9ICRldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHskZXZlbnQuc29ydEZpZWxkfSAkeyRldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ1xyXG4gICAgICAgICAgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVyblN0eWxlUm93KGNvbDogYW55LCByb3dOb2RlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaXNGaXJzdENvbHVtbiA9IGNvbC5maWVsZCA9PT0gdGhpcy5jb25maWcuY29sdW1uc1swXS5maWVsZDtcclxuICAgIGNvbnN0IGJhc2VPcGFjaXR5ID0gMTtcclxuICAgIGNvbnN0IG1heExldmVscyA9IDQ7XHJcblxyXG4gICAgaWYgKGlzRmlyc3RDb2x1bW4gJiYgcm93Tm9kZS5sZXZlbCA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBiYXNlT3BhY2l0eSAtIChyb3dOb2RlLmxldmVsIC8gbWF4TGV2ZWxzKTtcclxuXHJcbiAgICAgIHJldHVybiBgYm9yZGVyLWxlZnQ6IHNvbGlkIDRweCByZ2JhKDU5LCAxMTAsIDE1OCwgJHtvcGFjaXR5fSkgIWltcG9ydGFudDtgO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3dOb2RlLmxldmVsID09IDApXHJcbiAgICAgIHJldHVybiAnYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQnXHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgaWYgKGNvbC5hbGlnbiA9PSAncmlnaHQnKSByZXR1cm4gJ2p1c3RpZnktY29udGVudDogZW5kJztcclxuICAgICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuICBjZW50cmFsaXphckNvbHVuYXMoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5jZW50cmFsaXplKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1hbGlnbjogY2VudGVyOyAnO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcbiAgYWxpZ25Db2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgcmV0dXJuIGB0ZXh0LWFsaWduOiAke2NvbC5hbGlnbn1gO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGNyaWFyTWVudXNNb2RhbChkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zICYmIGRhdGEpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCgoYWN0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBpY29uID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2ljb24nKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ3Rvb2x0aXAnKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSB0aGlzLnJldG9ybmFyQ2FtcG8oXHJcbiAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgJ3Rvb2x0aXBQb3NpdGlvbidcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2xhYmVsJyk7XHJcbiAgICAgICAgY29uc3QgY29tbWFuZDogYW55ID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2NvbW1hbmQnKTtcclxuICAgICAgICBjb25zdCB2aXNpYmxlOiBib29sZWFuID0gYWN0aW9uLnZpc2libGUgPyBhY3Rpb24udmlzaWJsZShkYXRhKSA6IHRydWU7XHJcbiAgICAgICAgY29uc3QgZGlzYWJsZWQ6IGJvb2xlYW4gPSBhY3Rpb24uZGlzYWJsZWRcclxuICAgICAgICAgID8gYWN0aW9uLmRpc2FibGVkKGRhdGEpXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0OiBLdk1lbnVJdGVtID0ge1xyXG4gICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICBpY29uLFxyXG4gICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbixcclxuICAgICAgICAgIGNvbW1hbmQsXHJcbiAgICAgICAgICBkaXNhYmxlZCxcclxuICAgICAgICAgIHZpc2libGUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT4geC5jb21tYW5kID09IG1lbnVJbnNlcnQuY29tbWFuZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PSAwKSB0aGlzLm1lbnVJdGVtcy5wdXNoKG1lbnVJbnNlcnQpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQubGFiZWwgIT0gaXRlbVswXS5sYWJlbCkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LnZpc2libGUgIT0gaXRlbVswXS52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQuZGlzYWJsZWQgIT0gaXRlbVswXS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXRvcm5hckNhbXBvKGFjdGlvbjogS3ZNZW51SXRlbSwgcm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9mdW5jdGlvbiA9IGFjdGlvbi5keW5hbWljZmllbGRzXHJcbiAgICAgID8gKGFjdGlvbi5keW5hbWljZmllbGRzW2ZpZWxkXSBhcyBGdW5jdGlvbilcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPSBfZnVuY3Rpb25cclxuICAgICAgPyBfZnVuY3Rpb24uYXBwbHkoYWN0aW9uLCBbcm93RGF0YV0pXHJcbiAgICAgIDogYWN0aW9uW2ZpZWxkXTtcclxuICAgIHJldHVybiBfZmllbGQ7XHJcbiAgfVxyXG5cclxuICBleGliaXJDYW1wbyhmaWVsZDogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuICAgIGxldCB2aXNpYmxlID0gZmllbGQudmlzaWJsZSA/IGZpZWxkLnZpc2libGUocm93RGF0YSkgOiB0cnVlO1xyXG4gICAgcmV0dXJuIHZpc2libGU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKHJvd05vZGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnNQYWkgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBlbHNlIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuXHJcbiAgZG91YmxlQ2xpY2soZTogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBsZXQgZXZlbnREb3VibGVDbGljayA9IHsgZXZlbnQ6IGUsIHJvd0RhdGE6IHJvd0RhdGEgfTtcclxuXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBlLnRhcmdldC5jbGFzc0xpc3QuZm9yRWFjaCgoeDogYW55KSA9PiBhcnJheS5wdXNoKHgpKTtcclxuXHJcbiAgICAvLyBpZiAoYXJyYXkuZmluZCgoeDogYW55KSA9PiB4ID09ICduZy1zdGFyLWluc2VydGVkJykgIT0gdW5kZWZpbmVkKVxyXG4gICAgdGhpcy5kb3VibGVDbGlja0V2ZW50LmVtaXQoZXZlbnREb3VibGVDbGljayk7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YTogYW55LCByb3dOb2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb25cclxuICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVNob3dUZW1wbGF0ZShyb3dOb2RlOiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ3BhaScpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ2ZpbGhvJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxwLXRyZWVUYWJsZVxyXG4gICAgICAgICN0dFxyXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXHJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiAnNTByZW0nfVwiXHJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxyXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzXCJcclxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIlxyXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiXHJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZ3JpZExpbmVzID8gJ3AtdHJlZXRhYmxlLWdyaWRsaW5lcycgOiAnJ1wiXHJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSAtIHtsYXN0fSBkZSB7eyB0b3RhbFJlY29yZHMgfX1cIlxyXG4gICAgPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiY2FwdGlvblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZUNhdGlvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBncmlkIGZvcm1ncmlkIHAtZmx1aWQgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtYm9sZCBteS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuc3VidGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBtZDpjb2wtNiBsZzpjb2wtNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHt7dGFtYW5ob1RlbGEgPCA3NjggPyAnJyA6ICdpbnB1dC1zZWFyY2gnfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHR0LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGVzcXVpc2FyLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0ycmVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29sLTEganVzdGlmeS1jb250ZW50LWVuZCBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNMb3RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5zLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhY3Rpb25Mb3RlQnRuc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uTG90ZUJ0bnMgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbj8uY29tbWFuZChjb21tYW5kRXZlbnQpOyBhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICd0b29sdGlwJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICdidG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2Rpc2FibGVkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtZC0yMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2ljb25CdG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCBcImljb25cIikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBmbGV4OiBpID09IDAsICdnYXAtMyc6IGkgPT0gMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PSAwICYmIGNvbmZpZy5lbmFibGVTZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICYmIGFsaWduQ29sdW5hc0hlYWRlcihjb2wpID09ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93J1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICAgICAgICBsZXQtY29sdW1uc1xyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICB0dFJlc2l6YWJsZUNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb2wuY2VudHJhbGl6ZSA/ICd0ZXh0LWFsaWduOiBjZW50ZXI7JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19IDxicj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICA+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgICAgICAgbGV0LXJvd05vZGVcclxuICAgICAgICAgICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgW3R0Um93XT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImRvdWJsZUNsaWNrKCRldmVudCwgcm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2FwaXRhbGl6ZSc6IHRhYmxlQ2FwdGFsaXplZCB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyAgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInJldHVyblN0eWxlUm93KGNvbCwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCJyb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJyb3dOb2RlLmxldmVsICE9PSAwID8gcm93Tm9kZS5sZXZlbCozMCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyAge3tjb2wuYm9vbGVhbiA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICcnIH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlU2VsZWN0ID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVDaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJpZ2h0Q29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyaWdodENvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuYm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tyb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxLjFyZW07XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2wuYm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMFwiPnt7IHJvd0RhdGFbY29sLmZpZWxkXSB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zdWJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3tyb3dEYXRhW2NvbC5zdWJ0aXRsZV19fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wudGVtcGxhdGUgJiYgdmFsaWRhdGVTaG93VGVtcGxhdGUocm93Tm9kZSwgY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwIHx8IGNvbmZpZy5hY3Rpb25zUGFpXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDAgJiYgdmFsaWRhdGVBY3Rpb25Qb3NpdGlvbihyb3dOb2RlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjb2VzTGluaGFUYWJlbGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkge3thY3Rpb24uaWNvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uLnNldmVyaXR5ID8gYWN0aW9uLnNldmVyaXR5IDogJ3NlY29uZGFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7d2lkdGg6ICcycmVtJywgaGVpZ2h0OiAnMnJlbSd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24uY29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYWNvZXNMaW5oYVRhYmVsYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbChyb3dEYXRhKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLW1lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3AtbWVudT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuYWN0aW9uc1BhaT8ubGVuZ3RoID4gMCAmJiByb3dOb2RlLmxldmVsID09IDBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb25QYWkgb2YgY29uZmlnLmFjdGlvbnNQYWlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHt7YWN0aW9uUGFpLmljb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblBhaS5zZXZlcml0eSA/IGFjdGlvblBhaS5zZXZlcml0eSA6ICdzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwie3dpZHRoOiAnMnJlbScsIGhlaWdodDogJzJyZW0nfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTthY3Rpb25QYWkuY29tbWFuZCgkZXZlbnQpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvcC10cmVlVGFibGU+XHJcbjwvZGl2PiJdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS10YWJsZS9rdi10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFPckYsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU9FLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBTXBCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsU0FBSSxHQUFHLEVBQUUsQ0FBQTtRQUNULGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixzQkFBaUIsR0FBRyxLQUFLLENBQUE7UUFHeEIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0tBOExwRTtJQTVMQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFNRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBWTtRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWdCLEVBQUUsS0FBWTtRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsWUFBWSxDQUFFLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQVc7UUFDekIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksYUFBYSxHQUNmLENBQUMsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBRW5CLElBQUksTUFBTSxDQUFDLFlBQVk7Z0JBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFFN0QsSUFBSSxNQUFNLENBQUMsU0FBUztnQkFDbEIsU0FBUyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUNsRSxFQUFFLENBQUM7WUFFUCxNQUFNLE1BQU0sR0FBa0I7Z0JBQzVCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQzFCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixTQUFTLEVBQUUsU0FBUzthQUNyQixDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUSxFQUFFLE9BQVk7UUFDbkMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVwQixJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sT0FBTyxHQUFHLFdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFMUQsT0FBTyw2Q0FBNkMsT0FBTyxlQUFlLENBQUM7UUFDN0UsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDO1lBQ3BCLE9BQU8sNkRBQTZELENBQUE7UUFFdEUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBUTtRQUN6QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxPQUFPO2dCQUFFLE9BQU8sc0JBQXNCLENBQUM7O2dCQUNuRCxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDOztZQUFNLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxHQUFRO1FBQ3pCLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25CLE9BQU8sc0JBQXNCLENBQUM7UUFDaEMsQ0FBQzs7WUFBTSxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsWUFBWSxDQUFDLEdBQVE7UUFDbkIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLENBQUM7O1lBQU0sT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN4QyxNQUFNLEVBQ04sSUFBSSxFQUNKLGlCQUFpQixDQUNsQixDQUFDO2dCQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxPQUFPLEdBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLE9BQU8sR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RFLE1BQU0sUUFBUSxHQUFZLE1BQU0sQ0FBQyxRQUFRO29CQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3ZCLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRVYsTUFBTSxVQUFVLEdBQWU7b0JBQzdCLEtBQUs7b0JBQ0wsSUFBSTtvQkFDSixPQUFPO29CQUNQLGVBQWU7b0JBQ2YsT0FBTztvQkFDUCxRQUFRO29CQUNSLE9BQU87aUJBQ1IsQ0FBQztnQkFFRixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FDdkMsQ0FBQztnQkFFRixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDakQsQ0FBQztvQkFDSixJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxDQUFDO29CQUVELElBQUksVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xDLENBQUM7b0JBRUQsSUFBSSxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDNUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFrQixFQUFFLE9BQVksRUFBRSxLQUFhO1FBQzNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhO1lBQ3BDLENBQUMsQ0FBRSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBYztZQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxNQUFNLEdBQVcsU0FBUztZQUM5QixDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLE9BQVk7UUFDbEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFZO1FBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7O1lBQzFELE9BQU8sSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFHRCxXQUFXLENBQUMsQ0FBTSxFQUFFLE9BQVk7UUFFOUIsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRELElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFZLEVBQUUsT0FBWTtRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7WUFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNaLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFvQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVksRUFBRSxHQUFRO1FBQ3pDLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQW5OVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixpcUJBNEJkLGlCQUFpQiw2QkNuRHBDLG1oYUFnVU07OzJGRHpTTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTs4QkFVaEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNNkIsU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBQ2QsVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUdsQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZW51SXRlbUNvbW1hbmRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcblxuaW1wb3J0IHsgS3ZNZW51SXRlbSB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL2t2LW1lbnVpdGVtJztcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2FwaS9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2t2LXRyZWUtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4va3YtdHJlZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBLdlRyZWV0YWJsZUNvbXBvbmVudCB7XG5cbiAgbWVudUl0ZW1zOiBLdk1lbnVJdGVtW10gPSBbXTtcbiAgdGFtYW5ob1RlbGEhOiBudW1iZXI7XG4gIGNvbW1hbmRFdmVudCE6IE1lbnVJdGVtQ29tbWFuZEV2ZW50O1xuXG4gIEBJbnB1dCgpIGNvbmZpZyE6IGFueTtcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcbiAgQElucHV0KCkgZ3JpZExpbmVzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFjb2VzTGluaGFUYWJlbGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGFibGVDYXB0YWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBwYWdpbmF0b3IgPSBmYWxzZTtcbiAgQElucHV0KCkgcm93cyA9IDEwXG4gIEBJbnB1dCgpIHBhZ2VMaW5rcyA9IDJcbiAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEljb24gPSBmYWxzZVxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMhOiBudW1iZXI7XG5cbiAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbUxvdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XG4gIEBJbnB1dCgndGVtcGxhdGVzJykgX3RlbXBsYXRlcyE6IGFueTtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93RGF0YTogYW55KSB7XG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW0uZW1pdChyb3dEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVJdGVtTG90ZShyb3dEYXRhOiBhbnkpIHtcbiAgICB0aGlzLm9uQWN0aXZlSXRlbUxvdGUuZW1pdChyb3dEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVHJlZVRhYmxlLCBldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xuICB9XG5cbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgbGV0IHBhZ2luYUluaWNpYWwgPVxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcbiAgICAgIGxldCBvcmRlbmFjYW8gPSAnJztcblxuICAgICAgaWYgKCRldmVudC5nbG9iYWxGaWx0ZXIpIHRlcm1vUGVzcXVpc2EgPSAkZXZlbnQuZ2xvYmFsRmlsdGVyO1xuXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7JGV2ZW50LnNvcnRGaWVsZH0gJHskZXZlbnQuc29ydE9yZGVyID09PSAxID8gJ0FTQycgOiAnREVTQydcbiAgICAgICAgICB9YDtcblxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xuICAgICAgICBwYWdpbmFJbmljaWFsOiBwYWdpbmFJbmljaWFsLFxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcbiAgICAgICAgdGVybW9QZXNxdWlzYTogdGVybW9QZXNxdWlzYSxcbiAgICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm9uUGFnaW5hdGUuZW1pdChvYmpldG8pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVyblN0eWxlUm93KGNvbDogYW55LCByb3dOb2RlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzRmlyc3RDb2x1bW4gPSBjb2wuZmllbGQgPT09IHRoaXMuY29uZmlnLmNvbHVtbnNbMF0uZmllbGQ7XG4gICAgY29uc3QgYmFzZU9wYWNpdHkgPSAxO1xuICAgIGNvbnN0IG1heExldmVscyA9IDQ7XG5cbiAgICBpZiAoaXNGaXJzdENvbHVtbiAmJiByb3dOb2RlLmxldmVsID49IDApIHtcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBiYXNlT3BhY2l0eSAtIChyb3dOb2RlLmxldmVsIC8gbWF4TGV2ZWxzKTtcblxuICAgICAgcmV0dXJuIGBib3JkZXItbGVmdDogc29saWQgNHB4IHJnYmEoNTksIDExMCwgMTU4LCAke29wYWNpdHl9KSAhaW1wb3J0YW50O2A7XG4gICAgfVxuXG4gICAgaWYgKHJvd05vZGUubGV2ZWwgPT0gMClcbiAgICAgIHJldHVybiAnYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQnXG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhbGlnbkNvbHVuYXNIZWFkZXIoY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb2wuYWxpZ24pIHtcbiAgICAgIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQ6IGVuZCc7XG4gICAgICBlbHNlIHJldHVybiAnJztcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xuICB9XG4gIGNlbnRyYWxpemFyQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKGNvbC5jZW50cmFsaXplKSB7XG4gICAgICByZXR1cm4gJ3RleHQtYWxpZ246IGNlbnRlcjsgJztcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xuICB9XG4gIGFsaWduQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKGNvbC5hbGlnbikge1xuICAgICAgcmV0dXJuIGB0ZXh0LWFsaWduOiAke2NvbC5hbGlnbn1gO1xuICAgIH0gZWxzZSByZXR1cm4gJyc7XG4gIH1cblxuICBjcmlhck1lbnVzTW9kYWwoZGF0YTogYW55KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnMgJiYgZGF0YSkge1xuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCgoYWN0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdpY29uJyk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAndG9vbHRpcCcpO1xuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSB0aGlzLnJldG9ybmFyQ2FtcG8oXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgJ3Rvb2x0aXBQb3NpdGlvbidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnbGFiZWwnKTtcbiAgICAgICAgY29uc3QgY29tbWFuZDogYW55ID0gdGhpcy5yZXRvcm5hckNhbXBvKGFjdGlvbiwgZGF0YSwgJ2NvbW1hbmQnKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZTogYm9vbGVhbiA9IGFjdGlvbi52aXNpYmxlID8gYWN0aW9uLnZpc2libGUoZGF0YSkgOiB0cnVlO1xuICAgICAgICBjb25zdCBkaXNhYmxlZDogYm9vbGVhbiA9IGFjdGlvbi5kaXNhYmxlZFxuICAgICAgICAgID8gYWN0aW9uLmRpc2FibGVkKGRhdGEpXG4gICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0OiBLdk1lbnVJdGVtID0ge1xuICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIGljb24sXG4gICAgICAgICAgdG9vbHRpcCxcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb24sXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICB2aXNpYmxlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5tZW51SXRlbXMuZmlsdGVyKFxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LmxhYmVsICE9IGl0ZW1bMF0ubGFiZWwpIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LnZpc2libGUgIT0gaXRlbVswXS52aXNpYmxlKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldG9ybmFyQ2FtcG8oYWN0aW9uOiBLdk1lbnVJdGVtLCByb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9mdW5jdGlvbiA9IGFjdGlvbi5keW5hbWljZmllbGRzXG4gICAgICA/IChhY3Rpb24uZHluYW1pY2ZpZWxkc1tmaWVsZF0gYXMgRnVuY3Rpb24pXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPSBfZnVuY3Rpb25cbiAgICAgID8gX2Z1bmN0aW9uLmFwcGx5KGFjdGlvbiwgW3Jvd0RhdGFdKVxuICAgICAgOiBhY3Rpb25bZmllbGRdO1xuICAgIHJldHVybiBfZmllbGQ7XG4gIH1cblxuICBleGliaXJDYW1wbyhmaWVsZDogYW55LCByb3dEYXRhOiBhbnkpIHtcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24ocm93Tm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnNQYWkgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgZWxzZSByZXR1cm4gdHJ1ZVxuICB9XG5cblxuICBkb3VibGVDbGljayhlOiBhbnksIHJvd0RhdGE6IGFueSkge1xuXG4gICAgbGV0IGV2ZW50RG91YmxlQ2xpY2sgPSB7IGV2ZW50OiBlLCByb3dEYXRhOiByb3dEYXRhIH07XG5cbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgZS50YXJnZXQuY2xhc3NMaXN0LmZvckVhY2goKHg6IGFueSkgPT4gYXJyYXkucHVzaCh4KSk7XG5cbiAgICAvLyBpZiAoYXJyYXkuZmluZCgoeDogYW55KSA9PiB4ID09ICduZy1zdGFyLWluc2VydGVkJykgIT0gdW5kZWZpbmVkKVxuICAgIHRoaXMuZG91YmxlQ2xpY2tFdmVudC5lbWl0KGV2ZW50RG91YmxlQ2xpY2spO1xuICB9XG5cbiAgaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGE6IGFueSwgcm93Tm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxuICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICBnZXRDdXN0b21UZW1wbGF0ZSh0ZW1wbGF0ZW5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcbiAgfVxuXG4gIHZhbGlkYXRlU2hvd1RlbXBsYXRlKHJvd05vZGU6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xuICAgICAgaWYgKGNvbC50ZW1wbGF0ZU9ubHkgPT09ICdwYWknKSB7XG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNvbC50ZW1wbGF0ZU9ubHkgPT09ICdmaWxobycpIHtcbiAgICAgICAgcmV0dXJuIHJvd05vZGUubGV2ZWwgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCI8ZGl2PlxuICAgIDxwLXRyZWVUYWJsZVxuICAgICAgICAjdHRcbiAgICAgICAgW3ZhbHVlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXG4gICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxuICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICc1MHJlbSd9XCJcbiAgICAgICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXG4gICAgICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LCAxMCwgMjUsIDUwXVwiXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiXG4gICAgICAgIFtzdHlsZUNsYXNzXT1cImdyaWRMaW5lcyA/ICdwLXRyZWV0YWJsZS1ncmlkbGluZXMnIDogJydcIlxuICAgICAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcbiAgICAgICAgKG9uTGF6eUxvYWQpPVwicGFnaW5hdGUoJGV2ZW50KVwiXG4gICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IGRlIHt7IHRvdGFsUmVjb3JkcyB9fVwiXG4gICAgPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiY2FwdGlvblwiXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVDYXRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIGNvbC0xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcudGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zbSBtYi00IGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLnN1YnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBtZDpjb2wtNiBsZzpjb2wtNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHt7dGFtYW5ob1RlbGEgPCA3NjggPyAnJyA6ICdpbnB1dC1zZWFyY2gnfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZUZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHR0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTJyZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb2wtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zTG90ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bnMtb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFjdGlvbkxvdGVCdG5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IGFjdGlvbi5zaG93QWNvZXNMb3RlKSAmJlxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbj8uY29tbWFuZChjb21tYW5kRXZlbnQpOyBhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAndG9vbHRpcCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAnYnRuQ29sb3InKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2Rpc2FibGVkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtZC0yMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJcbiAgICAgICAgICAgICAgICAgIHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCAnaWNvbkJ0bkNvbG9yJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsIFwiaWNvblwiKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgcFRlbXBsYXRlPVwiaGVhZGVyXCJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5dPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGZsZXg6IGkgPT0gMCwgJ2dhcC0zJzogaSA9PSAwIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PSAwICYmIGNvbmZpZy5lbmFibGVTZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiPjwvcC10cmVlVGFibGVIZWFkZXJDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSAmJiBhbGlnbkNvbHVuYXNIZWFkZXIoY29sKSA9PSAnJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93J1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImFsaWduQ29sdW5hc0hlYWRlcihjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaGVhZGVyVG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImNvbC5oZWFkZXJUb29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxuICAgICAgICAgICAgbGV0LWNvbHVtbnNcbiAgICAgICAgPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICB0dFJlc2l6YWJsZUNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbC5jZW50cmFsaXplID8gJ3RleHQtYWxpZ246IGNlbnRlcjsnIDogJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fSA8YnI+XG4gICAgICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgICAgICAgbGV0LXJvd05vZGVcbiAgICAgICAgICAgIGxldC1yb3dEYXRhPVwicm93RGF0YVwiXG4gICAgICAgICAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICBbdHRSb3ddPVwicm93Tm9kZVwiXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImRvdWJsZUNsaWNrKCRldmVudCwgcm93RGF0YSlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NhcGl0YWxpemUnOiB0YWJsZUNhcHRhbGl6ZWQgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgIGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwicmV0dXJuU3R5bGVSb3coY29sLCByb3dOb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCJyb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwicm93Tm9kZS5sZXZlbCAhPT0gMCA/IHJvd05vZGUubGV2ZWwqMzAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgIHt7Y29sLmJvb2xlYW4gPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnJyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpID09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhLCByb3dOb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlU2VsZWN0ID09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlQ2hlY2tib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJpZ2h0Q29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJpZ2h0Q29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5ib29sZWFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tyb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJyd9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMS4xcmVtO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sLmJvb2xlYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMFwiPnt7IHJvd0RhdGFbY29sLmZpZWxkXSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e3Jvd0RhdGFbY29sLnN1YnRpdGxlXX19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC50ZW1wbGF0ZSAmJiB2YWxpZGF0ZVNob3dUZW1wbGF0ZShyb3dOb2RlLCBjb2wpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwvdGQ+XG5cblxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lO1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCB8fCBjb25maWcuYWN0aW9uc1BhaVwiXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwICYmIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24ocm93Tm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY29lc0xpbmhhVGFiZWxhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSB7e2FjdGlvbi5pY29ufX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvbi5zZXZlcml0eSA/IGFjdGlvbi5zZXZlcml0eSA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInt3aWR0aDogJzJyZW0nLCBoZWlnaHQ6ICcycmVtJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24uY29tbWFuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYWNvZXNMaW5oYVRhYmVsYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIycHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2hvcml6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbChyb3dEYXRhKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLW1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1tZW51PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuYWN0aW9uc1BhaT8ubGVuZ3RoID4gMCAmJiByb3dOb2RlLmxldmVsID09IDBcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb25QYWkgb2YgY29uZmlnLmFjdGlvbnNQYWlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkge3thY3Rpb25QYWkuaWNvbn19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgPyBhY3Rpb25QYWkuc2V2ZXJpdHkgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7d2lkdGg6ICcycmVtJywgaGVpZ2h0OiAnMnJlbSd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTthY3Rpb25QYWkuY29tbWFuZCgkZXZlbnQpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwvcC10cmVlVGFibGU+XG48L2Rpdj4iXX0=
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
25
25
|
]
|
|
26
26
|
}]
|
|
27
27
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFjakUsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBVjFCLG9CQUFvQixhQUdwQixZQUFZO1lBQ1osYUFBYSxhQUdiLG9CQUFvQjsrR0FHWCxpQkFBaUIsWUFQMUIsWUFBWTtZQUNaLGFBQWE7OzJGQU1KLGlCQUFpQjtrQkFaN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBLdlRyZWV0YWJsZUNvbXBvbmVudCB9IGZyb20gJy4va3YtdHJlZS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBQcmltZU5nTW9kdWxlIH0gZnJvbSAnLi4vLi4vYXBpL21vZHVsZXMvcHJpbWVuZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBLdlRyZWV0YWJsZUNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFByaW1lTmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBLdlRyZWV0YWJsZUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEt2VHJlZXRhYmxlTW9kdWxlIHsgfVxuIl19
|
|
@@ -13,11 +13,11 @@ export class KvTreeViewComponent {
|
|
|
13
13
|
this.selectedItems.emit(this.selectedFiles);
|
|
14
14
|
}
|
|
15
15
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvTreeViewComponent, selector: "kv-tree-view", inputs: { selectedFiles: "selectedFiles", selectionMode: "selectionMode", treeViewData: "treeViewData" }, outputs: { selectedItems: "selectedItems" }, ngImport: i0, template: "<div class=\"card flex flex-column align-items-center justify-content-center\">\
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvTreeViewComponent, selector: "kv-tree-view", inputs: { selectedFiles: "selectedFiles", selectionMode: "selectionMode", treeViewData: "treeViewData" }, outputs: { selectedItems: "selectedItems" }, ngImport: i0, template: "<div class=\"card flex flex-column align-items-center justify-content-center\">\n <p-tree\n [value]=\"treeViewData\"\n [selectionMode]=\"selectionMode\"\n class=\"w-full\"\n [(selection)]=\"selectedFiles\"\n (selectionChange)=\"onSelectionChange()\"\n ></p-tree>\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }] }); }
|
|
17
17
|
}
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreeViewComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ selector: 'kv-tree-view', template: "<div class=\"card flex flex-column align-items-center justify-content-center\">\
|
|
20
|
+
args: [{ selector: 'kv-tree-view', template: "<div class=\"card flex flex-column align-items-center justify-content-center\">\n <p-tree\n [value]=\"treeViewData\"\n [selectionMode]=\"selectionMode\"\n class=\"w-full\"\n [(selection)]=\"selectedFiles\"\n (selectionChange)=\"onSelectionChange()\"\n ></p-tree>\n</div>" }]
|
|
21
21
|
}], ctorParameters: () => [], propDecorators: { selectedFiles: [{
|
|
22
22
|
type: Input
|
|
23
23
|
}], selectionMode: [{
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
27
27
|
}], selectedItems: [{
|
|
28
28
|
type: Output
|
|
29
29
|
}] } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRyZWUtdmlldy9rdi10cmVlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS12aWV3L2t2LXRyZWUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDOzs7QUFTdkIsTUFBTSxPQUFPLG1CQUFtQjtJQU85QjtRQU5TLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVEsVUFBVSxDQUFDO1FBRy9CLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEQsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUM3QyxDQUFDOzhHQWRVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJNQ2ZoQyx5VEFRTTs7MkZET08sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGNBQWM7d0RBS2YsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrdi10cmVlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4va3YtdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va3YtdHJlZS12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgS3ZUcmVlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlbGVjdGVkRmlsZXM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBhbnkgPSAnY2hlY2tib3gnO1xuICBASW5wdXQoKSB0cmVlVmlld0RhdGEhOiBUcmVlTm9kZVtdO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQodGhpcy5zZWxlY3RlZEZpbGVzKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHAtdHJlZVxuICAgICAgICBbdmFsdWVdPVwidHJlZVZpZXdEYXRhXCJcbiAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkRmlsZXNcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgID48L3AtdHJlZT5cbjwvZGl2PiJdfQ==
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
25
25
|
],
|
|
26
26
|
}]
|
|
27
27
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRyZWUtdmlldy9rdi10cmVlLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFjakUsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBVnpCLG1CQUFtQixhQUduQixZQUFZO1lBQ1osYUFBYSxhQUdiLG1CQUFtQjsrR0FHVixnQkFBZ0IsWUFQekIsWUFBWTtZQUNaLGFBQWE7OzJGQU1KLGdCQUFnQjtrQkFaNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEt2VHJlZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2t2LXRyZWUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJpbWVOZ01vZHVsZSB9IGZyb20gJy4uLy4uL2FwaS9tb2R1bGVzL3ByaW1lbmcubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgS3ZUcmVlVmlld0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFByaW1lTmdNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEt2VHJlZVZpZXdDb21wb25lbnRcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgS3Z0cmVlVmlld01vZHVsZSB7IH1cbiJdfQ==
|