@fundamental-ngx/platform 0.51.2-rc.13 → 0.51.2-rc.15

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.
@@ -185,7 +185,7 @@ export class TableRowComponent extends TableRowDirective {
185
185
  provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
186
186
  useExisting: TableRowComponent
187
187
  }
188
- ], viewQueries: [{ propertyName: "_focusableViewCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }, { propertyName: "_editableCells", predicate: EditableTableCell, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n", dependencies: [{ kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: DisabledBehaviorDirective, selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { 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: "directive", type: PlatformTableCellResizableDirective, selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TableEditableCellComponent, selector: "fdp-table-editable-cell", inputs: ["row", "column", "columnValue"] }, { kind: "directive", type: TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: ["class", "glyph", "glyphFont", "navigation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ValueByPathPipe, name: "valueByPath" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SelectionCellStylesPipe, name: "selectionCellStyles" }, { kind: "pipe", type: TableCellStylesPipe, name: "tableCellStyles" }, { kind: "pipe", type: ColumnResizableSidePipe, name: "columnResizableSide" }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
188
+ ], viewQueries: [{ propertyName: "_focusableViewCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }, { propertyName: "_editableCells", predicate: EditableTableCell, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n", dependencies: [{ kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: DisabledBehaviorDirective, selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { 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: "directive", type: PlatformTableCellResizableDirective, selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TableEditableCellComponent, selector: "fdp-table-editable-cell", inputs: ["row", "column", "columnValue"] }, { kind: "directive", type: TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: ["class", "glyph", "glyphFont", "navigation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ValueByPathPipe, name: "valueByPath" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SelectionCellStylesPipe, name: "selectionCellStyles" }, { kind: "pipe", type: TableCellStylesPipe, name: "tableCellStyles" }, { kind: "pipe", type: ColumnResizableSidePipe, name: "columnResizableSide" }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
189
189
  }
190
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TableRowComponent, decorators: [{
191
191
  type: Component,
@@ -216,7 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
216
216
  TableCellStylesPipe,
217
217
  ColumnResizableSidePipe,
218
218
  IconComponent
219
- ], template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n" }]
219
+ ], template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n" }]
220
220
  }], ctorParameters: () => [], propDecorators: { rowId: [{
221
221
  type: Input
222
222
  }], row: [{
@@ -252,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
252
252
  type: HostBinding,
253
253
  args: ['attr.aria-selected']
254
254
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1yb3cvdGFibGUtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1yb3cvdGFibGUtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUNOLFNBQVMsRUFFVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUc1QixPQUFPLEVBQ1AsVUFBVSxFQUNWLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFB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O3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBEaXNhYmxlZEJlaGF2aW9yRGlyZWN0aXZlLFxuICAgIEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgRkRLX0ZPQ1VTQUJMRV9MSVNUX0RJUkVDVElWRSxcbiAgICBGb2N1c2FibGVJdGVtRGlyZWN0aXZlLFxuICAgIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIFJ0bFNlcnZpY2UsXG4gICAgVmFsdWVCeVBhdGhQaXBlLFxuICAgIGRlc3Ryb3lPYnNlcnZhYmxlLFxuICAgIHV1aWR2NFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNlbGxEaXJlY3RpdmUsXG4gICAgVGFibGVJY29uRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlU3RhdHVzSW5kaWNhdG9yRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5SZXNpemFibGVTaWRlUGlwZSxcbiAgICBFZGl0YWJsZVRhYmxlQ2VsbCxcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSxcbiAgICBTZWxlY3Rpb25Nb2RlLFxuICAgIFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICBUYWJsZUNlbGxTdHlsZXNQaXBlLFxuICAgIFRhYmxlQ29sdW1uLFxuICAgIFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZVJvd0tleWJvYXJkRHJhZyxcbiAgICBUYWJsZVJvd1NlcnZpY2UsXG4gICAgVGFibGVTZXJ2aWNlLFxuICAgIGlzVHJlZVJvdyxcbiAgICBpc1RyZWVSb3dGaXJzdENlbGxcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYmxlRWRpdGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtZWRpdGFibGUtY2VsbC90YWJsZS1lZGl0YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRwLXRhYmxlLXJvd10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVSb3dDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncm93JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ19pc1RyZWVSb3cocm93KSA/IHJvdy5leHBhbmRlZCA6IG51bGwnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVN0YXR1c0luZGljYXRvckRpcmVjdGl2ZSxcbiAgICAgICAgRGlzYWJsZWRCZWhhdmlvckRpcmVjdGl2ZSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgVGFibGVFZGl0YWJsZUNlbGxDb21wb25lbnQsXG4gICAgICAgIFRhYmxlSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBWYWx1ZUJ5UGF0aFBpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgU2VsZWN0aW9uQ2VsbFN0eWxlc1BpcGUsXG4gICAgICAgIFRhYmxlQ2VsbFN0eWxlc1BpcGUsXG4gICAgICAgIENvbHVtblJlc2l6YWJsZVNpZGVQaXBlLFxuICAgICAgICBJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVJvd0NvbXBvbmVudDxUPiBleHRlbmRzIFRhYmxlUm93RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgLyoqIFJvdyBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJvd0lkOiBzdHJpbmc7XG5cbiAgICAvKiogVGFibGUgUm93LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93OiBUYWJsZVJvdzxUPjtcblxuICAgIC8qKiBSb3cgaW5kZXguICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm93aW5kZXgnKVxuICAgIEBJbnB1dCgpXG4gICAgaW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBTZWxlY3Rpb24gbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZTtcblxuICAgIC8qKiBTZWxlY3RhYmxlIGZsYWcga2V5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0YWJsZUtleTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNoZWNrYm94IHRyaXN0YXRlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVUcmlzdGF0ZU1vZGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZpeCB0aGUgdGFibGUgaGVhZGVyIGFuZCBmb290ZXIuIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKiBOb3RlIHRoYXQgaWYgdGhlIHRhYmxlIGNvbnRhaW5zIGZyZWV6YWJsZSBjb2x1bW5zLCB0aGUgaGVhZGVyIGFuZFxuICAgICAqIGZvb3RlciB3aWxsIGJlIGZpeGVkIGF1dG9tYXRpY2FsbHksIHJlZ2FyZGxlc3Mgb2YgdGhpcyBpbnB1dCB2YWx1ZS5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZml4ZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogU2VsZWN0aW9uIGNvbHVtbiB3aWR0aC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbkNvbHVtbldpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogVGhlIGNvbHVtbiBgbmFtZWAgdG8gZnJlZXplIGNvbHVtbnMgdXAgdG8gYW5kIGluY2x1ZGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBjb2x1bW4gYG5hbWVgIHRvIGZyZWV6ZSBjb2x1bW5zIGFmdGVyIGFuZCBpbmNsdWRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBmcmVlemVFbmRDb2x1bW5zVG86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBrZXlib2FyZCBkcmFnIHBlcmZvcm1lZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBrZXlib2FyZERyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93S2V5Ym9hcmREcmFnPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUpXG4gICAgcHJpdmF0ZSBzZXQgX2ZvY3VzYWJsZVZpZXdDZWxsSXRlbXMoaXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRWRpdGFibGVUYWJsZUNlbGwpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGFibGVDZWxsczogUXVlcnlMaXN0PEVkaXRhYmxlVGFibGVDZWxsPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIHByaXZhdGUgZ2V0IF9hcmlhU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucm93LmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFzUm93SGVhZGVyQ29sdW1uJCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKS5zb21lKChjKSA9PiBjLnJvbGUgPT09ICdyb3doZWFkZXInKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9ydGwkID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLl9ydGxTZXJ2aWNlPy5ydGxTaWduYWwoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yb3dTZWxlY3Rpb25IZWxwZXJUZXh0SWQgPSBgcm93U2VsZWN0aW9uSGVscGVyLSR7dXVpZHY0KCl9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzVHJlZVJvd0ZpcnN0Q2VsbCA9IGlzVHJlZVJvd0ZpcnN0Q2VsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgU0VMRUNUSU9OX01PREUgPSBTZWxlY3Rpb25Nb2RlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlciA9IGluamVjdChDb250ZW50RGVuc2l0eU9ic2VydmVyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfZmRwVGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF90YWJsZVJvd1NlcnZpY2UgPSBpbmplY3QoVGFibGVSb3dTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzVHJlZVJvdyA9IGlzVHJlZVJvdztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaENoaWxkUm93cyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbG1SZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RuZFRhYmxlRGlyZWN0aXZlID0gaW5qZWN0KFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UucmVzaXplSW5Qcm9ncmVzcyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UubWFya0ZvckNoZWNrKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fZG5kVGFibGVEaXJlY3RpdmUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbktleURvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5fZWRpdGFibGVDZWxscy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuX2VkaXRhYmxlQ2VsbHMudG9BcnJheSgpO1xuICAgICAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudXBkYXRlRWRpdGFibGVDZWxscyh0aGlzLnJvdywgY2VsbHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UucmVtb3ZlRWRpdGFibGVDZWxscyh0aGlzLnJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCdyb3cnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvUm93RXhwYW5zaW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoQ2hpbGRSb3dzJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5yZW1vdmVFZGl0YWJsZUNlbGxzKHRoaXMucm93KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVHcm91cFJvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVSb3cnLCByb3c6IHRoaXMucm93IH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93Jywgcm93OiB0aGlzLnJvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3c6IFRhYmxlUm93PFQ+LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudG9nZ2xlUm93KHsgLi4ueyByb3csIGV2ZW50IH0sIC4uLnsgdHlwZTogJ3RvZ2dsZU11bHRpU2VsZWN0Um93JyB9IH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtblRyYWNrQnkoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubmFtZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtRm9jdXNlZEV2ZW50QW5ub3VuY2VyID0gKHBvc2l0aW9uOiBGb2N1c2FibGVJdGVtUG9zaXRpb24pOiBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgcmV0VmFsID0gYENvbHVtbiAke3Bvc2l0aW9uLmNvbEluZGV4ICsgMX0gb2YgJHtwb3NpdGlvbi50b3RhbENvbHN9LCBgO1xuICAgICAgICBsZXQgY29sdW1uO1xuICAgICAgICBpZiAodGhpcy5fZmRwVGFibGVTZXJ2aWNlPy52aXNpYmxlQ29sdW1ucyQpIHtcbiAgICAgICAgICAgIGxldCBjb2xJbmRleCA9IHBvc2l0aW9uLmNvbEluZGV4O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgY29sSW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbiA9IHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKVtjb2xJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbHVtbiAmJiAoY29sdW1uLl9mcmVlemVkIHx8IGNvbHVtbi5fZW5kRnJlZXplZCkpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICdmaXhlZCwgJztcbiAgICAgICAgfVxuICAgICAgICByZXRWYWwgPSByZXRWYWwgKyBgcm93OiAke3Bvc2l0aW9uLnJvd0luZGV4ICsgMX0gb2YgJHtwb3NpdGlvbi50b3RhbFJvd3N9YDtcbiAgICAgICAgaWYgKHRoaXMuX2lzVHJlZVJvdyh0aGlzLnJvdykgfHwgdGhpcy5yb3cubGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnLCBsZXZlbCAnICsgKHRoaXMucm93LmxldmVsICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUNlbGxTcGFjZUtleShjb2xJZHg6IG51bWJlciwgdGFibGVDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsICRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgPT09IHRhYmxlQ2VsbEVsZW1lbnQgJiYgaXNUcmVlUm93Rmlyc3RDZWxsKGNvbElkeCwgdGhpcy5yb3csICRldmVudCkpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlR3JvdXBSb3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Sb3dFeHBhbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLm5leHQoKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaCA9IG1lcmdlKHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLCBkZXN0cm95T2JzZXJ2YWJsZSh0aGlzLl9kZXN0cm95UmVmKSk7XG4gICAgICAgIC8vIExvYWQgaXRlbXMgb25seSBvbmNlLiBGdXJ0aGVyIGxvYWRpbmcgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBsYXp5IGxvYWRpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgICAgdGhpcy5yb3c/LmV4cGFuZGVkJFxuICAgICAgICAgICAgPy5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXhwYW5kZWQpID0+IGV4cGFuZGVkICYmIHRoaXMucm93LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHJlZnJlc2gpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UubG9hZENoaWxkUm93cyh0aGlzLnJvdyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0Fycm93RG93biA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKTtcbiAgICAgICAgY29uc3QgaXNBcnJvd1VwID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKTtcblxuICAgICAgICBpZiAoIWV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0Fycm93RG93biAmJiAhaXNBcnJvd1VwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kbmRUYWJsZURpcmVjdGl2ZT8uZHJhZ1Jvd0Zyb21LZXlib2FyZChcbiAgICAgICAgICAgIGlzQXJyb3dEb3duID8gJ2Rvd24nIDogJ3VwJyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGhpcy5pbmRleCxcbiAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID8gJ2dyb3VwJyA6ICdzaGlmdCdcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJAaWYgKF9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nJCgpOyBhcyBzZW1hbnRpY0hpZ2hsaWdodGluZykge1xuICAgIDx0ZFxuICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3JcbiAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuICAgICAgICBbc3RhdHVzXT1cInJvdy52YWx1ZVtzZW1hbnRpY0hpZ2hsaWdodGluZ11cIlxuICAgICAgICBbY2VsbEZvY3VzZWRFdmVudEFubm91bmNlcl09XCJfaXRlbUZvY3VzZWRFdmVudEFubm91bmNlclwiXG4gICAgPjwvdGQ+XG59XG48IS0tIGhpZGRlbiB0ZXh0IGZvciBzY3JlZW5yZWFkZXIgLS0+XG48bmctdGVtcGxhdGUgI3NlbGVjdGlvblNjcmVlblJlYWRlclRleHQ+XG4gICAgPHNwYW5cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiX3Jvd1NlbGVjdGlvbkhlbHBlclRleHRJZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUgIWltcG9ydGFudCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICB7eyAocm93LmNoZWNrZWQgPyAncGxhdGZvcm1UYWJsZS5kZXNlbGVjdFNpbmdsZVJvdycgOiAncGxhdGZvcm1UYWJsZS5zZWxlY3RTaW5nbGVSb3cnKSB8IGZkVHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gUm93IFNlbGVjdGlvbiBDZWxsIC0tPlxuQGlmIChzZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5TSU5HTEUpIHtcbiAgICBAaWYgKHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZpeGVkXT1cImZpeGVkXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiX2hhc1Jvd0hlYWRlckNvbHVtbiQoKSA/ICdyb3doZWFkZXInIDogJ2dyaWRjZWxsJ1wiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLmNvbnRlbnREZW5zaXR5JCgpXG4gICAgICAgICAgICAgICAgICAgIHwgc2VsZWN0aW9uQ2VsbFN0eWxlczogX3J0bCQoKSA6IF9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkKClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInJvdy5jaGVja2VkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfcm93U2VsZWN0aW9uSGVscGVyVGV4dElkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl90b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93KCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2VsbEZvY3VzZWRFdmVudEFubm91bmNlcl09XCJfaXRlbUZvY3VzZWRFdmVudEFubm91bmNlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3Rpb25TY3JlZW5SZWFkZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICA+PC90ZD5cbiAgICB9XG59IEBlbHNlIGlmIChzZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5NVUxUSVBMRSkge1xuICAgIEBpZiAocm93LnZhbHVlW3NlbGVjdGFibGVLZXldICE9PSBmYWxzZSkge1xuICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGFibGVfX2NlbGwtLWNoZWNrYm94XCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICAgICAgcm9sZT1cImNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3csICRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX3RvZ2dsZU11bHRpU2VsZWN0Um93KHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3Jvd1NlbGVjdGlvbkhlbHBlclRleHRJZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInJvdy5jaGVja2VkXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcbiAgICAgICAgICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5jb250ZW50RGVuc2l0eSQoKVxuICAgICAgICAgICAgICAgICAgICB8IHNlbGVjdGlvbkNlbGxTdHlsZXM6IF9ydGwkKCkgOiBfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCgpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0aW9uU2NyZWVuUmVhZGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICB0YWJJbmRleFZhbHVlPVwiLTFcIlxuICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJmZC10YWJsZV9fY2hlY2tib3gtbGFiZWxcIlxuICAgICAgICAgICAgICAgIFt0cmlzdGF0ZV09XCJlbmFibGVUcmlzdGF0ZU1vZGVcIlxuICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvdy5jaGVja2VkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlTXVsdGlTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICA+PC90ZD5cbiAgICB9XG59XG5AZm9yIChjb2x1bW4gb2YgX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKTsgdHJhY2sgY29sdW1uLm5hbWUpIHtcbiAgICA8dGRcbiAgICAgICAgI3RhYmxlQ2VsbEVsZW1lbnRcbiAgICAgICAgW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV09XCJcbiAgICAgICAgICAgICRpbmRleFxuICAgICAgICAgICAgICAgIHwgY29sdW1uUmVzaXphYmxlU2lkZVxuICAgICAgICAgICAgICAgICAgICA6IF9mZHBUYWJsZVNlcnZpY2UudmlzaWJsZUNvbHVtbnNMZW5ndGgoKVxuICAgICAgICAgICAgICAgICAgICA6IF9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCgpXG4gICAgICAgIFwiXG4gICAgICAgIFtjb2x1bW5OYW1lXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJjb2x1bW4ucm9sZVwiXG4gICAgICAgIFtoZWFkZXJzXT1cInJvd0lkICsgJ19fJyArIGNvbHVtbi5uYW1lXCJcbiAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAnZmRwLXRhYmxlX19jb2wtLScgKyBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgIGNvbHVtbi5fZnJlZXplZCA/ICdmZC10YWJsZV9fY2VsbC0tZml4ZWQnIDogJycsXG4gICAgICAgICAgICBjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1sYXN0JyA6ICcnLFxuICAgICAgICAgICAgY29sdW1uLl9lbmRGcmVlemVkID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1lbmQnIDogJycsXG4gICAgICAgICAgICBjb2x1bW4ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1lbmQtbGFzdCcgOiAnJyxcbiAgICAgICAgICAgIHJvdy5pc1RyZWUgJiYgJGluZGV4ID09PSAwID8gJ2ZkLXRhYmxlX19jZWxsLS1leHBhbmQnIDogJycsXG4gICAgICAgICAgICAkbGFzdCAmJiAhX2ZkcFRhYmxlU2VydmljZS5faXNTaG93bk5hdmlnYXRpb25Db2x1bW4kKCkgPyAnaXMtbGFzdC1jaGlsZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICB8IHRhYmxlQ2VsbFN0eWxlc1xuICAgICAgICAgICAgICAgICAgICA6IF9ydGwkKClcbiAgICAgICAgICAgICAgICAgICAgOiBfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCgpXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0aW9uQ29sdW1uV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4uX2ZyZWV6ZWRcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4uX2VuZEZyZWV6ZWRcbiAgICAgICAgICAgICAgICAgICAgOiBfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldFByZXZDb2x1bW5zV2lkdGgoY29sdW1uLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIDogX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICA6IF90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UuZ2V0TmV4dENvbHVtbnNXaWR0aChjb2x1bW4ubmFtZSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJfaXNUcmVlUm93Rmlyc3RDZWxsKCRpbmRleCwgcm93KSA/IHJvdy5leHBhbmRlZCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5kYXRhLW5lc3RpbmctbGV2ZWxdPVwiJGluZGV4ID09PSAwID8gcm93LmxldmVsICsgMSA6IG51bGxcIlxuICAgICAgICAoY2VsbEZvY3VzZWQpPVwiX3RhYmxlUm93U2VydmljZS5jZWxsRm9jdXNlZCgkZXZlbnQpOyBfdGFibGVSb3dTZXJ2aWNlLmNlbGxBY3RpdmF0ZSgkaW5kZXgsIHJvdylcIlxuICAgICAgICAoY2xpY2spPVwiX3RhYmxlUm93U2VydmljZS5jZWxsQ2xpY2tlZCh7IGluZGV4OiAkaW5kZXgsIHJvdyB9KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIl9pc1RyZWVSb3dGaXJzdENlbGwoJGluZGV4LCByb3csICRldmVudCkgJiYgX3RvZ2dsZUdyb3VwUm93KClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwiX3RhYmxlUm93U2VydmljZS5zY3JvbGxUb092ZXJsYXBwZWRDZWxsKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd1JpZ2h0KT1cIl90YWJsZVJvd1NlcnZpY2Uuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCgpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX2hhbmRsZUNlbGxTcGFjZUtleSgkaW5kZXgsIHRhYmxlQ2VsbEVsZW1lbnQsICRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX190ZXh0XT1cImNvbHVtbi5hcHBseVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX190ZXh0LS1uby13cmFwXT1cImNvbHVtbi5ub1dyYXBcIlxuICAgICAgICAgICAgI3RhYmxlVGV4dENvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKF9pc1RyZWVSb3dGaXJzdENlbGwoJGluZGV4LCByb3cpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fZXhwYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX19leHBhbmQtLW9wZW5dPVwicm93LmV4cGFuZGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChyb3cuc3RhdGUgPT09ICdyZWFkb25seScpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHRhYmxlVGV4dENvbnRhaW5lci5pbm5lclRleHQ/LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlICFpbXBvcnRhbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVGFibGUuZW1wdHlDZWxsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LmNvbHVtbkNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jb2x1bW5DZWxsVGVtcGxhdGUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LnZhbHVlLCBwb3BwaW5nOiBmYWxzZSwgcm93SW5kZXg6IHJvdy5pbmRleCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IHJvdy52YWx1ZSB8IHZhbHVlQnlQYXRoOiBjb2x1bW4ua2V5IH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LmVkaXRhYmxlQ29sdW1uQ2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmVkaXRhYmxlQ29sdW1uQ2VsbFRlbXBsYXRlIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdy52YWx1ZSwgcG9wcGluZzogZmFsc2UsIHJvd0luZGV4OiByb3cuaW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWVkaXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5WYWx1ZV09XCJyb3cudmFsdWUgfCB2YWx1ZUJ5UGF0aDogY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC10YWJsZS1lZGl0YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbn1cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbkBpZiAoX2ZkcFRhYmxlU2VydmljZS5faXNTaG93bk5hdmlnYXRpb25Db2x1bW4kKCkpIHtcbiAgICA8dGQgZmQtdGFibGUtY2VsbCBjbGFzcz1cImZkcC10YWJsZV9fY2VsbC0tbmF2aWdhdGlvbiBpcy1sYXN0LWNoaWxkXCIgZmRrRGlzYWJsZWQgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIj5cbiAgICAgICAgQGlmIChyb3cubmF2aWdhdGFibGUpIHtcbiAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgZmQtdGFibGUtaWNvblxuICAgICAgICAgICAgICAgIFtuYXZpZ2F0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJfcnRsJCgpID8gJ3NsaW0tYXJyb3ctbGVmdCcgOiAnc2xpbS1hcnJvdy1yaWdodCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXRhYmxlX19uYXZpZ2F0aW9uLWluZGljYXRvclwiXG4gICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICB9XG4gICAgPC90ZD5cbn1cbjx0ZFxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJmZC10YWJsZV9fY2VsbCBmZC10YWJsZV9fY2VsbC0tbW9ja1wiXG4gICAgW2NsYXNzLmZkLXRhYmxlX19jZWxsLS1tb2NrLWJvcmRlcmxlc3NdPVwiIV90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UuY2VsbE1vY2tWaXNpYmxlJCgpXCJcbiAgICBmZGtEaXNhYmxlZFxuICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbj48L3RkPlxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1yb3cvdGFibGUtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1yb3cvdGFibGUtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUNOLFNBQVMsRUFFVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUc1QixPQUFPLEVBQ1AsVUFBVSxFQUNWLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFB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O3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBEaXNhYmxlZEJlaGF2aW9yRGlyZWN0aXZlLFxuICAgIEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgRkRLX0ZPQ1VTQUJMRV9MSVNUX0RJUkVDVElWRSxcbiAgICBGb2N1c2FibGVJdGVtRGlyZWN0aXZlLFxuICAgIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIFJ0bFNlcnZpY2UsXG4gICAgVmFsdWVCeVBhdGhQaXBlLFxuICAgIGRlc3Ryb3lPYnNlcnZhYmxlLFxuICAgIHV1aWR2NFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNlbGxEaXJlY3RpdmUsXG4gICAgVGFibGVJY29uRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlU3RhdHVzSW5kaWNhdG9yRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5SZXNpemFibGVTaWRlUGlwZSxcbiAgICBFZGl0YWJsZVRhYmxlQ2VsbCxcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSxcbiAgICBTZWxlY3Rpb25Nb2RlLFxuICAgIFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICBUYWJsZUNlbGxTdHlsZXNQaXBlLFxuICAgIFRhYmxlQ29sdW1uLFxuICAgIFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZVJvd0tleWJvYXJkRHJhZyxcbiAgICBUYWJsZVJvd1NlcnZpY2UsXG4gICAgVGFibGVTZXJ2aWNlLFxuICAgIGlzVHJlZVJvdyxcbiAgICBpc1RyZWVSb3dGaXJzdENlbGxcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYmxlRWRpdGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtZWRpdGFibGUtY2VsbC90YWJsZS1lZGl0YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRwLXRhYmxlLXJvd10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVSb3dDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncm93JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ19pc1RyZWVSb3cocm93KSA/IHJvdy5leHBhbmRlZCA6IG51bGwnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVN0YXR1c0luZGljYXRvckRpcmVjdGl2ZSxcbiAgICAgICAgRGlzYWJsZWRCZWhhdmlvckRpcmVjdGl2ZSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgVGFibGVFZGl0YWJsZUNlbGxDb21wb25lbnQsXG4gICAgICAgIFRhYmxlSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBWYWx1ZUJ5UGF0aFBpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgU2VsZWN0aW9uQ2VsbFN0eWxlc1BpcGUsXG4gICAgICAgIFRhYmxlQ2VsbFN0eWxlc1BpcGUsXG4gICAgICAgIENvbHVtblJlc2l6YWJsZVNpZGVQaXBlLFxuICAgICAgICBJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVJvd0NvbXBvbmVudDxUPiBleHRlbmRzIFRhYmxlUm93RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgLyoqIFJvdyBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJvd0lkOiBzdHJpbmc7XG5cbiAgICAvKiogVGFibGUgUm93LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93OiBUYWJsZVJvdzxUPjtcblxuICAgIC8qKiBSb3cgaW5kZXguICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm93aW5kZXgnKVxuICAgIEBJbnB1dCgpXG4gICAgaW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBTZWxlY3Rpb24gbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZTtcblxuICAgIC8qKiBTZWxlY3RhYmxlIGZsYWcga2V5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0YWJsZUtleTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNoZWNrYm94IHRyaXN0YXRlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVUcmlzdGF0ZU1vZGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZpeCB0aGUgdGFibGUgaGVhZGVyIGFuZCBmb290ZXIuIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKiBOb3RlIHRoYXQgaWYgdGhlIHRhYmxlIGNvbnRhaW5zIGZyZWV6YWJsZSBjb2x1bW5zLCB0aGUgaGVhZGVyIGFuZFxuICAgICAqIGZvb3RlciB3aWxsIGJlIGZpeGVkIGF1dG9tYXRpY2FsbHksIHJlZ2FyZGxlc3Mgb2YgdGhpcyBpbnB1dCB2YWx1ZS5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZml4ZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogU2VsZWN0aW9uIGNvbHVtbiB3aWR0aC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbkNvbHVtbldpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogVGhlIGNvbHVtbiBgbmFtZWAgdG8gZnJlZXplIGNvbHVtbnMgdXAgdG8gYW5kIGluY2x1ZGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBjb2x1bW4gYG5hbWVgIHRvIGZyZWV6ZSBjb2x1bW5zIGFmdGVyIGFuZCBpbmNsdWRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBmcmVlemVFbmRDb2x1bW5zVG86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBrZXlib2FyZCBkcmFnIHBlcmZvcm1lZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBrZXlib2FyZERyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93S2V5Ym9hcmREcmFnPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUpXG4gICAgcHJpdmF0ZSBzZXQgX2ZvY3VzYWJsZVZpZXdDZWxsSXRlbXMoaXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRWRpdGFibGVUYWJsZUNlbGwpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGFibGVDZWxsczogUXVlcnlMaXN0PEVkaXRhYmxlVGFibGVDZWxsPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIHByaXZhdGUgZ2V0IF9hcmlhU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucm93LmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFzUm93SGVhZGVyQ29sdW1uJCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKS5zb21lKChjKSA9PiBjLnJvbGUgPT09ICdyb3doZWFkZXInKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9ydGwkID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLl9ydGxTZXJ2aWNlPy5ydGxTaWduYWwoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yb3dTZWxlY3Rpb25IZWxwZXJUZXh0SWQgPSBgcm93U2VsZWN0aW9uSGVscGVyLSR7dXVpZHY0KCl9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzVHJlZVJvd0ZpcnN0Q2VsbCA9IGlzVHJlZVJvd0ZpcnN0Q2VsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgU0VMRUNUSU9OX01PREUgPSBTZWxlY3Rpb25Nb2RlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlciA9IGluamVjdChDb250ZW50RGVuc2l0eU9ic2VydmVyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfZmRwVGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF90YWJsZVJvd1NlcnZpY2UgPSBpbmplY3QoVGFibGVSb3dTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzVHJlZVJvdyA9IGlzVHJlZVJvdztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaENoaWxkUm93cyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbG1SZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RuZFRhYmxlRGlyZWN0aXZlID0gaW5qZWN0KFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UucmVzaXplSW5Qcm9ncmVzcyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UubWFya0ZvckNoZWNrKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fZG5kVGFibGVEaXJlY3RpdmUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbktleURvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5fZWRpdGFibGVDZWxscy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuX2VkaXRhYmxlQ2VsbHMudG9BcnJheSgpO1xuICAgICAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudXBkYXRlRWRpdGFibGVDZWxscyh0aGlzLnJvdywgY2VsbHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UucmVtb3ZlRWRpdGFibGVDZWxscyh0aGlzLnJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCdyb3cnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvUm93RXhwYW5zaW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoQ2hpbGRSb3dzJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5yZW1vdmVFZGl0YWJsZUNlbGxzKHRoaXMucm93KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVHcm91cFJvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVSb3cnLCByb3c6IHRoaXMucm93IH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93Jywgcm93OiB0aGlzLnJvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3c6IFRhYmxlUm93PFQ+LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudG9nZ2xlUm93KHsgLi4ueyByb3csIGV2ZW50IH0sIC4uLnsgdHlwZTogJ3RvZ2dsZU11bHRpU2VsZWN0Um93JyB9IH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtblRyYWNrQnkoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubmFtZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtRm9jdXNlZEV2ZW50QW5ub3VuY2VyID0gKHBvc2l0aW9uOiBGb2N1c2FibGVJdGVtUG9zaXRpb24pOiBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgcmV0VmFsID0gYENvbHVtbiAke3Bvc2l0aW9uLmNvbEluZGV4ICsgMX0gb2YgJHtwb3NpdGlvbi50b3RhbENvbHN9LCBgO1xuICAgICAgICBsZXQgY29sdW1uO1xuICAgICAgICBpZiAodGhpcy5fZmRwVGFibGVTZXJ2aWNlPy52aXNpYmxlQ29sdW1ucyQpIHtcbiAgICAgICAgICAgIGxldCBjb2xJbmRleCA9IHBvc2l0aW9uLmNvbEluZGV4O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgY29sSW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbiA9IHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKVtjb2xJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbHVtbiAmJiAoY29sdW1uLl9mcmVlemVkIHx8IGNvbHVtbi5fZW5kRnJlZXplZCkpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICdmaXhlZCwgJztcbiAgICAgICAgfVxuICAgICAgICByZXRWYWwgPSByZXRWYWwgKyBgcm93OiAke3Bvc2l0aW9uLnJvd0luZGV4ICsgMX0gb2YgJHtwb3NpdGlvbi50b3RhbFJvd3N9YDtcbiAgICAgICAgaWYgKHRoaXMuX2lzVHJlZVJvdyh0aGlzLnJvdykgfHwgdGhpcy5yb3cubGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnLCBsZXZlbCAnICsgKHRoaXMucm93LmxldmVsICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUNlbGxTcGFjZUtleShjb2xJZHg6IG51bWJlciwgdGFibGVDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsICRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgPT09IHRhYmxlQ2VsbEVsZW1lbnQgJiYgaXNUcmVlUm93Rmlyc3RDZWxsKGNvbElkeCwgdGhpcy5yb3csICRldmVudCkpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlR3JvdXBSb3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Sb3dFeHBhbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLm5leHQoKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaCA9IG1lcmdlKHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLCBkZXN0cm95T2JzZXJ2YWJsZSh0aGlzLl9kZXN0cm95UmVmKSk7XG4gICAgICAgIC8vIExvYWQgaXRlbXMgb25seSBvbmNlLiBGdXJ0aGVyIGxvYWRpbmcgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBsYXp5IGxvYWRpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgICAgdGhpcy5yb3c/LmV4cGFuZGVkJFxuICAgICAgICAgICAgPy5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXhwYW5kZWQpID0+IGV4cGFuZGVkICYmIHRoaXMucm93LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHJlZnJlc2gpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UubG9hZENoaWxkUm93cyh0aGlzLnJvdyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0Fycm93RG93biA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKTtcbiAgICAgICAgY29uc3QgaXNBcnJvd1VwID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKTtcblxuICAgICAgICBpZiAoIWV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0Fycm93RG93biAmJiAhaXNBcnJvd1VwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kbmRUYWJsZURpcmVjdGl2ZT8uZHJhZ1Jvd0Zyb21LZXlib2FyZChcbiAgICAgICAgICAgIGlzQXJyb3dEb3duID8gJ2Rvd24nIDogJ3VwJyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGhpcy5pbmRleCxcbiAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID8gJ2dyb3VwJyA6ICdzaGlmdCdcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJAaWYgKF9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nJCgpOyBhcyBzZW1hbnRpY0hpZ2hsaWdodGluZykge1xuICAgIDx0ZFxuICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3JcbiAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuICAgICAgICBbc3RhdHVzXT1cInJvdy52YWx1ZVtzZW1hbnRpY0hpZ2hsaWdodGluZ11cIlxuICAgICAgICBbY2VsbEZvY3VzZWRFdmVudEFubm91bmNlcl09XCJfaXRlbUZvY3VzZWRFdmVudEFubm91bmNlclwiXG4gICAgPjwvdGQ+XG59XG48IS0tIGhpZGRlbiB0ZXh0IGZvciBzY3JlZW5yZWFkZXIgLS0+XG48bmctdGVtcGxhdGUgI3NlbGVjdGlvblNjcmVlblJlYWRlclRleHQ+XG4gICAgPHNwYW5cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiX3Jvd1NlbGVjdGlvbkhlbHBlclRleHRJZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUgIWltcG9ydGFudCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICB7eyAocm93LmNoZWNrZWQgPyAncGxhdGZvcm1UYWJsZS5kZXNlbGVjdFNpbmdsZVJvdycgOiAncGxhdGZvcm1UYWJsZS5zZWxlY3RTaW5nbGVSb3cnKSB8IGZkVHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjwhLS0gUm93IFNlbGVjdGlvbiBDZWxsIC0tPlxuQGlmIChzZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5TSU5HTEUpIHtcbiAgICBAaWYgKHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZpeGVkXT1cImZpeGVkXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiX2hhc1Jvd0hlYWRlckNvbHVtbiQoKSA/ICdyb3doZWFkZXInIDogJ2dyaWRjZWxsJ1wiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLmNvbnRlbnREZW5zaXR5JCgpXG4gICAgICAgICAgICAgICAgICAgIHwgc2VsZWN0aW9uQ2VsbFN0eWxlczogX3J0bCQoKSA6IF9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkKClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInJvdy5jaGVja2VkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfcm93U2VsZWN0aW9uSGVscGVyVGV4dElkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl90b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93KCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2VsbEZvY3VzZWRFdmVudEFubm91bmNlcl09XCJfaXRlbUZvY3VzZWRFdmVudEFubm91bmNlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3Rpb25TY3JlZW5SZWFkZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICA+PC90ZD5cbiAgICB9XG59IEBlbHNlIGlmIChzZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5NVUxUSVBMRSkge1xuICAgIEBpZiAocm93LnZhbHVlW3NlbGVjdGFibGVLZXldICE9PSBmYWxzZSkge1xuICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGFibGVfX2NlbGwtLWNoZWNrYm94XCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICAgICAgcm9sZT1cImNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3csICRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX3RvZ2dsZU11bHRpU2VsZWN0Um93KHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3Jvd1NlbGVjdGlvbkhlbHBlclRleHRJZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInJvdy5jaGVja2VkXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcbiAgICAgICAgICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5jb250ZW50RGVuc2l0eSQoKVxuICAgICAgICAgICAgICAgICAgICB8IHNlbGVjdGlvbkNlbGxTdHlsZXM6IF9ydGwkKCkgOiBfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCgpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0aW9uU2NyZWVuUmVhZGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICB0YWJJbmRleFZhbHVlPVwiLTFcIlxuICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJmZC10YWJsZV9fY2hlY2tib3gtbGFiZWxcIlxuICAgICAgICAgICAgICAgIFt0cmlzdGF0ZV09XCJlbmFibGVUcmlzdGF0ZU1vZGVcIlxuICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvdy5jaGVja2VkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlTXVsdGlTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tZml4ZWRdPVwiZml4ZWRcIlxuICAgICAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICA+PC90ZD5cbiAgICB9XG59XG5AZm9yIChjb2x1bW4gb2YgX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQoKTsgdHJhY2sgY29sdW1uLm5hbWUpIHtcbiAgICA8dGRcbiAgICAgICAgI3RhYmxlQ2VsbEVsZW1lbnRcbiAgICAgICAgW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV09XCJcbiAgICAgICAgICAgICRpbmRleFxuICAgICAgICAgICAgICAgIHwgY29sdW1uUmVzaXphYmxlU2lkZVxuICAgICAgICAgICAgICAgICAgICA6IF9mZHBUYWJsZVNlcnZpY2UudmlzaWJsZUNvbHVtbnNMZW5ndGgoKVxuICAgICAgICAgICAgICAgICAgICA6IF9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCgpXG4gICAgICAgIFwiXG4gICAgICAgIFtjb2x1bW5OYW1lXT1cImNvbHVtbi5uYW1lXCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJjb2x1bW4ucm9sZVwiXG4gICAgICAgIFtoZWFkZXJzXT1cInJvd0lkICsgJ19fJyArIGNvbHVtbi5uYW1lXCJcbiAgICAgICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwiX2l0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAnZmRwLXRhYmxlX19jb2wtLScgKyBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgIGNvbHVtbi5fZnJlZXplZCA/ICdmZC10YWJsZV9fY2VsbC0tZml4ZWQnIDogJycsXG4gICAgICAgICAgICBjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1sYXN0JyA6ICcnLFxuICAgICAgICAgICAgY29sdW1uLl9lbmRGcmVlemVkID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1lbmQnIDogJycsXG4gICAgICAgICAgICBjb2x1bW4ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1lbmQtbGFzdCcgOiAnJyxcbiAgICAgICAgICAgIHJvdy5pc1RyZWUgJiYgJGluZGV4ID09PSAwID8gJ2ZkLXRhYmxlX19jZWxsLS1leHBhbmQnIDogJycsXG4gICAgICAgICAgICAkbGFzdCAmJiAhX2ZkcFRhYmxlU2VydmljZS5faXNTaG93bk5hdmlnYXRpb25Db2x1bW4kKCkgPyAnaXMtbGFzdC1jaGlsZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICB8IHRhYmxlQ2VsbFN0eWxlc1xuICAgICAgICAgICAgICAgICAgICA6IF9ydGwkKClcbiAgICAgICAgICAgICAgICAgICAgOiBfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCgpXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0aW9uQ29sdW1uV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4uX2ZyZWV6ZWRcbiAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4uX2VuZEZyZWV6ZWRcbiAgICAgICAgICAgICAgICAgICAgOiBfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldFByZXZDb2x1bW5zV2lkdGgoY29sdW1uLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIDogX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICA6IF90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UuZ2V0TmV4dENvbHVtbnNXaWR0aChjb2x1bW4ubmFtZSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJfaXNUcmVlUm93Rmlyc3RDZWxsKCRpbmRleCwgcm93KSA/IHJvdy5leHBhbmRlZCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5kYXRhLW5lc3RpbmctbGV2ZWxdPVwiJGluZGV4ID09PSAwID8gcm93LmxldmVsICsgMSA6IG51bGxcIlxuICAgICAgICAoY2VsbEZvY3VzZWQpPVwiX3RhYmxlUm93U2VydmljZS5jZWxsRm9jdXNlZCgkZXZlbnQpOyBfdGFibGVSb3dTZXJ2aWNlLmNlbGxBY3RpdmF0ZSgkaW5kZXgsIHJvdylcIlxuICAgICAgICAoY2xpY2spPVwiX3RhYmxlUm93U2VydmljZS5jZWxsQ2xpY2tlZCh7IGluZGV4OiAkaW5kZXgsIHJvdyB9KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIl9pc1RyZWVSb3dGaXJzdENlbGwoJGluZGV4LCByb3csICRldmVudCkgJiYgX3RvZ2dsZUdyb3VwUm93KClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwiX3RhYmxlUm93U2VydmljZS5zY3JvbGxUb092ZXJsYXBwZWRDZWxsKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd1JpZ2h0KT1cIl90YWJsZVJvd1NlcnZpY2Uuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCgpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX2hhbmRsZUNlbGxTcGFjZUtleSgkaW5kZXgsIHRhYmxlQ2VsbEVsZW1lbnQsICRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX190ZXh0XT1cImNvbHVtbi5hcHBseVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX190ZXh0LS1uby13cmFwXT1cImNvbHVtbi5ub1dyYXBcIlxuICAgICAgICAgICAgI3RhYmxlVGV4dENvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKF9pc1RyZWVSb3dGaXJzdENlbGwoJGluZGV4LCByb3cpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fZXhwYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX19leHBhbmQtLW9wZW5dPVwicm93LmV4cGFuZGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChyb3cuc3RhdGUgPT09ICdyZWFkb25seScpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHRhYmxlVGV4dENvbnRhaW5lci5pbm5lclRleHQ/LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMXB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLmVtcHR5Q2VsbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uPy5jb2x1bW5DZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uY29sdW1uQ2VsbFRlbXBsYXRlIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdy52YWx1ZSwgcG9wcGluZzogZmFsc2UsIHJvd0luZGV4OiByb3cuaW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyByb3cudmFsdWUgfCB2YWx1ZUJ5UGF0aDogY29sdW1uLmtleSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uPy5lZGl0YWJsZUNvbHVtbkNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5lZGl0YWJsZUNvbHVtbkNlbGxUZW1wbGF0ZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3cudmFsdWUsIHBvcHBpbmc6IGZhbHNlLCByb3dJbmRleDogcm93LmluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1lZGl0YWJsZS1jZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uVmFsdWVdPVwicm93LnZhbHVlIHwgdmFsdWVCeVBhdGg6IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZHAtdGFibGUtZWRpdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdGQ+XG59XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5AaWYgKF9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCgpKSB7XG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJmZHAtdGFibGVfX2NlbGwtLW5hdmlnYXRpb24gaXMtbGFzdC1jaGlsZFwiIGZka0Rpc2FibGVkIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCI+XG4gICAgICAgIEBpZiAocm93Lm5hdmlnYXRhYmxlKSB7XG4gICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgIGZkLXRhYmxlLWljb25cbiAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiX3J0bCQoKSA/ICdzbGltLWFycm93LWxlZnQnIDogJ3NsaW0tYXJyb3ctcmlnaHQnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC10YWJsZV9fbmF2aWdhdGlvbi1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgfVxuICAgIDwvdGQ+XG59XG48dGRcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwiZmQtdGFibGVfX2NlbGwgZmQtdGFibGVfX2NlbGwtLW1vY2tcIlxuICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tbW9jay1ib3JkZXJsZXNzXT1cIiFfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmNlbGxNb2NrVmlzaWJsZSQoKVwiXG4gICAgZmRrRGlzYWJsZWRcbiAgICBbYWRkRGlzYWJsZWRDbGFzc109XCJmYWxzZVwiXG4+PC90ZD5cbiJdfQ==
@@ -40,7 +40,7 @@ export class FilterStepComponent {
40
40
  this.valueChange.emit(newFilterBy);
41
41
  }
42
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FilterStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FilterStepComponent, isStandalone: true, selector: "fdp-filter-step", inputs: { filter: "filter", columnKey: "columnKey", contentDensity: "contentDensity", filterBy: "filterBy" }, outputs: { back: "back", valueChange: "valueChange" }, providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }], viewQueries: [{ propertyName: "titleTemplateRef", first: true, predicate: ["titleTemplate"], descendants: true }, { propertyName: "bodyTemplateRef", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [attr.aria-label]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: FilterSingleSelectComponent, selector: "fdp-filter-single-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterMultiSelectComponent, selector: "fdp-filter-multi-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterCustomComponent, selector: "fdp-filter-custom", inputs: ["filter", "filterBy"], outputs: ["valueChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FilterStepComponent, isStandalone: true, selector: "fdp-filter-step", inputs: { filter: "filter", columnKey: "columnKey", contentDensity: "contentDensity", filterBy: "filterBy" }, outputs: { back: "back", valueChange: "valueChange" }, providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }], viewQueries: [{ propertyName: "titleTemplateRef", first: true, predicate: ["titleTemplate"], descendants: true }, { propertyName: "bodyTemplateRef", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [ariaLabel]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: FilterSingleSelectComponent, selector: "fdp-filter-single-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterMultiSelectComponent, selector: "fdp-filter-multi-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterCustomComponent, selector: "fdp-filter-custom", inputs: ["filter", "filterBy"], outputs: ["valueChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
44
  }
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FilterStepComponent, decorators: [{
46
46
  type: Component,
@@ -51,7 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
51
51
  FilterMultiSelectComponent,
52
52
  FilterCustomComponent,
53
53
  FdTranslatePipe
54
- ], template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [attr.aria-label]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n" }]
54
+ ], template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [ariaLabel]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n" }]
55
55
  }], propDecorators: { filter: [{
56
56
  type: Input
57
57
  }], columnKey: [{
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
71
71
  type: ViewChild,
72
72
  args: ['bodyTemplate']
73
73
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXZpZXctc2V0dGluZ3MtZGlhbG9nL2ZpbHRlcmluZy9maWx0ZXItc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtdmlldy1zZXR0aW5ncy1kaWFsb2cvZmlsdGVyaW5nL2ZpbHRlci1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQW9CLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQW1CLE1BQU0sdUJBQXVCLENBQUM7O0FBRWpGOzs7OztHQUtHO0FBbUJILE1BQU0sT0FBTyxtQkFBbUI7SUFqQmhDO1FBb0NJLG9CQUFvQjtRQUVwQixTQUFJLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQsZ0NBQWdDO1FBRWhDLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBVW5GLGNBQWM7UUFDTCxnQkFBVyxHQUFHLFVBQVUsQ0FBQztLQWtCckM7SUF6Q0csK0JBQStCO0lBQy9CLElBQ0ksUUFBUSxDQUFDLFlBQWdDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQXdCRCxjQUFjO0lBQ2Qsb0JBQW9CLENBQUMsV0FBZ0I7UUFDakMsTUFBTSxRQUFRLEdBQXFCLElBQUksQ0FBQyxTQUFTLElBQUk7WUFDakQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLGVBQWUsQ0FBQyxFQUFFO1lBQzVCLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXJEUSxtQkFBbUI7a0dBQW5CLG1CQUFtQixtT0FYakIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQywrT0NyQ3pHLDYrQ0EwQ0EsNENERlEsZUFBZSx5SUFDZixjQUFjLDBIQUNkLDJCQUEyQixnSUFDM0IsMEJBQTBCLCtIQUMxQixxQkFBcUIsbUhBQ3JCLGVBQWU7OzJGQUdWLG1CQUFtQjtrQkFqQi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFFMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsY0FDekYsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3FCQUNsQjs4QkFLRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxlQUFlO2dCQUsxQixlQUFlO3NCQURkLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciwgRklMVEVSX1NUUkFURUdZLCBGaWx0ZXJUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgVGFibGVWaWV3U2V0dGluZ3NGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS12aWV3LXNldHRpbmdzLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ3VzdG9tQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItY3VzdG9tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLW11bHRpLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyU2luZ2xlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRklMVEVSU19WSUVXX1NURVBfVE9LRU4sIEZpbHRlcnNWaWV3U3RlcCB9IGZyb20gJy4vZmlsdGVycy1hY3RpdmUtc3RlcCc7XG5cbi8qKlxuICogRmlsdGVyIGRpYWxvZyBzdGVwLlxuICpcbiAqIFVzZWQgdG8gcmVuZGVyIHNlbGVjdGVkIGZpbHRlciBvcHRpb25zLlxuICpcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1maWx0ZXItc3RlcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIC8qKiBFYWNoIGZpbHRlcnMgZGlhbG9nIHN0ZXAgbXVzdCBwcm92aWRlIEZJTFRFUlNfVklFV19TVEVQX1RPS0VOIHRvIGJlIGFjY2Vzc2libGUgKi9cbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZJTFRFUlNfVklFV19TVEVQX1RPS0VOLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJTdGVwQ29tcG9uZW50KSB9XSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyQ3VzdG9tQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBGaWx0ZXJzVmlld1N0ZXAge1xuICAgIC8qKiBWaWV3U2V0dGluZ3NGaWx0ZXIgb3B0aW9ucyB0aGUgZmlsdGVyIGlzIGNyZWF0ZWQgZnJvbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyOiBUYWJsZVZpZXdTZXR0aW5nc0ZpbHRlckNvbXBvbmVudDtcblxuICAgIC8qKiBDb2x1bW4ga2V5IHRvIGFwcGx5IHRoaXMgZmlsdGVyIHRvICovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5LZXk6IHN0cmluZztcblxuICAgIC8qKiBUYWJsZSdzIGNvbnRlbnQgZGVuc2l0eSB0byBiZSB1c2VkICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG5cbiAgICAvKiogVGhlIGN1cnJlbnQgZmlsdGVyIG1vZGVsICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsdGVyQnkoZmlsdGVyQnlMaXN0OiBDb2xsZWN0aW9uRmlsdGVyW10pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQnkgPSBmaWx0ZXJCeUxpc3QuZmluZCgoeyBmaWVsZCB9KSA9PiBmaWVsZCA9PT0gdGhpcy5jb2x1bW5LZXkpO1xuICAgIH1cblxuICAgIC8qKiBHbyBiYWNrIGV2ZW50ICovXG4gICAgQE91dHB1dCgpXG4gICAgYmFjazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEZpbHRlciBtb2RlbCBjaGFuZ2UgZXZlbnQgKi9cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPENvbGxlY3Rpb25GaWx0ZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb2xsZWN0aW9uRmlsdGVyPigpO1xuXG4gICAgLyoqIFRlbXBsYXRlIHJlZiB0byB0aGUgZmlsdGVyIHRpdGxlICovXG4gICAgQFZpZXdDaGlsZCgndGl0bGVUZW1wbGF0ZScpXG4gICAgdGl0bGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBUZW1wbGF0ZSByZWYgdG8gdGhlIGZpbHRlciBib2R5ICovXG4gICAgQFZpZXdDaGlsZCgnYm9keVRlbXBsYXRlJylcbiAgICBib2R5VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IEZJTFRFUl9UWVBFID0gRmlsdGVyVHlwZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZpbHRlckJ5PzogQ29sbGVjdGlvbkZpbHRlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRmlsdGVyVmFsdWVDaGFuZ2UoZmlsdGVyVmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJCeTogQ29sbGVjdGlvbkZpbHRlciA9IHRoaXMuX2ZpbHRlckJ5IHx8IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmNvbHVtbktleSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IEZJTFRFUl9TVFJBVEVHWS5FUSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyQnkgPSB7IC4uLmZpbHRlckJ5LCB2YWx1ZTogZmlsdGVyVmFsdWUgfTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3RmlsdGVyQnkpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGl0bGVUZW1wbGF0ZT5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLmZpbHRlckRpYWxvZ0JhY2tUb0NvbHVtbnMnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLmZpbHRlckRpYWxvZ0JhY2tUb0NvbHVtbnMnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwiYmFjay5lbWl0KClcIlxuICAgID48L2J1dHRvbj5cbiAgICA8aDQgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwiNFwiPlxuICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5maWx0ZXJEaWFsb2dGaWx0ZXJCeUxhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGZpbHRlckxhYmVsOiBmaWx0ZXIubGFiZWwgfSB9fVxuICAgIDwvaDQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICBAc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICBAY2FzZSAoRklMVEVSX1RZUEUuU0lOR0xFKSB7XG4gICAgICAgICAgICA8ZmRwLWZpbHRlci1zaW5nbGUtc2VsZWN0XG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZmlsdGVyLnZhbHVlc1wiXG4gICAgICAgICAgICAgICAgW2ZpbHRlckJ5XT1cIl9maWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIl9vbkZpbHRlclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmRwLWZpbHRlci1zaW5nbGUtc2VsZWN0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChGSUxURVJfVFlQRS5NVUxUSSkge1xuICAgICAgICAgICAgPGZkcC1maWx0ZXItbXVsdGktc2VsZWN0XG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZmlsdGVyLnZhbHVlc1wiXG4gICAgICAgICAgICAgICAgW2ZpbHRlckJ5XT1cIl9maWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIl9vbkZpbHRlclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmRwLWZpbHRlci1tdWx0aS1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKEZJTFRFUl9UWVBFLkNVU1RPTSkge1xuICAgICAgICAgICAgPGZkcC1maWx0ZXItY3VzdG9tXG4gICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJfZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfb25GaWx0ZXJWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZkcC1maWx0ZXItY3VzdG9tPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChGSUxURVJfVFlQRS5DQVRFR09SWSkge1xuICAgICAgICAgICAgQ2F0ZWdvcmllcyBsaXN0IGlzIG5vdCBpbXBsZW1lbnRlZFxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXZpZXctc2V0dGluZ3MtZGlhbG9nL2ZpbHRlcmluZy9maWx0ZXItc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtdmlldy1zZXR0aW5ncy1kaWFsb2cvZmlsdGVyaW5nL2ZpbHRlci1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQW9CLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQW1CLE1BQU0sdUJBQXVCLENBQUM7O0FBRWpGOzs7OztHQUtHO0FBbUJILE1BQU0sT0FBTyxtQkFBbUI7SUFqQmhDO1FBb0NJLG9CQUFvQjtRQUVwQixTQUFJLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQsZ0NBQWdDO1FBRWhDLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBVW5GLGNBQWM7UUFDTCxnQkFBVyxHQUFHLFVBQVUsQ0FBQztLQWtCckM7SUF6Q0csK0JBQStCO0lBQy9CLElBQ0ksUUFBUSxDQUFDLFlBQWdDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQXdCRCxjQUFjO0lBQ2Qsb0JBQW9CLENBQUMsV0FBZ0I7UUFDakMsTUFBTSxRQUFRLEdBQXFCLElBQUksQ0FBQyxTQUFTLElBQUk7WUFDakQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLGVBQWUsQ0FBQyxFQUFFO1lBQzVCLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXJEUSxtQkFBbUI7a0dBQW5CLG1CQUFtQixtT0FYakIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQywrT0NyQ3pHLHUrQ0EwQ0EsNENERlEsZUFBZSx5SUFDZixjQUFjLDBIQUNkLDJCQUEyQixnSUFDM0IsMEJBQTBCLCtIQUMxQixxQkFBcUIsbUhBQ3JCLGVBQWU7OzJGQUdWLG1CQUFtQjtrQkFqQi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFFMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsY0FDekYsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3FCQUNsQjs4QkFLRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxlQUFlO2dCQUsxQixlQUFlO3NCQURkLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciwgRklMVEVSX1NUUkFURUdZLCBGaWx0ZXJUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgVGFibGVWaWV3U2V0dGluZ3NGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS12aWV3LXNldHRpbmdzLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ3VzdG9tQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItY3VzdG9tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLW11bHRpLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyU2luZ2xlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRklMVEVSU19WSUVXX1NURVBfVE9LRU4sIEZpbHRlcnNWaWV3U3RlcCB9IGZyb20gJy4vZmlsdGVycy1hY3RpdmUtc3RlcCc7XG5cbi8qKlxuICogRmlsdGVyIGRpYWxvZyBzdGVwLlxuICpcbiAqIFVzZWQgdG8gcmVuZGVyIHNlbGVjdGVkIGZpbHRlciBvcHRpb25zLlxuICpcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1maWx0ZXItc3RlcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIC8qKiBFYWNoIGZpbHRlcnMgZGlhbG9nIHN0ZXAgbXVzdCBwcm92aWRlIEZJTFRFUlNfVklFV19TVEVQX1RPS0VOIHRvIGJlIGFjY2Vzc2libGUgKi9cbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZJTFRFUlNfVklFV19TVEVQX1RPS0VOLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJTdGVwQ29tcG9uZW50KSB9XSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyU2luZ2xlU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyQ3VzdG9tQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBGaWx0ZXJzVmlld1N0ZXAge1xuICAgIC8qKiBWaWV3U2V0dGluZ3NGaWx0ZXIgb3B0aW9ucyB0aGUgZmlsdGVyIGlzIGNyZWF0ZWQgZnJvbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyOiBUYWJsZVZpZXdTZXR0aW5nc0ZpbHRlckNvbXBvbmVudDtcblxuICAgIC8qKiBDb2x1bW4ga2V5IHRvIGFwcGx5IHRoaXMgZmlsdGVyIHRvICovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5LZXk6IHN0cmluZztcblxuICAgIC8qKiBUYWJsZSdzIGNvbnRlbnQgZGVuc2l0eSB0byBiZSB1c2VkICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG5cbiAgICAvKiogVGhlIGN1cnJlbnQgZmlsdGVyIG1vZGVsICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsdGVyQnkoZmlsdGVyQnlMaXN0OiBDb2xsZWN0aW9uRmlsdGVyW10pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQnkgPSBmaWx0ZXJCeUxpc3QuZmluZCgoeyBmaWVsZCB9KSA9PiBmaWVsZCA9PT0gdGhpcy5jb2x1bW5LZXkpO1xuICAgIH1cblxuICAgIC8qKiBHbyBiYWNrIGV2ZW50ICovXG4gICAgQE91dHB1dCgpXG4gICAgYmFjazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEZpbHRlciBtb2RlbCBjaGFuZ2UgZXZlbnQgKi9cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPENvbGxlY3Rpb25GaWx0ZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb2xsZWN0aW9uRmlsdGVyPigpO1xuXG4gICAgLyoqIFRlbXBsYXRlIHJlZiB0byB0aGUgZmlsdGVyIHRpdGxlICovXG4gICAgQFZpZXdDaGlsZCgndGl0bGVUZW1wbGF0ZScpXG4gICAgdGl0bGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBUZW1wbGF0ZSByZWYgdG8gdGhlIGZpbHRlciBib2R5ICovXG4gICAgQFZpZXdDaGlsZCgnYm9keVRlbXBsYXRlJylcbiAgICBib2R5VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IEZJTFRFUl9UWVBFID0gRmlsdGVyVHlwZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZpbHRlckJ5PzogQ29sbGVjdGlvbkZpbHRlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRmlsdGVyVmFsdWVDaGFuZ2UoZmlsdGVyVmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJCeTogQ29sbGVjdGlvbkZpbHRlciA9IHRoaXMuX2ZpbHRlckJ5IHx8IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmNvbHVtbktleSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IEZJTFRFUl9TVFJBVEVHWS5FUSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyQnkgPSB7IC4uLmZpbHRlckJ5LCB2YWx1ZTogZmlsdGVyVmFsdWUgfTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3RmlsdGVyQnkpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGl0bGVUZW1wbGF0ZT5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLmZpbHRlckRpYWxvZ0JhY2tUb0NvbHVtbnMnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLmZpbHRlckRpYWxvZ0JhY2tUb0NvbHVtbnMnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwiYmFjay5lbWl0KClcIlxuICAgID48L2J1dHRvbj5cbiAgICA8aDQgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwiNFwiPlxuICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5maWx0ZXJEaWFsb2dGaWx0ZXJCeUxhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGZpbHRlckxhYmVsOiBmaWx0ZXIubGFiZWwgfSB9fVxuICAgIDwvaDQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICBAc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICBAY2FzZSAoRklMVEVSX1RZUEUuU0lOR0xFKSB7XG4gICAgICAgICAgICA8ZmRwLWZpbHRlci1zaW5nbGUtc2VsZWN0XG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZmlsdGVyLnZhbHVlc1wiXG4gICAgICAgICAgICAgICAgW2ZpbHRlckJ5XT1cIl9maWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIl9vbkZpbHRlclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmRwLWZpbHRlci1zaW5nbGUtc2VsZWN0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChGSUxURVJfVFlQRS5NVUxUSSkge1xuICAgICAgICAgICAgPGZkcC1maWx0ZXItbXVsdGktc2VsZWN0XG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZmlsdGVyLnZhbHVlc1wiXG4gICAgICAgICAgICAgICAgW2ZpbHRlckJ5XT1cIl9maWx0ZXJCeVwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIl9vbkZpbHRlclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZmRwLWZpbHRlci1tdWx0aS1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKEZJTFRFUl9UWVBFLkNVU1RPTSkge1xuICAgICAgICAgICAgPGZkcC1maWx0ZXItY3VzdG9tXG4gICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJfZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfb25GaWx0ZXJWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZkcC1maWx0ZXItY3VzdG9tPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChGSUxURVJfVFlQRS5DQVRFR09SWSkge1xuICAgICAgICAgICAgQ2F0ZWdvcmllcyBsaXN0IGlzIG5vdCBpbXBsZW1lbnRlZFxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2163,7 +2163,7 @@ class FilterStepComponent {
2163
2163
  this.valueChange.emit(newFilterBy);
2164
2164
  }
2165
2165
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FilterStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FilterStepComponent, isStandalone: true, selector: "fdp-filter-step", inputs: { filter: "filter", columnKey: "columnKey", contentDensity: "contentDensity", filterBy: "filterBy" }, outputs: { back: "back", valueChange: "valueChange" }, providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }], viewQueries: [{ propertyName: "titleTemplateRef", first: true, predicate: ["titleTemplate"], descendants: true }, { propertyName: "bodyTemplateRef", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [attr.aria-label]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: FilterSingleSelectComponent, selector: "fdp-filter-single-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterMultiSelectComponent, selector: "fdp-filter-multi-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterCustomComponent, selector: "fdp-filter-custom", inputs: ["filter", "filterBy"], outputs: ["valueChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2166
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: FilterStepComponent, isStandalone: true, selector: "fdp-filter-step", inputs: { filter: "filter", columnKey: "columnKey", contentDensity: "contentDensity", filterBy: "filterBy" }, outputs: { back: "back", valueChange: "valueChange" }, providers: [{ provide: FILTERS_VIEW_STEP_TOKEN, useExisting: forwardRef(() => FilterStepComponent) }], viewQueries: [{ propertyName: "titleTemplateRef", first: true, predicate: ["titleTemplate"], descendants: true }, { propertyName: "bodyTemplateRef", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [ariaLabel]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: FilterSingleSelectComponent, selector: "fdp-filter-single-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterMultiSelectComponent, selector: "fdp-filter-multi-select", inputs: ["options", "filterBy"], outputs: ["valueChange"] }, { kind: "component", type: FilterCustomComponent, selector: "fdp-filter-custom", inputs: ["filter", "filterBy"], outputs: ["valueChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2167
2167
  }
2168
2168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FilterStepComponent, decorators: [{
2169
2169
  type: Component,
@@ -2174,7 +2174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
2174
2174
  FilterMultiSelectComponent,
2175
2175
  FilterCustomComponent,
2176
2176
  FdTranslatePipe
2177
- ], template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [attr.aria-label]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n" }]
2177
+ ], template: "<ng-template #titleTemplate>\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [title]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n [ariaLabel]=\"'platformTable.filterDialogBackToColumns' | fdTranslate\"\n (click)=\"back.emit()\"\n ></button>\n <h4 fd-title [headerSize]=\"4\">\n {{ 'platformTable.filterDialogFilterByLabel' | fdTranslate: { filterLabel: filter.label } }}\n </h4>\n</ng-template>\n\n<ng-template #bodyTemplate>\n @switch (filter.type) {\n @case (FILTER_TYPE.SINGLE) {\n <fdp-filter-single-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-single-select>\n }\n @case (FILTER_TYPE.MULTI) {\n <fdp-filter-multi-select\n [options]=\"filter.values\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-multi-select>\n }\n @case (FILTER_TYPE.CUSTOM) {\n <fdp-filter-custom\n [filter]=\"filter\"\n [filterBy]=\"_filterBy\"\n (valueChange)=\"_onFilterValueChange($event)\"\n ></fdp-filter-custom>\n }\n @case (FILTER_TYPE.CATEGORY) {\n Categories list is not implemented\n }\n }\n</ng-template>\n" }]
2178
2178
  }], propDecorators: { filter: [{
2179
2179
  type: Input
2180
2180
  }], columnKey: [{
@@ -3235,7 +3235,7 @@ class TableRowComponent extends TableRowDirective {
3235
3235
  provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
3236
3236
  useExisting: TableRowComponent
3237
3237
  }
3238
- ], viewQueries: [{ propertyName: "_focusableViewCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }, { propertyName: "_editableCells", predicate: EditableTableCell, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n", dependencies: [{ kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: DisabledBehaviorDirective, selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PlatformTableCellResizableDirective, selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TableEditableCellComponent, selector: "fdp-table-editable-cell", inputs: ["row", "column", "columnValue"] }, { kind: "directive", type: TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: ["class", "glyph", "glyphFont", "navigation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ValueByPathPipe, name: "valueByPath" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SelectionCellStylesPipe, name: "selectionCellStyles" }, { kind: "pipe", type: TableCellStylesPipe, name: "tableCellStyles" }, { kind: "pipe", type: ColumnResizableSidePipe, name: "columnResizableSide" }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3238
+ ], viewQueries: [{ propertyName: "_focusableViewCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }, { propertyName: "_editableCells", predicate: EditableTableCell, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n", dependencies: [{ kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: DisabledBehaviorDirective, selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PlatformTableCellResizableDirective, selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TableEditableCellComponent, selector: "fdp-table-editable-cell", inputs: ["row", "column", "columnValue"] }, { kind: "directive", type: TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: ["class", "glyph", "glyphFont", "navigation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ValueByPathPipe, name: "valueByPath" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: SelectionCellStylesPipe, name: "selectionCellStyles" }, { kind: "pipe", type: TableCellStylesPipe, name: "tableCellStyles" }, { kind: "pipe", type: ColumnResizableSidePipe, name: "columnResizableSide" }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3239
3239
  }
3240
3240
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TableRowComponent, decorators: [{
3241
3241
  type: Component,
@@ -3266,7 +3266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
3266
3266
  TableCellStylesPipe,
3267
3267
  ColumnResizableSidePipe,
3268
3268
  IconComponent
3269
- ], template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n" }]
3269
+ ], template: "@if (_fdpTableService._semanticHighlighting$(); as semanticHighlighting) {\n <td\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n}\n<!-- hidden text for screenreader -->\n<ng-template #selectionScreenReaderText>\n <span\n aria-hidden=\"true\"\n [attr.id]=\"_rowSelectionHelperTextId\"\n [ngStyle]=\"{\n position: 'absolute !important',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ (row.checked ? 'platformTable.deselectSingleRow' : 'platformTable.selectSingleRow') | fdTranslate }}\n </span>\n</ng-template>\n<!-- Row Selection Cell -->\n@if (selectionMode === SELECTION_MODE.SINGLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn$() ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n [attr.aria-selected]=\"row.checked\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow($event)\"\n (keydown.space)=\"_toggleSingleSelectableRow($event)\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n} @else if (selectionMode === SELECTION_MODE.MULTIPLE) {\n @if (row.value[selectableKey] !== false) {\n <td\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [attr.aria-labelledby]=\"_rowSelectionHelperTextId\"\n [attr.aria-selected]=\"row.checked\"\n [style]=\"\n _contentDensityObserver.contentDensity$()\n | selectionCellStyles: _rtl$() : _fdpTableService._semanticHighlightingColumnWidth$()\n \"\n >\n <ng-template [ngTemplateOutlet]=\"selectionScreenReaderText\"></ng-template>\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n } @else {\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n ></td>\n }\n}\n@for (column of _fdpTableService.visibleColumns$(); track column.name) {\n <td\n #tableCellElement\n [fdpTableCellResizable]=\"\n $index\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength()\n : _fdpTableService._isShownNavigationColumn$()\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [cellFocusedEventAnnouncer]=\"_itemFocusedEventAnnouncer\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && $index === 0 ? 'fd-table__cell--expand' : '',\n $last && !_fdpTableService._isShownNavigationColumn$() ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl$()\n : _fdpTableService._semanticHighlightingColumnWidth$()\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell($index, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"$index === 0 ? row.level + 1 : null\"\n (cellFocused)=\"_tableRowService.cellFocused($event); _tableRowService.cellActivate($index, row)\"\n (click)=\"_tableRowService.cellClicked({ index: $index, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell($index, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.space)=\"_handleCellSpaceKey($index, tableCellElement, $event)\"\n >\n <div\n [class.fd-table__text]=\"column.applyText\"\n [class.fd-table__text--no-wrap]=\"column.noWrap\"\n #tableTextContainer\n >\n @if (_isTreeRowFirstCell($index, row)) {\n <span\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (row.state === 'readonly') {\n @if (tableTextContainer.innerText?.trim() === '') {\n <span\n [ngStyle]=\"{\n position: 'absolute',\n height: '1px',\n width: '1px',\n overflow: 'hidden',\n clip: 'rect(1px, 1px, 1px, 1px)',\n color: 'transparent',\n display: 'block'\n }\"\n >\n {{ 'platformTable.emptyCell' | fdTranslate }}\n </span>\n }\n @if (column?.columnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.columnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n {{ row.value | valueByPath: column.key }}\n }\n } @else {\n @if (column?.editableColumnCellTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.editableColumnCellTemplate!\"\n [ngTemplateOutletContext]=\"{ $implicit: row.value, popping: false, rowIndex: row.index }\"\n ></ng-template>\n } @else {\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath: column.key\"\n ></fdp-table-editable-cell>\n }\n }\n </div>\n </td>\n}\n<ng-content></ng-content>\n@if (_fdpTableService._isShownNavigationColumn$()) {\n <td fd-table-cell class=\"fdp-table__cell--navigation is-last-child\" fdkDisabled [addDisabledClass]=\"false\">\n @if (row.navigatable) {\n <fd-icon\n fd-table-icon\n [navigation]=\"true\"\n [glyph]=\"_rtl$() ? 'slim-arrow-left' : 'slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></fd-icon>\n }\n </td>\n}\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"!_tableColumnResizeService.cellMockVisible$()\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n" }]
3270
3270
  }], ctorParameters: () => [], propDecorators: { rowId: [{
3271
3271
  type: Input
3272
3272
  }], row: [{