cps-ui-kit 0.156.0 → 0.157.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +3 -6
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +3 -6
- package/fesm2015/cps-ui-kit.mjs +4 -10
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +4 -10
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -517,9 +517,6 @@ export class CpsTableComponent {
|
|
|
517
517
|
if (this.bordered) {
|
|
518
518
|
classesList.push('p-datatable-gridlines');
|
|
519
519
|
}
|
|
520
|
-
if (this.scrollHeight && !this.loading && this.data.length > 0) {
|
|
521
|
-
classesList.push('cps-table-bottom-bordered');
|
|
522
|
-
}
|
|
523
520
|
return classesList.join(' ');
|
|
524
521
|
}
|
|
525
522
|
ngAfterViewChecked() {
|
|
@@ -725,7 +722,7 @@ CpsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
725
722
|
// eslint-disable-next-line no-use-before-define
|
|
726
723
|
deps: [CpsTableComponent]
|
|
727
724
|
}
|
|
728
|
-
], queries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "nestedHeaderTemplate", first: true, predicate: ["nestedHeader"], descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }, { propertyName: "rowExpansionTemplate", first: true, predicate: ["rowexpansion"], descendants: true }], viewQueries: [{ propertyName: "primengTable", first: true, predicate: ["primengTable"], descendants: true, static: true }, { propertyName: "globalFilterComp", first: true, predicate: ["globalFilterComp"], descendants: true }, { propertyName: "exportMenu", first: true, predicate: ["exportMenu"], descendants: true }, { propertyName: "colToggleMenu", first: true, predicate: ["colToggleMenu"], descendants: true }, { propertyName: "tUnsortDirective", first: true, predicate: ["tUnsortDirective"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"></table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:unset;background:unset;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-icon{display:flex;margin-right:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-title{cursor:default}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-btn-on-select{margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn{display:contents}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn cps-icon{margin-left:12px;margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon{cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .cps-table-bottom-bordered>.p-datatable-wrapper{border-bottom:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-thead tr:not(:first-child) th{border-top:unset}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-up{border-bottom-color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-down{border-top-color:var(--cps-color-text-mild)}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-datatable .p-sortable-column .cps-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center;font-size:12px;vertical-align:top;color:var(--cps-color-calm);margin-left:.25rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):not(.cps-table-row-expanded-content):hover{background:var(--cps-color-highlight-hover)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.cps-table-row-selected{background-color:var(--cps-color-highlight-active)!important}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-datatable-reorderablerow-handle,:host ::ng-deep [pReorderableColumn]{cursor:move;font-size:20px;line-height:1}:host ::ng-deep .p-datatable-reorderablerow-handle:hover,:host ::ng-deep [pReorderableColumn]:hover{color:var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-top>td{box-shadow:inset 0 2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-bottom>td{box-shadow:inset 0 -2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-table-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .cps-table-row-drag-handle-cell{text-align:center!important}:host ::ng-deep .cps-table-row-drag-handle-cell .cps-table-row-drag-handle{-webkit-user-select:none;user-select:none}:host ::ng-deep .cps-table-row-chevron-cell{text-align:center!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron{transition-duration:.2s;cursor:pointer;display:inline-flex}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron:hover cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron-expanded{transform:rotate(180deg)}:host ::ng-deep .cps-table-row-menu-cell{border-left:none!important}:host ::ng-deep .p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable.cps-tbar-small .p-datatable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-datatable.cps-tbar-normal .p-datatable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-table-loading .p-datatable{min-height:200px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-small{min-height:243px}:host ::ng-deep .cps-table-col-filter-menu-open .cps-table-col-filter-menu-button{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item:hover{background:var(--cps-color-highlight-hover)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected{font-weight:600}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-label,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-check,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-check{opacity:1}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected{background:var(--cps-color-highlight-selected)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.highlighten{background:var(--cps-color-highlight-active)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-table-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "component", type: i3.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i3.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i3.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i3.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "directive", type: TableUnsortDirective, selector: "[tWithUnsort]", exportAs: ["tWithUnsort"] }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsButtonComponent, selector: "cps-button", inputs: ["color", "contentColor", "type", "label", "icon", "iconPosition", "size", "width", "height", "disabled", "loading"], outputs: ["clicked"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsLoaderComponent, selector: "cps-loader", inputs: ["fullScreen", "opacity", "labelColor", "showLabel"] }, { kind: "component", type: TableRowMenuComponent, selector: "table-row-menu", inputs: ["showRowRemoveButton"], outputs: ["editRowBtnClicked", "removeRowBtnClicked"] }, { kind: "directive", type: CpsTableColumnSortableDirective, selector: "[cpsTColSortable]", inputs: ["cpsTColSortable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
725
|
+
], queries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "nestedHeaderTemplate", first: true, predicate: ["nestedHeader"], descendants: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true }, { propertyName: "rowExpansionTemplate", first: true, predicate: ["rowexpansion"], descendants: true }], viewQueries: [{ propertyName: "primengTable", first: true, predicate: ["primengTable"], descendants: true, static: true }, { propertyName: "globalFilterComp", first: true, predicate: ["globalFilterComp"], descendants: true }, { propertyName: "exportMenu", first: true, predicate: ["exportMenu"], descendants: true }, { propertyName: "colToggleMenu", first: true, predicate: ["colToggleMenu"], descendants: true }, { propertyName: "tUnsortDirective", first: true, predicate: ["tUnsortDirective"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"></table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:unset;background:unset;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-icon{display:flex;margin-right:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-title{cursor:default}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-btn-on-select{margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn{display:contents}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn cps-icon{margin-left:12px;margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon{cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-thead tr:not(:first-child) th{border-top:unset}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-up{border-bottom-color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-down{border-top-color:var(--cps-color-text-mild)}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-datatable .p-sortable-column .cps-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center;font-size:12px;vertical-align:top;color:var(--cps-color-calm);margin-left:.25rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):not(.cps-table-row-expanded-content):hover{background:var(--cps-color-highlight-hover)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.cps-table-row-selected{background-color:var(--cps-color-highlight-active)!important}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-datatable-reorderablerow-handle,:host ::ng-deep [pReorderableColumn]{cursor:move;font-size:20px;line-height:1}:host ::ng-deep .p-datatable-reorderablerow-handle:hover,:host ::ng-deep [pReorderableColumn]:hover{color:var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-top>td{box-shadow:inset 0 2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-bottom>td{box-shadow:inset 0 -2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-table-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .cps-table-row-drag-handle-cell{text-align:center!important}:host ::ng-deep .cps-table-row-drag-handle-cell .cps-table-row-drag-handle{-webkit-user-select:none;user-select:none}:host ::ng-deep .cps-table-row-chevron-cell{text-align:center!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron{transition-duration:.2s;cursor:pointer;display:inline-flex}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron:hover cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron-expanded{transform:rotate(180deg)}:host ::ng-deep .cps-table-row-menu-cell{border-left:none!important}:host ::ng-deep .p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable.cps-tbar-small .p-datatable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-datatable.cps-tbar-normal .p-datatable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-table-loading .p-datatable{min-height:200px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-small{min-height:243px}:host ::ng-deep .cps-table-col-filter-menu-open .cps-table-col-filter-menu-button{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item:hover{background:var(--cps-color-highlight-hover)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected{font-weight:600}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-label,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-check,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-check{opacity:1}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected{background:var(--cps-color-highlight-selected)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.highlighten{background:var(--cps-color-highlight-active)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-table-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "component", type: i3.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i3.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i3.ReorderableRowHandle, selector: "[pReorderableRowHandle]" }, { kind: "directive", type: i3.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "directive", type: TableUnsortDirective, selector: "[tWithUnsort]", exportAs: ["tWithUnsort"] }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsButtonComponent, selector: "cps-button", inputs: ["color", "contentColor", "type", "label", "icon", "iconPosition", "size", "width", "height", "disabled", "loading"], outputs: ["clicked"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsLoaderComponent, selector: "cps-loader", inputs: ["fullScreen", "opacity", "labelColor", "showLabel"] }, { kind: "component", type: TableRowMenuComponent, selector: "table-row-menu", inputs: ["showRowRemoveButton"], outputs: ["editRowBtnClicked", "removeRowBtnClicked"] }, { kind: "directive", type: CpsTableColumnSortableDirective, selector: "[cpsTColSortable]", inputs: ["cpsTColSortable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
729
726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableComponent, decorators: [{
|
|
730
727
|
type: Component,
|
|
731
728
|
args: [{ selector: 'cps-table', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
@@ -749,7 +746,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
749
746
|
// eslint-disable-next-line no-use-before-define
|
|
750
747
|
deps: [CpsTableComponent]
|
|
751
748
|
}
|
|
752
|
-
], template: "<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"></table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:unset;background:unset;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-icon{display:flex;margin-right:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-title{cursor:default}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-btn-on-select{margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn{display:contents}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn cps-icon{margin-left:12px;margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon{cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .cps-table-bottom-bordered>.p-datatable-wrapper{border-bottom:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-thead tr:not(:first-child) th{border-top:unset}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-up{border-bottom-color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-down{border-top-color:var(--cps-color-text-mild)}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-datatable .p-sortable-column .cps-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center;font-size:12px;vertical-align:top;color:var(--cps-color-calm);margin-left:.25rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):not(.cps-table-row-expanded-content):hover{background:var(--cps-color-highlight-hover)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.cps-table-row-selected{background-color:var(--cps-color-highlight-active)!important}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-datatable-reorderablerow-handle,:host ::ng-deep [pReorderableColumn]{cursor:move;font-size:20px;line-height:1}:host ::ng-deep .p-datatable-reorderablerow-handle:hover,:host ::ng-deep [pReorderableColumn]:hover{color:var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-top>td{box-shadow:inset 0 2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-bottom>td{box-shadow:inset 0 -2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-table-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .cps-table-row-drag-handle-cell{text-align:center!important}:host ::ng-deep .cps-table-row-drag-handle-cell .cps-table-row-drag-handle{-webkit-user-select:none;user-select:none}:host ::ng-deep .cps-table-row-chevron-cell{text-align:center!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron{transition-duration:.2s;cursor:pointer;display:inline-flex}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron:hover cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron-expanded{transform:rotate(180deg)}:host ::ng-deep .cps-table-row-menu-cell{border-left:none!important}:host ::ng-deep .p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable.cps-tbar-small .p-datatable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-datatable.cps-tbar-normal .p-datatable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-table-loading .p-datatable{min-height:200px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-small{min-height:243px}:host ::ng-deep .cps-table-col-filter-menu-open .cps-table-col-filter-menu-button{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item:hover{background:var(--cps-color-highlight-hover)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected{font-weight:600}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-label,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-check,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-check{opacity:1}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected{background:var(--cps-color-highlight-selected)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.highlighten{background:var(--cps-color-highlight-active)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-table-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"] }]
|
|
749
|
+
], template: "<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>\u2630</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n <td *ngIf=\"showRowMenu\" class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"></table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n", styles: [":host ::ng-deep .p-component{font-family:Source Sans Pro,sans-serif;font-size:14px;font-weight:400}:host ::ng-deep .p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}:host ::ng-deep .p-datatable{position:relative}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-header{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable .p-datatable-header{font-weight:600;display:flex;justify-content:space-between;align-items:center;padding:0 10px;border:unset;background:unset;border-top:1px solid var(--cps-color-line-mid);border-right:1px solid var(--cps-color-line-mid);border-left:4px solid var(--cps-color-surprise)!important;border-radius:4px 4px 0 0;font-size:16px;line-height:150%;background-color:#fff;color:var(--cps-color-text-darkest);overflow:auto}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-global-filter{margin-left:12px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-icon{display:flex;margin-right:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-left .cps-table-tbar-title{cursor:default}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right{display:flex;align-items:center}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-btn-on-select{margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-action-btn{margin-right:4px;margin-left:8px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn{display:contents}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn cps-icon{margin-left:12px;margin-right:4px}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon{cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-coltoggle-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-export-btn:not(.btn-disabled) cps-icon:hover .cps-icon,:host ::ng-deep .p-datatable .p-datatable-header .cps-table-tbar-right .cps-table-tbar-reload-btn:not(.btn-disabled) cps-icon:hover .cps-icon{color:var(--cps-color-prepared)!important}:host ::ng-deep .cps-tbar-small.p-datatable .p-datatable-header{height:43px}:host ::ng-deep .cps-tbar-normal.p-datatable .p-datatable-header{height:72px}:host ::ng-deep .p-datatable-flex-scrollable>.p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}:host ::ng-deep .p-datatable-scrollable>.p-datatable-wrapper{position:relative}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow:auto}:host ::ng-deep .p-datatable-table{border-spacing:0px;width:100%}:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-thead,:host ::ng-deep .p-datatable.p-datatable-scrollable>.p-datatable-wrapper>.p-scroller-viewport>.p-scroller>.p-datatable-table>.p-datatable-tfoot{background-color:#fff}:host ::ng-deep .p-datatable-scrollable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-thead>tr>th{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-thead>tr>th{padding:1.25rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:left;padding:1rem;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 1px;font-weight:400;color:var(--cps-color-text-mild);background:white;transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-width:1px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{border-width:1px 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-thead tr:not(:first-child) th{border-top:unset}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-up{border-bottom-color:var(--cps-color-text-mild)}:host ::ng-deep .p-datatable .p-sortable-column:not(.p-highlight):hover .cps-sortable-column-icon.sort-unsorted .sort-unsorted-arrow-down{border-top-color:var(--cps-color-text-mild)}:host ::ng-deep .p-icon{display:inline-block;width:1rem;height:1rem}:host ::ng-deep .p-datatable .p-sortable-column .cps-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center;font-size:12px;vertical-align:top;color:var(--cps-color-calm);margin-left:.25rem}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}:host ::ng-deep .p-datatable .p-sortable-column:focus{box-shadow:none;outline:0 none}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(odd){background:var(--cps-color-bg-light)}:host ::ng-deep .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#ffffff}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):not(.cps-table-row-expanded-content):hover{background:var(--cps-color-highlight-hover)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr{background:#ffffff;color:var(--cps-color-text-dark);transition:box-shadow .2s}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.cps-table-row-selected{background-color:var(--cps-color-highlight-active)!important}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody>tr>td{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td:last-child{border-width:1px 1px 0 1px}:host ::ng-deep .p-datatable.p-datatable-gridlines .p-datatable-tbody>tr>td{border-width:1px 0 0 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:left;border:1px solid var(--cps-color-line-mid);border-width:0 0 1px 0;padding:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-width:0 0 1px 1px}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-width:0 1px 1px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:only-child{border-width:0 1px 1px 1px}:host ::ng-deep .p-datatable.p-datatable-sm .p-datatable-tbody>tr>td{padding:.5rem}:host ::ng-deep .p-datatable.p-datatable-lg .p-datatable-tbody>tr>td{padding:1.25rem}:host ::ng-deep td:has(p-tablecheckbox){text-align:center!important}:host ::ng-deep th:has(p-tableheadercheckbox){text-align:center!important;width:3rem!important}:host ::ng-deep .p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative;width:18px;height:18px}:host ::ng-deep .p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}:host ::ng-deep .p-hidden-accessible input,:host ::ng-deep .p-hidden-accessible select{transform:scale(0)}:host ::ng-deep .p-checkbox .p-checkbox-box{background:#ffffff;width:18px;height:18px;color:var(--cps-color-text-dark);border:2px solid var(--cps-color-text-mild);border-radius:2px;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}:host ::ng-deep .p-checkbox-box{display:flex;justify-content:center;align-items:center}:host ::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:var(--cps-color-calm);background:var(--cps-color-calm)}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:var(--cps-color-calm);background:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{border-color:var(--cps-color-calm)}:host ::ng-deep .p-checkbox .p-checkbox-box .p-icon{width:14px;height:14px}:host ::ng-deep .p-checkbox .p-checkbox-box .p-checkbox-icon{transition-duration:.2s;color:#fff;font-size:14px}:host ::ng-deep .p-datatable-reorderablerow-handle,:host ::ng-deep [pReorderableColumn]{cursor:move;font-size:20px;line-height:1}:host ::ng-deep .p-datatable-reorderablerow-handle:hover,:host ::ng-deep [pReorderableColumn]:hover{color:var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-top>td{box-shadow:inset 0 2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-datatable-tbody>tr.p-datatable-dragpoint-bottom>td{box-shadow:inset 0 -2px 0 0 var(--cps-color-calm)}:host ::ng-deep .p-datatable .p-paginator-bottom{border-width:0 1px 1px 1px;border-radius:0}:host ::ng-deep .p-paginator{background:white;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--cps-color-text-dark);padding:1rem;border:solid var(--cps-color-line-mid)}:host ::ng-deep .p-paginator-left-content{margin-right:auto}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page{display:inline-flex;align-items:center}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-table-paginator-items-per-page-title{font-family:Source Sans Pro,sans-serif;font-size:14px;margin-right:12px;cursor:default}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box{min-height:32px!important;background:transparent!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-items{font-size:14px!important}:host ::ng-deep .p-paginator-left-content .cps-table-paginator-itms-per-page .cps-select-box .cps-select-box-chevron .cps-icon{width:14px;height:14px}:host ::ng-deep .p-paginator .p-paginator-current{background-color:transparent;border:0 none;color:var(--cps-color-text-dark);min-width:3rem;margin:.143rem;padding:0 .5rem;font-family:Source Sans Pro,sans-serif;font-size:14px;height:unset}:host ::ng-deep .p-paginator-page,:host ::ng-deep .p-paginator-next,:host ::ng-deep .p-paginator-last,:host ::ng-deep .p-paginator-first,:host ::ng-deep .p-paginator-prev,:host ::ng-deep .p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}:host ::ng-deep .p-paginator-current{cursor:default}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):active,:host ::ng-deep .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-first,:host ::ng-deep .p-paginator .p-paginator-prev,:host ::ng-deep .p-paginator .p-paginator-next,:host ::ng-deep .p-paginator .p-paginator-last{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-icon-wrapper{display:inline-flex}:host ::ng-deep .p-disabled,:host ::ng-deep .p-disabled *{cursor:default!important;pointer-events:none}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background:var(--cps-color-calm);border-color:var(--cps-color-calm);color:#fff}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:var(--cps-color-highlight-hover);border-color:unset}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):active{background:var(--cps-color-highlight-active)}:host ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{background-color:transparent;border:1px solid var(--cps-color-text-dark);border-radius:4px;color:var(--cps-color-text-dark);min-width:32px;height:32px;margin:.143rem;transition:box-shadow .2s}:host ::ng-deep .p-paginator-element:focus{z-index:1;position:relative}:host ::ng-deep .p-link:focus{outline:0 none;outline-offset:0;box-shadow:unset}:host ::ng-deep .p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px;font-family:Source Sans Pro,sans-serif}:host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:.4}:host ::ng-deep .cps-table-empty-message-td{text-align:center!important;font-weight:600;background:white}:host ::ng-deep .cps-table-row-drag-handle-cell{text-align:center!important}:host ::ng-deep .cps-table-row-drag-handle-cell .cps-table-row-drag-handle{-webkit-user-select:none;user-select:none}:host ::ng-deep .cps-table-row-chevron-cell{text-align:center!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron{transition-duration:.2s;cursor:pointer;display:inline-flex}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron:hover cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host ::ng-deep .cps-table-row-chevron-cell .cps-table-row-chevron-expanded{transform:rotate(180deg)}:host ::ng-deep .cps-table-row-menu-cell{border-left:none!important}:host ::ng-deep .p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1001;top:0;left:0;width:100%;height:100%;background-color:#fff;transition-duration:.2s;border:1px solid var(--cps-color-line-mid)}:host ::ng-deep .p-datatable.cps-tbar-small .p-datatable-loading-overlay{top:43px;height:calc(100% - 43px)}:host ::ng-deep .p-datatable.cps-tbar-normal .p-datatable-loading-overlay{top:72px;height:calc(100% - 72px)}:host ::ng-deep .cps-table-loading .p-datatable{min-height:200px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-normal{min-height:272px}:host ::ng-deep .cps-table-loading .p-datatable.cps-tbar-small{min-height:243px}:host ::ng-deep .cps-table-col-filter-menu-open .cps-table-col-filter-menu-button{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu{display:block;max-height:242px;overflow-x:hidden;background:white}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item:hover{background:var(--cps-color-highlight-hover)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-label{color:var(--cps-color-text-dark)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-left{display:flex;align-items:center;margin-right:8px}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected{font-weight:600}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-label,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-label{color:var(--cps-color-calm)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected .cps-table-coltoggle-menu-item-check,.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.allselected .cps-table-coltoggle-menu-item-check{opacity:1}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected{background:var(--cps-color-highlight-selected)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.highlighten{background:var(--cps-color-highlight-active)}.cps-table-coltoggle-menu .cps-table-coltoggle-menu-item.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-table-coltoggle-menu .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}::ng-deep .cps-select-options-menu.cps-paginator-page-options .cps-select-options-option{font-size:14px}\n"] }]
|
|
753
750
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
|
|
754
751
|
type: Input
|
|
755
752
|
}], colHeaderName: [{
|
|
@@ -933,4 +930,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
933
930
|
type: ViewChild,
|
|
934
931
|
args: ['tUnsortDirective']
|
|
935
932
|
}] } });
|
|
936
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS9jcHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25HLE9B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RSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSS9DLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkzQyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSTdCLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUl2QixhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZTtnQkFHSyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVNlcnZpY2UsIFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQsIENwc01lbnVJdGVtIH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0xvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1sb2FkZXIvY3BzLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVybmFsL3RhYmxlLXJvdy1tZW51L3RhYmxlLXJvdy1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNUYWJsZUNvbHVtblNvcnRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Nwcy10YWJsZS1jb2x1bW4tc29ydGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlVW5zb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ludGVybmFsL3RhYmxlLXVuc29ydC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG4vLyBpbXBvcnQganNQREYgZnJvbSAnanNwZGYnO1xuLy8gaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVGYWN0b3J5KHRhYmxlQ29tcG9uZW50OiBDcHNUYWJsZUNvbXBvbmVudCkge1xuICByZXR1cm4gdGFibGVDb21wb25lbnQucHJpbWVuZ1RhYmxlO1xufVxuXG5leHBvcnQgdHlwZSBDcHNUYWJsZUV4cG9ydEZvcm1hdCA9ICdjc3YnIHwgJ3hsc3gnOyAvLyB8ICdwZGYnO1xuZXhwb3J0IHR5cGUgQ3BzVGFibGVTaXplID0gJ3NtYWxsJyB8ICdub3JtYWwnIHwgJ2xhcmdlJztcbmV4cG9ydCB0eXBlIENwc1RhYmxlVG9vbGJhclNpemUgPSAnc21hbGwnIHwgJ25vcm1hbCc7XG5leHBvcnQgdHlwZSBDcHNUYWJsZVNvcnRNb2RlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuXG4vKipcbiAqIENwc1RhYmxlQ29tcG9uZW50IGRpc3BsYXlzIGRhdGEgaW4gdGFidWxhciBmb3JtYXQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHMtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUYWJsZVVuc29ydERpcmVjdGl2ZSxcbiAgICBDcHNJbnB1dENvbXBvbmVudCxcbiAgICBDcHNCdXR0b25Db21wb25lbnQsXG4gICAgQ3BzU2VsZWN0Q29tcG9uZW50LFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzTWVudUNvbXBvbmVudCxcbiAgICBDcHNMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dNZW51Q29tcG9uZW50LFxuICAgIENwc1RhYmxlQ29sdW1uU29ydGFibGVEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYWJsZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVGFibGUsXG4gICAgICB1c2VGYWN0b3J5OiB0YWJsZUZhY3RvcnksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGRlcHM6IFtDcHNUYWJsZUNvbXBvbmVudF1cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBvYmplY3RzIHRvIHJlcHJlc2VudCBkeW5hbWljIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIEEga2V5IHVzZWQgdG8gcmV0cmlldmUgdGhlIGhlYWRlciBmcm9tIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sSGVhZGVyTmFtZSA9ICdoZWFkZXInO1xuXG4gIC8qKlxuICAgKiBBIGtleSB1c2VkIHRvIHJldHJpZXZlIHRoZSBmaWVsZCBmcm9tIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sRmllbGROYW1lID0gJ2ZpZWxkJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSBhbHRlcm5hdGluZyBzdHJpcGVzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIHNob3VsZCBoYXZlIGJvcmRlcnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYm9yZGVyZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRhYmxlIGNlbGxzLCBpdCBjYW4gYmUgXCJzbWFsbFwiLCBcIm5vcm1hbFwiIG9yIFwibGFyZ2VcIi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBDcHNUYWJsZVNpemUgPSAnbm9ybWFsJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSByb3cgc2VsZWN0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSByb3dzIGhpZ2hsaWdodGluZyBvbiBob3Zlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dIb3ZlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEZpZWxkLCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSByZWNvcmQgaW4gZGF0YSAobmVlZGVkIGZvciBleHBhbmRhYmxlIHJvd3MpLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRhdGFLZXkgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgc2hvdyByb3cgbWVudXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd1Jvd01lbnUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAnUmVtb3ZlJyBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGUgcm93IG1lbnUuXG4gICAqIElmIHRydWUsICdSZW1vdmUnIGJ1dHRvbiBpcyBzaG93bi4gSWYgZmFsc2UsIGl0J3MgaGlkZGVuLlxuICAgKiBOb3RlOiBUaGlzIHNldHRpbmcgb25seSB0YWtlcyBlZmZlY3QgaWYgJ3Nob3dSb3dNZW51JyBpcyB0cnVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dSb3dSZW1vdmVCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIHNob3VsZCBoYXZlIHJlLW9yZGVyYWJsZSByb3dzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHJlb3JkZXJhYmxlUm93cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgbG9hZGVyIGNvbXBvbmVudCBpcyBkaXNwbGF5ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIHRhYmxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0eWxlIGNsYXNzIG9mIHRoZSB0YWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0YWJsZVN0eWxlQ2xhc3MgPSAnJztcblxuICAvKipcbiAgICogTWFrZXMgYWxsIGNvbHVtbnMgc29ydGFibGUgaWYgY29sdW1ucyBwcm9wIGlzIHByb3ZpZGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBzb3J0aW5nIHdvcmtzIG9uIHNpbmdsZSBjb2x1bW4gb3Igb24gbXVsdGlwbGUgY29sdW1ucy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzb3J0TW9kZTogQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIHRoZSBkZWZhdWx0IHNvcnRpbmcgb3IgYSBjdXN0b20gb25lIHVzaW5nIHNvcnRGdW5jdGlvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21Tb3J0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgaGFzIGEgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoYXNUb29sYmFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9vbGJhciBzaXplLCBpdCBjYW4gYmUgXCJzbWFsbFwiIG9yIFwibm9ybWFsXCIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbGJhclNpemU6IENwc1RhYmxlVG9vbGJhclNpemUgPSAnbm9ybWFsJztcblxuICAvKipcbiAgICogVG9vbGJhciB0aXRsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGUgPSAnJztcblxuICAvKipcbiAgICogVG9vbGJhciBpY29uIG5hbWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbGJhckljb24gPSAnJztcblxuICAvKipcbiAgICogVG9vbGJhciBpY29uIGNvbG9yLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2xiYXJJY29uQ29sb3IgPSAnJztcblxuICAvKipcbiAgICogTWFrZXMgdGFibGUgc2Nyb2xsYWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gdHJ1ZTtcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBzY3JvbGwgdmlld3BvcnQgaW4gZml4ZWQgcGl4ZWxzIG9yIHRoZSBcImZsZXhcIiBrZXl3b3JkIGZvciBhIGR5bmFtaWMgc2l6ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGxIZWlnaHQgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9ubHkgdGhlIGVsZW1lbnRzIHdpdGhpbiBzY3JvbGxhYmxlIGFyZWEgc2hvdWxkIGJlIGFkZGVkIGludG8gdGhlIERPTS4gV29ya3Mgb25seSBpZiBzY3JvbGxhYmxlIHByb3AgaXMgdHJ1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IG1hbnkgYWRkaXRpb25hbCBlbGVtZW50cyB0byBhZGQgdG8gdGhlIERPTSBvdXRzaWRlIG9mIHRoZSB2aWV3LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGhhdmUgcGFnaW5hdG9yLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2luYXRvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBwYWdpbmF0b3IgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZSBwYWdlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dQYWdpbmF0b3IgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBpbnRlZ2VyIHZhbHVlcyB0byBkaXNwbGF5IGluc2lkZSByb3dzIHBlciBwYWdlIGRyb3Bkb3duIG9mIHBhZ2luYXRvci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIHRoZSBmaXJzdCByb3cgdG8gYmUgZGlzcGxheWVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSBwZXIgcGFnZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzID0gMDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlc2V0IHBhZ2Ugb24gcm93cyBjaGFuZ2UuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcmVzZXRQYWdlT25Sb3dzQ2hhbmdlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byByZXNldCBwYWdlIG9uIHRhYmxlIGRhdGEgc29ydGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByZXNldFBhZ2VPblNvcnQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdG90YWwgcmVjb3Jkcy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICdObyBkYXRhJztcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRhYmxlJ3MgYm9keSB3aGVuIHRoZXJlIGlzIG5vIGRhdGEsIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZW1wdHlCb2R5SGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyBpZiBkYXRhIGlzIGxvYWRlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIGluIGxhenkgbWFubmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNhbGwgbGF6eSBsb2FkaW5nIG9uIGluaXRpYWxpemF0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhenlMb2FkT25Jbml0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgZ2xvYmFsIGZpbHRlciBpbiB0aGUgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93R2xvYmFsRmlsdGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEdsb2JhbCBmaWx0ZXIgcGxhY2Vob2xkZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyUGxhY2Vob2xkZXIgPSAnU2VhcmNoJztcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZmllbGRzIHRvIHVzZSBpbiBnbG9iYWwgZmlsdGVyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNsZWFyIGdsb2JhbCBmaWx0ZXIgb24gZGF0YSBsb2FkaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyR2xvYmFsRmlsdGVyT25Mb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHJlbW92ZSBidXR0b24gaW4gdGhlIHRvb2xiYXIgd2hlbiByb3dzIGFyZSBzZWxlY3RlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcmVtb3ZlQnRuT25TZWxlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcmVtb3ZlQnRuT25TZWxlY3REaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBhZGRpdGlvbmFsIGJ1dHRvbiBpbiB0aGUgdG9vbGJhciB3aGVuIHJvd3MgYXJlIHNlbGVjdGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QgPSBmYWxzZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbEJ0bk9uU2VsZWN0IHRpdGxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxCdG5PblNlbGVjdFRpdGxlID0gJ1NlbGVjdCBhY3Rpb24nO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYWRkaXRpb25hbEJ0bk9uU2VsZWN0IGlzIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxCdG5PblNlbGVjdERpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IGFjdGlvbiBidXR0b24gaW4gdGhlIHRvb2xiYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0FjdGlvbkJ0biA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBY3Rpb24gYnV0dG9uIHRpdGxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFjdGlvbkJ0blRpdGxlID0gJ0FjdGlvbic7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhY3Rpb25CdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYWN0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgZXhwb3J0IGJ1dHRvbiBpbiB0aGUgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93RXhwb3J0QnRuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBleHBvcnRCdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZXhwb3J0QnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZXhwb3J0ZWQgZmlsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBleHBvcnRGaWxlbmFtZSA9ICdkb3dubG9hZCc7XG5cbiAgLyoqXG4gICAqIENoYXJhY3RlciB0byB1c2UgYXMgdGhlIGNzdiBzZXBhcmF0b3IuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY3N2U2VwYXJhdG9yID0gJywnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBkYXRhIHJlbG9hZCBidXR0b24gaW4gdGhlIHRvb2xiYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0RhdGFSZWxvYWRCdG4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGFSZWxvYWRCdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGF0YVJlbG9hZEJ0bkRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgc2hvdWxkIHNob3cgY29sdW1uc1RvZ2dsZSBtZW51LCB3aGVyZSB5b3UgY2FuIGNob29zZSB3aGljaCBjb2x1bW5zIHRvIGJlIGRpc3BsYXllZC4gSWYgZXh0ZXJuYWwgYm9keSB0ZW1wbGF0ZSBpcyBwcm92aWRlZCwgdXNlIGNvbHVtbnNTZWxlY3RlZCBldmVudCBlbWl0dGVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5zVG9nZ2xlQnRuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBjb2x1bW5zVG9nZ2xlIGJ1dHRvbiBpcyBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQXJyYXkgb2YgaW5pdGlhbCBjb2x1bW5zIHRvIHNob3cgaW4gdGhlIHRhYmxlLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBjb2x1bW5zIGFyZSBpbml0aWFsbHkgdmlzaWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsQ29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG9iamVjdHMgdG8gZGlzcGxheS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl9kYXRhID0gWy4uLnZhbHVlXTtcbiAgfVxuXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gc2VsZWN0aW9uIGNoYW5nZWQuIFJldHVybnMgc2VsZWN0ZWQgcm93cy5cbiAgICogQHBhcmFtIHthbnlbXX0gYW55W10gLSBzZWxlY3RlZCByb3dzLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dzU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gc2VsZWN0aW9uIGNoYW5nZWQuIFJldHVybnMgc2VsZWN0ZWQgcm93cyBpbmRleGVzLlxuICAgKiBAcGFyYW0ge251bWJlcltdfSBudW1iZXJbXSAtIHNlbGVjdGVkIHJvd3MgaW5kZXhlcy5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dJbmRleGVzID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge3ZvaWR9IHZvaWQgLSBhY3Rpb24gYnV0dG9uIGNsaWNrZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGFjdGlvbkJ0bkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGVkaXQtcm93IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge3tyb3c6IGFueSwgaW5kZXg6IG51bWJlcn19IHtyb3c6IGFueSwgaW5kZXg6IG51bWJlcn0gLSBlZGl0LXJvdyBidXR0b24gY2xpY2tlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgZWRpdFJvd0J0bkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93OiBhbnk7IGluZGV4OiBudW1iZXIgfT4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHJvd3MgcmVtb3ZhbC4gUmV0dXJucyByb3dzLlxuICAgKiBAcGFyYW0ge2FueVtdfSBhbnlbXSAtIGFycmF5IG9mIHJvd3MgdG8gcmVtb3ZlLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dzVG9SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gcm93cyByZW1vdmFsLiBSZXR1cm5zIHJvd3MgaW5kZXhlcy5cbiAgICogQHBhcmFtIHtudW1iZXJbXX0gbnVtYmVyW10gLSBhcnJheSBvZiBpbmRleGVzIG9mIHJvd3MgdG8gcmVtb3ZlLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dJbmRleGVzVG9SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gcGFnZSBjaGFuZ2VkLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gcGFnZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhIGlzIHNvcnRlZC5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIHNvcnQgbWV0YS5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRhdGEgaXMgZmlsdGVyZWQuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSBjdXN0b20gZmlsdGVyaW5nIGV2ZW50LlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmaWx0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiByb3dzIGFyZSByZW9yZGVyZWQuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSByb3dzIHJlb3JkZXJlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgcm93c1Jlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gY29sdW1ucyBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgLSBzZWxlY3RlZCBjb2x1bW4uXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGNvbHVtbnNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBwYWdpbmcsIHNvcnRpbmcgb3IgZmlsdGVyaW5nIGhhcHBlbnMgaW4gbGF6eSBtb2RlLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gY3VzdG9tIGxhenkgbG9hZGluZyBldmVudC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgbGF6eUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhLXJlbG9hZCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIGJ1dHRvbiBjbGlja2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBkYXRhUmVsb2FkQnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhZGRpdGlvbmFsIGJ1dHRvbiBvbiBzZWxlY3QgaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnlbXX0gYW55W10gLSBzZWxlY3RlZCBkYXRhLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBhZGRpdGlvbmFsQnRuT25TZWxlY3RDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byBpbXBsZW1lbnQgY3VzdG9tIHNvcnRpbmcuIGN1c3RvbVNvcnQgbXVzdCBiZSB0cnVlLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gc29ydCBtZXRhLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjdXN0b21Tb3J0RnVuY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQENvbnRlbnRDaGlsZCgndG9vbGJhcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgdG9vbGJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdoZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCduZXN0ZWRIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIG5lc3RlZEhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdib2R5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBib2R5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Jvd2V4cGFuc2lvbicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgcm93RXhwYW5zaW9uVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3ByaW1lbmdUYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaW1lbmdUYWJsZSE6IFRhYmxlO1xuXG4gIEBWaWV3Q2hpbGQoJ2dsb2JhbEZpbHRlckNvbXAnKVxuICBnbG9iYWxGaWx0ZXJDb21wITogQ3BzSW5wdXRDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnZXhwb3J0TWVudScpXG4gIGV4cG9ydE1lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbFRvZ2dsZU1lbnUnKVxuICBjb2xUb2dnbGVNZW51ITogQ3BzTWVudUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0VW5zb3J0RGlyZWN0aXZlJykgdFVuc29ydERpcmVjdGl2ZSE6IFRhYmxlVW5zb3J0RGlyZWN0aXZlO1xuXG4gIF9kYXRhOiBhbnlbXSA9IFtdO1xuXG4gIHNlbGVjdGVkUm93czogYW55W10gPSBbXTtcblxuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSAwO1xuXG4gIHJvd09wdGlvbnM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcblxuICBzZWxlY3RlZENvbHVtbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gIGV4cG9ydE1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0NTVicsXG4gICAgICBpY29uOiAnY3N2JyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCdjc3YnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnWExTWCcsXG4gICAgICBpY29uOiAneGxzJyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCd4bHN4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHtcbiAgICAvLyAgIHRpdGxlOiAnUERGJyxcbiAgICAvLyAgIGljb246ICdwZGYnLFxuICAgIC8vICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZXhwb3J0VGFibGUoJ3BkZicpO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgXSBhcyBDcHNNZW51SXRlbVtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1wdHlCb2R5SGVpZ2h0ID0gY29udmVydFNpemUodGhpcy5lbXB0eUJvZHlIZWlnaHQpO1xuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKSB0aGlzLnZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QpIHRoaXMuc2hvd1JlbW92ZUJ0bk9uU2VsZWN0ID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5sZW5ndGggPCAxKVxuICAgICAgICB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucyA9IFs1LCAxMCwgMjUsIDUwXTtcblxuICAgICAgaWYgKCF0aGlzLnJvd3MpIHRoaXMucm93cyA9IHRoaXMucm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXModGhpcy5yb3dzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93c1BlclBhZ2VPcHRpb25zIG11c3QgaW5jbHVkZSByb3dzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3dPcHRpb25zID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMubWFwKCh2KSA9PiAoe1xuICAgICAgICBsYWJlbDogJycgKyB2LFxuICAgICAgICB2YWx1ZTogdlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEZpbHRlciAmJlxuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHM/Lmxlbmd0aCA8IDEgJiZcbiAgICAgIHRoaXMuZGF0YT8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGFbMF0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID1cbiAgICAgIHRoaXMuaW5pdGlhbENvbHVtbnMubGVuZ3RoID4gMCA/IHRoaXMuaW5pdGlhbENvbHVtbnMgOiB0aGlzLmNvbHVtbnM7XG4gIH1cblxuICBnZXQgc3R5bGVDbGFzcygpIHtcbiAgICBjb25zdCBjbGFzc2VzTGlzdCA9IFtdO1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLXNtJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLWRhdGF0YWJsZS1sZycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzVG9vbGJhcikge1xuICAgICAgc3dpdGNoICh0aGlzLnRvb2xiYXJTaXplKSB7XG4gICAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGJhci1zbWFsbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdub3JtYWwnOlxuICAgICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10YmFyLW5vcm1hbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0cmlwZWQpIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLXN0cmlwZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYm9yZGVyZWQpIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLWdyaWRsaW5lcycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNjcm9sbEhlaWdodCAmJiAhdGhpcy5sb2FkaW5nICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGFibGUtYm90dG9tLWJvcmRlcmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXNMaXN0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCB8fCB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSkgcmV0dXJuO1xuICAgIHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplID1cbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlPy5lbD8ubmF0aXZlRWxlbWVudFxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJy5wLWRhdGF0YWJsZS10Ym9keScpXG4gICAgICAgID8ucXVlcnlTZWxlY3RvcigndHInKT8uY2xpZW50SGVpZ2h0IHx8IDA7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgaWYgKHRoaXMuY2xlYXJHbG9iYWxGaWx0ZXJPbkxvYWRpbmcpIHRoaXMuY2xlYXJHbG9iYWxGaWx0ZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcz8uZGF0YSkge1xuICAgICAgdGhpcy5yZXNldFNvcnRpbmdTdGF0ZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5maWx0ZXIoKHNyKSA9PlxuICAgICAgICB0aGlzLmRhdGEuaW5jbHVkZXMoc3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U29ydGluZ1N0YXRlKCkge1xuICAgIHRoaXMudFVuc29ydERpcmVjdGl2ZT8ucmVzZXREZWZhdWx0U29ydE9yZGVyKCk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuICB9XG5cbiAgY2xlYXJHbG9iYWxGaWx0ZXIoKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJDb21wPy5jbGVhcigpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogYW55W10pIHtcbiAgICB0aGlzLnJvd3NTZWxlY3RlZC5lbWl0KHNlbGVjdGlvbik7XG5cbiAgICBjb25zdCBpbmRleGVzID0gdGhpcy5fZ2V0SW5kZXhlcyhzZWxlY3Rpb24pO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleGVzLmVtaXQoaW5kZXhlcyk7XG4gIH1cblxuICBvblNvcnRGdW5jdGlvbihldmVudDogU29ydEV2ZW50KSB7XG4gICAgdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZpbHRlckdsb2JhbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmltZW5nVGFibGUuZmlsdGVyR2xvYmFsKHZhbHVlLCAnY29udGFpbnMnKTtcbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGVkKCkge1xuICAgIHRoaXMucm93c1RvUmVtb3ZlLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xuXG4gICAgY29uc3QgaW5kZXhlcyA9IHRoaXMuX2dldEluZGV4ZXModGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIHRoaXMucm93SW5kZXhlc1RvUmVtb3ZlLmVtaXQoaW5kZXhlcyk7XG4gIH1cblxuICBvbkNsaWNrQWRkaXRpb25hbEJ0bk9uU2VsZWN0KCkge1xuICAgIHRoaXMuYWRkaXRpb25hbEJ0bk9uU2VsZWN0Q2xpY2tlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgfVxuXG4gIG9uQ2xpY2tBY3Rpb25CdG4oKSB7XG4gICAgdGhpcy5hY3Rpb25CdG5DbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uUm93c1BlclBhZ2VDaGFuZ2VkKCkge1xuICAgIGlmICh0aGlzLnJlc2V0UGFnZU9uUm93c0NoYW5nZSkge1xuICAgICAgdGhpcy5wcmltZW5nVGFibGUuZmlyc3QgPSAwO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVBhZ2UodGhpcy5nZXRQYWdlKCkpO1xuICB9XG5cbiAgZ2V0UGFnZUNvdW50KCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5wcmltZW5nVGFibGUudG90YWxSZWNvcmRzIC8gdGhpcy5yb3dzKTtcbiAgfVxuXG4gIGdldFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnByaW1lbmdUYWJsZS5maXJzdCAvIHRoaXMucm93cyk7XG4gIH1cblxuICBjaGFuZ2VQYWdlKHA6IG51bWJlcikge1xuICAgIGNvbnN0IHBjID0gTWF0aC5jZWlsKHRoaXMuZ2V0UGFnZUNvdW50KCkpO1xuXG4gICAgaWYgKHAgPj0gMCAmJiBwIDwgcGMpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSB0aGlzLnJvd3MgKiBwO1xuICAgICAgdGhpcy5wcmltZW5nVGFibGUub25QYWdlQ2hhbmdlKHsgZmlyc3Q6IHRoaXMuZmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDtcbiAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBwYWdlOiB0aGlzLmdldFBhZ2UoKSxcbiAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgcm93czogdGhpcy5yb3dzLFxuICAgICAgcGFnZUNvdW50OiBNYXRoLmNlaWwodGhpcy5nZXRQYWdlQ291bnQoKSlcbiAgICB9O1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHN0YXRlKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbENvbHVtbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPVxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCA/IHRoaXMuY29sdW1ucyA6IFtdO1xuICAgIHRoaXMuY29sdW1uc1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICB9XG5cbiAgaXNDb2x1bW5TZWxlY3RlZChjb2w6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ29sdW1ucy5zb21lKChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIGNvbCkpO1xuICB9XG5cbiAgb25TZWxlY3RDb2x1bW4oY29sOiBhbnkpIHtcbiAgICBsZXQgcmVzID0gW10gYXMgYW55O1xuICAgIGlmICh0aGlzLmlzQ29sdW1uU2VsZWN0ZWQoY29sKSkge1xuICAgICAgcmVzID0gdGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKCh2OiBhbnkpID0+ICFpc0VxdWFsKHYsIGNvbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc29tZSgodjogYW55KSA9PiBpc0VxdWFsKHYsIG8pKSB8fFxuICAgICAgICAgIGlzRXF1YWwoY29sLCBvKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXMucHVzaChvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVzO1xuICAgIHRoaXMuY29sdW1uc1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICB9XG5cbiAgb25FZGl0Um93Q2xpY2tlZChyb3c6IGFueSkge1xuICAgIGNvbnN0IFtpbmRleF0gPSB0aGlzLl9nZXRJbmRleGVzKFtyb3ddKTtcbiAgICB0aGlzLmVkaXRSb3dCdG5DbGlja2VkLmVtaXQoeyByb3csIGluZGV4IH0pO1xuICB9XG5cbiAgb25SZW1vdmVSb3dDbGlja2VkKGl0ZW06IGFueSkge1xuICAgIHRoaXMucm93c1RvUmVtb3ZlLmVtaXQoW2l0ZW1dKTtcblxuICAgIGNvbnN0IGluZGV4ZXMgPSB0aGlzLl9nZXRJbmRleGVzKFtpdGVtXSk7XG4gICAgdGhpcy5yb3dJbmRleGVzVG9SZW1vdmUuZW1pdChpbmRleGVzKTtcbiAgfVxuXG4gIG9uU29ydChldmVudDogYW55KSB7XG4gICAgdGhpcy5zb3J0ZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uUm93UmVvcmRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5yb3dzUmVvcmRlcmVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25MYXp5TG9hZGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxhenlMb2FkZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblJlbG9hZERhdGEoKSB7XG4gICAgaWYgKHRoaXMuZGF0YVJlbG9hZEJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhUmVsb2FkQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvbkV4cG9ydERhdGEoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmV4cG9ydEJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5leHBvcnRNZW51Py50b2dnbGUoZXZlbnQpO1xuICB9XG5cbiAgb25Db2x1bW5zVG9nZ2xlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbFRvZ2dsZU1lbnU/LnRvZ2dsZShldmVudCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbmRleGVzKHJvd3M6IGFueVtdKSB7XG4gICAgbGV0IGluZGV4ZXM6IG51bWJlcltdID0gcm93cy5tYXAoKHJvdykgPT5cbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLnZhbHVlLmluZGV4T2Yocm93KVxuICAgICk7XG5cbiAgICBjb25zdCBpbmRleGVzTWFwID0gdGhpcy50VW5zb3J0RGlyZWN0aXZlPy5zb3J0SW5kaWNlcztcbiAgICBpZiAoaW5kZXhlc01hcCAmJiBpbmRleGVzTWFwLmxlbmd0aCA+IDApIHtcbiAgICAgIGluZGV4ZXMgPSBpbmRleGVzLm1hcCgoaSkgPT4gaW5kZXhlc01hcC5pbmRleE9mKGkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXhlcztcbiAgfVxuXG4gIGV4cG9ydFRhYmxlKGZvcm1hdDogQ3BzVGFibGVFeHBvcnRGb3JtYXQpIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zLmxlbmd0aCA8IDEpIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBtdXN0IGJlIGRlZmluZWQhJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA8IDEpIHRocm93IG5ldyBFcnJvcignTm90aGluZyB0byBleHBvcnQhJyk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgICAgdGhpcy5wcmltZW5nVGFibGUuZXhwb3J0Q1NWKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd4bHN4JzpcbiAgICAgICAgdGhpcy5leHBvcnRYTFNYKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBjYXNlICdwZGYnOlxuICAgICAgLy8gICB0aGlzLmV4cG9ydFBERigpO1xuICAgICAgLy8gICBicmVhaztcbiAgICB9XG4gIH1cblxuICBleHBvcnRYTFNYKCkge1xuICAgIGltcG9ydCgneGxzeCcpLnRoZW4oKHhsc3gpID0+IHtcbiAgICAgIGNvbnN0IHNoZWV0RGF0YSA9IFtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxuICAgICAgICAgIChjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiBjW3RoaXMuY29sSGVhZGVyTmFtZV1cbiAgICAgICAgKSxcbiAgICAgICAgLi4udGhpcy5wcmltZW5nVGFibGUudmFsdWUubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxuICAgICAgICAgICAgKGM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IGl0ZW1bY1t0aGlzLmNvbEZpZWxkTmFtZV1dXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSB4bHN4LnV0aWxzLmpzb25fdG9fc2hlZXQoc2hlZXREYXRhLCB7XG4gICAgICAgIHNraXBIZWFkZXI6IHRydWVcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgd29ya2Jvb2sgPSB7XG4gICAgICAgIFNoZWV0czogeyBbdGhpcy5leHBvcnRGaWxlbmFtZV06IHdvcmtzaGVldCB9LFxuICAgICAgICBTaGVldE5hbWVzOiBbdGhpcy5leHBvcnRGaWxlbmFtZV1cbiAgICAgIH07XG4gICAgICBjb25zdCB4bHN4QnVmZmVyOiBhbnkgPSB4bHN4LndyaXRlKHdvcmtib29rLCB7XG4gICAgICAgIGJvb2tUeXBlOiAneGxzeCcsXG4gICAgICAgIHR5cGU6ICdhcnJheSdcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBFWENFTF9UWVBFID1cbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xuICAgICAgY29uc3QgYmxvYjogQmxvYiA9IG5ldyBCbG9iKFt4bHN4QnVmZmVyXSwge1xuICAgICAgICB0eXBlOiBFWENFTF9UWVBFXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgZG93bmxvYWRMaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgZG93bmxvYWRMaW5rLmRvd25sb2FkID0gYCR7dGhpcy5leHBvcnRGaWxlbmFtZX0ueGxzeGA7XG4gICAgICBkb3dubG9hZExpbmsuY2xpY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGV4cG9ydFBERigpIHtcbiAgLy8gICBjb25zdCBleHBvcnRDb2x1bW5zID0gdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gIC8vICAgICB0aXRsZTogY29sW3RoaXMuY29sSGVhZGVyTmFtZV0sXG4gIC8vICAgICBkYXRhS2V5OiBjb2xbdGhpcy5jb2xGaWVsZE5hbWVdXG4gIC8vICAgfSkpO1xuICAvLyAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gIC8vICAgY29uc3QgZG9jID0gbmV3IGpzUERGKHtcbiAgLy8gICAgIG9yaWVudGF0aW9uOiB0aGlzLnNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPiAzID8gJ2wnIDogJ3AnLFxuICAvLyAgICAgdW5pdDogJ3B4JyxcbiAgLy8gICAgIGZvcm1hdDogJ2E0J1xuICAvLyAgIH0pO1xuICAvLyAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAvLyAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6ICcjODcwYTNjJyB9LFxuICAvLyAgICAgY29sdW1uczogZXhwb3J0Q29sdW1ucyxcbiAgLy8gICAgIGJvZHk6IHRoaXMucHJpbWVuZ1RhYmxlLnZhbHVlXG4gIC8vICAgfSk7XG4gIC8vICAgZG9jLnNhdmUoYCR7dGhpcy5leHBvcnRGaWxlbmFtZX0ucGRmYCk7XG4gIC8vIH1cbn1cbiIsIjxwLXRhYmxlXG4gICNwcmltZW5nVGFibGVcbiAgI3RVbnNvcnREaXJlY3RpdmU9XCJ0V2l0aFVuc29ydFwiXG4gIHRXaXRoVW5zb3J0XG4gIFtuZ0NsYXNzXT1cInsgJ2Nwcy10YWJsZS1sb2FkaW5nJzogbG9hZGluZyB9XCJcbiAgW3N0eWxlQ2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gIFt0YWJsZVN0eWxlXT1cInRhYmxlU3R5bGVcIlxuICBbdGFibGVTdHlsZUNsYXNzXT1cInRhYmxlU3R5bGVDbGFzc1wiXG4gIFt2YWx1ZV09XCJkYXRhXCJcbiAgW2RhdGFLZXldPVwiZGF0YUtleVwiXG4gIFtjb2x1bW5zXT1cInNlbGVjdGVkQ29sdW1uc1wiXG4gIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXG4gIFtzaG93SW5pdGlhbFNvcnRCYWRnZV09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICBbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcbiAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxuICBbbGF6eV09XCJsYXp5XCJcbiAgW2xhenlMb2FkT25Jbml0XT1cImxhenlMb2FkT25Jbml0XCJcbiAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gIFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplXCJcbiAgW3ZpcnR1YWxTY3JvbGxPcHRpb25zXT1cInsgbnVtVG9sZXJhdGVkSXRlbXM6IG51bVRvbGVyYXRlZEl0ZW1zIH1cIlxuICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXG4gIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gIFthbHdheXNTaG93UGFnaW5hdG9yXT1cImFsd2F5c1Nob3dQYWdpbmF0b3JcIlxuICBbcm93c109XCJyb3dzXCJcbiAgW2ZpcnN0XT1cImZpcnN0XCJcbiAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICBbcmVzZXRQYWdlT25Tb3J0XT1cInJlc2V0UGFnZU9uU29ydFwiXG4gIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IG9mIHt0b3RhbFJlY29yZHN9XCJcbiAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXG4gIFttZXRhS2V5U2VsZWN0aW9uXT1cImZhbHNlXCJcbiAgW3Jvd0hvdmVyXT1cInJvd0hvdmVyXCJcbiAgW2N1c3RvbVNvcnRdPVwiY3VzdG9tU29ydFwiXG4gIFtzb3J0TW9kZV09XCJzb3J0TW9kZVwiXG4gIFtleHBvcnRGaWxlbmFtZV09XCJleHBvcnRGaWxlbmFtZVwiXG4gIFtjc3ZTZXBhcmF0b3JdPVwiY3N2U2VwYXJhdG9yXCJcbiAgKG9uUGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWRlZCgkZXZlbnQpXCJcbiAgKHNvcnRGdW5jdGlvbik9XCJvblNvcnRGdW5jdGlvbigkZXZlbnQpXCJcbiAgKG9uU29ydCk9XCJvblNvcnQoJGV2ZW50KVwiXG4gIChvbkZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgKG9uUm93UmVvcmRlcik9XCJvblJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiICpuZ0lmPVwiaGFzVG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvb2xiYXJUZW1wbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS10YmFyLWxlZnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRvb2xiYXJJY29uXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1pY29uXCI+XG4gICAgICAgICAgPGNwcy1pY29uIFtpY29uXT1cInRvb2xiYXJJY29uXCIgW2NvbG9yXT1cInRvb2xiYXJJY29uQ29sb3JcIj48L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS10YmFyLXRpdGxlXCI+e3sgdG9vbGJhclRpdGxlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93R2xvYmFsRmlsdGVyXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1nbG9iYWwtZmlsdGVyXCI+XG4gICAgICAgICAgPGNwcy1pbnB1dFxuICAgICAgICAgICAgI2dsb2JhbEZpbHRlckNvbXBcbiAgICAgICAgICAgIHByZWZpeEljb249XCJzZWFyY2hcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25GaWx0ZXJHbG9iYWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwidG9vbGJhclNpemUgPT09ICdzbWFsbCcgPyAndW5kZXJsaW5lZCcgOiAnb3V0bGluZWQnXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCI+XG4gICAgICAgICAgPC9jcHMtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItcmlnaHRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd1JlbW92ZUJ0bk9uU2VsZWN0ICYmIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWJ0bi1vbi1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICAgbGFiZWw9XCJSZW1vdmVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbW92ZUJ0bk9uU2VsZWN0RGlzYWJsZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwiYm9yZGVybGVzc1wiXG4gICAgICAgICAgICBpY29uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgIFtzaXplXT1cInRvb2xiYXJTaXplXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cInJlbW92ZVNlbGVjdGVkKClcIj5cbiAgICAgICAgICA8L2Nwcy1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93QWRkaXRpb25hbEJ0bk9uU2VsZWN0ICYmIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWJ0bi1vbi1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cImFkZGl0aW9uYWxCdG5PblNlbGVjdFRpdGxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhZGRpdGlvbmFsQnRuT25TZWxlY3REaXNhYmxlZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICAgIFtzaXplXT1cInRvb2xiYXJTaXplXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2xpY2tBZGRpdGlvbmFsQnRuT25TZWxlY3QoKVwiPlxuICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uQnRuXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1hY3Rpb24tYnRuXCI+XG4gICAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICAgIFtsYWJlbF09XCJhY3Rpb25CdG5UaXRsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uQnRuRGlzYWJsZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwib3V0bGluZWRcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DbGlja0FjdGlvbkJ0bigpXCI+XG4gICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0NvbHVtbnNUb2dnbGVCdG4gJiYgY29sdW1ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWNvbHRvZ2dsZS1idG5cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGNvbHVtbnNUb2dnbGVCdG5EaXNhYmxlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiY29sdW1uc1wiXG4gICAgICAgICAgICBzaXplPVwibm9ybWFsXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJcbiAgICAgICAgICAgICAgY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkID8gJ3RleHQtbGlnaHRlc3QnIDogJ3ByZXBhcmVkLWxpZ2h0ZW4xJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNvbHVtbnNUb2dnbGUoJGV2ZW50KVwiPjwvY3BzLWljb24+XG4gICAgICAgICAgPGNwcy1tZW51ICNjb2xUb2dnbGVNZW51IFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnVcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hbGxzZWxlY3RlZF09XCJzZWxlY3RlZENvbHVtbnMubGVuZ3RoID09PSBjb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbENvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1jaGVja1wiPiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlNob3cgYWxsIGNvbHVtbnM8L3NwYW5cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RDb2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzQ29sdW1uU2VsZWN0ZWQoY29sKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1jaGVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGFiZWxcIj57e1xuICAgICAgICAgICAgICAgICAgICBjb2xbY29sSGVhZGVyTmFtZV1cbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Nwcy1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ0blwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1leHBvcnQtYnRuXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBleHBvcnRCdG5EaXNhYmxlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiZXhwb3J0XCJcbiAgICAgICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZXhwb3J0QnRuRGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAncHJlcGFyZWQtbGlnaHRlbjEnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkV4cG9ydERhdGEoJGV2ZW50KVwiPjwvY3BzLWljb24+XG4gICAgICAgICAgPGNwcy1tZW51XG4gICAgICAgICAgICAjZXhwb3J0TWVudVxuICAgICAgICAgICAgW2l0ZW1zXT1cImV4cG9ydE1lbnVJdGVtc1wiXG4gICAgICAgICAgICBbY29tcHJlc3NlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgICAgICA8L2Nwcy1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0RhdGFSZWxvYWRCdG5cIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItcmVsb2FkLWJ0blwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLWRpc2FibGVkJzogZGF0YVJlbG9hZEJ0bkRpc2FibGVkIH1cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICAgIHNpemU9XCIxOFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YVJlbG9hZEJ0bkRpc2FibGVkID8gJ3RleHQtbGlnaHQnIDogJ3ByZXBhcmVkLWxpZ2h0ZW4xJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZWxvYWREYXRhKClcIj5cbiAgICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiAqbmdJZj1cIm5lc3RlZEhlYWRlclRlbXBsYXRlXCIgbGV0LWNvbHVtbnM+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIG5lc3RlZEhlYWRlclRlbXBsYXRlO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgJGltcGxpY2l0OiBjb2x1bW5zLFxuICAgICAgICB9XG4gICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgKm5nSWY9XCIhbmVzdGVkSGVhZGVyVGVtcGxhdGVcIiBsZXQtY29sdW1ucz5cbiAgICA8dHI+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogM3JlbVwiICpuZ0lmPVwicm93RXhwYW5zaW9uVGVtcGxhdGVcIj48L3RoPlxuICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDNyZW1cIiAqbmdJZj1cInJlb3JkZXJhYmxlUm93c1wiPjwvdGg+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNHJlbVwiICpuZ0lmPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxuICAgICAgPC90aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbnMsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGVhZGVyVGVtcGxhdGUgJiYgY29sdW1ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3J0YWJsZVwiPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbY3BzVENvbFNvcnRhYmxlXT1cImNvbFtjb2xGaWVsZE5hbWVdXCI+XG4gICAgICAgICAgICB7eyBjb2xbY29sSGVhZGVyTmFtZV0gfX1cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzb3J0YWJsZVwiPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICAgIHt7IGNvbFtjb2xIZWFkZXJOYW1lXSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8dGhcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMnJlbVwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1tZW51LWNlbGxcIlxuICAgICAgICAqbmdJZj1cInNob3dSb3dNZW51XCI+PC90aD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZVxuICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgIGxldC1yb3dEYXRhXG4gICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICBsZXQtaXRlbVxuICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiPlxuICAgIDx0clxuICAgICAgW3BSZW9yZGVyYWJsZVJvd109XCJyb3dJbmRleFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcHMtdGFibGUtcm93LXNlbGVjdGVkJzogc2VsZWN0YWJsZSAmJiBwcmltZW5nVGFibGUuaXNTZWxlY3RlZChpdGVtKVxuICAgICAgfVwiPlxuICAgICAgPHRkICpuZ0lmPVwicm93RXhwYW5zaW9uVGVtcGxhdGVcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctY2hldnJvbi1jZWxsXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1yb3ctY2hldnJvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnY3BzLXRhYmxlLXJvdy1jaGV2cm9uLWV4cGFuZGVkJzogZXhwYW5kZWQgfVwiPlxuICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgY29sb3I9XCJ0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgW3BSb3dUb2dnbGVyXT1cIml0ZW1cIj5cbiAgICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgKm5nSWY9XCJyZW9yZGVyYWJsZVJvd3NcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctZHJhZy1oYW5kbGUtY2VsbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1yb3ctZHJhZy1oYW5kbGVcIiBwUmVvcmRlcmFibGVSb3dIYW5kbGU+4piwPC9zcGFuPlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIj5cbiAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZUNoZWNrYm94PlxuICAgICAgPC90ZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib2R5VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBib2R5VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogaXRlbSxcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICAgICAgICByb3dEYXRhOiByb3dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJvZHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAge3sgcm93RGF0YVtjb2xbY29sRmllbGROYW1lXV0gfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd01lbnVcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctbWVudS1jZWxsXCI+XG4gICAgICAgIDx0YWJsZS1yb3ctbWVudVxuICAgICAgICAgIChlZGl0Um93QnRuQ2xpY2tlZCk9XCJvbkVkaXRSb3dDbGlja2VkKGl0ZW0pXCJcbiAgICAgICAgICAocmVtb3ZlUm93QnRuQ2xpY2tlZCk9XCJvblJlbW92ZVJvd0NsaWNrZWQoaXRlbSlcIlxuICAgICAgICAgIFtzaG93Um93UmVtb3ZlQnV0dG9uXT1cInNob3dSb3dSZW1vdmVCdXR0b25cIj48L3RhYmxlLXJvdy1tZW51PlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicm93ZXhwYW5zaW9uXCIgKm5nSWY9XCJyb3dFeHBhbnNpb25UZW1wbGF0ZVwiIGxldC1pdGVtPlxuICAgIDx0ciBjbGFzcz1cImNwcy10YWJsZS1yb3ctZXhwYW5kZWQtY29udGVudFwiPlxuICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByb3dFeHBhbnNpb25UZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICA8dHI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWVtcHR5LW1lc3NhZ2UtdGRcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogZW1wdHlCb2R5SGVpZ2h0IH1cIj5cbiAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsb2FkaW5naWNvblwiPlxuICAgIDxjcHMtbG9hZGVyIFtmdWxsU2NyZWVuXT1cImZhbHNlXCIgb3BhY2l0eT1cIjBcIj48L2Nwcy1sb2FkZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JsZWZ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1wYWdpbmF0b3ItaXRtcy1wZXItcGFnZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtcGFnaW5hdG9yLWl0ZW1zLXBlci1wYWdlLXRpdGxlXCJcbiAgICAgICAgPlJvd3MgcGVyIHBhZ2U6XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICBbb3B0aW9uc109XCJyb3dPcHRpb25zXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uUm93c1BlclBhZ2VDaGFuZ2VkKClcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgb3B0aW9uc0NsYXNzPVwiY3BzLXBhZ2luYXRvci1wYWdlLW9wdGlvbnNcIj5cbiAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC10YWJsZT5cbiJdfQ==
|
|
933
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS9jcHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25HLE9B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RFQsU0FBUzt1QkFBQyxZQUFZO2dCQUl2QixhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZTtnQkFHSyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVNlcnZpY2UsIFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQsIENwc01lbnVJdGVtIH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0xvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1sb2FkZXIvY3BzLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVybmFsL3RhYmxlLXJvdy1tZW51L3RhYmxlLXJvdy1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNUYWJsZUNvbHVtblNvcnRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Nwcy10YWJsZS1jb2x1bW4tc29ydGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlVW5zb3J0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ludGVybmFsL3RhYmxlLXVuc29ydC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG4vLyBpbXBvcnQganNQREYgZnJvbSAnanNwZGYnO1xuLy8gaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVGYWN0b3J5KHRhYmxlQ29tcG9uZW50OiBDcHNUYWJsZUNvbXBvbmVudCkge1xuICByZXR1cm4gdGFibGVDb21wb25lbnQucHJpbWVuZ1RhYmxlO1xufVxuXG5leHBvcnQgdHlwZSBDcHNUYWJsZUV4cG9ydEZvcm1hdCA9ICdjc3YnIHwgJ3hsc3gnOyAvLyB8ICdwZGYnO1xuZXhwb3J0IHR5cGUgQ3BzVGFibGVTaXplID0gJ3NtYWxsJyB8ICdub3JtYWwnIHwgJ2xhcmdlJztcbmV4cG9ydCB0eXBlIENwc1RhYmxlVG9vbGJhclNpemUgPSAnc21hbGwnIHwgJ25vcm1hbCc7XG5leHBvcnQgdHlwZSBDcHNUYWJsZVNvcnRNb2RlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuXG4vKipcbiAqIENwc1RhYmxlQ29tcG9uZW50IGRpc3BsYXlzIGRhdGEgaW4gdGFidWxhciBmb3JtYXQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHMtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUYWJsZVVuc29ydERpcmVjdGl2ZSxcbiAgICBDcHNJbnB1dENvbXBvbmVudCxcbiAgICBDcHNCdXR0b25Db21wb25lbnQsXG4gICAgQ3BzU2VsZWN0Q29tcG9uZW50LFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzTWVudUNvbXBvbmVudCxcbiAgICBDcHNMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dNZW51Q29tcG9uZW50LFxuICAgIENwc1RhYmxlQ29sdW1uU29ydGFibGVEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYWJsZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVGFibGUsXG4gICAgICB1c2VGYWN0b3J5OiB0YWJsZUZhY3RvcnksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGRlcHM6IFtDcHNUYWJsZUNvbXBvbmVudF1cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBvYmplY3RzIHRvIHJlcHJlc2VudCBkeW5hbWljIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIEEga2V5IHVzZWQgdG8gcmV0cmlldmUgdGhlIGhlYWRlciBmcm9tIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sSGVhZGVyTmFtZSA9ICdoZWFkZXInO1xuXG4gIC8qKlxuICAgKiBBIGtleSB1c2VkIHRvIHJldHJpZXZlIHRoZSBmaWVsZCBmcm9tIGNvbHVtbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY29sRmllbGROYW1lID0gJ2ZpZWxkJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSBhbHRlcm5hdGluZyBzdHJpcGVzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIHNob3VsZCBoYXZlIGJvcmRlcnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYm9yZGVyZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRhYmxlIGNlbGxzLCBpdCBjYW4gYmUgXCJzbWFsbFwiLCBcIm5vcm1hbFwiIG9yIFwibGFyZ2VcIi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBDcHNUYWJsZVNpemUgPSAnbm9ybWFsJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSByb3cgc2VsZWN0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgaGF2ZSByb3dzIGhpZ2hsaWdodGluZyBvbiBob3Zlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dIb3ZlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEZpZWxkLCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSByZWNvcmQgaW4gZGF0YSAobmVlZGVkIGZvciBleHBhbmRhYmxlIHJvd3MpLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRhdGFLZXkgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBzaG91bGQgc2hvdyByb3cgbWVudXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd1Jvd01lbnUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAnUmVtb3ZlJyBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGUgcm93IG1lbnUuXG4gICAqIElmIHRydWUsICdSZW1vdmUnIGJ1dHRvbiBpcyBzaG93bi4gSWYgZmFsc2UsIGl0J3MgaGlkZGVuLlxuICAgKiBOb3RlOiBUaGlzIHNldHRpbmcgb25seSB0YWtlcyBlZmZlY3QgaWYgJ3Nob3dSb3dNZW51JyBpcyB0cnVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dSb3dSZW1vdmVCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIHNob3VsZCBoYXZlIHJlLW9yZGVyYWJsZSByb3dzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHJlb3JkZXJhYmxlUm93cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgbG9hZGVyIGNvbXBvbmVudCBpcyBkaXNwbGF5ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIHRhYmxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGUgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0eWxlIGNsYXNzIG9mIHRoZSB0YWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0YWJsZVN0eWxlQ2xhc3MgPSAnJztcblxuICAvKipcbiAgICogTWFrZXMgYWxsIGNvbHVtbnMgc29ydGFibGUgaWYgY29sdW1ucyBwcm9wIGlzIHByb3ZpZGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBzb3J0aW5nIHdvcmtzIG9uIHNpbmdsZSBjb2x1bW4gb3Igb24gbXVsdGlwbGUgY29sdW1ucy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzb3J0TW9kZTogQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIHRoZSBkZWZhdWx0IHNvcnRpbmcgb3IgYSBjdXN0b20gb25lIHVzaW5nIHNvcnRGdW5jdGlvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21Tb3J0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgaGFzIGEgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoYXNUb29sYmFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9vbGJhciBzaXplLCBpdCBjYW4gYmUgXCJzbWFsbFwiIG9yIFwibm9ybWFsXCIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbGJhclNpemU6IENwc1RhYmxlVG9vbGJhclNpemUgPSAnbm9ybWFsJztcblxuICAvKipcbiAgICogVG9vbGJhciB0aXRsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGUgPSAnJztcblxuICAvKipcbiAgICogVG9vbGJhciBpY29uIG5hbWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbGJhckljb24gPSAnJztcblxuICAvKipcbiAgICogVG9vbGJhciBpY29uIGNvbG9yLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2xiYXJJY29uQ29sb3IgPSAnJztcblxuICAvKipcbiAgICogTWFrZXMgdGFibGUgc2Nyb2xsYWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gdHJ1ZTtcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBzY3JvbGwgdmlld3BvcnQgaW4gZml4ZWQgcGl4ZWxzIG9yIHRoZSBcImZsZXhcIiBrZXl3b3JkIGZvciBhIGR5bmFtaWMgc2l6ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGxIZWlnaHQgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9ubHkgdGhlIGVsZW1lbnRzIHdpdGhpbiBzY3JvbGxhYmxlIGFyZWEgc2hvdWxkIGJlIGFkZGVkIGludG8gdGhlIERPTS4gV29ya3Mgb25seSBpZiBzY3JvbGxhYmxlIHByb3AgaXMgdHJ1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IG1hbnkgYWRkaXRpb25hbCBlbGVtZW50cyB0byBhZGQgdG8gdGhlIERPTSBvdXRzaWRlIG9mIHRoZSB2aWV3LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGhhdmUgcGFnaW5hdG9yLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2luYXRvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBwYWdpbmF0b3IgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZSBwYWdlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dQYWdpbmF0b3IgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBpbnRlZ2VyIHZhbHVlcyB0byBkaXNwbGF5IGluc2lkZSByb3dzIHBlciBwYWdlIGRyb3Bkb3duIG9mIHBhZ2luYXRvci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIHRoZSBmaXJzdCByb3cgdG8gYmUgZGlzcGxheWVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSBwZXIgcGFnZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByb3dzID0gMDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHJlc2V0IHBhZ2Ugb24gcm93cyBjaGFuZ2UuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcmVzZXRQYWdlT25Sb3dzQ2hhbmdlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byByZXNldCBwYWdlIG9uIHRhYmxlIGRhdGEgc29ydGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByZXNldFBhZ2VPblNvcnQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdG90YWwgcmVjb3Jkcy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICdObyBkYXRhJztcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRhYmxlJ3MgYm9keSB3aGVuIHRoZXJlIGlzIG5vIGRhdGEsIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZW1wdHlCb2R5SGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyBpZiBkYXRhIGlzIGxvYWRlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIGluIGxhenkgbWFubmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNhbGwgbGF6eSBsb2FkaW5nIG9uIGluaXRpYWxpemF0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhenlMb2FkT25Jbml0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgZ2xvYmFsIGZpbHRlciBpbiB0aGUgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93R2xvYmFsRmlsdGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEdsb2JhbCBmaWx0ZXIgcGxhY2Vob2xkZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyUGxhY2Vob2xkZXIgPSAnU2VhcmNoJztcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZmllbGRzIHRvIHVzZSBpbiBnbG9iYWwgZmlsdGVyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNsZWFyIGdsb2JhbCBmaWx0ZXIgb24gZGF0YSBsb2FkaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyR2xvYmFsRmlsdGVyT25Mb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHJlbW92ZSBidXR0b24gaW4gdGhlIHRvb2xiYXIgd2hlbiByb3dzIGFyZSBzZWxlY3RlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcmVtb3ZlQnRuT25TZWxlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcmVtb3ZlQnRuT25TZWxlY3REaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBhZGRpdGlvbmFsIGJ1dHRvbiBpbiB0aGUgdG9vbGJhciB3aGVuIHJvd3MgYXJlIHNlbGVjdGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QgPSBmYWxzZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbEJ0bk9uU2VsZWN0IHRpdGxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxCdG5PblNlbGVjdFRpdGxlID0gJ1NlbGVjdCBhY3Rpb24nO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYWRkaXRpb25hbEJ0bk9uU2VsZWN0IGlzIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxCdG5PblNlbGVjdERpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IGFjdGlvbiBidXR0b24gaW4gdGhlIHRvb2xiYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0FjdGlvbkJ0biA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBY3Rpb24gYnV0dG9uIHRpdGxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFjdGlvbkJ0blRpdGxlID0gJ0FjdGlvbic7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhY3Rpb25CdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYWN0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgZXhwb3J0IGJ1dHRvbiBpbiB0aGUgdG9vbGJhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93RXhwb3J0QnRuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBleHBvcnRCdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZXhwb3J0QnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZXhwb3J0ZWQgZmlsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBleHBvcnRGaWxlbmFtZSA9ICdkb3dubG9hZCc7XG5cbiAgLyoqXG4gICAqIENoYXJhY3RlciB0byB1c2UgYXMgdGhlIGNzdiBzZXBhcmF0b3IuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY3N2U2VwYXJhdG9yID0gJywnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBkYXRhIHJlbG9hZCBidXR0b24gaW4gdGhlIHRvb2xiYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0RhdGFSZWxvYWRCdG4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGFSZWxvYWRCdG4gaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGF0YVJlbG9hZEJ0bkRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgc2hvdWxkIHNob3cgY29sdW1uc1RvZ2dsZSBtZW51LCB3aGVyZSB5b3UgY2FuIGNob29zZSB3aGljaCBjb2x1bW5zIHRvIGJlIGRpc3BsYXllZC4gSWYgZXh0ZXJuYWwgYm9keSB0ZW1wbGF0ZSBpcyBwcm92aWRlZCwgdXNlIGNvbHVtbnNTZWxlY3RlZCBldmVudCBlbWl0dGVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5zVG9nZ2xlQnRuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBjb2x1bW5zVG9nZ2xlIGJ1dHRvbiBpcyBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQXJyYXkgb2YgaW5pdGlhbCBjb2x1bW5zIHRvIHNob3cgaW4gdGhlIHRhYmxlLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBjb2x1bW5zIGFyZSBpbml0aWFsbHkgdmlzaWJsZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsQ29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG9iamVjdHMgdG8gZGlzcGxheS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl9kYXRhID0gWy4uLnZhbHVlXTtcbiAgfVxuXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gc2VsZWN0aW9uIGNoYW5nZWQuIFJldHVybnMgc2VsZWN0ZWQgcm93cy5cbiAgICogQHBhcmFtIHthbnlbXX0gYW55W10gLSBzZWxlY3RlZCByb3dzLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dzU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gc2VsZWN0aW9uIGNoYW5nZWQuIFJldHVybnMgc2VsZWN0ZWQgcm93cyBpbmRleGVzLlxuICAgKiBAcGFyYW0ge251bWJlcltdfSBudW1iZXJbXSAtIHNlbGVjdGVkIHJvd3MgaW5kZXhlcy5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dJbmRleGVzID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge3ZvaWR9IHZvaWQgLSBhY3Rpb24gYnV0dG9uIGNsaWNrZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGFjdGlvbkJ0bkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGVkaXQtcm93IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0ge3tyb3c6IGFueSwgaW5kZXg6IG51bWJlcn19IHtyb3c6IGFueSwgaW5kZXg6IG51bWJlcn0gLSBlZGl0LXJvdyBidXR0b24gY2xpY2tlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgZWRpdFJvd0J0bkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93OiBhbnk7IGluZGV4OiBudW1iZXIgfT4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHJvd3MgcmVtb3ZhbC4gUmV0dXJucyByb3dzLlxuICAgKiBAcGFyYW0ge2FueVtdfSBhbnlbXSAtIGFycmF5IG9mIHJvd3MgdG8gcmVtb3ZlLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dzVG9SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gcm93cyByZW1vdmFsLiBSZXR1cm5zIHJvd3MgaW5kZXhlcy5cbiAgICogQHBhcmFtIHtudW1iZXJbXX0gbnVtYmVyW10gLSBhcnJheSBvZiBpbmRleGVzIG9mIHJvd3MgdG8gcmVtb3ZlLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSByb3dJbmRleGVzVG9SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcltdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gcGFnZSBjaGFuZ2VkLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gcGFnZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhIGlzIHNvcnRlZC5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIHNvcnQgbWV0YS5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRhdGEgaXMgZmlsdGVyZWQuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSBjdXN0b20gZmlsdGVyaW5nIGV2ZW50LlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmaWx0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiByb3dzIGFyZSByZW9yZGVyZWQuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSByb3dzIHJlb3JkZXJlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgcm93c1Jlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gY29sdW1ucyBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgLSBzZWxlY3RlZCBjb2x1bW4uXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGNvbHVtbnNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfVtdPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBwYWdpbmcsIHNvcnRpbmcgb3IgZmlsdGVyaW5nIGhhcHBlbnMgaW4gbGF6eSBtb2RlLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gY3VzdG9tIGxhenkgbG9hZGluZyBldmVudC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgbGF6eUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhLXJlbG9hZCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIGJ1dHRvbiBjbGlja2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBkYXRhUmVsb2FkQnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhZGRpdGlvbmFsIGJ1dHRvbiBvbiBzZWxlY3QgaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHthbnlbXX0gYW55W10gLSBzZWxlY3RlZCBkYXRhLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBhZGRpdGlvbmFsQnRuT25TZWxlY3RDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byBpbXBsZW1lbnQgY3VzdG9tIHNvcnRpbmcuIGN1c3RvbVNvcnQgbXVzdCBiZSB0cnVlLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gc29ydCBtZXRhLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBjdXN0b21Tb3J0RnVuY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQENvbnRlbnRDaGlsZCgndG9vbGJhcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgdG9vbGJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdoZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCduZXN0ZWRIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIG5lc3RlZEhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdib2R5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBib2R5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Jvd2V4cGFuc2lvbicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgcm93RXhwYW5zaW9uVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3ByaW1lbmdUYWJsZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaW1lbmdUYWJsZSE6IFRhYmxlO1xuXG4gIEBWaWV3Q2hpbGQoJ2dsb2JhbEZpbHRlckNvbXAnKVxuICBnbG9iYWxGaWx0ZXJDb21wITogQ3BzSW5wdXRDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnZXhwb3J0TWVudScpXG4gIGV4cG9ydE1lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbFRvZ2dsZU1lbnUnKVxuICBjb2xUb2dnbGVNZW51ITogQ3BzTWVudUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0VW5zb3J0RGlyZWN0aXZlJykgdFVuc29ydERpcmVjdGl2ZSE6IFRhYmxlVW5zb3J0RGlyZWN0aXZlO1xuXG4gIF9kYXRhOiBhbnlbXSA9IFtdO1xuXG4gIHNlbGVjdGVkUm93czogYW55W10gPSBbXTtcblxuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSAwO1xuXG4gIHJvd09wdGlvbnM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcblxuICBzZWxlY3RlZENvbHVtbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gIGV4cG9ydE1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0NTVicsXG4gICAgICBpY29uOiAnY3N2JyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCdjc3YnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnWExTWCcsXG4gICAgICBpY29uOiAneGxzJyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCd4bHN4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHtcbiAgICAvLyAgIHRpdGxlOiAnUERGJyxcbiAgICAvLyAgIGljb246ICdwZGYnLFxuICAgIC8vICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZXhwb3J0VGFibGUoJ3BkZicpO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgXSBhcyBDcHNNZW51SXRlbVtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1wdHlCb2R5SGVpZ2h0ID0gY29udmVydFNpemUodGhpcy5lbXB0eUJvZHlIZWlnaHQpO1xuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKSB0aGlzLnZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QpIHRoaXMuc2hvd1JlbW92ZUJ0bk9uU2VsZWN0ID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5sZW5ndGggPCAxKVxuICAgICAgICB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucyA9IFs1LCAxMCwgMjUsIDUwXTtcblxuICAgICAgaWYgKCF0aGlzLnJvd3MpIHRoaXMucm93cyA9IHRoaXMucm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXModGhpcy5yb3dzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93c1BlclBhZ2VPcHRpb25zIG11c3QgaW5jbHVkZSByb3dzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3dPcHRpb25zID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMubWFwKCh2KSA9PiAoe1xuICAgICAgICBsYWJlbDogJycgKyB2LFxuICAgICAgICB2YWx1ZTogdlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEZpbHRlciAmJlxuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHM/Lmxlbmd0aCA8IDEgJiZcbiAgICAgIHRoaXMuZGF0YT8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGFbMF0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID1cbiAgICAgIHRoaXMuaW5pdGlhbENvbHVtbnMubGVuZ3RoID4gMCA/IHRoaXMuaW5pdGlhbENvbHVtbnMgOiB0aGlzLmNvbHVtbnM7XG4gIH1cblxuICBnZXQgc3R5bGVDbGFzcygpIHtcbiAgICBjb25zdCBjbGFzc2VzTGlzdCA9IFtdO1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLXNtJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLWRhdGF0YWJsZS1sZycpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzVG9vbGJhcikge1xuICAgICAgc3dpdGNoICh0aGlzLnRvb2xiYXJTaXplKSB7XG4gICAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGJhci1zbWFsbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdub3JtYWwnOlxuICAgICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10YmFyLW5vcm1hbCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0cmlwZWQpIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLXN0cmlwZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYm9yZGVyZWQpIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLWdyaWRsaW5lcycpO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzTGlzdC5qb2luKCcgJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgfHwgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUpIHJldHVybjtcbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9XG4gICAgICB0aGlzLnByaW1lbmdUYWJsZT8uZWw/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yKCcucC1kYXRhdGFibGUtdGJvZHknKVxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJ3RyJyk/LmNsaWVudEhlaWdodCB8fCAwO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIGlmICh0aGlzLmNsZWFyR2xvYmFsRmlsdGVyT25Mb2FkaW5nKSB0aGlzLmNsZWFyR2xvYmFsRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXM/LmRhdGEpIHtcbiAgICAgIHRoaXMucmVzZXRTb3J0aW5nU3RhdGUoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKChzcikgPT5cbiAgICAgICAgdGhpcy5kYXRhLmluY2x1ZGVzKHNyKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXNldFNvcnRpbmdTdGF0ZSgpIHtcbiAgICB0aGlzLnRVbnNvcnREaXJlY3RpdmU/LnJlc2V0RGVmYXVsdFNvcnRPcmRlcigpO1xuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcbiAgfVxuXG4gIGNsZWFyR2xvYmFsRmlsdGVyKCkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyQ29tcD8uY2xlYXIoKTtcbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb246IGFueVtdKSB7XG4gICAgdGhpcy5yb3dzU2VsZWN0ZWQuZW1pdChzZWxlY3Rpb24pO1xuXG4gICAgY29uc3QgaW5kZXhlcyA9IHRoaXMuX2dldEluZGV4ZXMoc2VsZWN0aW9uKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXhlcy5lbWl0KGluZGV4ZXMpO1xuICB9XG5cbiAgb25Tb3J0RnVuY3Rpb24oZXZlbnQ6IFNvcnRFdmVudCkge1xuICAgIHRoaXMuY3VzdG9tU29ydEZ1bmN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25GaWx0ZXJHbG9iYWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucHJpbWVuZ1RhYmxlLmZpbHRlckdsb2JhbCh2YWx1ZSwgJ2NvbnRhaW5zJyk7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZCgpIHtcbiAgICB0aGlzLnJvd3NUb1JlbW92ZS5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcblxuICAgIGNvbnN0IGluZGV4ZXMgPSB0aGlzLl9nZXRJbmRleGVzKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICB0aGlzLnJvd0luZGV4ZXNUb1JlbW92ZS5lbWl0KGluZGV4ZXMpO1xuICB9XG5cbiAgb25DbGlja0FkZGl0aW9uYWxCdG5PblNlbGVjdCgpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdG5PblNlbGVjdENsaWNrZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XG4gIH1cblxuICBvbkNsaWNrQWN0aW9uQnRuKCkge1xuICAgIHRoaXMuYWN0aW9uQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvblJvd3NQZXJQYWdlQ2hhbmdlZCgpIHtcbiAgICBpZiAodGhpcy5yZXNldFBhZ2VPblJvd3NDaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLmZpcnN0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMuZ2V0UGFnZSgpKTtcbiAgfVxuXG4gIGdldFBhZ2VDb3VudCgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucHJpbWVuZ1RhYmxlLnRvdGFsUmVjb3JkcyAvIHRoaXMucm93cyk7XG4gIH1cblxuICBnZXRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5wcmltZW5nVGFibGUuZmlyc3QgLyB0aGlzLnJvd3MpO1xuICB9XG5cbiAgY2hhbmdlUGFnZShwOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYyA9IE1hdGguY2VpbCh0aGlzLmdldFBhZ2VDb3VudCgpKTtcblxuICAgIGlmIChwID49IDAgJiYgcCA8IHBjKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gdGhpcy5yb3dzICogcDtcbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLm9uUGFnZUNoYW5nZSh7IGZpcnN0OiB0aGlzLmZpcnN0LCByb3dzOiB0aGlzLnJvd3MgfSk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7XG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcblxuICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgcGFnZTogdGhpcy5nZXRQYWdlKCksXG4gICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgIHJvd3M6IHRoaXMucm93cyxcbiAgICAgIHBhZ2VDb3VudDogTWF0aC5jZWlsKHRoaXMuZ2V0UGFnZUNvdW50KCkpXG4gICAgfTtcblxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChzdGF0ZSk7XG4gIH1cblxuICB0b2dnbGVBbGxDb2x1bW5zKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA8IHRoaXMuY29sdW1ucy5sZW5ndGggPyB0aGlzLmNvbHVtbnMgOiBbXTtcbiAgICB0aGlzLmNvbHVtbnNTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxuXG4gIGlzQ29sdW1uU2VsZWN0ZWQoY29sOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvbHVtbnMuc29tZSgoaXRlbSkgPT4gaXNFcXVhbChpdGVtLCBjb2wpKTtcbiAgfVxuXG4gIG9uU2VsZWN0Q29sdW1uKGNvbDogYW55KSB7XG4gICAgbGV0IHJlcyA9IFtdIGFzIGFueTtcbiAgICBpZiAodGhpcy5pc0NvbHVtblNlbGVjdGVkKGNvbCkpIHtcbiAgICAgIHJlcyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbHRlcigodjogYW55KSA9PiAhaXNFcXVhbCh2LCBjb2wpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKG8pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLnNvbWUoKHY6IGFueSkgPT4gaXNFcXVhbCh2LCBvKSkgfHxcbiAgICAgICAgICBpc0VxdWFsKGNvbCwgbylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzLnB1c2gobyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHJlcztcbiAgICB0aGlzLmNvbHVtbnNTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxuXG4gIG9uRWRpdFJvd0NsaWNrZWQocm93OiBhbnkpIHtcbiAgICBjb25zdCBbaW5kZXhdID0gdGhpcy5fZ2V0SW5kZXhlcyhbcm93XSk7XG4gICAgdGhpcy5lZGl0Um93QnRuQ2xpY2tlZC5lbWl0KHsgcm93LCBpbmRleCB9KTtcbiAgfVxuXG4gIG9uUmVtb3ZlUm93Q2xpY2tlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnJvd3NUb1JlbW92ZS5lbWl0KFtpdGVtXSk7XG5cbiAgICBjb25zdCBpbmRleGVzID0gdGhpcy5fZ2V0SW5kZXhlcyhbaXRlbV0pO1xuICAgIHRoaXMucm93SW5kZXhlc1RvUmVtb3ZlLmVtaXQoaW5kZXhlcyk7XG4gIH1cblxuICBvblNvcnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25GaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblJvd1Jlb3JkZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucm93c1Jlb3JkZXJlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uTGF6eUxvYWRlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5sYXp5TG9hZGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25SZWxvYWREYXRhKCkge1xuICAgIGlmICh0aGlzLmRhdGFSZWxvYWRCdG5EaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZGF0YVJlbG9hZEJ0bkNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbiAgb25FeHBvcnREYXRhKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5leHBvcnRCdG5EaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZXhwb3J0TWVudT8udG9nZ2xlKGV2ZW50KTtcbiAgfVxuXG4gIG9uQ29sdW1uc1RvZ2dsZShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5jb2xUb2dnbGVNZW51Py50b2dnbGUoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW5kZXhlcyhyb3dzOiBhbnlbXSkge1xuICAgIGxldCBpbmRleGVzOiBudW1iZXJbXSA9IHJvd3MubWFwKChyb3cpID0+XG4gICAgICB0aGlzLnByaW1lbmdUYWJsZS52YWx1ZS5pbmRleE9mKHJvdylcbiAgICApO1xuXG4gICAgY29uc3QgaW5kZXhlc01hcCA9IHRoaXMudFVuc29ydERpcmVjdGl2ZT8uc29ydEluZGljZXM7XG4gICAgaWYgKGluZGV4ZXNNYXAgJiYgaW5kZXhlc01hcC5sZW5ndGggPiAwKSB7XG4gICAgICBpbmRleGVzID0gaW5kZXhlcy5tYXAoKGkpID0+IGluZGV4ZXNNYXAuaW5kZXhPZihpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4ZXM7XG4gIH1cblxuICBleHBvcnRUYWJsZShmb3JtYXQ6IENwc1RhYmxlRXhwb3J0Rm9ybWF0KSB7XG4gICAgaWYgKHRoaXMuY29sdW1ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbnMgbXVzdCBiZSBkZWZpbmVkIScpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ05vdGhpbmcgdG8gZXhwb3J0IScpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ2Nzdic6XG4gICAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLmV4cG9ydENTVigpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAneGxzeCc6XG4gICAgICAgIHRoaXMuZXhwb3J0WExTWCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gY2FzZSAncGRmJzpcbiAgICAgIC8vICAgdGhpcy5leHBvcnRQREYoKTtcbiAgICAgIC8vICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0WExTWCgpIHtcbiAgICBpbXBvcnQoJ3hsc3gnKS50aGVuKCh4bHN4KSA9PiB7XG4gICAgICBjb25zdCBzaGVldERhdGEgPSBbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChcbiAgICAgICAgICAoYzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gY1t0aGlzLmNvbEhlYWRlck5hbWVdXG4gICAgICAgICksXG4gICAgICAgIC4uLnRoaXMucHJpbWVuZ1RhYmxlLnZhbHVlLm1hcCgoaXRlbTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChcbiAgICAgICAgICAgIChjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiBpdGVtW2NbdGhpcy5jb2xGaWVsZE5hbWVdXVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgXTtcblxuICAgICAgY29uc3Qgd29ya3NoZWV0ID0geGxzeC51dGlscy5qc29uX3RvX3NoZWV0KHNoZWV0RGF0YSwge1xuICAgICAgICBza2lwSGVhZGVyOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHdvcmtib29rID0ge1xuICAgICAgICBTaGVldHM6IHsgW3RoaXMuZXhwb3J0RmlsZW5hbWVdOiB3b3Jrc2hlZXQgfSxcbiAgICAgICAgU2hlZXROYW1lczogW3RoaXMuZXhwb3J0RmlsZW5hbWVdXG4gICAgICB9O1xuICAgICAgY29uc3QgeGxzeEJ1ZmZlcjogYW55ID0geGxzeC53cml0ZSh3b3JrYm9vaywge1xuICAgICAgICBib29rVHlwZTogJ3hsc3gnLFxuICAgICAgICB0eXBlOiAnYXJyYXknXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgRVhDRUxfVFlQRSA9XG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JztcbiAgICAgIGNvbnN0IGJsb2I6IEJsb2IgPSBuZXcgQmxvYihbeGxzeEJ1ZmZlcl0sIHtcbiAgICAgICAgdHlwZTogRVhDRUxfVFlQRVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRvd25sb2FkTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGRvd25sb2FkTGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIGRvd25sb2FkTGluay5kb3dubG9hZCA9IGAke3RoaXMuZXhwb3J0RmlsZW5hbWV9Lnhsc3hgO1xuICAgICAgZG93bmxvYWRMaW5rLmNsaWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBleHBvcnRQREYoKSB7XG4gIC8vICAgY29uc3QgZXhwb3J0Q29sdW1ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcCgoY29sKSA9PiAoe1xuICAvLyAgICAgdGl0bGU6IGNvbFt0aGlzLmNvbEhlYWRlck5hbWVdLFxuICAvLyAgICAgZGF0YUtleTogY29sW3RoaXMuY29sRmllbGROYW1lXVxuICAvLyAgIH0pKTtcbiAgLy8gICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAvLyAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERih7XG4gIC8vICAgICBvcmllbnRhdGlvbjogdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoID4gMyA/ICdsJyA6ICdwJyxcbiAgLy8gICAgIHVuaXQ6ICdweCcsXG4gIC8vICAgICBmb3JtYXQ6ICdhNCdcbiAgLy8gICB9KTtcbiAgLy8gICAoZG9jIGFzIGFueSkuYXV0b1RhYmxlKHtcbiAgLy8gICAgIGhlYWRTdHlsZXM6IHsgZmlsbENvbG9yOiAnIzg3MGEzYycgfSxcbiAgLy8gICAgIGNvbHVtbnM6IGV4cG9ydENvbHVtbnMsXG4gIC8vICAgICBib2R5OiB0aGlzLnByaW1lbmdUYWJsZS52YWx1ZVxuICAvLyAgIH0pO1xuICAvLyAgIGRvYy5zYXZlKGAke3RoaXMuZXhwb3J0RmlsZW5hbWV9LnBkZmApO1xuICAvLyB9XG59XG4iLCI8cC10YWJsZVxuICAjcHJpbWVuZ1RhYmxlXG4gICN0VW5zb3J0RGlyZWN0aXZlPVwidFdpdGhVbnNvcnRcIlxuICB0V2l0aFVuc29ydFxuICBbbmdDbGFzc109XCJ7ICdjcHMtdGFibGUtbG9hZGluZyc6IGxvYWRpbmcgfVwiXG4gIFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICBbdGFibGVTdHlsZV09XCJ0YWJsZVN0eWxlXCJcbiAgW3RhYmxlU3R5bGVDbGFzc109XCJ0YWJsZVN0eWxlQ2xhc3NcIlxuICBbdmFsdWVdPVwiZGF0YVwiXG4gIFtkYXRhS2V5XT1cImRhdGFLZXlcIlxuICBbY29sdW1uc109XCJzZWxlY3RlZENvbHVtbnNcIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHNcIlxuICBbc2hvd0luaXRpYWxTb3J0QmFkZ2VdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZVwiXG4gIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcbiAgW2xhenldPVwibGF6eVwiXG4gIFtsYXp5TG9hZE9uSW5pdF09XCJsYXp5TG9hZE9uSW5pdFwiXG4gIFt2aXJ0dWFsU2Nyb2xsXT1cInZpcnR1YWxTY3JvbGxcIlxuICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiXG4gIFt2aXJ0dWFsU2Nyb2xsT3B0aW9uc109XCJ7IG51bVRvbGVyYXRlZEl0ZW1zOiBudW1Ub2xlcmF0ZWRJdGVtcyB9XCJcbiAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxuICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICBbYWx3YXlzU2hvd1BhZ2luYXRvcl09XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgW3Jvd3NdPVwicm93c1wiXG4gIFtmaXJzdF09XCJmaXJzdFwiXG4gIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgW3Jlc2V0UGFnZU9uU29ydF09XCJyZXNldFBhZ2VPblNvcnRcIlxuICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSAtIHtsYXN0fSBvZiB7dG90YWxSZWNvcmRzfVwiXG4gIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFJvd3NcIlxuICBbbWV0YUtleVNlbGVjdGlvbl09XCJmYWxzZVwiXG4gIFtyb3dIb3Zlcl09XCJyb3dIb3ZlclwiXG4gIFtjdXN0b21Tb3J0XT1cImN1c3RvbVNvcnRcIlxuICBbc29ydE1vZGVdPVwic29ydE1vZGVcIlxuICBbZXhwb3J0RmlsZW5hbWVdPVwiZXhwb3J0RmlsZW5hbWVcIlxuICBbY3N2U2VwYXJhdG9yXT1cImNzdlNlcGFyYXRvclwiXG4gIChvblBhZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkZWQoJGV2ZW50KVwiXG4gIChzb3J0RnVuY3Rpb24pPVwib25Tb3J0RnVuY3Rpb24oJGV2ZW50KVwiXG4gIChvblNvcnQpPVwib25Tb3J0KCRldmVudClcIlxuICAob25GaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gIChvblJvd1Jlb3JkZXIpPVwib25Sb3dSZW9yZGVyKCRldmVudClcIj5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIiAqbmdJZj1cImhhc1Rvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9vbGJhclRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0b29sYmFyVGVtcGxhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1sZWZ0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0b29sYmFySWNvblwiIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItaWNvblwiPlxuICAgICAgICAgIDxjcHMtaWNvbiBbaWNvbl09XCJ0b29sYmFySWNvblwiIFtjb2xvcl09XCJ0b29sYmFySWNvbkNvbG9yXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtdGJhci10aXRsZVwiPnt7IHRvb2xiYXJUaXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0dsb2JhbEZpbHRlclwiIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItZ2xvYmFsLWZpbHRlclwiPlxuICAgICAgICAgIDxjcHMtaW5wdXRcbiAgICAgICAgICAgICNnbG9iYWxGaWx0ZXJDb21wXG4gICAgICAgICAgICBwcmVmaXhJY29uPVwic2VhcmNoXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnbG9iYWxGaWx0ZXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uRmlsdGVyR2xvYmFsKCRldmVudClcIlxuICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cInRvb2xiYXJTaXplID09PSAnc21hbGwnID8gJ3VuZGVybGluZWQnIDogJ291dGxpbmVkJ1wiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiPlxuICAgICAgICAgIDwvY3BzLWlucHV0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS10YmFyLXJpZ2h0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dSZW1vdmVCdG5PblNlbGVjdCAmJiBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1idG4tb24tc2VsZWN0XCI+XG4gICAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICAgIGxhYmVsPVwiUmVtb3ZlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1vdmVCdG5PblNlbGVjdERpc2FibGVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJlcGFyZWRcIlxuICAgICAgICAgICAgdHlwZT1cImJvcmRlcmxlc3NcIlxuICAgICAgICAgICAgaWNvbj1cInJlbW92ZVwiXG4gICAgICAgICAgICBbc2l6ZV09XCJ0b29sYmFyU2l6ZVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJyZW1vdmVTZWxlY3RlZCgpXCI+XG4gICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0FkZGl0aW9uYWxCdG5PblNlbGVjdCAmJiBzZWxlY3RlZFJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1idG4tb24tc2VsZWN0XCI+XG4gICAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICAgIFtsYWJlbF09XCJhZGRpdGlvbmFsQnRuT25TZWxlY3RUaXRsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkaXRpb25hbEJ0bk9uU2VsZWN0RGlzYWJsZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwiYm9yZGVybGVzc1wiXG4gICAgICAgICAgICBbc2l6ZV09XCJ0b29sYmFyU2l6ZVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNsaWNrQWRkaXRpb25hbEJ0bk9uU2VsZWN0KClcIj5cbiAgICAgICAgICA8L2Nwcy1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FjdGlvbkJ0blwiIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItYWN0aW9uLWJ0blwiPlxuICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uQnRuVGl0bGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbkJ0bkRpc2FibGVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJlcGFyZWRcIlxuICAgICAgICAgICAgdHlwZT1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cInRvb2xiYXJTaXplXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2xpY2tBY3Rpb25CdG4oKVwiPlxuICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dDb2x1bW5zVG9nZ2xlQnRuICYmIGNvbHVtbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1jb2x0b2dnbGUtYnRuXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBjb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQgfVwiPlxuICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgaWNvbj1cImNvbHVtbnNcIlxuICAgICAgICAgICAgc2l6ZT1cIm5vcm1hbFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiXG4gICAgICAgICAgICAgIGNvbHVtbnNUb2dnbGVCdG5EaXNhYmxlZCA/ICd0ZXh0LWxpZ2h0ZXN0JyA6ICdwcmVwYXJlZC1saWdodGVuMSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Db2x1bW5zVG9nZ2xlKCRldmVudClcIj48L2Nwcy1pY29uPlxuICAgICAgICAgIDxjcHMtbWVudSAjY29sVG9nZ2xlTWVudSBbd2l0aEFycm93XT1cImZhbHNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtIHNlbGVjdC1hbGwtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWxsc2VsZWN0ZWRdPVwic2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA9PT0gY29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxDb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tY2hlY2tcIj4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5TaG93IGFsbCBjb2x1bW5zPC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc0NvbHVtblNlbGVjdGVkKGNvbClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tY2hlY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxhYmVsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY29sW2NvbEhlYWRlck5hbWVdXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jcHMtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dFeHBvcnRCdG5cIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItZXhwb3J0LWJ0blwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLWRpc2FibGVkJzogZXhwb3J0QnRuRGlzYWJsZWQgfVwiPlxuICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgaWNvbj1cImV4cG9ydFwiXG4gICAgICAgICAgICBzaXplPVwiMjBcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImV4cG9ydEJ0bkRpc2FibGVkID8gJ3RleHQtbGlnaHQnIDogJ3ByZXBhcmVkLWxpZ2h0ZW4xJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FeHBvcnREYXRhKCRldmVudClcIj48L2Nwcy1pY29uPlxuICAgICAgICAgIDxjcHMtbWVudVxuICAgICAgICAgICAgI2V4cG9ydE1lbnVcbiAgICAgICAgICAgIFtpdGVtc109XCJleHBvcnRNZW51SXRlbXNcIlxuICAgICAgICAgICAgW2NvbXByZXNzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbd2l0aEFycm93XT1cImZhbHNlXCI+XG4gICAgICAgICAgPC9jcHMtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dEYXRhUmVsb2FkQnRuXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLXJlbG9hZC1idG5cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGRhdGFSZWxvYWRCdG5EaXNhYmxlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgICBzaXplPVwiMThcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGFSZWxvYWRCdG5EaXNhYmxlZCA/ICd0ZXh0LWxpZ2h0JyA6ICdwcmVwYXJlZC1saWdodGVuMSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVsb2FkRGF0YSgpXCI+XG4gICAgICAgICAgPC9jcHMtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgKm5nSWY9XCJuZXN0ZWRIZWFkZXJUZW1wbGF0ZVwiIGxldC1jb2x1bW5zPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBuZXN0ZWRIZWFkZXJUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICRpbXBsaWNpdDogY29sdW1ucyxcbiAgICAgICAgfVxuICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICpuZ0lmPVwiIW5lc3RlZEhlYWRlclRlbXBsYXRlXCIgbGV0LWNvbHVtbnM+XG4gICAgPHRyPlxuICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDNyZW1cIiAqbmdJZj1cInJvd0V4cGFuc2lvblRlbXBsYXRlXCI+PC90aD5cbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAzcmVtXCIgKm5nSWY9XCJyZW9yZGVyYWJsZVJvd3NcIj48L3RoPlxuICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW1cIiAqbmdJZj1cInNlbGVjdGFibGVcIj5cbiAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cbiAgICAgIDwvdGg+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2x1bW5zLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlclRlbXBsYXRlICYmIGNvbHVtbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydGFibGVcIj5cbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW2Nwc1RDb2xTb3J0YWJsZV09XCJjb2xbY29sRmllbGROYW1lXVwiPlxuICAgICAgICAgICAge3sgY29sW2NvbEhlYWRlck5hbWVdIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc29ydGFibGVcIj5cbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICB7eyBjb2xbY29sSGVhZGVyTmFtZV0gfX1cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRoXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDJyZW1cIlxuICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1yb3ctbWVudS1jZWxsXCJcbiAgICAgICAgKm5nSWY9XCJzaG93Um93TWVudVwiPjwvdGg+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGVcbiAgICBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICBsZXQtcm93RGF0YVxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgbGV0LWl0ZW1cbiAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cbiAgICA8dHJcbiAgICAgIFtwUmVvcmRlcmFibGVSb3ddPVwicm93SW5kZXhcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnY3BzLXRhYmxlLXJvdy1zZWxlY3RlZCc6IHNlbGVjdGFibGUgJiYgcHJpbWVuZ1RhYmxlLmlzU2VsZWN0ZWQoaXRlbSlcbiAgICAgIH1cIj5cbiAgICAgIDx0ZCAqbmdJZj1cInJvd0V4cGFuc2lvblRlbXBsYXRlXCIgY2xhc3M9XCJjcHMtdGFibGUtcm93LWNoZXZyb24tY2VsbFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtcm93LWNoZXZyb25cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Nwcy10YWJsZS1yb3ctY2hldnJvbi1leHBhbmRlZCc6IGV4cGFuZGVkIH1cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIGNvbG9yPVwidGV4dC1kYXJrXCJcbiAgICAgICAgICAgIFtwUm93VG9nZ2xlcl09XCJpdGVtXCI+XG4gICAgICAgICAgPC9jcHMtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgICAgPHRkICpuZ0lmPVwicmVvcmRlcmFibGVSb3dzXCIgY2xhc3M9XCJjcHMtdGFibGUtcm93LWRyYWctaGFuZGxlLWNlbGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtcm93LWRyYWctaGFuZGxlXCIgcFJlb3JkZXJhYmxlUm93SGFuZGxlPuKYsDwvc3Bhbj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cIml0ZW1cIj48L3AtdGFibGVDaGVja2JveD5cbiAgICAgIDwvdGQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYm9keVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgICAgICAgcm93RGF0YTogcm93RGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFib2R5VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sW2NvbEZpZWxkTmFtZV1dIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ZCAqbmdJZj1cInNob3dSb3dNZW51XCIgY2xhc3M9XCJjcHMtdGFibGUtcm93LW1lbnUtY2VsbFwiPlxuICAgICAgICA8dGFibGUtcm93LW1lbnVcbiAgICAgICAgICAoZWRpdFJvd0J0bkNsaWNrZWQpPVwib25FZGl0Um93Q2xpY2tlZChpdGVtKVwiXG4gICAgICAgICAgKHJlbW92ZVJvd0J0bkNsaWNrZWQpPVwib25SZW1vdmVSb3dDbGlja2VkKGl0ZW0pXCJcbiAgICAgICAgICBbc2hvd1Jvd1JlbW92ZUJ1dHRvbl09XCJzaG93Um93UmVtb3ZlQnV0dG9uXCI+PC90YWJsZS1yb3ctbWVudT5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiICpuZ0lmPVwicm93RXhwYW5zaW9uVGVtcGxhdGVcIiBsZXQtaXRlbT5cbiAgICA8dHIgY2xhc3M9XCJjcHMtdGFibGUtcm93LWV4cGFuZGVkLWNvbnRlbnRcIj5cbiAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgcm93RXhwYW5zaW9uVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogaXRlbVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgPHRyPlxuICAgICAgPHRkXG4gICAgICAgIGNvbHNwYW49XCIxMDBcIlxuICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1lbXB0eS1tZXNzYWdlLXRkXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGVtcHR5Qm9keUhlaWdodCB9XCI+XG4gICAgICAgIHt7IGVtcHR5TWVzc2FnZSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibG9hZGluZ2ljb25cIj5cbiAgICA8Y3BzLWxvYWRlciBbZnVsbFNjcmVlbl09XCJmYWxzZVwiIG9wYWNpdHk9XCIwXCI+PC9jcHMtbG9hZGVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ybGVmdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtcGFnaW5hdG9yLWl0bXMtcGVyLXBhZ2VcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLXBhZ2luYXRvci1pdGVtcy1wZXItcGFnZS10aXRsZVwiXG4gICAgICAgID5Sb3dzIHBlciBwYWdlOlxuICAgICAgPC9zcGFuPlxuICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgW29wdGlvbnNdPVwicm93T3B0aW9uc1wiXG4gICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblJvd3NQZXJQYWdlQ2hhbmdlZCgpXCJcbiAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgIG9wdGlvbnNDbGFzcz1cImNwcy1wYWdpbmF0b3ItcGFnZS1vcHRpb25zXCI+XG4gICAgICA8L2Nwcy1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtdGFibGU+XG4iXX0=
|