keevo-components 1.5.135 → 1.5.137

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.
@@ -237,10 +237,10 @@ export class TreeTableComponent {
237
237
  }
238
238
  }
239
239
  TreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TreeTableComponent, deps: [{ token: i1.DatePipe }, { token: i1.DecimalPipe }, { token: i2.CodigoFipePipe }, { token: i2.CpfCnpjPipe }, { token: i2.TelefonePipe }], target: i0.ɵɵFactoryTarget.Component });
240
- TreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TreeTableComponent, selector: "kv-treetable", inputs: { config: "config", dataSource: "dataSource", selectedItems: "selectedItems", acoesLinhaTabela: "acoesLinhaTabela", espacamentoPai: "espacamentoPai", espacamentoLateral: "espacamentoLateral", tamanhoTotalTree: "tamanhoTotalTree", rowsPerPageOptions: "rowsPerPageOptions", rows: "rows", tableSize: "tableSize", paginator: "paginator", rightCollapse: "rightCollapse", applyStyle: "applyStyle", _templates: ["templates", "_templates"], colorButtonToggleNodes: "colorButtonToggleNodes" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: "<div>\r\n\r\n <p-treeTable #tt [value]=\"dataSource\" [columns]=\"config.columns\" [(selection)]=\"selectedItems\" [scrollable]=\"true\"\r\n selectionMode=\"checkbox\" [(selection)]=\"selectedNodes\" [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [paginator]=\"paginator\" [rows]=\"rows\" [totalRecords]=\"tamanhoTotalTree\" [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\" rowGroupMode=\"subheader\" groupRowsBy=\"id\" >\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableToggleNodes || config.enableFilter\">\r\n <div class=\"flex justify-content-between\" *ngIf=\"config.enableSelect\">\r\n\r\n <div *ngIf=\"config.enableToggleNodes\">\r\n <kv-button-personalize (click)=\"toggleNodes()\" [color]=\"colorButtonToggleNodes+ ' border-none'\" [label]=\"isExpanded ? 'Recolher Todos' : 'Expandir Todos'\" [icon]=\"isExpanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></kv-button-personalize>\r\n </div>\r\n\r\n <div class=\"p-input-icon-left\" *ngIf=\"config.enableFilter\">\r\n <i class=\"pi pi-search\"></i>\r\n <input type=\"text\" pInputText placeholder=\"Global Search\" (input)=\"onGlobalFilter(tt,$event)\" />\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"config.enableSelect\" style=\"width: 30px;\">\r\n <p-treeTableHeaderCheckbox (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </th>\r\n\r\n <th [style.width]=\"col.width\" *ngFor=\"let col of columns\" [ttSortableColumn]=\"col.sortable ? col.field : false\"\r\n [ttSortableColumnDisabled]=\"col.sortable == false\">\r\n\r\n\r\n <div [class]=\"'flex flex-row ml-2'\">\r\n {{ col.header }}\r\n\r\n <p-treeTableSortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-treeTableSortIcon>\r\n\r\n <span *ngIf=\"col.headerTooltip\" class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\">info</span>\r\n\r\n </div>\r\n </th>\r\n <th [style.width]=\"'20px'\" *ngIf=\"config.actions && config.actions.length > 0\"></th>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n\r\n\r\n <tr *ngIf=\"rowNode.level == 0\" [style.height]=\"espacamentoPai\">\r\n </tr>\r\n\r\n\r\n <tr [ttRow]=\"rowNode\">\r\n <td [style]=\"applyStyle(rowData, col)\" *ngFor=\"let col of config.columns; let i = index,\" class=\"rowTable\" [ngClass]=\"{'flex': i == 0, 'margem-filho': i == 0 && rowNode.level != 0 && espacamentoLateral }\" >\r\n\r\n\r\n <!-- // Collapse -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"!rightCollapse && i == 0\"></p-treeTableToggler>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse && i == 0\"></p-treeTableToggler>\r\n\r\n\r\n <!-- // Checkbox para multisele\u00E7\u00E3o-->\r\n <p-treeTableCheckbox (click)=\"activeItemLote(selectedItems)\" [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true && i === 0\"></p-treeTableCheckbox>\r\n\r\n <!-- // Campo com tipo booleano -->\r\n <span *ngIf=\"!isBooleanField(rowData, col); else booleanField\" [class]=\"returnRowClass(rowData, col)\">\r\n\r\n <!-- // Campo com tipo padr\u00E3o -->\r\n <span *ngIf=\"!isChipField(col) && !col.iconField && !isImageField(col) && !col.template\"\r\n [ngClass]=\"{'flex align-items-center max-w-max': i == config.columns.length-1}\">\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n\r\n <!-- // Campo com tipo imagem -->\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <!-- // Campo com tipo de chip -->\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span class=\"p-element border-null border-round-2xl chip-style p-2 text-null w-auto\"\r\n [pTooltip]=\"rowData[col.field]\">{{\r\n transformValue(rowData, col)\r\n }} teste</span>\r\n </div>\r\n\r\n </span>\r\n\r\n\r\n <!-- // Template campo booleano -->\r\n <ng-template #booleanField>\r\n <i *ngIf=\"!col.iconField\" [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n </ng-template>\r\n\r\n\r\n <!-- // Template campo personalizado -->\r\n <ng-container *ngIf=\"col.template && getCustomTemplate(col.template.name) \"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData, rowNodeLevel: rowNode.level }\">\r\n </ng-container>\r\n\r\n </td>\r\n\r\n\r\n\r\n <td *ngIf=\"config.actions && config.actions.length > 0\" style=\"width: 20px;\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\">\r\n\r\n\r\n <div *ngIf=\"!validaLinhaAcaoVazia(rowData, rowNode)\">\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"acoesLinhaTabela\">\r\n <div *ngFor=\"let action of config.actions\">\r\n <button id=\"actionBtns\" pButton *ngIf=\"exibirCampo(action, rowData)\"\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"activeItem(rowNode, rowData); action?.command()\"\r\n [pTooltip]=\"retornarCampo(action, rowData, 'tooltip')\" [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"callDisabled(action, rowData)\">\r\n <span class=\"material-symbols-outlined md-19\">\r\n {{ retornarCampo(action, rowData, \"icon\") }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"!acoesLinhaTabela\">\r\n <button id=\"moreVertBtn\" pButton class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowNode, rowData)\">\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 20px\">\r\n more_horiz\r\n </span>\r\n </button>\r\n \r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData, rowNode) }}\r\n </div>\r\n \r\n <p-menu #menu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n \r\n <!-- :: Icone de collapse na direita :: -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"rightCollapse\"></p-treeTableToggler>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </td>\r\n\r\n\r\n\r\n\r\n </tr>\r\n\r\n\r\n\r\n </ng-template>\r\n\r\n\r\n <!-- :: Template para icone de collapse na direita -->\r\n <ng-template *ngIf=\"rightCollapse\" pTemplate=\"togglericon\" let-open>\r\n <span *ngIf=\"open\" class=\"pi pi-angle-left\"></span>\r\n <span *ngIf=\"!open\" class=\"pi pi-angle-down\"></span>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n <!-- :: Hotfix do bug da vers\u00E3o 15 do primeng, ao retirar esse bloco de codigo na vers\u00E3o 15 do primeng os icones de prev e next do paginator ir\u00E3o sumir ( resolvido na vers\u00E3o 16.0) :: -->\r\n\r\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\r\n <span class=\"pi pi-angle-double-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\r\n <span class=\"pi pi-angle-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\r\n <span class=\"pi pi-angle-right\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\r\n <span class=\"pi pi-angle-double-right\"></span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + 2\" style=\"text-align: center\">\r\n Nenhum registro encontrado\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n </p-treeTable>\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: [".error-show{background-color:red;width:5px;height:10px}.input-search{position:relative;right:8px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:19px}.material-symbols-outlined.md-22{font-size:22px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}#actionLoteBtns:hover{color:#a9a9a9}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:17px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover,#moreVertBtn:hover{color:#a9a9a9}.icon-search{top:20px}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){.rowTable{text-align:right!important}}:host ::ng-deep .hiddenVisible span{visibility:hidden!important;cursor:hidden}.margem-filho{margin-left:25px!important}\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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.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: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i8.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "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", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i8.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i8.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i8.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "directive", type: i8.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i8.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i8.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }, { kind: "component", type: i9.ButtonPersonalizeComponent, selector: "kv-button-personalize" }] });
240
+ TreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TreeTableComponent, selector: "kv-treetable", inputs: { config: "config", dataSource: "dataSource", selectedItems: "selectedItems", acoesLinhaTabela: "acoesLinhaTabela", espacamentoPai: "espacamentoPai", espacamentoLateral: "espacamentoLateral", tamanhoTotalTree: "tamanhoTotalTree", rowsPerPageOptions: "rowsPerPageOptions", rows: "rows", tableSize: "tableSize", paginator: "paginator", rightCollapse: "rightCollapse", applyStyle: "applyStyle", _templates: ["templates", "_templates"], colorButtonToggleNodes: "colorButtonToggleNodes" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: "<div>\r\n\r\n <p-treeTable #tt [value]=\"dataSource\" [columns]=\"config.columns\" [(selection)]=\"selectedItems\" [scrollable]=\"true\"\r\n selectionMode=\"checkbox\" [(selection)]=\"selectedNodes\" [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [paginator]=\"paginator\" [rows]=\"rows\" [totalRecords]=\"tamanhoTotalTree\" [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\" rowGroupMode=\"subheader\" groupRowsBy=\"id\" >\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableToggleNodes || config.enableFilter\">\r\n <div class=\"flex justify-content-between\" *ngIf=\"config.enableSelect\">\r\n\r\n <div *ngIf=\"config.enableToggleNodes\">\r\n <kv-button-personalize (click)=\"toggleNodes()\" [color]=\"colorButtonToggleNodes+ ' border-none'\" [label]=\"isExpanded ? 'Recolher Todos' : 'Expandir Todos'\" [icon]=\"isExpanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></kv-button-personalize>\r\n </div>\r\n\r\n <div class=\"p-input-icon-left\" *ngIf=\"config.enableFilter\">\r\n <i class=\"pi pi-search\"></i>\r\n <input type=\"text\" pInputText placeholder=\"Global Search\" (input)=\"onGlobalFilter(tt,$event)\" />\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"config.enableSelect\" style=\"width: 30px;\">\r\n <p-treeTableHeaderCheckbox (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </th>\r\n\r\n <th [style.width]=\"col.width\" *ngFor=\"let col of columns\" [ttSortableColumn]=\"col.sortable ? col.field : false\"\r\n [ttSortableColumnDisabled]=\"col.sortable == false\">\r\n\r\n\r\n <div [class]=\"'flex flex-row ml-2'\">\r\n {{ col.header }}\r\n\r\n <p-treeTableSortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-treeTableSortIcon>\r\n\r\n <span *ngIf=\"col.headerTooltip\" class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\">info</span>\r\n\r\n </div>\r\n </th>\r\n <th [style.width]=\"'20px'\" *ngIf=\"config.actions && config.actions.length > 0\"></th>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n\r\n\r\n <tr *ngIf=\"rowNode.level == 0\" [style.height]=\"espacamentoPai\">\r\n </tr>\r\n\r\n\r\n <tr [ttRow]=\"rowNode\">\r\n <td [style]=\"applyStyle(rowData, col)\" *ngFor=\"let col of config.columns; let i = index,\" class=\"rowTable\" [ngClass]=\"{'flex': i == 0, 'margem-filho': i == 0 && rowNode.level != 0 && espacamentoLateral }\" >\r\n\r\n\r\n <!-- // Collapse -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"!rightCollapse && i == 0\"></p-treeTableToggler>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse && i == 0\"></p-treeTableToggler>\r\n\r\n\r\n <!-- // Checkbox para multisele\u00E7\u00E3o-->\r\n <p-treeTableCheckbox (click)=\"activeItemLote(selectedItems)\" [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true && i === 0\"></p-treeTableCheckbox>\r\n\r\n <!-- // Campo com tipo booleano -->\r\n <span *ngIf=\"!isBooleanField(rowData, col); else booleanField\" [class]=\"returnRowClass(rowData, col)\">\r\n\r\n <!-- // Campo com tipo padr\u00E3o -->\r\n <span *ngIf=\"!isChipField(col) && !col.iconField && !isImageField(col) && !col.template\"\r\n [ngClass]=\"{'flex align-items-center max-w-max': i == config.columns.length-1}\">\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n\r\n <!-- // Campo com tipo imagem -->\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <!-- // Campo com tipo de chip -->\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span class=\"p-element border-null border-round-2xl chip-style p-2 text-null w-auto\"\r\n [pTooltip]=\"rowData[col.field]\">{{\r\n transformValue(rowData, col)\r\n }} teste</span>\r\n </div>\r\n\r\n </span>\r\n\r\n\r\n <!-- // Template campo booleano -->\r\n <ng-template #booleanField>\r\n <i *ngIf=\"!col.iconField\" [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n </ng-template>\r\n\r\n\r\n <!-- // Template campo personalizado -->\r\n <ng-container *ngIf=\"col.template && getCustomTemplate(col.template.name) \"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData, rowNodeLevel: rowNode.level }\">\r\n </ng-container>\r\n\r\n </td>\r\n\r\n\r\n\r\n <td *ngIf=\"config.actions && config.actions.length > 0 && !validaLinhaAcaoVazia(rowData, rowNode)\" style=\"width: 20px;\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\">\r\n\r\n\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"acoesLinhaTabela\">\r\n <div *ngFor=\"let action of config.actions\">\r\n <button id=\"actionBtns\" pButton *ngIf=\"exibirCampo(action, rowData)\"\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"activeItem(rowNode, rowData); action?.command()\"\r\n [pTooltip]=\"retornarCampo(action, rowData, 'tooltip')\" [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"callDisabled(action, rowData)\">\r\n <span class=\"material-symbols-outlined md-19\">\r\n {{ retornarCampo(action, rowData, \"icon\") }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"!acoesLinhaTabela\">\r\n <button id=\"moreVertBtn\" pButton class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowNode, rowData)\">\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 20px\">\r\n more_horiz\r\n </span>\r\n </button>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData, rowNode) }}\r\n </div>\r\n\r\n <p-menu #menu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\r\n <!-- :: Icone de collapse na direita :: -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"rightCollapse\"></p-treeTableToggler>\r\n </div>\r\n\r\n </td>\r\n\r\n\r\n\r\n\r\n </tr>\r\n\r\n\r\n\r\n </ng-template>\r\n\r\n\r\n <!-- :: Template para icone de collapse na direita -->\r\n <ng-template *ngIf=\"rightCollapse\" pTemplate=\"togglericon\" let-open>\r\n <span *ngIf=\"open\" class=\"pi pi-angle-left\"></span>\r\n <span *ngIf=\"!open\" class=\"pi pi-angle-down\"></span>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n <!-- :: Hotfix do bug da vers\u00E3o 15 do primeng, ao retirar esse bloco de codigo na vers\u00E3o 15 do primeng os icones de prev e next do paginator ir\u00E3o sumir ( resolvido na vers\u00E3o 16.0) :: -->\r\n\r\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\r\n <span class=\"pi pi-angle-double-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\r\n <span class=\"pi pi-angle-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\r\n <span class=\"pi pi-angle-right\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\r\n <span class=\"pi pi-angle-double-right\"></span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + 2\" style=\"text-align: center\">\r\n Nenhum registro encontrado\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n </p-treeTable>\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: [".error-show{background-color:red;width:5px;height:10px}.input-search{position:relative;right:8px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:19px}.material-symbols-outlined.md-22{font-size:22px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}#actionLoteBtns:hover{color:#a9a9a9}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:17px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover,#moreVertBtn:hover{color:#a9a9a9}.icon-search{top:20px}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){.rowTable{text-align:right!important}}:host ::ng-deep .hiddenVisible span{visibility:hidden!important;cursor:hidden}.margem-filho{margin-left:25px!important}\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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.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: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i8.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "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", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i8.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i8.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i8.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "directive", type: i8.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i8.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i8.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }, { kind: "component", type: i9.ButtonPersonalizeComponent, selector: "kv-button-personalize" }] });
241
241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TreeTableComponent, decorators: [{
242
242
  type: Component,
243
- args: [{ selector: 'kv-treetable', template: "<div>\r\n\r\n <p-treeTable #tt [value]=\"dataSource\" [columns]=\"config.columns\" [(selection)]=\"selectedItems\" [scrollable]=\"true\"\r\n selectionMode=\"checkbox\" [(selection)]=\"selectedNodes\" [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [paginator]=\"paginator\" [rows]=\"rows\" [totalRecords]=\"tamanhoTotalTree\" [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\" rowGroupMode=\"subheader\" groupRowsBy=\"id\" >\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableToggleNodes || config.enableFilter\">\r\n <div class=\"flex justify-content-between\" *ngIf=\"config.enableSelect\">\r\n\r\n <div *ngIf=\"config.enableToggleNodes\">\r\n <kv-button-personalize (click)=\"toggleNodes()\" [color]=\"colorButtonToggleNodes+ ' border-none'\" [label]=\"isExpanded ? 'Recolher Todos' : 'Expandir Todos'\" [icon]=\"isExpanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></kv-button-personalize>\r\n </div>\r\n\r\n <div class=\"p-input-icon-left\" *ngIf=\"config.enableFilter\">\r\n <i class=\"pi pi-search\"></i>\r\n <input type=\"text\" pInputText placeholder=\"Global Search\" (input)=\"onGlobalFilter(tt,$event)\" />\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"config.enableSelect\" style=\"width: 30px;\">\r\n <p-treeTableHeaderCheckbox (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </th>\r\n\r\n <th [style.width]=\"col.width\" *ngFor=\"let col of columns\" [ttSortableColumn]=\"col.sortable ? col.field : false\"\r\n [ttSortableColumnDisabled]=\"col.sortable == false\">\r\n\r\n\r\n <div [class]=\"'flex flex-row ml-2'\">\r\n {{ col.header }}\r\n\r\n <p-treeTableSortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-treeTableSortIcon>\r\n\r\n <span *ngIf=\"col.headerTooltip\" class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\">info</span>\r\n\r\n </div>\r\n </th>\r\n <th [style.width]=\"'20px'\" *ngIf=\"config.actions && config.actions.length > 0\"></th>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n\r\n\r\n <tr *ngIf=\"rowNode.level == 0\" [style.height]=\"espacamentoPai\">\r\n </tr>\r\n\r\n\r\n <tr [ttRow]=\"rowNode\">\r\n <td [style]=\"applyStyle(rowData, col)\" *ngFor=\"let col of config.columns; let i = index,\" class=\"rowTable\" [ngClass]=\"{'flex': i == 0, 'margem-filho': i == 0 && rowNode.level != 0 && espacamentoLateral }\" >\r\n\r\n\r\n <!-- // Collapse -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"!rightCollapse && i == 0\"></p-treeTableToggler>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse && i == 0\"></p-treeTableToggler>\r\n\r\n\r\n <!-- // Checkbox para multisele\u00E7\u00E3o-->\r\n <p-treeTableCheckbox (click)=\"activeItemLote(selectedItems)\" [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true && i === 0\"></p-treeTableCheckbox>\r\n\r\n <!-- // Campo com tipo booleano -->\r\n <span *ngIf=\"!isBooleanField(rowData, col); else booleanField\" [class]=\"returnRowClass(rowData, col)\">\r\n\r\n <!-- // Campo com tipo padr\u00E3o -->\r\n <span *ngIf=\"!isChipField(col) && !col.iconField && !isImageField(col) && !col.template\"\r\n [ngClass]=\"{'flex align-items-center max-w-max': i == config.columns.length-1}\">\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n\r\n <!-- // Campo com tipo imagem -->\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <!-- // Campo com tipo de chip -->\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span class=\"p-element border-null border-round-2xl chip-style p-2 text-null w-auto\"\r\n [pTooltip]=\"rowData[col.field]\">{{\r\n transformValue(rowData, col)\r\n }} teste</span>\r\n </div>\r\n\r\n </span>\r\n\r\n\r\n <!-- // Template campo booleano -->\r\n <ng-template #booleanField>\r\n <i *ngIf=\"!col.iconField\" [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n </ng-template>\r\n\r\n\r\n <!-- // Template campo personalizado -->\r\n <ng-container *ngIf=\"col.template && getCustomTemplate(col.template.name) \"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData, rowNodeLevel: rowNode.level }\">\r\n </ng-container>\r\n\r\n </td>\r\n\r\n\r\n\r\n <td *ngIf=\"config.actions && config.actions.length > 0\" style=\"width: 20px;\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\">\r\n\r\n\r\n <div *ngIf=\"!validaLinhaAcaoVazia(rowData, rowNode)\">\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"acoesLinhaTabela\">\r\n <div *ngFor=\"let action of config.actions\">\r\n <button id=\"actionBtns\" pButton *ngIf=\"exibirCampo(action, rowData)\"\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"activeItem(rowNode, rowData); action?.command()\"\r\n [pTooltip]=\"retornarCampo(action, rowData, 'tooltip')\" [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"callDisabled(action, rowData)\">\r\n <span class=\"material-symbols-outlined md-19\">\r\n {{ retornarCampo(action, rowData, \"icon\") }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"!acoesLinhaTabela\">\r\n <button id=\"moreVertBtn\" pButton class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowNode, rowData)\">\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 20px\">\r\n more_horiz\r\n </span>\r\n </button>\r\n \r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData, rowNode) }}\r\n </div>\r\n \r\n <p-menu #menu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n \r\n <!-- :: Icone de collapse na direita :: -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"rightCollapse\"></p-treeTableToggler>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </td>\r\n\r\n\r\n\r\n\r\n </tr>\r\n\r\n\r\n\r\n </ng-template>\r\n\r\n\r\n <!-- :: Template para icone de collapse na direita -->\r\n <ng-template *ngIf=\"rightCollapse\" pTemplate=\"togglericon\" let-open>\r\n <span *ngIf=\"open\" class=\"pi pi-angle-left\"></span>\r\n <span *ngIf=\"!open\" class=\"pi pi-angle-down\"></span>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n <!-- :: Hotfix do bug da vers\u00E3o 15 do primeng, ao retirar esse bloco de codigo na vers\u00E3o 15 do primeng os icones de prev e next do paginator ir\u00E3o sumir ( resolvido na vers\u00E3o 16.0) :: -->\r\n\r\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\r\n <span class=\"pi pi-angle-double-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\r\n <span class=\"pi pi-angle-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\r\n <span class=\"pi pi-angle-right\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\r\n <span class=\"pi pi-angle-double-right\"></span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + 2\" style=\"text-align: center\">\r\n Nenhum registro encontrado\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n </p-treeTable>\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: [".error-show{background-color:red;width:5px;height:10px}.input-search{position:relative;right:8px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:19px}.material-symbols-outlined.md-22{font-size:22px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}#actionLoteBtns:hover{color:#a9a9a9}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:17px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover,#moreVertBtn:hover{color:#a9a9a9}.icon-search{top:20px}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){.rowTable{text-align:right!important}}:host ::ng-deep .hiddenVisible span{visibility:hidden!important;cursor:hidden}.margem-filho{margin-left:25px!important}\n"] }]
243
+ args: [{ selector: 'kv-treetable', template: "<div>\r\n\r\n <p-treeTable #tt [value]=\"dataSource\" [columns]=\"config.columns\" [(selection)]=\"selectedItems\" [scrollable]=\"true\"\r\n selectionMode=\"checkbox\" [(selection)]=\"selectedNodes\" [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [paginator]=\"paginator\" [rows]=\"rows\" [totalRecords]=\"tamanhoTotalTree\" [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\" rowGroupMode=\"subheader\" groupRowsBy=\"id\" >\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableToggleNodes || config.enableFilter\">\r\n <div class=\"flex justify-content-between\" *ngIf=\"config.enableSelect\">\r\n\r\n <div *ngIf=\"config.enableToggleNodes\">\r\n <kv-button-personalize (click)=\"toggleNodes()\" [color]=\"colorButtonToggleNodes+ ' border-none'\" [label]=\"isExpanded ? 'Recolher Todos' : 'Expandir Todos'\" [icon]=\"isExpanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></kv-button-personalize>\r\n </div>\r\n\r\n <div class=\"p-input-icon-left\" *ngIf=\"config.enableFilter\">\r\n <i class=\"pi pi-search\"></i>\r\n <input type=\"text\" pInputText placeholder=\"Global Search\" (input)=\"onGlobalFilter(tt,$event)\" />\r\n </div>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngIf=\"config.enableSelect\" style=\"width: 30px;\">\r\n <p-treeTableHeaderCheckbox (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </th>\r\n\r\n <th [style.width]=\"col.width\" *ngFor=\"let col of columns\" [ttSortableColumn]=\"col.sortable ? col.field : false\"\r\n [ttSortableColumnDisabled]=\"col.sortable == false\">\r\n\r\n\r\n <div [class]=\"'flex flex-row ml-2'\">\r\n {{ col.header }}\r\n\r\n <p-treeTableSortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-treeTableSortIcon>\r\n\r\n <span *ngIf=\"col.headerTooltip\" class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\">info</span>\r\n\r\n </div>\r\n </th>\r\n <th [style.width]=\"'20px'\" *ngIf=\"config.actions && config.actions.length > 0\"></th>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n\r\n\r\n <tr *ngIf=\"rowNode.level == 0\" [style.height]=\"espacamentoPai\">\r\n </tr>\r\n\r\n\r\n <tr [ttRow]=\"rowNode\">\r\n <td [style]=\"applyStyle(rowData, col)\" *ngFor=\"let col of config.columns; let i = index,\" class=\"rowTable\" [ngClass]=\"{'flex': i == 0, 'margem-filho': i == 0 && rowNode.level != 0 && espacamentoLateral }\" >\r\n\r\n\r\n <!-- // Collapse -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"!rightCollapse && i == 0\"></p-treeTableToggler>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse && i == 0\"></p-treeTableToggler>\r\n\r\n\r\n <!-- // Checkbox para multisele\u00E7\u00E3o-->\r\n <p-treeTableCheckbox (click)=\"activeItemLote(selectedItems)\" [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true && i === 0\"></p-treeTableCheckbox>\r\n\r\n <!-- // Campo com tipo booleano -->\r\n <span *ngIf=\"!isBooleanField(rowData, col); else booleanField\" [class]=\"returnRowClass(rowData, col)\">\r\n\r\n <!-- // Campo com tipo padr\u00E3o -->\r\n <span *ngIf=\"!isChipField(col) && !col.iconField && !isImageField(col) && !col.template\"\r\n [ngClass]=\"{'flex align-items-center max-w-max': i == config.columns.length-1}\">\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n\r\n <!-- // Campo com tipo imagem -->\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <!-- // Campo com tipo de chip -->\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span class=\"p-element border-null border-round-2xl chip-style p-2 text-null w-auto\"\r\n [pTooltip]=\"rowData[col.field]\">{{\r\n transformValue(rowData, col)\r\n }} teste</span>\r\n </div>\r\n\r\n </span>\r\n\r\n\r\n <!-- // Template campo booleano -->\r\n <ng-template #booleanField>\r\n <i *ngIf=\"!col.iconField\" [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n </ng-template>\r\n\r\n\r\n <!-- // Template campo personalizado -->\r\n <ng-container *ngIf=\"col.template && getCustomTemplate(col.template.name) \"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData, rowNodeLevel: rowNode.level }\">\r\n </ng-container>\r\n\r\n </td>\r\n\r\n\r\n\r\n <td *ngIf=\"config.actions && config.actions.length > 0 && !validaLinhaAcaoVazia(rowData, rowNode)\" style=\"width: 20px;\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\">\r\n\r\n\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"acoesLinhaTabela\">\r\n <div *ngFor=\"let action of config.actions\">\r\n <button id=\"actionBtns\" pButton *ngIf=\"exibirCampo(action, rowData)\"\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"activeItem(rowNode, rowData); action?.command()\"\r\n [pTooltip]=\"retornarCampo(action, rowData, 'tooltip')\" [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"callDisabled(action, rowData)\">\r\n <span class=\"material-symbols-outlined md-19\">\r\n {{ retornarCampo(action, rowData, \"icon\") }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex flex-row justify-content-end w-full\" *ngIf=\"!acoesLinhaTabela\">\r\n <button id=\"moreVertBtn\" pButton class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowNode, rowData)\">\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 20px\">\r\n more_horiz\r\n </span>\r\n </button>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData, rowNode) }}\r\n </div>\r\n\r\n <p-menu #menu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\r\n <!-- :: Icone de collapse na direita :: -->\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"rightCollapse\"></p-treeTableToggler>\r\n </div>\r\n\r\n </td>\r\n\r\n\r\n\r\n\r\n </tr>\r\n\r\n\r\n\r\n </ng-template>\r\n\r\n\r\n <!-- :: Template para icone de collapse na direita -->\r\n <ng-template *ngIf=\"rightCollapse\" pTemplate=\"togglericon\" let-open>\r\n <span *ngIf=\"open\" class=\"pi pi-angle-left\"></span>\r\n <span *ngIf=\"!open\" class=\"pi pi-angle-down\"></span>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n <!-- :: Hotfix do bug da vers\u00E3o 15 do primeng, ao retirar esse bloco de codigo na vers\u00E3o 15 do primeng os icones de prev e next do paginator ir\u00E3o sumir ( resolvido na vers\u00E3o 16.0) :: -->\r\n\r\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\r\n <span class=\"pi pi-angle-double-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\r\n <span class=\"pi pi-angle-left\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\r\n <span class=\"pi pi-angle-right\"></span>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\r\n <span class=\"pi pi-angle-double-right\"></span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length + 2\" style=\"text-align: center\">\r\n Nenhum registro encontrado\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n\r\n </p-treeTable>\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: [".error-show{background-color:red;width:5px;height:10px}.input-search{position:relative;right:8px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:19px}.material-symbols-outlined.md-22{font-size:22px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}#actionLoteBtns:hover{color:#a9a9a9}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:17px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover,#moreVertBtn:hover{color:#a9a9a9}.icon-search{top:20px}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){.rowTable{text-align:right!important}}:host ::ng-deep .hiddenVisible span{visibility:hidden!important;cursor:hidden}.margem-filho{margin-left:25px!important}\n"] }]
244
244
  }], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i1.DecimalPipe }, { type: i2.CodigoFipePipe }, { type: i2.CpfCnpjPipe }, { type: i2.TelefonePipe }]; }, propDecorators: { config: [{
245
245
  type: Input
246
246
  }], dataSource: [{
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
287
287
  }], onActiveItemLote: [{
288
288
  type: Output
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVlLXRhYmxlL2t2LXRyZWV0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvdHJlZS10YWJsZS9rdi10cmVldGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQXFDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8xSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFhckUsTUFBTSxPQUFPLGtCQUFrQjtJQXdDN0IsWUFDbUIsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDeEIsWUFBMEI7UUFKMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUF6Q3BDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRTFCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUVqQyxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQUMvQix1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFJbkMsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUVqQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLGtCQUFhLEdBQVcsS0FBSyxDQUFDO1FBQzlCLGVBQVUsR0FBYSxDQUFDLE9BQVksRUFBRSxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFJcEUsMkJBQXNCLEdBQVcsYUFBYSxDQUFDO1FBSzlDLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuRSxnQkFBVyxHQUFHLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLENBQUM7UUFHekQsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFDN0IsZUFBVSxHQUFVLDBxUEFBMHFQLENBQUM7UUFFL3JQLGVBQVUsR0FBVyxLQUFLLENBQUM7SUFReEIsQ0FBQztJQUVKLFFBQVE7SUFDUixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWdCLEVBQUUsS0FBWTtRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsWUFBWSxDQUFFLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQVc7UUFDekIsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLGFBQWEsR0FDZixDQUFDLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUVuQixJQUFJLE1BQU0sQ0FBQyxZQUFZO2dCQUFFLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRTdELElBQUksTUFBTSxDQUFDLFNBQVM7Z0JBQ2xCLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFDbEUsRUFBRSxDQUFDO1lBRVAsTUFBTSxNQUFNLEdBQWtCO2dCQUM1QixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUMxQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsU0FBUyxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFZLEVBQUUsR0FBc0I7UUFDakQsT0FBTyxHQUFHLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQXNCO1FBQ2hDLE9BQU8sR0FBRyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFzQjtRQUNqQyxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN4RSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0QsY0FBYyxDQUFDLE9BQVksRUFBRSxHQUFzQjtRQUNqRCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksUUFBZ0IsQ0FBQztRQUVyQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDUjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxjQUFjLENBQUMsT0FBWSxFQUFFLEdBQXNCO1FBQ2pELElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUNiLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssTUFBTTtvQkFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDdEQsS0FBSyxTQUFTO29CQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDN0QsS0FBSyxTQUFTO29CQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLEtBQUssVUFBVTtvQkFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLFlBQVk7b0JBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxPQUFPO29CQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsS0FBSyxZQUFZO29CQUNmLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztnQkFFdEI7b0JBQ0UsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQWE7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUMvQyxLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUFZLEVBQUUsR0FBc0I7UUFDNUM7O1VBRUU7UUFDRixJQUFJLE9BQU8sR0FBRywwQkFBMEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFELElBQUksT0FBTyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNyQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Z0JBRTdCLE9BQU8sR0FBRywwQkFBMEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQzVEO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQW9CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVUsRUFBRSxPQUFZO1FBQ2xDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ00sVUFBVSxDQUFDLE9BQVksRUFBRSxPQUFZO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ00sY0FBYyxDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCLEVBQUUsT0FBWSxFQUFFLEtBQWE7UUFDM0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWE7WUFDcEMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFjO1lBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxNQUFNLE1BQU0sR0FBVyxTQUFTO1lBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFrQixFQUFFLElBQVM7UUFDeEMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFO1lBQ3BCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUFTLEVBQUUsT0FBVztRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxPQUFPLEdBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLE9BQU8sR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMvRSxNQUFNLFFBQVEsR0FBWSxNQUFNLENBQUMsUUFBUTtvQkFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUN2QixDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUVWLE1BQU0sVUFBVSxHQUFlO29CQUM3QixLQUFLO29CQUNMLElBQUk7b0JBQ0osT0FBTztvQkFDUCxPQUFPO29CQUNQLFFBQVE7b0JBQ1IsT0FBTztpQkFDUixDQUFDO2dCQUVGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUM5QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUN2QyxDQUFDO2dCQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO29CQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUNqRDtvQkFDSCxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTt3QkFDckMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakM7b0JBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7d0JBQ3pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ2pDO29CQUVELElBQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO3dCQUMzQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNqQztpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBWTtRQUMzQixPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBWSxFQUFFLE9BQVk7UUFDN0MsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUNqQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQzthQUMvQztpQkFBTTtnQkFDSCxPQUFPLElBQUksQ0FBQyxDQUFDLGlEQUFpRDthQUNqRTtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxJQUFjLEVBQUUsUUFBaUI7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOzsrR0FyUlUsa0JBQWtCO21HQUFsQixrQkFBa0IsNHJCQXdCWixpQkFBaUIsNkhDN0NwQyx1bVNBeU5BOzJGRHBNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsY0FBYzsyTUFNZixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVjLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVztnQkFFVCxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRThCLFNBQVM7c0JBQTVDLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUNLLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFM0IsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvZGlnb0ZpcGVQaXBlLCBDcGZDbnBqUGlwZSwgS3ZNZW51SXRlbSwgVGFibGVDb25maWcsIFRhYmxlQ29uZmlnQ29sdW1uLCBUYWJsZVBhZ2luYXRlLCBUZWxlZm9uZVBpcGUgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuaW50ZXJmYWNlIENvbHVtbiB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi10cmVldGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi10cmVldGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWV0YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogVGFibGVDb25maWc7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IFRyZWVOb2RlW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYWNvZXNMaW5oYVRhYmVsYTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGVzcGFjYW1lbnRvUGFpOiBzdHJpbmcgPSAnMnB4JztcclxuICBASW5wdXQoKSBlc3BhY2FtZW50b0xhdGVyYWw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB0YW1hbmhvVG90YWxUcmVlITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9ucyE6IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgdGFibGVTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHJpZ2h0Q29sbGFwc2U6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwcGx5U3R5bGU6IEZ1bmN0aW9uID0gKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4gJyc7XHJcblxyXG4gIEBJbnB1dCgndGVtcGxhdGVzJykgX3RlbXBsYXRlcyE6IGFueTtcclxuXHJcbiAgQElucHV0KCkgY29sb3JCdXR0b25Ub2dnbGVOb2Rlczogc3RyaW5nID0gXCJzdXJmYWNlLTYwMFwiO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZSE6IFRhYmxlO1xyXG5cclxuICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2luYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtTG90ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5vZGVDb250ZXh0ID0geyRpbXBsaWNpdDogJ3Jvd0RhdGEnLCByb3dOb2RlOiAncm93Tm9kZSd9O1xyXG5cclxuICBzZWxlY3RlZE5vZGVzITogVHJlZU5vZGVbXTtcclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIGltZ0RlZmF1bHQ6c3RyaW5nID0gJy85ai80QUFRU2taSlJnQUJBUUlBZGdCMkFBRC80UUJpUlhocFpnQUFUVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQU1BQUFJVEFBTUFBQUFCQUFFQUFBQUFBQUFBQUFCMkFBQUFBUUFBQUhZQUFBQUIvOXNBUXdBREFnSUNBZ0lEQWdJQ0F3TURBd1FHQkFRRUJBUUlCZ1lGQmdrSUNnb0pDQWtKQ2d3UERBb0xEZ3NKQ1EwUkRRNFBFQkFSRUFvTUVoTVNFQk1QRUJBUS85c0FRd0VEQXdNRUF3UUlCQVFJRUFzSkN4QVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRLzhBQUVRZ0FrQUNRQXdFUkFBSVJBUU1SQWYvRUFCMEFBUUFCQkFNQkFBQUFBQUFBQUFBQUFBQUdBUUlIQ0FNRUNRWC94QUJCRUFBQ0FRUUFCUUlDQ0FRREJBc0FBQUFCQWdNQUJBVVJCZ2NTSVRFVFFRaFJDUlFWR1NKVmxkRXlZWUdSUWxKaUZpTTNPRk5qY1hOMWRwS1RzYk8wLzhRQUdnRUJBQUlEQVFBQUFBQUFBQUFBQUFBQUFBRUZBd1FHQXYvRUFESVJBQUlBQkFNRkNBRUZBUUVCQUFBQUFBQUJBZ01FRVNFeFVRVVNRWkh3RXhVeVlYR0JvYkhSSWpOQ3dlRTA4U1AvMmdBTUF3RUFBaEVERVFBL0FQS3FnRkFLQVVCZERETGNTcEJCRThrc2pCRVJGSlptSjBBQVBKSnFVbkU3SWh0UXE3eUo1dzl5ZHoyVmkrczVlNFhGUk11MFYwOVNVNzBSdEFSMGpSUGs5UUkwVjk2czVHeXBreFhtUGQrWC9uMzVGYk8ycEtsNFFmcWZ4eko5ak9VL0JtTzZXa3NaYjZSSkJJcjNVcE90YTBwVmVsU08zZ2c3MmQ3SGFyT1hzMm5nelYvWHBJcTQ5cFZNZkczb3Z6ZGttc01UaXNYMS9abU10TFAxZGRmb1FMSDFhM3JmU0J2V3ovZXR1Q1hCTHZ1SksrbUJweHpJNWx0OXQyMXhPM1dROENnT3BmNG5GWlRvKzA4WmFYbnBiNlByRUN5ZE85YjExQTYzb2YyckhITGdtZU5KK3FQY0V5T1hmY2JWOU1DTTVQbFB3WmtlcG83R1d4a2VReU05cktSdmU5cUZicVVMMzhBRFdoclE3VnFUTm0wOGVTdDZQLzFHNUJ0S29nNDM5VitMTWdQRVBKM1BZcUw2emlMaGNyR3E3ZEVUMDVSclpPa0pQVU5BZUQxRW5RWDNxc243S21TMXZTM3ZmRC8zNzhpMGs3VWxUSHV4cmRmeHovd2djME0xdk05dmNSUEZMRXhSMGRTckt3T2lDRDRJUHRWWTA0WFpsa21vbGRaRnRRU0tBVUFvQlFDZ0ZBU2pnL2w5bWVMWlJLRmV5c09rc2J1U0lsVzdrYVFkdXM3QkIwZERSMmQ2QjNhV2htVk9PVU92NDFOS3NyWWFWWVl4YWRYL0FOK1Ztemg3aEhBY01SQk1UWUlrcFhwZTRmOEFGSy9ZYjJ4OWowZzlJMHUvWVYwTWltbFU2dEFzZGVKenMycG16LzNJci9YU3kxMVo5bXM1Z0toVFVrWEs2RkJjYUZDTGpRb0xqUW9UY29WTkJjcFVFbnh1SWVFY0J4UkNVeTFnalNoZWxMaFB3eXAyT3RNTzVBNmllazdYZnRXQ2ZTeXFoZnJXT3ZFenlhaWJJZjhBODRyZVhEcDVYejBaaFBqSGwvbCtFWmZVSWE4c0NvSXU0NHlGVTdBMDQ3OUIyUnJaMGRqUjNzRG5hcWltVXJ1OFZyK2REb0tTdmwxS3RGYUdLK1Y4ODhzcjRLNzArU0wxcG0rS0FVQW9CUUU1NWRjdTVlSnBseXVXUjQ4VEczWWJLdGNzRDNWVDdLRDJMZjBIZlpXeW9hRjFEMzQvRDk5Y2VyVnRkWEtuWFp5L0Y5ZjdwMWZPTU1NVnZFbHZieEpIRkdvUkVSUUZWUU5BQUR3QVBhdWlTVUtzc2puVzNFN3Q0bklCODY5SGhzclFnclVBVUFvQlFDZ0ZBVXFRVUlvVGM0NW9ZcDRuZ25pU1NPUlNqbzZobFpTTkVFSHNRUjdWRFNpVm5rZWszQzdwNG1EZVluTHVYaGlWc3Jpa2VURlNOM0hjdGJNVDJWajdxVDRiK2g3NkxjNVhVTHAzMmt2dy9YK2VmVDZPaHJsVUxzNW5pKy85MTZ0QjZyU3lGQUtBbEhML0FJT2w0dXkrcENxMkZteVNYWkpPMlVudEdORUhiYUkzN0FFK2RBN2xGU3VxbVdlU3ovSHVhRmZWcW1sN3F2dlJYdDVlZVRXRjhubnBhNXNGREZGQkVrRUVTUnh4cUVSRVVCVlVEUUFBOEFEMnJxVWtsWkhNdHQ0czVRS2s4dGxhZ2dVQW9DZmNwdVJQTkxuYmtueC9MdmhhNHlFY0RCYm05Y2lLMXR0LzlKSzJsQjEzNlJ0aVBBTllaMVJMcDFlWXpQSXBwdFE3UzBiUDRUNkxianU0dEZrNGg1cVlLd3VTTm1LenNacnBBZmwxc1kvL0FJcXVpMnZBbittRmxsRHNlTnI5VVNJcnpCK2piNTI4SzJjdVI0U3llRzR0aWlCWTI5czdXMTJRUGNSeWZnUC9BR0NUWjlnYXlTdHF5WTNhSzZNVTNaTTZCWGdhWnF2bHNUbGNEa3JuRFp2RzNXUHY3T1F4WEZyZFJORkxFNDhxeU1BVlA4alZrbW9sZFpGWkZDNFhhTE02bFNRS0FVQmFSVTVrcG5ITkRGY1JQYjNFU1NSU0tVZEhVTXJLUm9nZytRYWhwTk5NOXd4T0Y3eXpOZmVZSEIwdkNPWUlqNlRZWGpQSmFFSHVxZ2phSFpKMnV3Tis0MGZPd09XcmFWMHN6RHd2TDhleDB0QlZxcGw3cjhVS1YvUHp5U3h0a3N1UkY2MHpmTG9ZWmJpVklJSW5rbGtZSWlJcExNeE9nQUI1Sk5TazRuWkVOcUZYZVJzcHduZ0l1R2VIN1REb0l6SkVuVk82QWY3eVZ1N0hZQUxEZllFamZTRkh0WFcwMGhVOHBTMTcrdlh3Y2hVVGUybXhUTWNYcS9UVjJ5eFN3dmQ1dG4yQUsyREF5Nm9JRkFLQXlwOE5YSXpKZkVCelFzdUM0SlpMWEZ3SWIzTDNpQWJndEVJRGRPKzNXeEtvdm51MnlDQWExNnFvVk5MY2ZIZ2JOSlRPcG1xRGh4UFluZ3pndmhmbDd3MVk4SWNIWWEzeG1KeDhZamd0NFYwQjgyWStXWW51V095U1NTU2E1V1pNaW14T0tOM1oxa3VYREtoVUVDc2o3ZGVEMktBMXkrTVQ0VzhOeno0TnV1SStIOGRGRHh6aHJkcGJDNGpVSzEvR2cyYldRLzR0amZRVC9DMnU0QmJlL1ExanA0OTJMd3Y0OHpRcnFOVk1HOUN2MUw1OGp5VmRIamRvNUZLc3BJWlNORUg1R3VtT1dLVUFvQlFGcEh2VWtvK054ZHc5RHhSZ0xyRXlCUks2OWR1N2FIUktQNFR2UjBOOWpvYjZTUjcxcjFVaFZFcHkzN2Vwc1UwM3NKc016VDYvdjM0MlpyWk5ETmJ6UGIzRVR4U3hNVWRIVXF5c0RvZ2crQ0Q3VnlUVGhkbWRjbW9sZFpFODVPOFBSWlhQeTVhNUN0RmlsVjFRNk81WDJFT2lEMkFWanZZSVlLYXN0bHlWTW03Ny9qOTlmSldiVXFITGxxV3Y1Y2ZKVysvcTVtK3VqT2RMcUhrclVBVUFvRDBpK2k3NFZzN1RscnhkeHI2Uy9XOGxtMXhwY2p1SXJlQkpBQjhnV3VXL3NQbFZEdGVOdVpEQm9yOWNqb05qd0pTNG85WDlmK202MVZCY0NnRkFLQThZL2kyNFZ0T0RQaVA0OHdWaEVzVnY5cC9Ya1JSb0lMbU5ManBBOWdQVzBCOHE2eWlqY3lSREU5UHJBNUd1Z1V1b2poV3YzaVlqclpOVVVBb0NsU0Myb1BSaERuRnc5RmlzL0ZsN2JvV1BLcXpzZzdhbFRRYzZBQTBReW5leVN4WW4ycm50cVNGTG1LWXY1ZmEvUDNjNlBaYzV6Slc0ODRmcmgvWlB1VStNK3p1RExhUmtsU1Mra2t1bldRYTFzOUtsUnIrRW9pa2VkNzM0SXF6MmJMM0tkUFc3NjlrVmUwbzkrb2ZsWmYzOXNtUUZiNW9NdXFEeUtBVUFvRDBiK2k2NHhzN25nUGpEZ0ZwVkYzajhzbVdWQ2U3UlR3cEVTUG1BMXVOL0xySHpxaDJ2TGFqaGo4ckhRYkhtSndSUWFPNXU3VlFYQW9CUUNnUEZ6NHFPTWJQano0aHVPdUpjZktzdHJKbEd0SUpGTzFranQwVzNWd2ZrUkVDUDVHdXNvNWJseUlZWHA5NG5JMXN4VEtpS0phL1dCaXF0azFSUUNnRkFXa1ZKS0lkell4bjJqd1hjeUtrenlXVWtkMGl4OS9CNldMRFI3QkhjKzJ0YjNvR3EvYVV0ektkMjRZOWN5dzJkTVV1b1YrT0hYdWtTWEVXSDJWaXJMR2VyNnYxTzNqZzYrbnA2dWhRdTliT3Q2OGJyY2x3ZG5Bb05GWTA1a2ZhUnVQVjM1bmRIaXNoalpXb0lGQUtBVUJrYmtCem96ZklYbVpqdVBjUkdiaUNNRzJ5Vm4xZEl1N055UFVqMzdIc3JLZlprVW5ZMkRncVpDcVpiZ1pzVTFSRlRURkdqMko1YmN6T0MrYlhDbHJ4bHdMbW9jampycFJ2cElFa0VtdG1LVlBLT045MVA4aU5nZ25sWnNxT1RGdVJyRTZ5Vk9nbnc3OER1aVUxak1nb0RWajQwdml6dzNLUGhlKzVlOEY1U080NDR5MEJnUG9QdjdKaGNhTXprZnd5bFQrQmZJSkRuc0FHc3FDaWM2SlRJMStsZkpXMTlhcEVMZ2dmNm44SGxkNXJvem1SUUNnRkFLQW8zaXBKUjBzdFlESzRxOHhabTlJWGx2SkI2blQxZEhXcFhldGpldCtOMWptUWRwQTROVTF6TWt1UHM0MUdsZXp1ZHVzaDRSY1BGRHl5dFFCUUNnRkFLQWxQTHptanpCNVVaci9hRGw1eFZmWVM5SUN5R0J3WTVsQjJGa2pZRkpGMzdNQ0t4elpNRTVic3hYTXNxZE1rUGVsdXhzbmhQcE51ZWVQdEZ0c3Z3MXdqbFpFR3ZyRDJzOE1qSDVzRWxDZjJVVlh4YkprdDROb3NJZHJ6a3NVbVJUbUQ5SUQ4UlBIVm5MamJMTTQ3aGExbUJWeGc3Wm9wbVgvdnBHZVJUL05DcHJMTDJiSWx1N1YvVXhUZHAxRXhXVHQ2R3VWemMzRjVjUzNkM1BKUFBNNWtrbGtZczdzVHNzeFBja24zTmI2VnNFVjdiZUxPT2dGQUtBVUFvQ2g4VklSYlE5Q2dSY1BGRHl5dFFCUUNnRkFTZmcvbGZ6SDVneWVud1B3TG5jNE9ycFo3R3drbGpRLzZuVWRLLzFJckhIT2x5dkhFa1pKY21aTjhFTFptREEvQUo4VCtiUlpadUJyWEZSdjNEWCtVdDFPdjVxanN3L3FCV3JGdEtuaC9sZjJOdUhabFRGL0czdVN1SDZNLzRoSlVEU1pmZ3VFLzVYeVU1SS84QVRBUldQdldSbyt2Y3lyWk0vVmRleDFiL0FPamIrSTJ6UXRidHdyZkVEK0czeWpnbi93QnlOUlVyYXNoNjhpSHNtb1duTXg5eFI4RzN4TDhKSTgyUjVUNVc2aVFiNjhZOFYvc2ZNTEF6dC9jVm5ncnFlUEtMK3Zzd1IwRlJCbkR5eCtqRU9UeGVUd3Q3SmpzeGpycXh1NFRxU0M1aGFLUkQvTldBSXJaVFVTdWpVY0xoZG1kYXBJRkFLQVVCUStLa0l0b2VqcVltL3dEdFRGV1dUOUwwdnJsdkhQMGRYVjA5YWh0YjBONjM1MVdPWEgya0NqMVNaN21RZG5HNEwzczdjanVqeFdReHNyVUVDZ01qOGtPUVBNUG43eEljRHdSamxGdmJkTFgrU3VkcmEyU0h3WFlBN1k2T2tVRmpvOXRBa1lLaXBsMDBPOUdiRlBUVEttTGRnNW5vOXliK0F2a2p5d2dndnVJc1d2R21jUUF2ZDVhSU5iSzMvVjJ1eWdIaitQcmI1RWVLb1orMFowN0NGN3E4dnlkQkkyYkprNHhMZWZuK0RZNjJ0YmF5dDQ3U3p0NG9JSWxDUnhSSUZSRkhnQURzQldnMjNpeXdTdGdqbHFBS0FVQW9DT2NhOHVPQXVZK09PSzQ3NFF4V2N0dEVLdDdiTEkwZS9kSEk2a1A4MUlOWkpjMk9VN3dPeGptU29KcXRHcm1rL1A3Nk51M2p0TG5pYmtIZlRlckdHa2ZoNi9tNnVzZkszbmJ2djVMSVR2OEF6anNEYjAyMWNkMmZ6L0pUMU95VmJla2N2d2FGWkhIWkRENUM1eFdXc3A3TzlzNVdndUxlZU1wSkZJcDB5TXA3Z2dnZ2cxZEpxSlhSU05PRjJlWjE2RUNnS0h4VWtvNldXdnhpc1ZlWlF3K3FMTzNrbjlQcTZldm9VdHJlanJldk9xeHpJK3pnY2VpYjVHU1hBNWthZ1R0ZDI1a2E1VDVNWkhndTFqWjVua3NaSkxWMmtPL0I2bENuWi9DRWRBUEd0YThBVnA3Tm1PWlRwUGhoMXpOemFNdnM2aDI0NDllNlpNUWFzQ3ZaZFVFSFp4bU91OHZrclRFMkVmcVhON1BIYndwdlhWSTdCVkg5eUtodFFxN0pTY1RzajIyNUw4cGVIT1NuTHZGY0JjT1c4WVd6aURYbHlGMDk1ZEVEMVozUGtsajQzNFVLbzdBVnlOUk9pcUpqamlPeHA1RU5QTFVFSk9hd21ZVUFvQlFDZ0ZBS0FVQm9WOUpmeVZ3OFdNeFhQSEMya2NGKzEwbUp6UHBycjZ3ckl4Z21iL1V2UVVKOGtNZzhMVjFzcW9kM0pmcWlrMnZUcXluTFBKbm41VjJVUW9DMG1wSlJEdWJHVCt6dUM3cU5YbVNTOWtqdFVhTTYxczlUQmpzZmhLSTQ5OTcxclJOViswcGpsMDd0eHc2NUcvczZXcGxRcjhNZXZkb2dISjNpQ0xGWitYRTNKVllzcXFvcm5RMU1teWcyU094RE1QQkpZcUtyTmx6MUxtN2p5aSsrQlo3VmtPWkxVeUgrUER5ZnR3NVd2NUdiNjZJNTR1cVR5U3psTC94VjRNLzh3WTcvQVBUSFdLZCsxRjZNeXlQM1lmVkh1YlhISFppZ0ZBS0FVQW9CUUNnRkFheS9TSi84cytTLzhWc1Avc3F3MlovMEwwWlhiVS81bjZvOG9hNlU1Z29lMVNDMm9QUmhEbkZ4RERsYzlGaWJib2FQRkt5TTQ3a3l2b3VOZ2thSFNvOEFodW9IMnJudHF6MU1tS1hEL0g3ZjQrN25SN0xrdVhLY2NXY1gxdy9zZ2NNMHR2S2s4RXJ4eXhzSFIwWWhsWUhZSUk4RUdxeE53dTZMSnBSS3p5TmxPRXMvSHhOdy9aNWRUR0pKVTZaMFVqOEVxOW1HZ1NWNzl3RDM2U3A5NjYybW5xb2xLTmUvcjE4SElWRXZzWjBVclQxeXpYREgxV0Y3ck5NK3dEN1ZzR0JuZndlWXZlSHMxajgvaldSYnZHWFVWNWJsMTZsRWtiaDFKSHVOZ2RxOHhRcUpPRjhSREU0V29sd05qdnZGUGlYL0FEbkJmcE1mNzFvZDJVK2o1bGgzclVhcmtQdkZQaVgvQURuQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4NXdYNlRIKzlPN0tmUjh4M3JVYXJrUHZGUGlYL09jRitreC92VHV5bjBmTWQ2MUdxNUQ3eFQ0bC96bkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmOEFPY0Yra3gvdlR1eW4wZk1kNjFHcTVEN3hUNGwvem5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjg1d1g2VEgrOU83S2ZSOHgzclVhcmtQdkZQaVgvT2NGK2t4L3ZUdXluMGZNZDYxR3E1RVA1cWZHQnpwNXljSVRjRDhiNUhGell1ZWFLNGRiZkhwRS9YR2RyK0lkL05aWk5ESmtSYjhHWmluVjA2b2czSThqQ2xiWnBscFB0VWtwSHhlTHVJWXVGOEJkWlp5aGxSZWkzUnY4Y3A3S05iR3g3blIzMGcxcjFNOVU4cHpIN2V2WHdiRlBLN2ViREwxK3Y2OThMMk5iWnBwYmlWNTU1WGtsa1l1N3V4TE14T3lTVDVKTmNrMjRuZDVuWEpLRldSYlVFa281ZjhZeThJNWNHVHBOaGVNa2QyQ0R0VkJPcEJvRTdYWk92Y0Vqem9qY29xcDBzekh3dlA4QVBzYUZmU0twbDd5dnZRM3Q1K1dPR05zK0d0cm13VU0wVnhFbHhieXBKRklvZEhSZ3lzcEd3UVI1QnJxVTdxNk9aYWF3WnlBMU9aNWFMcWdnVUFvQlFDZ0ZBS0FVQW9CUUZwTlRrU2tjYzAwVnZFOXhjU3BIRkdwZDNkZ3Fxb0d5U1Q0QXFHMGsyejNEQzRudXJNMTk1Z2NZeThYWmdtUHBGaFpzOGRvQU83S1NOeUhZQjIzU0RyMkdoNTJUeTFiVk9xbVhXU3kvSjB0QlNLbWw3ejhVU1YvTHl6YXd2bXMrUkY2MHpmRkFLQW5ITHZtSkx3eEt1S3lydkppcEc3SHV6V3pFOTJVZTZrK1YvcU8rdzFsUTF6cDMyY3p3L1grZVhUcmE2aFZRdCtYNHZ2cmgxYk9VTTBWeEVrOEVxU1JTS0hSMFlGV1VqWUlJOGdpdWpUVFYwem5HbW5abzVBZm5VbmxvclVFRmFBVUFvQlFDZ0ZBVTNxcEJRbjVVSlNPT2FhSzNpZTR1SlVqaWpVdTd1d0Nxb0d5U1Q0QUZRMmxpejBsZDJSZzNtSnpFbDRtbGJGWXAzanhVYmR6M0RYTEE5bVlleWoyWCtwNzZDODVYVnpxSHVRZUg3NjY4dWpvYUZVNjdTUHhmWFhYbkI2clN5RkFLQVVBb0NVOEg4dzgxd25Jc0pkNzdIaENnczVaU0ZUdVczR2UvUWVwaVRvYU96c2IwUnVVdGJNcG5iT0hUOGFGZlZiT2wxRjRvTFF4TjNidG5rc2NyNEt5ZkN5NFlHYmNCeFpnT0pvZzJJeU1jc2dRTzhEZmhsajdLVHRUM0lCWUFzTnJ2d1RYUlNhbVZVSzh0KzNIcjRPZm0wODZUKzVEYkYvZmxmUE5YeHRtazhENjlaekNWREdwSXNWNmhRV0d4ODZFV0d4ODZDdzZoUW14UXNhQ3hTb0pQa1ovaTNoL2htTXRsOGpIRklVTHBBdjRwWk96RWFVZHhzcVFHT2wzNUlyQlBxWlZPcnpIN2Nldmd6U3FlYlA4QTI0YjRwY01PZHNzM3h0a204RENQR1BNREw4WFMrbVMxbllCUUJhUnlrcXgyRHR6MjZ6c0RXeG9hR2h2WlBPMVZiTXFuWjRMVDg2blJVdEJMcGtuRmFLTFczcmxuYkIyZXZ3UmV0TTNoUUNnRkFLQVVBb0M2R2FXM2xTZUNWNDVZMkRvNk1ReXNEc0VFZUNEVXB1RjNSRFNpVm5rVHpoN25GbjhWRUxiTFFKbFlsWFNNNytuS093QTI0QjZoMlBrRmlUc21yS1R0U2JMVm8xdkw1NitmTXE1K3lwY3gzbHZkMTRyankrcksxaWY0em14d1hrZWxaTDZXeWtlVDAxUzZoSzc4YVlzdlVxanY1TERXanZRNzFaeTlwVTh4MnZiMTZaV3pOblZFdFh0ZjA2VCtDUzJHV3hXVkVoeGVTdGJ3UmE5VDBKbGs2TjcxdnBKMXZSL3NhM0lKa0V6d05QMGR6VGpseHk3S05OWDFPM1dROENnT3BmNWZFNHJvKzA4bmFXZnE3S2V2TXNmVnJ6cnFJMzVIOTZ4eHpJSmZqYVhxekpCTGptZUJOK2lJMWsrYS9CZU42bFMvbHZaRWxNYkpheEZ2RzlzR2JwUmw3ZVF4M3NhMk85YWN6YVZQTGRyMzlPbDhHMUwyZFVURmUxdlhwdGNpQWNRYzRzL2xZamJZbUJNVkV5NmRrZjFKVHNFSFRrQUtPNDhEcUJHdzFWay9hazJaaEIrbGZQTXRKR3lwY3Q3MHg3Mm5CY09mSHl4eTRrRG1tbXVKbnVMaVY1WlpXTHU3c1dabUoyU1NlNUpQdlZhMjRuZGxta29WWlpGdFFTS0FVQW9ELzlrPSc7XHJcblxyXG4gIGlzRXhwYW5kZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvZGlnb0ZpcGVQaXBlOiBDb2RpZ29GaXBlUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3BmQ25walBpcGU6IENwZkNucGpQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZWxlZm9uZVBpcGU6IFRlbGVmb25lUGlwZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID1cclxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9ICRldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHskZXZlbnQuc29ydEZpZWxkfSAkeyRldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ1xyXG4gICAgICAgICAgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQm9vbGVhbkZpZWxkKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5maWVsZFR5cGUgPT0gJ2Jvb2xlYW4nO1xyXG4gIH1cclxuXHJcbiAgaXNDaGlwRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5maWVsZFR5cGUgPT0gJ2NoaXAnO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXRvcm5vID0gY29sLmZpZWxkVHlwZSAmJiBjb2wuZmllbGRUeXBlID09PSAnaW1hZ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG4gIHJldHVyblJvd0NsYXNzKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG4gICAgbGV0IHJvd0NsYXNzOiBzdHJpbmc7XHJcblxyXG4gICAgdGhpcy50YWJsZVNpemUgPiA4MDAgPyAocm93Q2xhc3MgPSAndGV4dC1iYXNlJykgOiAocm93Q2xhc3MgPSAndGV4dC1zbScpO1xyXG5cclxuICAgIGlmIChjb2wuZXhwaXJlZERhdGUgPT0gdHJ1ZSkge1xyXG4gICAgICBuZXcgRGF0ZSh2YWx1ZSkgPCBuZXcgRGF0ZSgpXHJcbiAgICAgICAgPyAocm93Q2xhc3MgPSByb3dDbGFzcyArICcgdGV4dC1yZWQtNDAwIGZvbnQtc2VtaWJvbGQnKVxyXG4gICAgICAgIDogJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcm93Q2xhc3M7XHJcbiAgfVxyXG4gIHRyYW5zZm9ybVZhbHVlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICghY29sLnBpcGUpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN3aXRjaCAoY29sLnBpcGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkZWNpbWFsJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJzEuMi0yJywgJ3B0LUJSJyk7XHJcbiAgICAgICAgY2FzZSAnY3BmY25waic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcGZDbnBqUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3RlbGVmb25lJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRlbGVmb25lUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ2NvZGlnb2ZpcGUnOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29kaWdvRmlwZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRhclZhbG9yKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcclxuICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX0gJWA7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBmb3JtYXRhclZhbG9yKHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcbiAgbG9hZEltYWdlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAvKlxyXG4gICAgICBOb3NzYSBjb2x1bmEgZGUgaW1hZ2VtIHRyYWJhbGhhIGNvbSBzdHJpbmdzIGRvIHRpcG86IGJhc2U2NCBvdSB1cmxcclxuICAgICovXHJcbiAgICBsZXQgcmV0b3JubyA9IGBkYXRhOmltYWdlL2pwZztiYXNlNjQsICR7dGhpcy5pbWdEZWZhdWx0fWA7XHJcbiAgICBpZiAocm93RGF0YSAmJiBjb2wgJiYgcm93RGF0YVtjb2wuZmllbGRdICYmIHJvd0RhdGFbY29sLmZpZWxkXSAhPT0gJycpIHtcclxuICAgICAgaWYgKHJvd0RhdGFbY29sLmZpZWxkXS5pbmNsdWRlcygnaHR0cCcpKVxyXG4gICAgICAgIHJldG9ybm8gPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXRvcm5vID0gYGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCwgJHtyb3dEYXRhW2NvbC5maWVsZF19YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG4gIGV4aWJpckNhbXBvKGZpZWxkOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IHZpc2libGUgPSBmaWVsZC52aXNpYmxlID8gZmllbGQudmlzaWJsZShyb3dEYXRhKSA6IHRydWU7XHJcbiAgICByZXR1cm4gdmlzaWJsZTtcclxuICB9XHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93Tm9kZTogYW55ICxyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQoe3Jvd0RhdGE6IHJvd0RhdGEsIHJvd05vZGU6IHJvd05vZGV9KTtcclxuICB9XHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXRvcm5hckNhbXBvKGFjdGlvbjogS3ZNZW51SXRlbSwgcm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9mdW5jdGlvbiA9IGFjdGlvbi5keW5hbWljZmllbGRzXHJcbiAgICAgID8gKGFjdGlvbi5keW5hbWljZmllbGRzW2ZpZWxkXSBhcyBGdW5jdGlvbilcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPSBfZnVuY3Rpb25cclxuICAgICAgPyBfZnVuY3Rpb24uYXBwbHkoYWN0aW9uLCBbcm93RGF0YV0pXHJcbiAgICAgIDogYWN0aW9uW2ZpZWxkXTtcclxuICAgIHJldHVybiBfZmllbGQ7XHJcbiAgfVxyXG4gIGNhbGxEaXNhYmxlZChhY3Rpb246IEt2TWVudUl0ZW0sIGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFjdGlvbj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZChkYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgY3JpYXJNZW51c01vZGFsKGRhdGE6IGFueSwgcm93Tm9kZTphbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zICYmIGRhdGEpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdpY29uJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICd0b29sdGlwJyk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnbGFiZWwnKTtcclxuICAgICAgICBjb25zdCBjb21tYW5kOiBhbnkgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnY29tbWFuZCcpO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGU6IGJvb2xlYW4gPSBhY3Rpb24udmlzaWJsZSA/IGFjdGlvbi52aXNpYmxlKGRhdGEsIHJvd05vZGUpIDogdHJ1ZTtcclxuICAgICAgICBjb25zdCBkaXNhYmxlZDogYm9vbGVhbiA9IGFjdGlvbi5kaXNhYmxlZFxyXG4gICAgICAgICAgPyBhY3Rpb24uZGlzYWJsZWQoZGF0YSlcclxuICAgICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IG1lbnVJbnNlcnQ6IEt2TWVudUl0ZW0gPSB7XHJcbiAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgIGljb24sXHJcbiAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgY29tbWFuZCxcclxuICAgICAgICAgIGRpc2FibGVkLFxyXG4gICAgICAgICAgdmlzaWJsZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlY3VwZXJhclJvd05vZGUocm93Tm9kZTogYW55KXtcclxuICAgIHJldHVybiByb3dOb2RlXHJcbiAgfVxyXG5cclxuICB2YWxpZGFMaW5oYUFjYW9WYXppYShyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkge1xyXG4gICAgdmFyIGFsZ3VtSXRlbVZpc2l2ZWwgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLnNvbWUoYSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEudmlzaWJsZShyb3dEYXRhLCByb3dOb2RlKSA9PT0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gUmV0b3JuYSB0cnVlIHNlIGEudmlzaWJsZShyb3dEYXRhKSBuw6NvIGV4aXN0aXJcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gIWFsZ3VtSXRlbVZpc2l2ZWw7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb2RlcygpIHtcclxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHBhbmRBbGwoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XHJcbiAgfVxyXG5cclxuICBleHBhbmRBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICB0aGlzLmV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKG5vZGUsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIHRoaXMuZXhwYW5kQ29sbGFwc2VSZWN1cnNpdmUobm9kZSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKG5vZGU6IFRyZWVOb2RlLCBpc0V4cGFuZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbm9kZS5leHBhbmRlZCA9IGlzRXhwYW5kO1xyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcclxuICAgICAgICB0aGlzLmV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKGNoaWxkTm9kZSwgaXNFeHBhbmQpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gWy4uLnRoaXMuZGF0YVNvdXJjZV07XHJcbiAgICB9XHJcbiAgfSAgXHJcblxyXG59XHJcbiIsIjxkaXY+XHJcblxyXG4gIDxwLXRyZWVUYWJsZSAjdHQgW3ZhbHVlXT1cImRhdGFTb3VyY2VcIiBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICBzZWxlY3Rpb25Nb2RlPVwiY2hlY2tib3hcIiBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWROb2Rlc1wiIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VPcHRpb25zXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCIgW3Jvd3NdPVwicm93c1wiIFt0b3RhbFJlY29yZHNdPVwidGFtYW5ob1RvdGFsVHJlZVwiIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIiByb3dHcm91cE1vZGU9XCJzdWJoZWFkZXJcIiBncm91cFJvd3NCeT1cImlkXCIgPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCIgKm5nSWY9XCJjb25maWcuZW5hYmxlVG9nZ2xlTm9kZXMgfHwgY29uZmlnLmVuYWJsZUZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdFwiPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmVuYWJsZVRvZ2dsZU5vZGVzXCI+XHJcbiAgICAgICAgICA8a3YtYnV0dG9uLXBlcnNvbmFsaXplIChjbGljayk9XCJ0b2dnbGVOb2RlcygpXCIgW2NvbG9yXT1cImNvbG9yQnV0dG9uVG9nZ2xlTm9kZXMrICcgYm9yZGVyLW5vbmUnXCIgW2xhYmVsXT1cImlzRXhwYW5kZWQgPyAnUmVjb2xoZXIgVG9kb3MnIDogJ0V4cGFuZGlyIFRvZG9zJ1wiIFtpY29uXT1cImlzRXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwva3YtYnV0dG9uLXBlcnNvbmFsaXplPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIiAqbmdJZj1cImNvbmZpZy5lbmFibGVGaWx0ZXJcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIkdsb2JhbCBTZWFyY2hcIiAoaW5wdXQpPVwib25HbG9iYWxGaWx0ZXIodHQsJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdFwiIHN0eWxlPVwid2lkdGg6IDMwcHg7XCI+XHJcbiAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveCAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuc29ydGFibGUgPyBjb2wuZmllbGQgOiBmYWxzZVwiXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PSBmYWxzZVwiPlxyXG5cclxuXHJcbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCInZmxleCBmbGV4LXJvdyBtbC0yJ1wiPlxyXG4gICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcblxyXG4gICAgICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiAqbmdJZj1cImNvbC5zb3J0YWJsZVwiIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3AtdHJlZVRhYmxlU29ydEljb24+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC5oZWFkZXJUb29sdGlwXCIgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIj5pbmZvPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCInMjBweCdcIiAqbmdJZj1cImNvbmZpZy5hY3Rpb25zICYmIGNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDBcIj48L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd05vZGUgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcblxyXG5cclxuICAgICAgPHRyICpuZ0lmPVwicm93Tm9kZS5sZXZlbCA9PSAwXCIgW3N0eWxlLmhlaWdodF09XCJlc3BhY2FtZW50b1BhaVwiPlxyXG4gICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgICAgPHRyIFt0dFJvd109XCJyb3dOb2RlXCI+XHJcbiAgICAgICAgICA8dGQgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YSwgY29sKVwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29uZmlnLmNvbHVtbnM7IGxldCBpID0gaW5kZXgsXCIgY2xhc3M9XCJyb3dUYWJsZVwiIFtuZ0NsYXNzXT1cInsnZmxleCc6IGkgPT0gMCwgJ21hcmdlbS1maWxobyc6IGkgPT0gMCAmJiByb3dOb2RlLmxldmVsICE9IDAgJiYgZXNwYWNhbWVudG9MYXRlcmFsIH1cIiA+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDb2xsYXBzZSAtLT5cclxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCIhcmlnaHRDb2xsYXBzZSAmJiBpID09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBjbGFzcz1cImhpZGRlblZpc2libGVcIiBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJpZ2h0Q29sbGFwc2UgJiYgaSA9PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDaGVja2JveCBwYXJhIG11bHRpc2VsZcOnw6NvLS0+XHJcbiAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94IChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVTZWxlY3QgPT0gdHJ1ZSAmJiBpID09PSAwXCI+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDYW1wbyBjb20gdGlwbyBib29sZWFubyAtLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNCb29sZWFuRmllbGQocm93RGF0YSwgY29sKTsgZWxzZSBib29sZWFuRmllbGRcIiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YSwgY29sKVwiPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIHBhZHLDo28gLS0+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkKGNvbCkgJiYgIWNvbC50ZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1heC13LW1heCc6IGkgPT0gY29uZmlnLmNvbHVtbnMubGVuZ3RoLTF9XCI+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbC5pY29uXCIgW2NsYXNzXT1cImNvbC5pY29uICsgJyBtci0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIGltYWdlbSAtLT5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YSwgY29sKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIGRlIGNoaXAgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1lbGVtZW50IGJvcmRlci1udWxsIGJvcmRlci1yb3VuZC0yeGwgY2hpcC1zdHlsZSBwLTIgdGV4dC1udWxsIHctYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5maWVsZF1cIj57e1xyXG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgIH19IHRlc3RlPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gLy8gVGVtcGxhdGUgY2FtcG8gYm9vbGVhbm8gLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWNvbC5pY29uRmllbGRcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2NvbC5maWVsZF0gPyAndGV4dC1ncmVlbi01MDAnIDogJ3RleHQtcmVkLTUwMCdcclxuICAgICAgICAgICAgICAgICAgXCI+PHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSA/IFwiY2hlY2tcIiA6IFwiY2xvc2VcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgICAgICA8IS0tIC8vIFRlbXBsYXRlIGNhbXBvIHBlcnNvbmFsaXphZG8gLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudGVtcGxhdGUgJiYgZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpIFwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEsIHJvd05vZGVMZXZlbDogcm93Tm9kZS5sZXZlbCB9XCI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiYXBwbHlTdHlsZShyb3dEYXRhLCB7IGZpZWxkOiAnYnRucy1vcHRpb25zJywgaGVhZGVyOiAnJyB9KVwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdmFsaWRhTGluaGFBY2FvVmF6aWEocm93RGF0YSwgcm93Tm9kZSlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIHctZnVsbFwiICpuZ0lmPVwiYWNvZXNMaW5oYVRhYmVsYVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJhY3Rpb25CdG5zXCIgcEJ1dHRvbiAqbmdJZj1cImV4aWJpckNhbXBvKGFjdGlvbiwgcm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uQnRucyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93Tm9kZSwgcm93RGF0YSk7IGFjdGlvbj8uY29tbWFuZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0b3JuYXJDYW1wbyhhY3Rpb24sIHJvd0RhdGEsICd0b29sdGlwJylcIiBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2FsbERpc2FibGVkKGFjdGlvbiwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWQtMTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJldG9ybmFyQ2FtcG8oYWN0aW9uLCByb3dEYXRhLCBcImljb25cIikgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWVuZCB3LWZ1bGxcIiAqbmdJZj1cIiFhY29lc0xpbmhhVGFiZWxhXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwibW9yZVZlcnRCdG5cIiBwQnV0dG9uIGNsYXNzPVwiYWN0aW9uQnRucyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd05vZGUsIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICBcclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjcmlhck1lbnVzTW9kYWwocm93RGF0YSwgcm93Tm9kZSkgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPHAtbWVudSAjbWVudSBbcG9wdXBdPVwidHJ1ZVwiIFttb2RlbF09XCJtZW51SXRlbXNcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cclxuICBcclxuICAgICAgICAgICAgICAgIDwhLS0gOjogSWNvbmUgZGUgY29sbGFwc2UgbmEgZGlyZWl0YSA6OiAtLT5cclxuICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwicmlnaHRDb2xsYXBzZVwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvdHI+XHJcblxyXG5cclxuXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgICA8IS0tIDo6IFRlbXBsYXRlIHBhcmEgaWNvbmUgZGUgY29sbGFwc2UgbmEgZGlyZWl0YSAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInJpZ2h0Q29sbGFwc2VcIiBwVGVtcGxhdGU9XCJ0b2dnbGVyaWNvblwiIGxldC1vcGVuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIm9wZW5cIiBjbGFzcz1cInBpIHBpLWFuZ2xlLWxlZnRcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIW9wZW5cIiBjbGFzcz1cInBpIHBpLWFuZ2xlLWRvd25cIj48L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcblxyXG5cclxuICAgIDwhLS0gOjogSG90Zml4IGRvIGJ1ZyBkYSB2ZXJzw6NvIDE1IGRvIHByaW1lbmcsIGFvIHJldGlyYXIgZXNzZSBibG9jbyBkZSBjb2RpZ28gbmEgdmVyc8OjbyAxNSBkbyBwcmltZW5nIG9zIGljb25lcyBkZSBwcmV2IGUgbmV4dCBkbyBwYWdpbmF0b3IgaXLDo28gc3VtaXIgKCByZXNvbHZpZG8gbmEgdmVyc8OjbyAxNi4wKSAgOjogLS0+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcmZpcnN0cGFnZWxpbmtpY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG91YmxlLWxlZnRcIj48L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcnByZXZpb3VzcGFnZWxpbmtpY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtbGVmdFwiPjwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ybmV4dHBhZ2VsaW5raWNvblwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLWFuZ2xlLXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JsYXN0cGFnZWxpbmtpY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG91YmxlLXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxyXG4gICAgICAgICAgTmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG9cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gIDwvcC10cmVlVGFibGU+XHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48bGlua1xyXG4gIHJlbD1cInN0eWxlc2hlZXRcIlxyXG4gIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zXCJcclxuLz5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDQ4LDQwMCwwLDBcIlxyXG4vPlxyXG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVlLXRhYmxlL2t2LXRyZWV0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvdHJlZS10YWJsZS9rdi10cmVldGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQXFDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8xSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFhckUsTUFBTSxPQUFPLGtCQUFrQjtJQXdDN0IsWUFDbUIsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDeEIsWUFBMEI7UUFKMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUF6Q3BDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRTFCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUVqQyxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQUMvQix1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFJbkMsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUVqQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLGtCQUFhLEdBQVcsS0FBSyxDQUFDO1FBQzlCLGVBQVUsR0FBYSxDQUFDLE9BQVksRUFBRSxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7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TDlCLFNBQVM7K0JBQ0UsY0FBYzsyTUFNZixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVjLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVztnQkFFVCxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRThCLFNBQVM7c0JBQTVDLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUNLLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFM0IsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IENvZGlnb0ZpcGVQaXBlLCBDcGZDbnBqUGlwZSwgS3ZNZW51SXRlbSwgVGFibGVDb25maWcsIFRhYmxlQ29uZmlnQ29sdW1uLCBUYWJsZVBhZ2luYXRlLCBUZWxlZm9uZVBpcGUgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuaW50ZXJmYWNlIENvbHVtbiB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi10cmVldGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi10cmVldGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWV0YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogVGFibGVDb25maWc7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IFRyZWVOb2RlW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYWNvZXNMaW5oYVRhYmVsYTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGVzcGFjYW1lbnRvUGFpOiBzdHJpbmcgPSAnMnB4JztcclxuICBASW5wdXQoKSBlc3BhY2FtZW50b0xhdGVyYWw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB0YW1hbmhvVG90YWxUcmVlITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9ucyE6IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgdGFibGVTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHJpZ2h0Q29sbGFwc2U6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwcGx5U3R5bGU6IEZ1bmN0aW9uID0gKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4gJyc7XHJcblxyXG4gIEBJbnB1dCgndGVtcGxhdGVzJykgX3RlbXBsYXRlcyE6IGFueTtcclxuXHJcbiAgQElucHV0KCkgY29sb3JCdXR0b25Ub2dnbGVOb2Rlczogc3RyaW5nID0gXCJzdXJmYWNlLTYwMFwiO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZSE6IFRhYmxlO1xyXG5cclxuICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2luYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtTG90ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5vZGVDb250ZXh0ID0geyRpbXBsaWNpdDogJ3Jvd0RhdGEnLCByb3dOb2RlOiAncm93Tm9kZSd9O1xyXG5cclxuICBzZWxlY3RlZE5vZGVzITogVHJlZU5vZGVbXTtcclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIGltZ0RlZmF1bHQ6c3RyaW5nID0gJy85ai80QUFRU2taSlJnQUJBUUlBZGdCMkFBRC80UUJpUlhocFpnQUFUVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQU1BQUFJVEFBTUFBQUFCQUFFQUFBQUFBQUFBQUFCMkFBQUFBUUFBQUhZQUFBQUIvOXNBUXdBREFnSUNBZ0lEQWdJQ0F3TURBd1FHQkFRRUJBUUlCZ1lGQmdrSUNnb0pDQWtKQ2d3UERBb0xEZ3NKQ1EwUkRRNFBFQkFSRUFvTUVoTVNFQk1QRUJBUS85c0FRd0VEQXdNRUF3UUlCQVFJRUFzSkN4QVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRLzhBQUVRZ0FrQUNRQXdFUkFBSVJBUU1SQWYvRUFCMEFBUUFCQkFNQkFBQUFBQUFBQUFBQUFBQUdBUUlIQ0FNRUNRWC94QUJCRUFBQ0FRUUFCUUlDQ0FRREJBc0FBQUFCQWdNQUJBVVJCZ2NTSVRFVFFRaFJDUlFWR1NKVmxkRXlZWUdSUWxKaUZpTTNPRk5qY1hOMWRwS1RzYk8wLzhRQUdnRUJBQUlEQVFBQUFBQUFBQUFBQUFBQUFBRUZBd1FHQXYvRUFESVJBQUlBQkFNRkNBRUZBUUVCQUFBQUFBQUJBZ01FRVNFeFVRVVNRWkh3RXhVeVlYR0JvYkhSSWpOQ3dlRTA4U1AvMmdBTUF3RUFBaEVERVFBL0FQS3FnRkFLQVVCZERETGNTcEJCRThrc2pCRVJGSlptSjBBQVBKSnFVbkU3SWh0UXE3eUo1dzl5ZHoyVmkrczVlNFhGUk11MFYwOVNVNzBSdEFSMGpSUGs5UUkwVjk2czVHeXBreFhtUGQrWC9uMzVGYk8ycEtsNFFmcWZ4eko5ak9VL0JtTzZXa3NaYjZSSkJJcjNVcE90YTBwVmVsU08zZ2c3MmQ3SGFyT1hzMm5nelYvWHBJcTQ5cFZNZkczb3Z6ZGttc01UaXNYMS9abU10TFAxZGRmb1FMSDFhM3JmU0J2V3ovZXR1Q1hCTHZ1SksrbUJweHpJNWx0OXQyMXhPM1dROENnT3BmNG5GWlRvKzA4WmFYbnBiNlByRUN5ZE85YjExQTYzb2YyckhITGdtZU5KK3FQY0V5T1hmY2JWOU1DTTVQbFB3WmtlcG83R1d4a2VReU05cktSdmU5cUZicVVMMzhBRFdoclE3VnFUTm0wOGVTdDZQLzFHNUJ0S29nNDM5VitMTWdQRVBKM1BZcUw2emlMaGNyR3E3ZEVUMDVSclpPa0pQVU5BZUQxRW5RWDNxc243S21TMXZTM3ZmRC8zNzhpMGs3VWxUSHV4cmRmeHovd2djME0xdk05dmNSUEZMRXhSMGRTckt3T2lDRDRJUHRWWTA0WFpsa21vbGRaRnRRU0tBVUFvQlFDZ0ZBU2pnL2w5bWVMWlJLRmV5c09rc2J1U0lsVzdrYVFkdXM3QkIwZERSMmQ2QjNhV2htVk9PVU92NDFOS3NyWWFWWVl4YWRYL0FOK1Ztemg3aEhBY01SQk1UWUlrcFhwZTRmOEFGSy9ZYjJ4OWowZzlJMHUvWVYwTWltbFU2dEFzZGVKenMycG16LzNJci9YU3kxMVo5bXM1Z0toVFVrWEs2RkJjYUZDTGpRb0xqUW9UY29WTkJjcFVFbnh1SWVFY0J4UkNVeTFnalNoZWxMaFB3eXAyT3RNTzVBNmllazdYZnRXQ2ZTeXFoZnJXT3ZFenlhaWJJZjhBODRyZVhEcDVYejBaaFBqSGwvbCtFWmZVSWE4c0NvSXU0NHlGVTdBMDQ3OUIyUnJaMGRqUjNzRG5hcWltVXJ1OFZyK2REb0tTdmwxS3RGYUdLK1Y4ODhzcjRLNzArU0wxcG0rS0FVQW9CUUU1NWRjdTVlSnBseXVXUjQ4VEczWWJLdGNzRDNWVDdLRDJMZjBIZlpXeW9hRjFEMzQvRDk5Y2VyVnRkWEtuWFp5L0Y5ZjdwMWZPTU1NVnZFbHZieEpIRkdvUkVSUUZWUU5BQUR3QVBhdWlTVUtzc2puVzNFN3Q0bklCODY5SGhzclFnclVBVUFvQlFDZ0ZBVXFRVUlvVGM0NW9ZcDRuZ25pU1NPUlNqbzZobFpTTkVFSHNRUjdWRFNpVm5rZWszQzdwNG1EZVluTHVYaGlWc3Jpa2VURlNOM0hjdGJNVDJWajdxVDRiK2g3NkxjNVhVTHAzMmt2dy9YK2VmVDZPaHJsVUxzNW5pKy85MTZ0QjZyU3lGQUtBbEhML0FJT2w0dXkrcENxMkZteVNYWkpPMlVudEdORUhiYUkzN0FFK2RBN2xGU3VxbVdlU3ovSHVhRmZWcW1sN3F2dlJYdDVlZVRXRjhubnBhNXNGREZGQkVrRUVTUnh4cUVSRVVCVlVEUUFBOEFEMnJxVWtsWkhNdHQ0czVRS2s4dGxhZ2dVQW9DZmNwdVJQTkxuYmtueC9MdmhhNHlFY0RCYm05Y2lLMXR0LzlKSzJsQjEzNlJ0aVBBTllaMVJMcDFlWXpQSXBwdFE3UzBiUDRUNkxianU0dEZrNGg1cVlLd3VTTm1LenNacnBBZmwxc1kvL0FJcXVpMnZBbittRmxsRHNlTnI5VVNJcnpCK2piNTI4SzJjdVI0U3llRzR0aWlCWTI5czdXMTJRUGNSeWZnUC9BR0NUWjlnYXlTdHF5WTNhSzZNVTNaTTZCWGdhWnF2bHNUbGNEa3JuRFp2RzNXUHY3T1F4WEZyZFJORkxFNDhxeU1BVlA4alZrbW9sZFpGWkZDNFhhTE02bFNRS0FVQmFSVTVrcG5ITkRGY1JQYjNFU1NSU0tVZEhVTXJLUm9nZytRYWhwTk5NOXd4T0Y3eXpOZmVZSEIwdkNPWUlqNlRZWGpQSmFFSHVxZ2phSFpKMnV3Tis0MGZPd09XcmFWMHN6RHd2TDhleDB0QlZxcGw3cjhVS1YvUHp5U3h0a3N1UkY2MHpmTG9ZWmJpVklJSW5rbGtZSWlJcExNeE9nQUI1Sk5TazRuWkVOcUZYZVJzcHduZ0l1R2VIN1REb0l6SkVuVk82QWY3eVZ1N0hZQUxEZllFamZTRkh0WFcwMGhVOHBTMTcrdlh3Y2hVVGUybXhUTWNYcS9UVjJ5eFN3dmQ1dG4yQUsyREF5Nm9JRkFLQXlwOE5YSXpKZkVCelFzdUM0SlpMWEZ3SWIzTDNpQWJndEVJRGRPKzNXeEtvdm51MnlDQWExNnFvVk5MY2ZIZ2JOSlRPcG1xRGh4UFluZ3pndmhmbDd3MVk4SWNIWWEzeG1KeDhZamd0NFYwQjgyWStXWW51V095U1NTU2E1V1pNaW14T0tOM1oxa3VYREtoVUVDc2o3ZGVEMktBMXkrTVQ0VzhOeno0TnV1SStIOGRGRHh6aHJkcGJDNGpVSzEvR2cyYldRLzR0amZRVC9DMnU0QmJlL1ExanA0OTJMd3Y0OHpRcnFOVk1HOUN2MUw1OGp5VmRIamRvNUZLc3BJWlNORUg1R3VtT1dLVUFvQlFGcEh2VWtvK054ZHc5RHhSZ0xyRXlCUks2OWR1N2FIUktQNFR2UjBOOWpvYjZTUjcxcjFVaFZFcHkzN2Vwc1UwM3NKc016VDYvdjM0MlpyWk5ETmJ6UGIzRVR4U3hNVWRIVXF5c0RvZ2crQ0Q3VnlUVGhkbWRjbW9sZFpFODVPOFBSWlhQeTVhNUN0RmlsVjFRNk81WDJFT2lEMkFWanZZSVlLYXN0bHlWTW03Ny9qOTlmSldiVXFITGxxV3Y1Y2ZKVysvcTVtK3VqT2RMcUhrclVBVUFvRDBpK2k3NFZzN1RscnhkeHI2Uy9XOGxtMXhwY2p1SXJlQkpBQjhnV3VXL3NQbFZEdGVOdVpEQm9yOWNqb05qd0pTNG85WDlmK202MVZCY0NnRkFLQThZL2kyNFZ0T0RQaVA0OHdWaEVzVnY5cC9Ya1JSb0lMbU5ManBBOWdQVzBCOHE2eWlqY3lSREU5UHJBNUd1Z1V1b2poV3YzaVlqclpOVVVBb0NsU0Myb1BSaERuRnc5RmlzL0ZsN2JvV1BLcXpzZzdhbFRRYzZBQTBReW5leVN4WW4ycm50cVNGTG1LWXY1ZmEvUDNjNlBaYzV6Slc0ODRmcmgvWlB1VStNK3p1RExhUmtsU1Mra2t1bldRYTFzOUtsUnIrRW9pa2VkNzM0SXF6MmJMM0tkUFc3NjlrVmUwbzkrb2ZsWmYzOXNtUUZiNW9NdXFEeUtBVUFvRDBiK2k2NHhzN25nUGpEZ0ZwVkYzajhzbVdWQ2U3UlR3cEVTUG1BMXVOL0xySHpxaDJ2TGFqaGo4ckhRYkhtSndSUWFPNXU3VlFYQW9CUUNnUEZ6NHFPTWJQano0aHVPdUpjZktzdHJKbEd0SUpGTzFranQwVzNWd2ZrUkVDUDVHdXNvNWJseUlZWHA5NG5JMXN4VEtpS0phL1dCaXF0azFSUUNnRkFXa1ZKS0lkell4bjJqd1hjeUtrenlXVWtkMGl4OS9CNldMRFI3QkhjKzJ0YjNvR3EvYVV0ektkMjRZOWN5dzJkTVV1b1YrT0hYdWtTWEVXSDJWaXJMR2VyNnYxTzNqZzYrbnA2dWhRdTliT3Q2OGJyY2x3ZG5Bb05GWTA1a2ZhUnVQVjM1bmRIaXNoalpXb0lGQUtBVUJrYmtCem96ZklYbVpqdVBjUkdiaUNNRzJ5Vm4xZEl1N055UFVqMzdIc3JLZlprVW5ZMkRncVpDcVpiZ1pzVTFSRlRURkdqMko1YmN6T0MrYlhDbHJ4bHdMbW9jampycFJ2cElFa0VtdG1LVlBLT045MVA4aU5nZ25sWnNxT1RGdVJyRTZ5Vk9nbnc3OER1aVUxak1nb0RWajQwdml6dzNLUGhlKzVlOEY1U080NDR5MEJnUG9QdjdKaGNhTXprZnd5bFQrQmZJSkRuc0FHc3FDaWM2SlRJMStsZkpXMTlhcEVMZ2dmNm44SGxkNXJvem1SUUNnRkFLQW8zaXBKUjBzdFlESzRxOHhabTlJWGx2SkI2blQxZEhXcFhldGpldCtOMWptUWRwQTROVTF6TWt1UHM0MUdsZXp1ZHVzaDRSY1BGRHl5dFFCUUNnRkFLQWxQTHptanpCNVVaci9hRGw1eFZmWVM5SUN5R0J3WTVsQjJGa2pZRkpGMzdNQ0t4elpNRTVic3hYTXNxZE1rUGVsdXhzbmhQcE51ZWVQdEZ0c3Z3MXdqbFpFR3ZyRDJzOE1qSDVzRWxDZjJVVlh4YkprdDROb3NJZHJ6a3NVbVJUbUQ5SUQ4UlBIVm5MamJMTTQ3aGExbUJWeGc3Wm9wbVgvdnBHZVJUL05DcHJMTDJiSWx1N1YvVXhUZHAxRXhXVHQ2R3VWemMzRjVjUzNkM1BKUFBNNWtrbGtZczdzVHNzeFBja24zTmI2VnNFVjdiZUxPT2dGQUtBVUFvQ2g4VklSYlE5Q2dSY1BGRHl5dFFCUUNnRkFTZmcvbGZ6SDVneWVud1B3TG5jNE9ycFo3R3drbGpRLzZuVWRLLzFJckhIT2x5dkhFa1pKY21aTjhFTFptREEvQUo4VCtiUlpadUJyWEZSdjNEWCtVdDFPdjVxanN3L3FCV3JGdEtuaC9sZjJOdUhabFRGL0czdVN1SDZNLzRoSlVEU1pmZ3VFLzVYeVU1SS84QVRBUldQdldSbyt2Y3lyWk0vVmRleDFiL0FPamIrSTJ6UXRidHdyZkVEK0czeWpnbi93QnlOUlVyYXNoNjhpSHNtb1duTXg5eFI4RzN4TDhKSTgyUjVUNVc2aVFiNjhZOFYvc2ZNTEF6dC9jVm5ncnFlUEtMK3Zzd1IwRlJCbkR5eCtqRU9UeGVUd3Q3SmpzeGpycXh1NFRxU0M1aGFLUkQvTldBSXJaVFVTdWpVY0xoZG1kYXBJRkFLQVVCUStLa0l0b2VqcVltL3dEdFRGV1dUOUwwdnJsdkhQMGRYVjA5YWh0YjBONjM1MVdPWEgya0NqMVNaN21RZG5HNEwzczdjanVqeFdReHNyVUVDZ01qOGtPUVBNUG43eEljRHdSamxGdmJkTFgrU3VkcmEyU0h3WFlBN1k2T2tVRmpvOXRBa1lLaXBsMDBPOUdiRlBUVEttTGRnNW5vOXliK0F2a2p5d2dndnVJc1d2R21jUUF2ZDVhSU5iSzMvVjJ1eWdIaitQcmI1RWVLb1orMFowN0NGN3E4dnlkQkkyYkprNHhMZWZuK0RZNjJ0YmF5dDQ3U3p0NG9JSWxDUnhSSUZSRkhnQURzQldnMjNpeXdTdGdqbHFBS0FVQW9DT2NhOHVPQXVZK09PSzQ3NFF4V2N0dEVLdDdiTEkwZS9kSEk2a1A4MUlOWkpjMk9VN3dPeGptU29KcXRHcm1rL1A3Nk51M2p0TG5pYmtIZlRlckdHa2ZoNi9tNnVzZkszbmJ2djVMSVR2OEF6anNEYjAyMWNkMmZ6L0pUMU95VmJla2N2d2FGWkhIWkRENUM1eFdXc3A3TzlzNVdndUxlZU1wSkZJcDB5TXA3Z2dnZ2cxZEpxSlhSU05PRjJlWjE2RUNnS0h4VWtvNldXdnhpc1ZlWlF3K3FMTzNrbjlQcTZldm9VdHJlanJldk9xeHpJK3pnY2VpYjVHU1hBNWthZ1R0ZDI1a2E1VDVNWkhndTFqWjVua3NaSkxWMmtPL0I2bENuWi9DRWRBUEd0YThBVnA3Tm1PWlRwUGhoMXpOemFNdnM2aDI0NDllNlpNUWFzQ3ZaZFVFSFp4bU91OHZrclRFMkVmcVhON1BIYndwdlhWSTdCVkg5eUtodFFxN0pTY1RzajIyNUw4cGVIT1NuTHZGY0JjT1c4WVd6aURYbHlGMDk1ZEVEMVozUGtsajQzNFVLbzdBVnlOUk9pcUpqamlPeHA1RU5QTFVFSk9hd21ZVUFvQlFDZ0ZBS0FVQm9WOUpmeVZ3OFdNeFhQSEMya2NGKzEwbUp6UHBycjZ3ckl4Z21iL1V2UVVKOGtNZzhMVjFzcW9kM0pmcWlrMnZUcXluTFBKbm41VjJVUW9DMG1wSlJEdWJHVCt6dUM3cU5YbVNTOWtqdFVhTTYxczlUQmpzZmhLSTQ5OTcxclJOViswcGpsMDd0eHc2NUcvczZXcGxRcjhNZXZkb2dISjNpQ0xGWitYRTNKVllzcXFvcm5RMU1teWcyU094RE1QQkpZcUtyTmx6MUxtN2p5aSsrQlo3VmtPWkxVeUgrUER5ZnR3NVd2NUdiNjZJNTR1cVR5U3psTC94VjRNLzh3WTcvQVBUSFdLZCsxRjZNeXlQM1lmVkh1YlhISFppZ0ZBS0FVQW9CUUNnRkFheS9TSi84cytTLzhWc1Avc3F3MlovMEwwWlhiVS81bjZvOG9hNlU1Z29lMVNDMm9QUmhEbkZ4RERsYzlGaWJib2FQRkt5TTQ3a3l2b3VOZ2thSFNvOEFodW9IMnJudHF6MU1tS1hEL0g3ZjQrN25SN0xrdVhLY2NXY1gxdy9zZ2NNMHR2S2s4RXJ4eXhzSFIwWWhsWUhZSUk4RUdxeE53dTZMSnBSS3p5TmxPRXMvSHhOdy9aNWRUR0pKVTZaMFVqOEVxOW1HZ1NWNzl3RDM2U3A5NjYybW5xb2xLTmUvcjE4SElWRXZzWjBVclQxeXpYREgxV0Y3ck5NK3dEN1ZzR0JuZndlWXZlSHMxajgvaldSYnZHWFVWNWJsMTZsRWtiaDFKSHVOZ2RxOHhRcUpPRjhSREU0V29sd05qdnZGUGlYL0FEbkJmcE1mNzFvZDJVK2o1bGgzclVhcmtQdkZQaVgvQURuQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4NXdYNlRIKzlPN0tmUjh4M3JVYXJrUHZGUGlYL09jRitreC92VHV5bjBmTWQ2MUdxNUQ3eFQ0bC96bkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmOEFPY0Yra3gvdlR1eW4wZk1kNjFHcTVEN3hUNGwvem5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjg1d1g2VEgrOU83S2ZSOHgzclVhcmtQdkZQaVgvT2NGK2t4L3ZUdXluMGZNZDYxR3E1RVA1cWZHQnpwNXljSVRjRDhiNUhGell1ZWFLNGRiZkhwRS9YR2RyK0lkL05aWk5ESmtSYjhHWmluVjA2b2czSThqQ2xiWnBscFB0VWtwSHhlTHVJWXVGOEJkWlp5aGxSZWkzUnY4Y3A3S05iR3g3blIzMGcxcjFNOVU4cHpIN2V2WHdiRlBLN2ViREwxK3Y2OThMMk5iWnBwYmlWNTU1WGtsa1l1N3V4TE14T3lTVDVKTmNrMjRuZDVuWEpLRldSYlVFa281ZjhZeThJNWNHVHBOaGVNa2QyQ0R0VkJPcEJvRTdYWk92Y0Vqem9qY29xcDBzekh3dlA4QVBzYUZmU0twbDd5dnZRM3Q1K1dPR05zK0d0cm13VU0wVnhFbHhieXBKRklvZEhSZ3lzcEd3UVI1QnJxVTdxNk9aYWF3WnlBMU9aNWFMcWdnVUFvQlFDZ0ZBS0FVQW9CUUZwTlRrU2tjYzAwVnZFOXhjU3BIRkdwZDNkZ3Fxb0d5U1Q0QXFHMGsyejNEQzRudXJNMTk1Z2NZeThYWmdtUHBGaFpzOGRvQU83S1NOeUhZQjIzU0RyMkdoNTJUeTFiVk9xbVhXU3kvSjB0QlNLbWw3ejhVU1YvTHl6YXd2bXMrUkY2MHpmRkFLQW5ITHZtSkx3eEt1S3lydkppcEc3SHV6V3pFOTJVZTZrK1YvcU8rdzFsUTF6cDMyY3p3L1grZVhUcmE2aFZRdCtYNHZ2cmgxYk9VTTBWeEVrOEVxU1JTS0hSMFlGV1VqWUlJOGdpdWpUVFYwem5HbW5abzVBZm5VbmxvclVFRmFBVUFvQlFDZ0ZBVTNxcEJRbjVVSlNPT2FhSzNpZTR1SlVqaWpVdTd1d0Nxb0d5U1Q0QUZRMmxpejBsZDJSZzNtSnpFbDRtbGJGWXAzanhVYmR6M0RYTEE5bVlleWoyWCtwNzZDODVYVnpxSHVRZUg3NjY4dWpvYUZVNjdTUHhmWFhYbkI2clN5RkFLQVVBb0NVOEg4dzgxd25Jc0pkNzdIaENnczVaU0ZUdVczR2UvUWVwaVRvYU96c2IwUnVVdGJNcG5iT0hUOGFGZlZiT2wxRjRvTFF4TjNidG5rc2NyNEt5ZkN5NFlHYmNCeFpnT0pvZzJJeU1jc2dRTzhEZmhsajdLVHRUM0lCWUFzTnJ2d1RYUlNhbVZVSzh0KzNIcjRPZm0wODZUKzVEYkYvZmxmUE5YeHRtazhENjlaekNWREdwSXNWNmhRV0d4ODZFV0d4ODZDdzZoUW14UXNhQ3hTb0pQa1ovaTNoL2htTXRsOGpIRklVTHBBdjRwWk96RWFVZHhzcVFHT2wzNUlyQlBxWlZPcnpIN2Nldmd6U3FlYlA4QTI0YjRwY01PZHNzM3h0a204RENQR1BNREw4WFMrbVMxbllCUUJhUnlrcXgyRHR6MjZ6c0RXeG9hR2h2WlBPMVZiTXFuWjRMVDg2blJVdEJMcGtuRmFLTFczcmxuYkIyZXZ3UmV0TTNoUUNnRkFLQVVBb0M2R2FXM2xTZUNWNDVZMkRvNk1ReXNEc0VFZUNEVXB1RjNSRFNpVm5rVHpoN25GbjhWRUxiTFFKbFlsWFNNNytuS093QTI0QjZoMlBrRmlUc21yS1R0U2JMVm8xdkw1NitmTXE1K3lwY3gzbHZkMTRyankrcksxaWY0em14d1hrZWxaTDZXeWtlVDAxUzZoSzc4YVlzdlVxanY1TERXanZRNzFaeTlwVTh4MnZiMTZaV3pOblZFdFh0ZjA2VCtDUzJHV3hXVkVoeGVTdGJ3UmE5VDBKbGs2TjcxdnBKMXZSL3NhM0lKa0V6d05QMGR6VGpseHk3S05OWDFPM1dROENnT3BmNWZFNHJvKzA4bmFXZnE3S2V2TXNmVnJ6cnFJMzVIOTZ4eHpJSmZqYVhxekpCTGptZUJOK2lJMWsrYS9CZU42bFMvbHZaRWxNYkpheEZ2RzlzR2JwUmw3ZVF4M3NhMk85YWN6YVZQTGRyMzlPbDhHMUwyZFVURmUxdlhwdGNpQWNRYzRzL2xZamJZbUJNVkV5NmRrZjFKVHNFSFRrQUtPNDhEcUJHdzFWay9hazJaaEIrbGZQTXRKR3lwY3Q3MHg3Mm5CY09mSHl4eTRrRG1tbXVKbnVMaVY1WlpXTHU3c1dabUoyU1NlNUpQdlZhMjRuZGxta29WWlpGdFFTS0FVQW9ELzlrPSc7XHJcblxyXG4gIGlzRXhwYW5kZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvZGlnb0ZpcGVQaXBlOiBDb2RpZ29GaXBlUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3BmQ25walBpcGU6IENwZkNucGpQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZWxlZm9uZVBpcGU6IFRlbGVmb25lUGlwZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID1cclxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9ICRldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHskZXZlbnQuc29ydEZpZWxkfSAkeyRldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ1xyXG4gICAgICAgICAgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQm9vbGVhbkZpZWxkKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5maWVsZFR5cGUgPT0gJ2Jvb2xlYW4nO1xyXG4gIH1cclxuXHJcbiAgaXNDaGlwRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5maWVsZFR5cGUgPT0gJ2NoaXAnO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXRvcm5vID0gY29sLmZpZWxkVHlwZSAmJiBjb2wuZmllbGRUeXBlID09PSAnaW1hZ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG4gIHJldHVyblJvd0NsYXNzKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG4gICAgbGV0IHJvd0NsYXNzOiBzdHJpbmc7XHJcblxyXG4gICAgdGhpcy50YWJsZVNpemUgPiA4MDAgPyAocm93Q2xhc3MgPSAndGV4dC1iYXNlJykgOiAocm93Q2xhc3MgPSAndGV4dC1zbScpO1xyXG5cclxuICAgIGlmIChjb2wuZXhwaXJlZERhdGUgPT0gdHJ1ZSkge1xyXG4gICAgICBuZXcgRGF0ZSh2YWx1ZSkgPCBuZXcgRGF0ZSgpXHJcbiAgICAgICAgPyAocm93Q2xhc3MgPSByb3dDbGFzcyArICcgdGV4dC1yZWQtNDAwIGZvbnQtc2VtaWJvbGQnKVxyXG4gICAgICAgIDogJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcm93Q2xhc3M7XHJcbiAgfVxyXG4gIHRyYW5zZm9ybVZhbHVlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICghY29sLnBpcGUpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN3aXRjaCAoY29sLnBpcGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkZWNpbWFsJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJzEuMi0yJywgJ3B0LUJSJyk7XHJcbiAgICAgICAgY2FzZSAnY3BmY25waic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcGZDbnBqUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3RlbGVmb25lJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRlbGVmb25lUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ2NvZGlnb2ZpcGUnOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29kaWdvRmlwZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRhclZhbG9yKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcclxuICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX0gJWA7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBmb3JtYXRhclZhbG9yKHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcbiAgbG9hZEltYWdlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAvKlxyXG4gICAgICBOb3NzYSBjb2x1bmEgZGUgaW1hZ2VtIHRyYWJhbGhhIGNvbSBzdHJpbmdzIGRvIHRpcG86IGJhc2U2NCBvdSB1cmxcclxuICAgICovXHJcbiAgICBsZXQgcmV0b3JubyA9IGBkYXRhOmltYWdlL2pwZztiYXNlNjQsICR7dGhpcy5pbWdEZWZhdWx0fWA7XHJcbiAgICBpZiAocm93RGF0YSAmJiBjb2wgJiYgcm93RGF0YVtjb2wuZmllbGRdICYmIHJvd0RhdGFbY29sLmZpZWxkXSAhPT0gJycpIHtcclxuICAgICAgaWYgKHJvd0RhdGFbY29sLmZpZWxkXS5pbmNsdWRlcygnaHR0cCcpKVxyXG4gICAgICAgIHJldG9ybm8gPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXRvcm5vID0gYGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCwgJHtyb3dEYXRhW2NvbC5maWVsZF19YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG4gIGV4aWJpckNhbXBvKGZpZWxkOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IHZpc2libGUgPSBmaWVsZC52aXNpYmxlID8gZmllbGQudmlzaWJsZShyb3dEYXRhKSA6IHRydWU7XHJcbiAgICByZXR1cm4gdmlzaWJsZTtcclxuICB9XHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93Tm9kZTogYW55ICxyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQoe3Jvd0RhdGE6IHJvd0RhdGEsIHJvd05vZGU6IHJvd05vZGV9KTtcclxuICB9XHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICByZXRvcm5hckNhbXBvKGFjdGlvbjogS3ZNZW51SXRlbSwgcm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9mdW5jdGlvbiA9IGFjdGlvbi5keW5hbWljZmllbGRzXHJcbiAgICAgID8gKGFjdGlvbi5keW5hbWljZmllbGRzW2ZpZWxkXSBhcyBGdW5jdGlvbilcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgX2ZpZWxkOiBzdHJpbmcgPSBfZnVuY3Rpb25cclxuICAgICAgPyBfZnVuY3Rpb24uYXBwbHkoYWN0aW9uLCBbcm93RGF0YV0pXHJcbiAgICAgIDogYWN0aW9uW2ZpZWxkXTtcclxuICAgIHJldHVybiBfZmllbGQ7XHJcbiAgfVxyXG4gIGNhbGxEaXNhYmxlZChhY3Rpb246IEt2TWVudUl0ZW0sIGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFjdGlvbj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZChkYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgY3JpYXJNZW51c01vZGFsKGRhdGE6IGFueSwgcm93Tm9kZTphbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zICYmIGRhdGEpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdpY29uJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICd0b29sdGlwJyk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnbGFiZWwnKTtcclxuICAgICAgICBjb25zdCBjb21tYW5kOiBhbnkgPSB0aGlzLnJldG9ybmFyQ2FtcG8oYWN0aW9uLCBkYXRhLCAnY29tbWFuZCcpO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGU6IGJvb2xlYW4gPSBhY3Rpb24udmlzaWJsZSA/IGFjdGlvbi52aXNpYmxlKGRhdGEsIHJvd05vZGUpIDogdHJ1ZTtcclxuICAgICAgICBjb25zdCBkaXNhYmxlZDogYm9vbGVhbiA9IGFjdGlvbi5kaXNhYmxlZFxyXG4gICAgICAgICAgPyBhY3Rpb24uZGlzYWJsZWQoZGF0YSlcclxuICAgICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IG1lbnVJbnNlcnQ6IEt2TWVudUl0ZW0gPSB7XHJcbiAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgIGljb24sXHJcbiAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgY29tbWFuZCxcclxuICAgICAgICAgIGRpc2FibGVkLFxyXG4gICAgICAgICAgdmlzaWJsZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlY3VwZXJhclJvd05vZGUocm93Tm9kZTogYW55KXtcclxuICAgIHJldHVybiByb3dOb2RlXHJcbiAgfVxyXG5cclxuICB2YWxpZGFMaW5oYUFjYW9WYXppYShyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkge1xyXG4gICAgdmFyIGFsZ3VtSXRlbVZpc2l2ZWwgPSB0aGlzLmNvbmZpZy5hY3Rpb25zLnNvbWUoYSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEudmlzaWJsZShyb3dEYXRhLCByb3dOb2RlKSA9PT0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gUmV0b3JuYSB0cnVlIHNlIGEudmlzaWJsZShyb3dEYXRhKSBuw6NvIGV4aXN0aXJcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gIWFsZ3VtSXRlbVZpc2l2ZWw7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb2RlcygpIHtcclxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHBhbmRBbGwoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XHJcbiAgfVxyXG5cclxuICBleHBhbmRBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICB0aGlzLmV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKG5vZGUsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIHRoaXMuZXhwYW5kQ29sbGFwc2VSZWN1cnNpdmUobm9kZSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKG5vZGU6IFRyZWVOb2RlLCBpc0V4cGFuZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbm9kZS5leHBhbmRlZCA9IGlzRXhwYW5kO1xyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcclxuICAgICAgICB0aGlzLmV4cGFuZENvbGxhcHNlUmVjdXJzaXZlKGNoaWxkTm9kZSwgaXNFeHBhbmQpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gWy4uLnRoaXMuZGF0YVNvdXJjZV07XHJcbiAgICB9XHJcbiAgfSAgXHJcblxyXG59XHJcbiIsIjxkaXY+XHJcblxyXG4gIDxwLXRyZWVUYWJsZSAjdHQgW3ZhbHVlXT1cImRhdGFTb3VyY2VcIiBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICBzZWxlY3Rpb25Nb2RlPVwiY2hlY2tib3hcIiBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWROb2Rlc1wiIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VPcHRpb25zXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCIgW3Jvd3NdPVwicm93c1wiIFt0b3RhbFJlY29yZHNdPVwidGFtYW5ob1RvdGFsVHJlZVwiIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIiByb3dHcm91cE1vZGU9XCJzdWJoZWFkZXJcIiBncm91cFJvd3NCeT1cImlkXCIgPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCIgKm5nSWY9XCJjb25maWcuZW5hYmxlVG9nZ2xlTm9kZXMgfHwgY29uZmlnLmVuYWJsZUZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdFwiPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmVuYWJsZVRvZ2dsZU5vZGVzXCI+XHJcbiAgICAgICAgICA8a3YtYnV0dG9uLXBlcnNvbmFsaXplIChjbGljayk9XCJ0b2dnbGVOb2RlcygpXCIgW2NvbG9yXT1cImNvbG9yQnV0dG9uVG9nZ2xlTm9kZXMrICcgYm9yZGVyLW5vbmUnXCIgW2xhYmVsXT1cImlzRXhwYW5kZWQgPyAnUmVjb2xoZXIgVG9kb3MnIDogJ0V4cGFuZGlyIFRvZG9zJ1wiIFtpY29uXT1cImlzRXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwva3YtYnV0dG9uLXBlcnNvbmFsaXplPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIiAqbmdJZj1cImNvbmZpZy5lbmFibGVGaWx0ZXJcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBwbGFjZWhvbGRlcj1cIkdsb2JhbCBTZWFyY2hcIiAoaW5wdXQpPVwib25HbG9iYWxGaWx0ZXIodHQsJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdFwiIHN0eWxlPVwid2lkdGg6IDMwcHg7XCI+XHJcbiAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveCAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuc29ydGFibGUgPyBjb2wuZmllbGQgOiBmYWxzZVwiXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PSBmYWxzZVwiPlxyXG5cclxuXHJcbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCInZmxleCBmbGV4LXJvdyBtbC0yJ1wiPlxyXG4gICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcblxyXG4gICAgICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiAqbmdJZj1cImNvbC5zb3J0YWJsZVwiIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3AtdHJlZVRhYmxlU29ydEljb24+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC5oZWFkZXJUb29sdGlwXCIgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIj5pbmZvPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCInMjBweCdcIiAqbmdJZj1cImNvbmZpZy5hY3Rpb25zICYmIGNvbmZpZy5hY3Rpb25zLmxlbmd0aCA+IDBcIj48L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd05vZGUgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCIgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcblxyXG5cclxuICAgICAgPHRyICpuZ0lmPVwicm93Tm9kZS5sZXZlbCA9PSAwXCIgW3N0eWxlLmhlaWdodF09XCJlc3BhY2FtZW50b1BhaVwiPlxyXG4gICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgICAgPHRyIFt0dFJvd109XCJyb3dOb2RlXCI+XHJcbiAgICAgICAgICA8dGQgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YSwgY29sKVwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29uZmlnLmNvbHVtbnM7IGxldCBpID0gaW5kZXgsXCIgY2xhc3M9XCJyb3dUYWJsZVwiIFtuZ0NsYXNzXT1cInsnZmxleCc6IGkgPT0gMCwgJ21hcmdlbS1maWxobyc6IGkgPT0gMCAmJiByb3dOb2RlLmxldmVsICE9IDAgJiYgZXNwYWNhbWVudG9MYXRlcmFsIH1cIiA+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDb2xsYXBzZSAtLT5cclxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCIhcmlnaHRDb2xsYXBzZSAmJiBpID09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBjbGFzcz1cImhpZGRlblZpc2libGVcIiBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJpZ2h0Q29sbGFwc2UgJiYgaSA9PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDaGVja2JveCBwYXJhIG11bHRpc2VsZcOnw6NvLS0+XHJcbiAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94IChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVTZWxlY3QgPT0gdHJ1ZSAmJiBpID09PSAwXCI+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgPCEtLSAvLyBDYW1wbyBjb20gdGlwbyBib29sZWFubyAtLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNCb29sZWFuRmllbGQocm93RGF0YSwgY29sKTsgZWxzZSBib29sZWFuRmllbGRcIiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YSwgY29sKVwiPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIHBhZHLDo28gLS0+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkKGNvbCkgJiYgIWNvbC50ZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1heC13LW1heCc6IGkgPT0gY29uZmlnLmNvbHVtbnMubGVuZ3RoLTF9XCI+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbC5pY29uXCIgW2NsYXNzXT1cImNvbC5pY29uICsgJyBtci0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIGltYWdlbSAtLT5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YSwgY29sKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIC8vIENhbXBvIGNvbSB0aXBvIGRlIGNoaXAgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1lbGVtZW50IGJvcmRlci1udWxsIGJvcmRlci1yb3VuZC0yeGwgY2hpcC1zdHlsZSBwLTIgdGV4dC1udWxsIHctYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5maWVsZF1cIj57e1xyXG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgIH19IHRlc3RlPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gLy8gVGVtcGxhdGUgY2FtcG8gYm9vbGVhbm8gLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWNvbC5pY29uRmllbGRcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2NvbC5maWVsZF0gPyAndGV4dC1ncmVlbi01MDAnIDogJ3RleHQtcmVkLTUwMCdcclxuICAgICAgICAgICAgICAgICAgXCI+PHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSA/IFwiY2hlY2tcIiA6IFwiY2xvc2VcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgICAgICA8IS0tIC8vIFRlbXBsYXRlIGNhbXBvIHBlcnNvbmFsaXphZG8gLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudGVtcGxhdGUgJiYgZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpIFwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEsIHJvd05vZGVMZXZlbDogcm93Tm9kZS5sZXZlbCB9XCI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwICYmICF2YWxpZGFMaW5oYUFjYW9WYXppYShyb3dEYXRhLCByb3dOb2RlKVwiIHN0eWxlPVwid2lkdGg6IDIwcHg7XCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YSwgeyBmaWVsZDogJ2J0bnMtb3B0aW9ucycsIGhlYWRlcjogJycgfSlcIj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIHctZnVsbFwiICpuZ0lmPVwiYWNvZXNMaW5oYVRhYmVsYVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFjdGlvbkJ0bnNcIiBwQnV0dG9uICpuZ0lmPVwiZXhpYmlyQ2FtcG8oYWN0aW9uLCByb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uQnRucyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtKHJvd05vZGUsIHJvd0RhdGEpOyBhY3Rpb24/LmNvbW1hbmQoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgcm93RGF0YSwgJ3Rvb2x0aXAnKVwiIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2FsbERpc2FibGVkKGFjdGlvbiwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1kLTE5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHJvd0RhdGEsIFwiaWNvblwiKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1lbmQgdy1mdWxsXCIgKm5nSWY9XCIhYWNvZXNMaW5oYVRhYmVsYVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJtb3JlVmVydEJ0blwiIHBCdXR0b24gY2xhc3M9XCJhY3Rpb25CdG5zIHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd05vZGUsIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMjBweFwiPlxyXG4gICAgICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKHJvd0RhdGEsIHJvd05vZGUpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwibWVudUl0ZW1zXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gOjogSWNvbmUgZGUgY29sbGFwc2UgbmEgZGlyZWl0YSA6OiAtLT5cclxuICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cInJpZ2h0Q29sbGFwc2VcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgPC90cj5cclxuXHJcblxyXG5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICAgIDwhLS0gOjogVGVtcGxhdGUgcGFyYSBpY29uZSBkZSBjb2xsYXBzZSBuYSBkaXJlaXRhIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwicmlnaHRDb2xsYXBzZVwiIHBUZW1wbGF0ZT1cInRvZ2dsZXJpY29uXCIgbGV0LW9wZW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwib3BlblwiIGNsYXNzPVwicGkgcGktYW5nbGUtbGVmdFwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhb3BlblwiIGNsYXNzPVwicGkgcGktYW5nbGUtZG93blwiPjwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuXHJcblxyXG4gICAgPCEtLSA6OiBIb3RmaXggZG8gYnVnIGRhIHZlcnPDo28gMTUgZG8gcHJpbWVuZywgYW8gcmV0aXJhciBlc3NlIGJsb2NvIGRlIGNvZGlnbyBuYSB2ZXJzw6NvIDE1IGRvIHByaW1lbmcgb3MgaWNvbmVzIGRlIHByZXYgZSBuZXh0IGRvIHBhZ2luYXRvciBpcsOjbyBzdW1pciAoIHJlc29sdmlkbyBuYSB2ZXJzw6NvIDE2LjApICA6OiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9yZmlyc3RwYWdlbGlua2ljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3VibGUtbGVmdFwiPjwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ycHJldmlvdXNwYWdlbGlua2ljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1sZWZ0XCI+PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JuZXh0cGFnZWxpbmtpY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtcmlnaHRcIj48L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcmxhc3RwYWdlbGlua2ljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3VibGUtcmlnaHRcIj48L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIiBsZXQtY29sdW1ucz5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+XHJcbiAgICAgICAgICBOZW5odW0gcmVnaXN0cm8gZW5jb250cmFkb1xyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPC9wLXRyZWVUYWJsZT5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIlxyXG4vPlxyXG5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1NYXRlcmlhbCtTeW1ib2xzK091dGxpbmVkOm9wc3osd2dodCxGSUxMLEdSQURANDgsNDAwLDAsMFwiXHJcbi8+XHJcbiJdfQ==
@@ -23,6 +23,9 @@ export * from './lib/api/base-components/base-component-dropdown';
23
23
  export * from './lib/api/base-components/base-component-input';
24
24
  export * from './lib/api/base-components/base-component-chart';
25
25
  export * from './lib/api/base-components/base-component-multi-select';
26
+ export * from './lib/api/base-components/base-component-crud';
27
+ export * from './lib/api/base-components/base-component-crud-form';
28
+ export * from './lib/api/base-components/base-component-crud-list';
26
29
  export * from './lib/table/table.component';
27
30
  export * from './lib/tree-view/tree-view.component';
28
31
  export * from './lib/chart/chart.component';
@@ -61,4 +64,4 @@ export * from './lib/tree-table/kv-treetable.component';
61
64
  export * from './lib/tree-table/kv-treetable.module';
62
65
  export * from './lib/orgchart/orgchart.component';
63
66
  export * from './lib/orgchart/orgchart.module';
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQTtBQUV6QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBrZWV2by1jb21wb25lbnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2NoZWNrL2NoZWNrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtY2FsZW5kYXIvaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LW1hc2svaW5wdXQtbWFzay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LXRleHQvaW5wdXQtdGV4dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtdGV4dGFyZWEvaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LXRpbWUvaW5wdXQtdGltZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0cy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMvYnV0dG9uLXNlY29uZGFyeS9idXR0b24tc2Vjb25kYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMvYnV0dG9uLXN1Y2Nlc3MvYnV0dG9uLXN1Y2Nlc3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9ucy9idXR0b24tcGVyc29uYWxpemUvYnV0dG9uLXBlcnNvbmFsaXplLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtZHJvcGRvd24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1jaGFydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtbXVsdGktc2VsZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waWNrbGlzdC9waWNrbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZWV2by1jb21wb25lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMva3ZidXR0b24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2t2aW5wdXRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Vycm9yL2t2ZXJyb3IubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUva3Z0YWJsZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmVlLXZpZXcva3Z0cmVlLXZpZXcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGlwZXMubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbW9kdWxlcy9wcmltZW5nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0L2t2Y2hhcnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9rdm1lbnUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlja2xpc3Qva3ZwaWNrbGlzdC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93b3Jrc3BhY2Uva3Z3b3Jrc3BhY2UubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2NvZGlnb2ZpbGUucGlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvY3BmY25wai5waXBlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy90ZWxlZm9uZS5waXBlJ1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9oZWxwZXJzL3RyYW5zbGF0ZS1wcmltZW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL29iamVjdC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUucGFnaW5hdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS9hY3Rpb24taXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy5jb2x1bW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Ryb3Bkb3duL2ZpbHRyby5jb21ibyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyZWUtdGFibGUva3YtdHJlZXRhYmxlLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJlZS10YWJsZS9rdi10cmVldGFibGUubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcmdjaGFydC9vcmdjaGFydC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29yZ2NoYXJ0L29yZ2NoYXJ0Lm1vZHVsZSdcclxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVEQUF1RCxDQUFDO0FBRXRFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQTtBQUV6QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBrZWV2by1jb21wb25lbnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2NoZWNrL2NoZWNrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtY2FsZW5kYXIvaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LW1hc2svaW5wdXQtbWFzay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LXRleHQvaW5wdXQtdGV4dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvaW5wdXQtdGV4dGFyZWEvaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2lucHV0LXRpbWUvaW5wdXQtdGltZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dHMvcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0cy9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMvYnV0dG9uLXNlY29uZGFyeS9idXR0b24tc2Vjb25kYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMvYnV0dG9uLXN1Y2Nlc3MvYnV0dG9uLXN1Y2Nlc3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9ucy9idXR0b24tcGVyc29uYWxpemUvYnV0dG9uLXBlcnNvbmFsaXplLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtZHJvcGRvd24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1jaGFydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtbXVsdGktc2VsZWN0JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1jcnVkLWxpc3QnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waWNrbGlzdC9waWNrbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9rZWV2by1jb21wb25lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbnMva3ZidXR0b24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzL2t2aW5wdXRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Vycm9yL2t2ZXJyb3IubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUva3Z0YWJsZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmVlLXZpZXcva3Z0cmVlLXZpZXcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGlwZXMubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvbW9kdWxlcy9wcmltZW5nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0L2t2Y2hhcnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9rdm1lbnUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlja2xpc3Qva3ZwaWNrbGlzdC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93b3Jrc3BhY2Uva3Z3b3Jrc3BhY2UubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2NvZGlnb2ZpbGUucGlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvY3BmY25wai5waXBlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy90ZWxlZm9uZS5waXBlJ1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9oZWxwZXJzL3RyYW5zbGF0ZS1wcmltZW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL29iamVjdC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUucGFnaW5hdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS9hY3Rpb24taXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy5jb2x1bW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2Ryb3Bkb3duL2ZpbHRyby5jb21ibyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyZWUtdGFibGUva3YtdHJlZXRhYmxlLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJlZS10YWJsZS9rdi10cmVldGFibGUubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcmdjaGFydC9vcmdjaGFydC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29yZ2NoYXJ0L29yZ2NoYXJ0Lm1vZHVsZSdcclxuIl19