@elite.framework/ng.ui.core 1.0.90 → 1.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs +2 -0
- package/fesm2022/elite.framework-ng.ui.core-datepicker.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs +75 -20
- package/fesm2022/elite.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core.mjs +2 -0
- package/fesm2022/elite.framework-ng.ui.core.mjs.map +1 -1
- package/generic-search-advanced/index.d.ts +3 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-generic-crud-table.mjs","sources":["../tmp-esm2022/generic-crud-table/lib/generic-crud-table-module.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-header.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-table.js","../tmp-esm2022/generic-crud-table/elite.framework-ng.ui.core-generic-crud-table.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenericButtonModule } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nexport class GenericCrudTableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, GenericButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUtqRixNQUFNLE9BQU8sc0JBQXNCO3VHQUF0QixzQkFBc0I7d0dBQXRCLHNCQUFzQixZQUZ2QixZQUFZLEVBQUMsbUJBQW1CO3dHQUUvQixzQkFBc0IsWUFGdkIsWUFBWSxFQUFDLG1CQUFtQjs7MkZBRS9CLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsbUJBQW1CLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZW5lcmljQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxHZW5lcmljQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NydWRUYWJsZU1vZHVsZSB7fVxuIl19","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Menu } from 'primeng/menu';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { GenericSearchAdvanced } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport { GenericReportComponent } from '@elite.framework/ng.ui.core/generic-report';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/button\";\nimport * as i2 from \"primeng/divider\";\nimport * as i3 from \"primeng/tooltip\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericCrudHeaderComponent {\n translate = inject(TranslateService);\n dialogService = inject(DialogService);\n // 🟢 Inputs\n mode = 'full';\n breadcrumb;\n isSingleItemSelected = false;\n selectedItems = [];\n singleActionButtons = [];\n bulkActionButtons = [];\n addButtonConfigs = [];\n filters;\n filterModel = {};\n showSearch = true;\n first = 0; // Add input for current 'first' index\n rows = 10; // Add input for current 'rows' per page\n totalRecords = 0; // Add input for total records\n apiName = '';\n actions = [\n {\n label: this.translate.instant('REPORT'),\n icon: 'pi pi-file-export',\n command: (e) => {\n this.openReportDialog();\n }\n }\n ];\n // 🟢 Outputs\n singleItemAction = new EventEmitter();\n bulkAction = new EventEmitter();\n search = new EventEmitter();\n resetSearch = new EventEmitter();\n action = new EventEmitter();\n paginateChange = new EventEmitter(); // NEW OUTPUT\n // 🟢 Helpers\n trackByIdx = (index) => index;\n // 🟢 Actions\n onSingleItemAction(btn) {\n this.singleItemAction.emit(btn);\n }\n onInternalBulkAction(btn) {\n this.bulkAction.emit(btn);\n }\n paginationChange(value) {\n this.rows = value.top;\n }\n applySearch(value) {\n this.search.emit(value);\n }\n reset() {\n this.resetSearch.emit();\n }\n // Go to previous page\n // 🟢 Actions (Keep or adapt your existing pagination logic)\n totalPages() {\n if (this.totalRecords === 0 || this.rows === 0)\n return 0;\n return Math.ceil(this.totalRecords / this.rows);\n }\n pageInput = null;\n showPageMenu = false;\n // Get current page number (1-based)\n get currentPage() {\n return Math.floor(this.first / this.rows) + 1;\n }\n // Go to specific page from menu\n goToPageMenu() {\n if (this.pageInput && this.pageInput >= 1 && this.pageInput <= this.totalPages()) {\n const newFirst = (this.pageInput - 1) * this.rows;\n this.paginateChange.emit({ first: newFirst, rows: this.rows });\n this.pageInput = null;\n this.showPageMenu = false; // Close menu after navigation\n }\n }\n // Go to specific page (original method)\n goToPage() {\n this.goToPageMenu(); // Reuse the same logic\n }\n // Go to first page\n goFirst() {\n this.paginateChange.emit({ first: 0, rows: this.rows }); // EMIT EVENT\n }\n // Go to last page\n goLast() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n this.paginateChange.emit({ first: maxFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to previous page\n goPrev() {\n const newFirst = Math.max(this.first - this.rows, 0);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to next page\n goNext() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n const newFirst = Math.min(this.first + this.rows, maxFirst);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Check first/last page\n isFirstPage() {\n return this.first === 0;\n }\n isLastPage() {\n return this.first + this.rows >= this.totalRecords;\n }\n // Detect RTL direction\n get isRTL() {\n return document.documentElement.dir === 'rtl' ||\n document.body.dir === 'rtl' ||\n // this.translateService?.currentLang === 'ar' || // if using translation\n false; // default to LTR\n }\n /**\n * Handles button click in a unified way.\n * - If btn.action is defined, execute it.\n * - Otherwise, emit event with actionName or default 'add'.\n */\n async handleButtonClick(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n this.action.emit({\n name: btn.actionName ?? 'add',\n row: null, // provide row if available\n });\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n openReportDialog() {\n const ref = this.dialogService.open(GenericReportComponent, {\n header: this.translate.instant('REPORT'),\n showHeader: false,\n width: '90%',\n height: 'auto',\n modal: true,\n focusOnShow: false,\n data: {\n apiName: this.apiName,\n filterFields: this.filters,\n filterModel: { /* status: 'Active' */},\n defaultFileName: this.translate.instant('REPORT') + ' ' + this.translate.instant(this.breadcrumb?.length ? this.breadcrumb[this.breadcrumb.length - 1].label ?? '' : '')\n }\n });\n ref.onClose.subscribe((exportConfig) => {\n if (exportConfig) {\n console.log('Export configuration:', exportConfig);\n // Handle the export - call your API service here\n this.handleExport(exportConfig);\n }\n });\n }\n handleExport(config) {\n // Your export logic here\n // if (config.exportType === 'EXCEL') {\n // this.exportToExcel(config);\n // } else if (config.exportType === 'PDF') {\n // this.exportToPdf(config);\n // }\n // etc.\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudHeaderComponent, isStandalone: true, selector: \"app-generic-crud-header\", inputs: { mode: \"mode\", breadcrumb: \"breadcrumb\", isSingleItemSelected: \"isSingleItemSelected\", selectedItems: \"selectedItems\", singleActionButtons: \"singleActionButtons\", bulkActionButtons: \"bulkActionButtons\", addButtonConfigs: \"addButtonConfigs\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", apiName: \"apiName\", actions: \"actions\" }, outputs: { singleItemAction: \"singleItemAction\", bulkAction: \"bulkAction\", search: \"search\", resetSearch: \"resetSearch\", action: \"action\", paginateChange: \"paginateChange\" }, providers: [DialogService], ngImport: i0, template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i1.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"component\", type: i2.Divider, selector: \"p-divider\", inputs: [\"styleClass\", \"layout\", \"type\", \"align\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"component\", type: GenericSearchAdvanced, selector: \"lib-generic-search-advanced\", inputs: [\"model\", \"fields\", \"enableSelect\", \"enableGroup\", \"odataConfig\"], outputs: [\"search\", \"paginationChange\", \"odataSearch\"] }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-header', standalone: true, imports: [\n GenericButton,\n TranslateModule,\n BreadcrumbComponent,\n CommonModule,\n ButtonModule,\n DividerModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n Menu,\n GenericSearchAdvanced\n ], providers: [DialogService], template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { mode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], isSingleItemSelected: [{\n type: Input\n }], selectedItems: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], apiName: [{\n type: Input\n }], actions: [{\n type: Input\n }], singleItemAction: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], search: [{\n type: Output\n }], resetSearch: [{\n type: Output\n }], action: [{\n type: Output\n }], paginateChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtaGVhZGVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQXNCcEYsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxTQUFTLEdBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEMsYUFBYSxHQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxZQUFZO0lBQ0gsSUFBSSxHQUFtRCxNQUFNLENBQUM7SUFDOUQsVUFBVSxDQUF5QjtJQUNuQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixtQkFBbUIsR0FBbUIsRUFBRSxDQUFDO0lBQ3pDLGlCQUFpQixHQUFtQixFQUFFLENBQUM7SUFDdkMsZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUN0QyxPQUFPLENBQU07SUFDYixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDakIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztJQUNsRCxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsd0NBQXdDO0lBQ25ELFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7SUFDaEQsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQWM7UUFDckI7WUFDWSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsT0FBTyxFQUFDLENBQUMsQ0FBSyxFQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNKO0tBQ1osQ0FBQztJQUdSLGFBQWE7SUFDSCxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQUNwRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFDOUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDakMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDdkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBQ3pELGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQyxDQUFDLGFBQWE7SUFLNUYsYUFBYTtJQUNiLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRXRDLGFBQWE7SUFDYixrQkFBa0IsQ0FBQyxHQUFpQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxHQUFpQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0gsZ0JBQWdCLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBR0Msc0JBQXNCO0lBQ3hCLDREQUE0RDtJQUM1RCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNGLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFOUIsb0NBQW9DO0lBQ3BDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBQzlDLENBQUM7SUFFRCxtQkFBbUI7SUFDckIsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUMsc0JBQXNCO0lBQ3RCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7SUFDL0UsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDckQsQ0FBQztJQUdELHVCQUF1QjtJQUN2QixJQUFJLEtBQUs7UUFDUCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLEtBQUs7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSztZQUM1QiwwRUFBMEU7WUFDekUsS0FBSyxDQUFDLENBQUMsaUJBQWlCO0lBQ2pDLENBQUM7SUFDQTs7OztNQUlFO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQWlCO1FBQ3ZDLElBQUksQ0FBQztZQUNILElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNmLDhCQUE4QjtnQkFDOUIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1lBQzdELENBQUM7aUJBQU0sQ0FBQztnQkFDTiw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNmLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEtBQUs7b0JBQzdCLEdBQUcsRUFBRSxJQUFLLEVBQUUsMkJBQTJCO2lCQUN4QyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxVQUFVLEVBQUMsS0FBSztZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUMsS0FBSztZQUNqQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQzFCLFdBQVcsRUFBRSxFQUFFLHVCQUF1QixDQUFDO2dCQUN6QyxlQUFlLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBRyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUVwSztTQUNGLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ25ELGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQVc7UUFDOUIseUJBQXlCO1FBQ3pCLHVDQUF1QztRQUN2QyxnQ0FBZ0M7UUFDaEMsNENBQTRDO1FBQzVDLDhCQUE4QjtRQUM5QixJQUFJO1FBQ0osT0FBTztJQUNULENBQUM7dUdBNUxRLDBCQUEwQjsyRkFBMUIsMEJBQTBCLCtwQkFIekIsQ0FBQyxhQUFhLENBQUMsMEJDakM3Qix3OUtBK0pBLDRDRDNJSSxhQUFhLDhQQUNiLGVBQWUsK0JBQ2YsbUJBQW1CLGtGQUNuQixZQUFZLDhCQUNaLFlBQVksaWJBQ1osYUFBYSxpSkFDYixXQUFXLDhCQUNYLG1CQUFtQiw4QkFDbkIsYUFBYSxzWEFDYixJQUFJLHFTQUNKLHFCQUFxQjs7MkZBTVosMEJBQTBCO2tCQXBCdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLElBQUk7d0JBQ0oscUJBQXFCO3FCQUN0QixhQUVXLENBQUMsYUFBYSxDQUFDOzhCQVFsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWIsS0FBSztnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBZixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uQ29uZmlnIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEaXZpZGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaXZpZGVyJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEdlbmVyaWNTZWFyY2hBZHZhbmNlZCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZXBvcnRDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1yZXBvcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJpYy1jcnVkLWhlYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQnJlYWRjcnVtYkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIERpdmlkZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudSxcclxuICAgIEdlbmVyaWNTZWFyY2hBZHZhbmNlZFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCcsXHJcbiAgIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNDcnVkSGVhZGVyQ29tcG9uZW50IHtcclxuXHJcbiAgdHJhbnNsYXRlICA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBkaWFsb2dTZXJ2aWNlICA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAvLyDwn5+iIElucHV0c1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdmdWxsJyB8ICdmb3JtLW9ubHknIHwgJ3RhYmxlLW9ubHknIHwgJ2RldGFpbCcgPSAnZnVsbCc7XHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYjogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc1NpbmdsZUl0ZW1TZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBidWxrQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBhZGRCdXR0b25Db25maWdzOiBCdXR0b25Db25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcclxuICBASW5wdXQoKSBmaWx0ZXJNb2RlbDogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcbiAgIEBJbnB1dCgpIGZpcnN0ID0gMDsgLy8gQWRkIGlucHV0IGZvciBjdXJyZW50ICdmaXJzdCcgaW5kZXhcclxuICBASW5wdXQoKSByb3dzID0gMTA7IC8vIEFkZCBpbnB1dCBmb3IgY3VycmVudCAncm93cycgcGVyIHBhZ2VcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwOyAvLyBBZGQgaW5wdXQgZm9yIHRvdGFsIHJlY29yZHNcclxuICBASW5wdXQoKSBhcGlOYW1lOiBzdHJpbmcgPSAnJztcclxuICAgQElucHV0KCkgYWN0aW9uczpNZW51SXRlbVtdID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWZpbGUtZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDooZTphbnkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVwb3J0RGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuXHJcblxyXG4gIC8vIPCfn6IgT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzaW5nbGVJdGVtQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25Db25maWc+KCk7XHJcbiAgQE91dHB1dCgpIGJ1bGtBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNvbmZpZz4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gQE91dHB1dCgpIHBhZ2luYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9PigpOyAvLyBORVcgT1VUUFVUXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIPCfn6IgSGVscGVyc1xyXG4gIHRyYWNrQnlJZHggPSAoaW5kZXg6IG51bWJlcikgPT4gaW5kZXg7XHJcblxyXG4gIC8vIPCfn6IgQWN0aW9uc1xyXG4gIG9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdGhpcy5zaW5nbGVJdGVtQWN0aW9uLmVtaXQoYnRuKTtcclxuICB9XHJcbiAgb25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuOiBCdXR0b25Db25maWcpIHtcclxuICAgIHRoaXMuYnVsa0FjdGlvbi5lbWl0KGJ0bik7XHJcbiAgfVxyXG5wYWdpbmF0aW9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucm93cyA9IHZhbHVlLnRvcDtcclxuICB9XHJcbiAgYXBwbHlTZWFyY2godmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5yZXNldFNlYXJjaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgICAvLyBHbyB0byBwcmV2aW91cyBwYWdlXHJcbiAgLy8g8J+foiBBY3Rpb25zIChLZWVwIG9yIGFkYXB0IHlvdXIgZXhpc3RpbmcgcGFnaW5hdGlvbiBsb2dpYylcclxuICB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy50b3RhbFJlY29yZHMgPT09IDAgfHwgdGhpcy5yb3dzID09PSAwKSByZXR1cm4gMDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnJvd3MpO1xyXG4gIH1cclxuIHBhZ2VJbnB1dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1BhZ2VNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEdldCBjdXJyZW50IHBhZ2UgbnVtYmVyICgxLWJhc2VkKVxyXG4gIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5maXJzdCAvIHRoaXMucm93cykgKyAxO1xyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gc3BlY2lmaWMgcGFnZSBmcm9tIG1lbnVcclxuICBnb1RvUGFnZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlSW5wdXQgJiYgdGhpcy5wYWdlSW5wdXQgPj0gMSAmJiB0aGlzLnBhZ2VJbnB1dCA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICBjb25zdCBuZXdGaXJzdCA9ICh0aGlzLnBhZ2VJbnB1dCAtIDEpICogdGhpcy5yb3dzO1xyXG4gICAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcclxuICAgICAgdGhpcy5wYWdlSW5wdXQgPSBudWxsO1xyXG4gICAgICB0aGlzLnNob3dQYWdlTWVudSA9IGZhbHNlOyAvLyBDbG9zZSBtZW51IGFmdGVyIG5hdmlnYXRpb25cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdvIHRvIHNwZWNpZmljIHBhZ2UgKG9yaWdpbmFsIG1ldGhvZClcclxuICBnb1RvUGFnZSgpIHtcclxuICAgIHRoaXMuZ29Ub1BhZ2VNZW51KCk7IC8vIFJldXNlIHRoZSBzYW1lIGxvZ2ljXHJcbiAgfVxyXG5cclxuICAvLyBHbyB0byBmaXJzdCBwYWdlXHJcbmdvRmlyc3QoKSB7XHJcbiAgdGhpcy5wYWdpbmF0ZUNoYW5nZS5lbWl0KHsgZmlyc3Q6IDAsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG59XHJcblxyXG4vLyBHbyB0byBsYXN0IHBhZ2VcclxuZ29MYXN0KCkge1xyXG4gIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgKHRoaXMudG90YWxQYWdlcygpIC0gMSkgKiB0aGlzLnJvd3MpO1xyXG4gIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBtYXhGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbn1cclxuXHJcbiAgLy8gR28gdG8gcHJldmlvdXMgcGFnZVxyXG4gIGdvUHJldigpIHtcclxuICAgIGNvbnN0IG5ld0ZpcnN0ID0gTWF0aC5tYXgodGhpcy5maXJzdCAtIHRoaXMucm93cywgMCk7XHJcbiAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gbmV4dCBwYWdlXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCAodGhpcy50b3RhbFBhZ2VzKCkgLSAxKSAqIHRoaXMucm93cyk7XHJcbiAgICBjb25zdCBuZXdGaXJzdCA9IE1hdGgubWluKHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MsIG1heEZpcnN0KTtcclxuICAgIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBuZXdGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBmaXJzdC9sYXN0IHBhZ2VcclxuICBpc0ZpcnN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNMYXN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ICsgdGhpcy5yb3dzID49IHRoaXMudG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERldGVjdCBSVEwgZGlyZWN0aW9uXHJcbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAvLyAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlPy5jdXJyZW50TGFuZyA9PT0gJ2FyJyB8fCAvLyBpZiB1c2luZyB0cmFuc2xhdGlvblxyXG4gICAgICAgICAgIGZhbHNlOyAvLyBkZWZhdWx0IHRvIExUUlxyXG4gIH1cclxuICAgLyoqXHJcbiAgICogSGFuZGxlcyBidXR0b24gY2xpY2sgaW4gYSB1bmlmaWVkIHdheS5cclxuICAgKiAtIElmIGJ0bi5hY3Rpb24gaXMgZGVmaW5lZCwgZXhlY3V0ZSBpdC5cclxuICAgKiAtIE90aGVyd2lzZSwgZW1pdCBldmVudCB3aXRoIGFjdGlvbk5hbWUgb3IgZGVmYXVsdCAnYWRkJy5cclxuICAgKi9cclxuICBhc3luYyBoYW5kbGVCdXR0b25DbGljayhidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGJ0bi5hY3Rpb24pIHtcclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcm92aWRlZCBhY3Rpb25cclxuICAgICAgICBhd2FpdCBidG4uYWN0aW9uKG51bGwpOyAvLyBZb3UgY2FuIHBhc3Mgcm93IG9yIGNvbnRleHQgaGVyZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGVtaXR0aW5nIGV2ZW50XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnYWRkJyxcclxuICAgICAgICAgIHJvdzogbnVsbCEsIC8vIHByb3ZpZGUgcm93IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignQnV0dG9uIGFjdGlvbiBlcnJvcicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGlhbG9nKCkge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihHZW5lcmljUmVwb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICBzaG93SGVhZGVyOmZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJyxcclxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgICBmb2N1c09uU2hvdzpmYWxzZSxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBhcGlOYW1lOnRoaXMuYXBpTmFtZSxcclxuICAgICAgICAgIGZpbHRlckZpZWxkczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyTW9kZWw6IHsgLyogc3RhdHVzOiAnQWN0aXZlJyAgKi99LFxyXG4gICAgICAgIGRlZmF1bHRGaWxlTmFtZTp0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSArICcgJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5icmVhZGNydW1iPy5sZW5ndGggPyB0aGlzLmJyZWFkY3J1bWJbdGhpcy5icmVhZGNydW1iLmxlbmd0aCAtIDFdLmxhYmVsID8/Jyc6ICcnKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChleHBvcnRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChleHBvcnRDb25maWcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHBvcnQgY29uZmlndXJhdGlvbjonLCBleHBvcnRDb25maWcpO1xyXG4gICAgICAgICAgLy8gSGFuZGxlIHRoZSBleHBvcnQgLSBjYWxsIHlvdXIgQVBJIHNlcnZpY2UgaGVyZVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZXhwb3J0Q29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXhwb3J0KGNvbmZpZzogYW55KSB7XHJcbiAgICAgIC8vIFlvdXIgZXhwb3J0IGxvZ2ljIGhlcmVcclxuICAgICAgLy8gaWYgKGNvbmZpZy5leHBvcnRUeXBlID09PSAnRVhDRUwnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb0V4Y2VsKGNvbmZpZyk7XHJcbiAgICAgIC8vIH0gZWxzZSBpZiAoY29uZmlnLmV4cG9ydFR5cGUgPT09ICdQREYnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb1BkZihjb25maWcpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGV0Yy5cclxuICAgIH1cclxuXHJcbn1cclxuIiwiQGlmIChtb2RlICE9PSAnZm9ybS1vbmx5JyAmJiBtb2RlICE9PSAnZGV0YWlsJykge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICA8ZGl2PlxyXG4gICAgPGFwcC1icmVhZGNydW1iXHJcbiAgICAgIGNsYXNzPVwieHM6YmxvY2sgaGlkZGVuXCJcclxuICAgICAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXHJcbiAgICA+PC9hcHAtYnJlYWRjcnVtYj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgQGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgPCEtLSDYo9iy2LHYp9ixINin2YTYudmG2KfYtdixINin2YTZhdmB2LHYr9ipIC0tPlxyXG4gICAgICBAaWYgKGlzU2luZ2xlSXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIHNpbmdsZUFjdGlvbkJ1dHRvbnM7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgICAgQGlmICghYnRuLnZpc2libGUgfHwgKGJ0bi52aXNpYmxlICYmIGJ0bi52aXNpYmxlID09PSB0cnVlKSkge1xyXG4gICAgICAgICAgICA8bGliLWdlbmVyaWMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidG4ubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bi52YXJpYW50XCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bi5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cImJ0bi5zcGxpdEFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNpbmdsZUl0ZW1BY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDZhdiq2LnYr9iv2Kkg2KfZhNi52YbYp9i12LEgLS0+XHJcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIGJ1bGtBY3Rpb25CdXR0b25zOyB0cmFjayB0cmFja0J5SWR4KCRpbmRleCkpIHtcclxuICAgICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgICAgPGxpYi1nZW5lcmljLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiYnRuLnNpemVcIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJidG4ucGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDYp9mE2KXYttin2YHYqSAtLT5cclxuICAgICAgQGZvciAoYnRuIG9mIGFkZEJ1dHRvbkNvbmZpZ3M7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuLnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwiYnRuLnNwbGl0QWN0aW9uc1wiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICA+PC9saWItZ2VuZXJpYy1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5AaWYgKG1vZGUgIT09ICdmb3JtLW9ubHknICYmIG1vZGUgIT09ICdkZXRhaWwnKSB7XHJcbjxkaXYgY2xhc3M9XCJtdC0yIG1iLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgPCEtLSDYp9mE2KjYrdirIC0tPlxyXG4gIEBpZiAoc2hvd1NlYXJjaCAmJiBmaWx0ZXJzKSB7XHJcbiAgICA8bGliLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkXHJcbiAgICBbbW9kZWxdPVwiZmlsdGVyTW9kZWxcIlxyXG4gIFtmaWVsZHNdPVwiZmlsdGVyc1wiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gID5cclxuPC9saWItZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSDYo9iv2YjYp9iqINil2LbYp9mB2YrYqSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcnRsOnNwYWNlLXgtcmV2ZXJzZVwiPlxyXG4gICAgPCEtLSBSZWZyZXNoIEJ1dHRvbiAtLT5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktcmVmcmVzaFwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAob25DbGljayk9XCJyZXNldCgpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiIGNsYXNzPVwibS0wIHAtMCBoaWRkZW4geHM6YmxvY2tcIiAvPlxyXG5cclxuXHJcbiAgICA8cC1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIiAgY2xhc3M9XCJ4czpibG9ja1wiICBzZXZlcml0eT1cInNlY29uZGFyeVwiIG91dGxpbmVkIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIvPlxyXG4gICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgLz5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBydGw6c3BhY2UteC1yZXZlcnNlXCI+XHJcbiAgICAgIDwhLS0gRmlyc3QgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCcgOiAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cImhpZGRlbiB4czpibG9ja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImdvRmlyc3QoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gUHJldmlvdXMgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWNoZXZyb24tcmlnaHQnIDogJ3BpIHBpLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwieHM6YmxvY2tcIlxyXG4gICAgICAgIChjbGljayk9XCJnb1ByZXYoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgICAgPCEtLSBDdXJyZW50IFBhZ2UgRGlzcGxheSB3aXRoIERyb3Bkb3duIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBbbGFiZWxdPVwiY3VycmVudFBhZ2UgKyAnIC8gJyArIHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1BhZ2VNZW51ID0gIXNob3dQYWdlTWVudVwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCJ7e3RvdGFsUmVjb3Jkc319XCJcclxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgIC8+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuICAgICAgPCEtLSBOZXh0IFBhZ2UgQnV0dG9uIC0tPlxyXG4gICAgICA8cC1idXR0b25cclxuICAgICAgICBbaWNvbl09XCJpc1JUTCA/ICdwaSBwaS1jaGV2cm9uLWxlZnQnIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cInhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gTGFzdCBQYWdlIEJ1dHRvbiAtLT5cclxuICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgW2ljb25dPVwiaXNSVEwgPyAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnIDogJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuIHhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29MYXN0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=","/* eslint-disable @angular-eslint/no-output-on-prefix */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { DividerModule } from 'primeng/divider';\nimport { Component, Input, Output, EventEmitter, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MessageModule } from 'primeng/message';\nimport { ButtonModule } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { DrawerModule } from 'primeng/drawer';\nimport { DialogModule } from 'primeng/dialog';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { GenericCrudHeaderComponent } from './generic-crud-header';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GenericTable } from '@elite.framework/ng.ui.core/generic-table';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericViewComponent } from '@elite.framework/ng.ui.core/generic-view';\nimport { QueryBuilderService } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport * as i0 from \"@angular/core\";\n/**\n * مكون جدول CRUD عام يمكن إعادة استخدامه\n * يدعم العمليات الأساسية: إنشاء، قراءة، تحديث، حذف\n * مع إمكانية التخصيص عبر عدة أوضاع وعرض\n */\nexport class GenericCrudTableComponent {\n genericTable;\n dialog;\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n queryBuilder = inject(QueryBuilderService);\n home = { icon: 'pi pi-home', routerLink: '/' };\n data = [];\n formFields_ = []; // <-- هنا\n formFields = []; // <-- هنا\n columns = []; // <-- هنا\n dialogMaxWidth = '40rem'; // unset , fit-content\n isViewMode = false;\n displayMode = 'drawer';\n useConfirmOnSave = false;\n isEditMode = false;\n drawerVisible = false;\n dialogVisible = false;\n form = new UntypedFormGroup({});\n model;\n model_ = {};\n loading = false;\n errorMsg = '';\n errorMessage = '';\n options = {};\n actions = [];\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\n actionsMode = 'buttons';\n action = new EventEmitter();\n bulkAction = new EventEmitter();\n singleAction = new EventEmitter();\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n // البحث\n // Search\n filters;\n filterModel = {};\n search = new EventEmitter();\n /** للتحكم بإظهار/إخفاء قسم البحث */\n showSearch = true;\n /** Pagination Inputs */\n first = 0;\n rows = 10;\n totalRecords = 0;\n pageChange = new EventEmitter();\n onSearch = new EventEmitter();\n visibleChange = new EventEmitter();\n ;\n // @Output() visibleChange = new EventEmitter<boolean>();\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\n rowSelectable = false;\n /** حدث يخرج الصف المحدّد */\n rowSelect = new EventEmitter();\n selection = null;\n // الفرز\n sortField;\n sortOrder = 1;\n scrollHeight = '400px';\n paginator = true;\n service = inject(BaseService);\n apiName = '';\n idField = 'id';\n showRowSelectionCheckbox = false;\n showAddButton = true;\n addPermissionName;\n addButtonConfigs = [\n {\n icon: 'pi pi-plus',\n label: 'ADD',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'add',\n visible: this.showAddButton,\n permission: this.addPermissionName,\n },\n ];\n createEditActions = [\n {\n icon: 'pi pi-check',\n label: 'SAVE',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'save',\n type: 'submit',\n splitActions: [\n {\n label: this.translate.instant('SAVE_AND_ADD'),\n icon: 'pi pi-save',\n actionName: 'saveAndAdd'\n }\n ]\n },\n {\n icon: 'pi pi-times',\n label: 'CANCEL',\n variant: 'raised',\n severity: 'danger',\n size: 'small',\n actionName: 'cancel',\n type: 'button',\n },\n ];\n supportSubPage = true;\n tabs = [];\n bulkActionButtons = [];\n singleActionButtons = [];\n _selectedRows = [];\n get isSingleItemSelected() {\n return this._selectedRows.length === 1;\n }\n get isMultipleItemSelected() {\n return this._selectedRows.length > 1;\n }\n get selectedItems() {\n return this._selectedRows;\n }\n breadcrumb;\n get breadcrumb_() {\n return this.breadcrumb?.map(v => ({\n ...v,\n label: this.translate.instant(v.label ?? '')\n }));\n }\n get rtl() {\n try {\n return document?.documentElement?.dir === 'rtl';\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Modes to control what parts of the component are visible\n * - 'full': Table + CRUD operations (default)\n * - 'form-only': Only show form (for create/edit/view)\n * - 'table-only': Only show table (read-only mode)\n */\n mode = 'full';\n /** Force the component to show specific state */\n forceState = null;\n /** Hide table completely when in form-only mode */\n get hideTable() {\n return (this.mode === 'form-only' || this.mode === 'detail' || (this.forceState && this.mode !== 'table-only')) ?? false;\n }\n /** Auto-show form when in form-only mode with forceState */\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n //لتغيير لون صف معيّن\n rowStyleFn;\n // ✅ لتعيين كلاس CSS أو Tailwind على الصف\n rowClassFn;\n //آخر لتجميد / تعطيل checkbox الاختيار\n disableRowCheckboxFn;\n tableClass = 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl xs:rounded-2xl p-4 bg-white';\n route = inject(ActivatedRoute);\n router = inject(Router);\n currentId;\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n if (this.tabs.length == 0) {\n this.formFields_ = this.formFields;\n this.tabs.push({ header: 'التفاصيل', icon: 'pi pi-info-circle', fields: this.formFields_, model: this.model });\n }\n if (this.supportSubPage) {\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n this.mode = 'detail';\n this.loadDetail(id);\n }\n else {\n this.currentId = undefined;\n }\n });\n }\n }\n // 3. Handle Header's Paginate Change Event\n onHeaderPaginateChange(event) {\n this.first = event.first; // Update the 'first' index\n this.rows = event.rows;\n const lazyLoadEvent = {\n first: this.first,\n rows: this.rows,\n // You'd typically include current sorting and filtering state here\n sortField: this.sortField,\n sortOrder: 1,\n filters: this.filters,\n globalFilter: null, // or your current global filter value\n };\n this.onLazyLoad(lazyLoadEvent);\n }\n loadDetail(id) {\n this.service.get(id).subscribe({\n next: res => {\n this.model = res;\n }\n });\n }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.dialog.openForm(mode, model);\n }\n // private destroy$ = new Subject<void>();\n /** الآن يتلقّى pagination + sort في حدث واحد */\n onLazyLoad(event) {\n // this.model_= this.model ?? {};\n this.model = this.model ?? {};\n this.formFields_ = this.formFields;\n const first = event.first ?? this.first;\n const rows = event.rows ?? this.rows;\n const sortField = typeof event.sortField === 'string'\n ? event.sortField\n : this.sortField;\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\n const filters = {};\n if (event.filters) {\n Object.entries(event.filters).forEach(([field, meta]) => {\n const value = meta.value;\n if (value != null && value !== '') {\n filters[field] = value;\n }\n });\n }\n var queryString = '';\n // Default query\n if (!filters['query']) {\n // Use the new QueryBuilderService methods\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.formFields_);\n // this.odataSearch.emit(odataParams);\n // Generate query string using the unified method\n queryString = this.queryBuilder.toODataQueryString(odataParams);\n // console.log('OData Query String:', queryString);\n }\n this.first = first;\n this.rows = rows;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n const dir = sortOrder === 1 ? 'asc' : 'desc';\n const sort = sortField ? `${sortField} ${dir}` : undefined;\n // this.pageChange.emit({ first, rows ,sort, filters });\n this.applySearch({\n filter: this.model['filter'],\n query: queryString,\n sorting: sort,\n skipCount: first,\n maxResultCount: rows,\n });\n // يبني النص وإرساله\n }\n /** تصيير البيانات حسب الصفحة */\n get pagedData() {\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\n return this.data;\n }\n get globalFilterFields() {\n return this.columns.map(c => String(c.key));\n }\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\n // from generic-crud-table.component.ts\n /** بدّل applySearch لتبث pageChange مباشرةً */\n applySearch(filters) {\n // this.genericTable.applyFilter(global);\n this.onSearch.emit(filters);\n }\n /** دالة تنفّذ عند النقر على صف */\n onRowClick(row) {\n if (this.rowSelectable) {\n this.rowSelect.emit(row);\n }\n }\n onSubmit() {\n if (this.mode != 'form-only') {\n this.applySearch('');\n }\n }\n trackByIdx(index, item) {\n return index;\n }\n onSingleItemAction(btn) {\n if (!this.isSingleItemSelected)\n return;\n const selectedItem = this._selectedRows[0];\n this.singleAction.emit({\n name: btn.actionName ?? 'singleAction',\n item: selectedItem\n });\n }\n onInternalBulkAction(btn) {\n if (!this.isMultipleItemSelected)\n return;\n this.bulkAction.emit({\n name: btn.actionName ?? 'bulkAction',\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudTableComponent, isStandalone: true, selector: \"app-generic-crud-table\", inputs: { data: \"data\", formFields: \"formFields\", columns: \"columns\", dialogMaxWidth: \"dialogMaxWidth\", isViewMode: \"isViewMode\", displayMode: \"displayMode\", useConfirmOnSave: \"useConfirmOnSave\", isEditMode: \"isEditMode\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", model: \"model\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", actions: \"actions\", actionsMode: \"actionsMode\", beforeSaveTransform: \"beforeSaveTransform\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", rowSelectable: \"rowSelectable\", scrollHeight: \"scrollHeight\", paginator: \"paginator\", service: \"service\", apiName: \"apiName\", idField: \"idField\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", showAddButton: \"showAddButton\", addPermissionName: \"addPermissionName\", addButtonConfigs: \"addButtonConfigs\", createEditActions: \"createEditActions\", supportSubPage: \"supportSubPage\", tabs: \"tabs\", bulkActionButtons: \"bulkActionButtons\", singleActionButtons: \"singleActionButtons\", breadcrumb: \"breadcrumb\", mode: \"mode\", forceState: \"forceState\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\", rowStyleFn: \"rowStyleFn\", rowClassFn: \"rowClassFn\", disableRowCheckboxFn: \"disableRowCheckboxFn\" }, outputs: { action: \"action\", bulkAction: \"bulkAction\", singleAction: \"singleAction\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", search: \"search\", pageChange: \"pageChange\", onSearch: \"onSearch\", visibleChange: \"visibleChange\", rowSelect: \"rowSelect\" }, viewQueries: [{ propertyName: \"genericTable\", first: true, predicate: [\"genericTable\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: TableModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: GenericTable, selector: \"lib-generic-table\", inputs: [\"data\", \"columns\", \"loading\", \"actions\", \"actionsPosition\", \"actionsMode\", \"first\", \"rows\", \"totalRecords\", \"sortField\", \"sortOrder\", \"globalFilterFields\", \"addButtonConfigs\", \"scrollHeight\", \"rowSelectable\", \"rowStyleFn\", \"rowClassFn\", \"disableRowCheckboxFn\", \"selection\", \"paginator\", \"showRowSelectionCheckbox\"], outputs: [\"action\", \"pageChange\", \"onAddNew\", \"rowSelect\", \"selectionChange\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: MessageModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericCrudHeaderComponent, selector: \"app-generic-crud-header\", inputs: [\"mode\", \"breadcrumb\", \"isSingleItemSelected\", \"selectedItems\", \"singleActionButtons\", \"bulkActionButtons\", \"addButtonConfigs\", \"filters\", \"filterModel\", \"showSearch\", \"first\", \"rows\", \"totalRecords\", \"apiName\", \"actions\"], outputs: [\"singleItemAction\", \"bulkAction\", \"search\", \"resetSearch\", \"action\", \"paginateChange\"] }, { kind: \"component\", type: GenericViewComponent, selector: \"app-detail-view\", inputs: [\"title\", \"actions\", \"createEditActions\", \"tabs\", \"viewMode\", \"breadcrumb\", \"service\", \"formFields\", \"apiName\", \"idField\", \"standaloneMode\", \"isViewMode\", \"isCreateMode\", \"isEditMode\", \"model\", \"displayMode\", \"mode\", \"loading\"], outputs: [\"action\", \"afterDelete\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-table', standalone: true, imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n GenericTable,\n ToolbarModule,\n TranslateModule,\n DividerModule,\n IconFieldModule,\n DrawerModule,\n ReactiveFormsModule,\n FormsModule,\n MessageModule,\n DialogModule,\n GenericDialogComponent,\n GenericCrudHeaderComponent,\n GenericViewComponent\n ], host: {\n class: ''\n }, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { genericTable: [{\n type: ViewChild,\n args: ['genericTable']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], data: [{\n type: Input\n }], formFields: [{\n type: Input\n }], columns: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], model: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], action: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], singleAction: [{\n type: Output\n }], beforeSaveTransform: [{\n type: Input\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], search: [{\n type: Output\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], onSearch: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], rowSelectable: [{\n type: Input\n }], rowSelect: [{\n type: Output\n }], scrollHeight: [{\n type: Input\n }], paginator: [{\n type: Input\n }], service: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], addPermissionName: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], supportSubPage: [{\n type: Input\n }], tabs: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], rowStyleFn: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], disableRowCheckboxFn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC10YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFDeEQscURBQXFEO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTyxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFRLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FB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c0JBQVosS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sWUFBWTtzQkFBeEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXggKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFBhZ2luYXRvclN0YXRlIH0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSxUYWJsZUxhenlMb2FkRXZlbnQgIH0gIGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sYmFyTW9kdWxlIH0gICBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEljb25GaWVsZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaWNvbmZpZWxkJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJhd2VyJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCdXR0b25Db25maWcgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgR2VuZXJpY0NydWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2VuZXJpY1RhYmxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtdGFibGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nJztcclxuaW1wb3J0IHsgRGV0YWlsVGFiLCBHZW5lcmljVmlld0NvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXZpZXcnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNoYW5nZVBheWxvYWQgZXh0ZW5kcyBQYWdpbmF0b3JTdGF0ZSB7XHJcbnNvcnQ/OiBzdHJpbmc7XHJcbmZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25zTW9kZSA9ICdidXR0b25zJyB8ICdtZW51JztcclxuXHJcbi8qKlxyXG4gKiDZhdmD2YjZhiDYrNiv2YjZhCBDUlVEINi52KfZhSDZitmF2YPZhiDYpdi52KfYr9ipINin2LPYqtiu2K/Yp9mF2YdcclxuICog2YrYr9i52YUg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KPYs9in2LPZitipOiDYpdmG2LTYp9ih2Iwg2YLYsdin2KHYqdiMINiq2K3Yr9mK2KvYjCDYrdiw2YFcclxuICog2YXYuSDYpdmF2YPYp9mG2YrYqSDYp9mE2KrYrti12YrYtSDYudio2LEg2LnYr9ipINij2YjYttin2Lkg2YjYudix2LZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtY3J1ZC10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEdlbmVyaWNUYWJsZSxcclxuICAgIFRvb2xiYXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBEaXZpZGVyTW9kdWxlLFxyXG4gICAgSWNvbkZpZWxkTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWVzc2FnZU1vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZW5lcmljQ3J1ZEhlYWRlckNvbXBvbmVudCxcclxuICAgIEdlbmVyaWNWaWV3Q29tcG9uZW50XHJcbl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC10YWJsZS5odG1sJyxcclxuICAgaG9zdDoge1xyXG4gICAgICAgIGNsYXNzOiAnJ1xyXG4gICAgfSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ3J1ZFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuIEBWaWV3Q2hpbGQoJ2dlbmVyaWNUYWJsZScpIGdlbmVyaWNUYWJsZSE6IEdlbmVyaWNUYWJsZTxUPjtcclxuIEBWaWV3Q2hpbGQoJ2RpYWxvZycpIGRpYWxvZyE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcbiB0cmFuc2xhdGU6VHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyID0gaW5qZWN0KFF1ZXJ5QnVpbGRlclNlcnZpY2UpO1xyXG5cclxuICAgIGhvbWU6IE1lbnVJdGVtIHwgdW5kZWZpbmVkID0geyBpY29uOiAncGkgcGktaG9tZScsIHJvdXRlckxpbms6ICcvJyB9O1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xyXG4gICBmb3JtRmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdOyAgLy8gPC0tINmH2YbYp1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTsgIC8vIDwtLSDZh9mG2KdcclxuICBASW5wdXQoKSBjb2x1bW5zOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107ICAvLyA8LS0g2YfZhtinXHJcbiAgQElucHV0KCkgZGlhbG9nTWF4V2lkdGggPSAnNDByZW0nOyAvLyB1bnNldCAsIGZpdC1jb250ZW50XHJcbiAgQElucHV0KCkgaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzcGxheU1vZGU6XHJcbiAgICB8ICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxSZWNvcmQ8J2FkZCcgfCAnZWRpdCcgfCAndmlldycsICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSc+PlxyXG4gICAgPSAnZHJhd2VyJztcclxuICBASW5wdXQoKSB1c2VDb25maXJtT25TYXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiBASW5wdXQoKSBtb2RlbDogYW55O1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yTXNnID0gJyc7XHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmd8YW55ID0gJyc7XHJcblxyXG5vcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBhY3Rpb25zOiBBY3Rpb25EZWY8VD5bXSA9IFtdO1xyXG4gICAgLyoqINiq2K3Yr9ivINi32LHZitmC2Kkg2KfZhNi52LHYtjogJ2J1dHRvbnMnINij2YggJ21lbnUnICovXHJcbiAgQElucHV0KCkgYWN0aW9uc01vZGU6IEFjdGlvbnNNb2RlID0gJ2J1dHRvbnMnO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfT4oKTtcclxuICBAT3V0cHV0KCkgYnVsa0FjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBUW10gfT4oKTtcclxuICBAT3V0cHV0KCkgc2luZ2xlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5hbWU6IHN0cmluZzsgaXRlbTogVCB9PigpO1xyXG4gIEBJbnB1dCgpIGJlZm9yZVNhdmVUcmFuc2Zvcm0/OiAocmVjb3JkOiBhbnksIGlzRWRpdDogYm9vbGVhbikgPT4gYW55OyAvLyDimqEg2K/ZiNin2YQg2YXYrti12LXYqSDZgtio2YQg2KfZhNit2YHYuFxyXG5cclxuXHJcbiAgIEBPdXRwdXQoKSBhZnRlclNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUOyBpc0VkaXQ6IGJvb2xlYW47IHJlc3BvbnNlPzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogVDsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IFQ7IGlzRWRpdDogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUIH0+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7IG1vZGVsOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBUW107IHRvdGFsOiBudW1iZXIgfT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNlbGVjdGVkOiBUW107IHNlbGVjdGVkQ291bnQ6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8eyBlcnJvcjogYW55OyBjb250ZXh0OiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgLy8g2KfZhNio2K3Yq1xyXG4vLyBTZWFyY2hcclxuICBASW5wdXQoKSBmaWx0ZXJzOiBhbnk7XHJcbiAgIEBJbnB1dCgpIGZpbHRlck1vZGVsOiBhbnkgPSB7fTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBzdHJpbmc7IGdsb2JhbDogc3RyaW5nIH0+KCk7XHJcblxyXG4vKiog2YTZhNiq2K3Zg9mFINio2KXYuNmH2KfYsS/Ypdiu2YHYp9ihINmC2LPZhSDYp9mE2KjYrdirICovXHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcblxyXG4gIC8qKiBQYWdpbmF0aW9uIElucHV0cyAqL1xyXG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcclxuICBASW5wdXQoKSByb3dzID0gMTA7XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZVBheWxvYWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5AT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOztcclxuLy8gQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgIC8qKiDZhNis2LnZhCDYp9mE2KzYr9mI2YQg2YLYp9io2YQg2YTYp9iu2KrZitin2LEg2KfZhNi12YHZiNmBICjYp9mB2KrYsdin2LbZiiBmYWxzZSkgKi9cclxuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XHJcbiAgLyoqINit2K/YqyDZitiu2LHYrCDYp9mE2LXZgSDYp9mE2YXYrdiv2ZHYryAqL1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIHNlbGVjdGlvbjogVCB8IG51bGwgPSBudWxsO1xyXG5cclxuIC8vINin2YTZgdix2LJcclxuICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiAxIHwgLTEgPSAxO1xyXG5cclxuQElucHV0KCkgc2Nyb2xsSGVpZ2h0ID0gJzQwMHB4JztcclxuXHJcbiBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlO1xyXG5cclxuQElucHV0KCkgc2VydmljZTogQmFzZVNlcnZpY2UgPSBpbmplY3QoQmFzZVNlcnZpY2UpO1xyXG5ASW5wdXQoKSBhcGlOYW1lID0gJyc7XHJcbkBJbnB1dCgpIGlkRmllbGQgPSAnaWQnO1xyXG5cclxuIEBJbnB1dCgpIHNob3dSb3dTZWxlY3Rpb25DaGVja2JveCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uID0gdHJ1ZTtcclxuXHJcbkBJbnB1dCgpIGFkZFBlcm1pc3Npb25OYW1lPzpzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGFkZEJ1dHRvbkNvbmZpZ3M6IEJ1dHRvbkNvbmZpZ1tdID0gW1xyXG4gIHtcclxuICAgIGljb246ICdwaSBwaS1wbHVzJyxcclxuICAgIGxhYmVsOiAnQUREJyxcclxuICAgIHZhcmlhbnQ6ICdyYWlzZWQnLFxyXG4gICAgc2V2ZXJpdHk6ICdwcmltYXJ5JyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnYWRkJyxcclxuICAgIHZpc2libGU6IHRoaXMuc2hvd0FkZEJ1dHRvbixcclxuICAgIHBlcm1pc3Npb246IHRoaXMuYWRkUGVybWlzc2lvbk5hbWUsXHJcbiAgfSxcclxuXTtcclxuXHJcbiBASW5wdXQoKSBjcmVhdGVFZGl0QWN0aW9uczogQnV0dG9uQ29uZmlnW10gPSBbXHJcbiAge1xyXG4gICAgaWNvbjogJ3BpIHBpLWNoZWNrJyxcclxuICAgIGxhYmVsOiAnU0FWRScsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAncHJpbWFyeScsXHJcbiAgICBzaXplOiAnc21hbGwnLFxyXG4gICAgYWN0aW9uTmFtZTogJ3NhdmUnLFxyXG4gICAgdHlwZTogJ3N1Ym1pdCcsXHJcbiAgICBzcGxpdEFjdGlvbnM6IFtcclxuICAgICB7XHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTQVZFX0FORF9BREQnKSxcclxuICAgICAgaWNvbjogJ3BpIHBpLXNhdmUnLFxyXG4gICAgICAgYWN0aW9uTmFtZTogJ3NhdmVBbmRBZGQnXHJcbiAgICB9XHJcbiAgXVxyXG4gIH0sXHJcbiAgIHtcclxuICAgIGljb246ICdwaSBwaS10aW1lcycsXHJcbiAgICBsYWJlbDogJ0NBTkNFTCcsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAnZGFuZ2VyJyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnY2FuY2VsJyxcclxuICAgIHR5cGU6ICdidXR0b24nLFxyXG4gIH0sXHJcbl07XHJcblxyXG4gQElucHV0KCkgc3VwcG9ydFN1YlBhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuIEBJbnB1dCgpIHRhYnM6IERldGFpbFRhYltdID0gW107XHJcbiAgQElucHV0KCkgYnVsa0FjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuXHJcbiBfc2VsZWN0ZWRSb3dzOiBUW10gPSBbXTtcclxuXHJcbmdldCBpc1NpbmdsZUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMTtcclxufVxyXG5cclxuZ2V0IGlzTXVsdGlwbGVJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5sZW5ndGggPiAxO1xyXG59XHJcblxyXG5nZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xyXG4gIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3M7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5ASW5wdXQoKSBicmVhZGNydW1iOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuXHJcbmdldCBicmVhZGNydW1iXygpOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gdGhpcy5icmVhZGNydW1iPy5tYXAodiA9PiAoe1xyXG4gICAgLi4udixcclxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHYubGFiZWwgPz8gJycpXHJcbiAgfSkpO1xyXG59XHJcbmdldCBydGwoKTogYm9vbGVhbiB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBkb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50Py5kaXIgPT09ICdydGwnO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbiAvKipcclxuICAgKiBNb2RlcyB0byBjb250cm9sIHdoYXQgcGFydHMgb2YgdGhlIGNvbXBvbmVudCBhcmUgdmlzaWJsZVxyXG4gICAqIC0gJ2Z1bGwnOiBUYWJsZSArIENSVUQgb3BlcmF0aW9ucyAoZGVmYXVsdClcclxuICAgKiAtICdmb3JtLW9ubHknOiBPbmx5IHNob3cgZm9ybSAoZm9yIGNyZWF0ZS9lZGl0L3ZpZXcpXHJcbiAgICogLSAndGFibGUtb25seSc6IE9ubHkgc2hvdyB0YWJsZSAocmVhZC1vbmx5IG1vZGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ2Zvcm0tb25seScgfCAndGFibGUtb25seScgfCAnZGV0YWlsJyA9ICdmdWxsJztcclxuXHJcbiAgLyoqIEZvcmNlIHRoZSBjb21wb25lbnQgdG8gc2hvdyBzcGVjaWZpYyBzdGF0ZSAqL1xyXG4gIEBJbnB1dCgpIGZvcmNlU3RhdGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBIaWRlIHRhYmxlIGNvbXBsZXRlbHkgd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSAqL1xyXG4gIEBJbnB1dCgpIGdldCBoaWRlVGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgfHwgdGhpcy5tb2RlID09PSAnZGV0YWlsJyB8fCAodGhpcy5mb3JjZVN0YXRlICYmIHRoaXMubW9kZSAhPT0gJ3RhYmxlLW9ubHknKSApPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogQXV0by1zaG93IGZvcm0gd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSB3aXRoIGZvcmNlU3RhdGUgKi9cclxuICBASW5wdXQoKSBnZXQgYXV0b1Nob3dGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgISF0aGlzLmZvcmNlU3RhdGU7XHJcbiAgfVxyXG4vL9mE2KrYutmK2YrYsSDZhNmI2YYg2LXZgSDZhdi52YrZkdmGXHJcbiAgQElucHV0KCkgcm93U3R5bGVGbj86IChyb3c6IFQpID0+IGFueTtcclxuXHJcbiAgLy8g4pyFINmE2KrYudmK2YrZhiDZg9mE2KfYsyBDU1Mg2KPZiCBUYWlsd2luZCDYudmE2Ykg2KfZhNi12YFcclxuICBASW5wdXQoKSByb3dDbGFzc0ZuPzogKHJvdzogVCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPjtcclxuXHJcbiAgLy/Yotiu2LEg2YTYqtis2YXZitivIC8g2KrYudi32YrZhCBjaGVja2JveCDYp9mE2KfYrtiq2YrYp9ixXHJcbiAgQElucHV0KCkgZGlzYWJsZVJvd0NoZWNrYm94Rm4/OiAocm93OiBUKSA9PiBib29sZWFuO1xyXG4gdGFibGVDbGFzcyA9ICdoLWZ1bGwgZmxleC0xIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItc3VyZmFjZSByb3VuZGVkLTJ4bCB4czpyb3VuZGVkLTJ4bCBwLTQgYmctd2hpdGUnO1xyXG5cclxuIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5wcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5jdXJyZW50SWQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5hcGlOYW1lICYmIHRoaXMuYXBpTmFtZSAhPSAnJyl7XHJcbiAgICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lIDtcclxuICAgIH1cclxuICAgICBpZiAodGhpcy5hcGlOYW1lKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuYXBpTmFtZSA9IHRoaXMuYXBpTmFtZTtcclxuICB9XHJcblxyXG4gIGlmKHRoaXMudGFicy5sZW5ndGggPT0gMCl7XHJcbiAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgdGhpcy50YWJzLnB1c2goeyBoZWFkZXI6ICfYp9mE2KrZgdin2LXZitmEJyxpY29uOidwaSBwaS1pbmZvLWNpcmNsZScsIGZpZWxkczogdGhpcy5mb3JtRmllbGRzXywgbW9kZWw6IHRoaXMubW9kZWwgfSk7XHJcbiAgfVxyXG4gICAgaWYgKHRoaXMuc3VwcG9ydFN1YlBhZ2UpIHtcclxuICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KHRoaXMuaWRGaWVsZCk7XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWQgPSBpZDtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RldGFpbCc7XHJcbiAgICAgIHRoaXMubG9hZERldGFpbChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4gIH1cclxuXHJcbiAgIC8vIDMuIEhhbmRsZSBIZWFkZXIncyBQYWdpbmF0ZSBDaGFuZ2UgRXZlbnRcclxuICBvbkhlYWRlclBhZ2luYXRlQ2hhbmdlKGV2ZW50OiB7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9KSB7XHJcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7IC8vIFVwZGF0ZSB0aGUgJ2ZpcnN0JyBpbmRleFxyXG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcclxuXHJcblxyXG4gICAgICAgY29uc3QgbGF6eUxvYWRFdmVudDogVGFibGVMYXp5TG9hZEV2ZW50ID0ge1xyXG4gICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxyXG4gICAgICAgIHJvd3M6IHRoaXMucm93cyxcclxuICAgICAgICAvLyBZb3UnZCB0eXBpY2FsbHkgaW5jbHVkZSBjdXJyZW50IHNvcnRpbmcgYW5kIGZpbHRlcmluZyBzdGF0ZSBoZXJlXHJcbiAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcclxuICAgICAgICBzb3J0T3JkZXI6IDEsXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzICxcclxuICAgICAgICBnbG9iYWxGaWx0ZXI6IG51bGwsIC8vIG9yIHlvdXIgY3VycmVudCBnbG9iYWwgZmlsdGVyIHZhbHVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vbkxhenlMb2FkKGxhenlMb2FkRXZlbnQpO1xyXG4gIH1cclxuICBsb2FkRGV0YWlsKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICB0aGlzLnNlcnZpY2UuZ2V0KGlkIGFzIGFueSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByZXM7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8vIEhlbHBlciBtZXRob2QgdG8gb3BlbiBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxub3BlbkZvcm0obW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgfCAndmlldycsIG1vZGVsPzogYW55KSB7XHJcbiAgdGhpcy5kaWFsb2cub3BlbkZvcm0obW9kZSxtb2RlbCk7XHJcbn1cclxuXHJcblxyXG4vLyAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAvKiog2KfZhNii2YYg2YrYqtmE2YLZkdmJIHBhZ2luYXRpb24gKyBzb3J0INmB2Yog2K3Yr9irINmI2KfYrdivICovXHJcbm9uTGF6eUxvYWQoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCkge1xyXG4gIC8vIHRoaXMubW9kZWxfPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLm1vZGVsPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gIGNvbnN0IGZpcnN0ICAgICA9IGV2ZW50LmZpcnN0ICA/PyB0aGlzLmZpcnN0O1xyXG4gIGNvbnN0IHJvd3MgICAgICA9IGV2ZW50LnJvd3MgICA/PyB0aGlzLnJvd3M7XHJcbiAgY29uc3Qgc29ydEZpZWxkID0gdHlwZW9mIGV2ZW50LnNvcnRGaWVsZCA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LnNvcnRGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zb3J0RmllbGQ7XHJcbiAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyID09PSAtMSA/IC0xIDogMTtcclxuXHJcblxyXG4gIGNvbnN0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGlmIChldmVudC5maWx0ZXJzKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50LmZpbHRlcnMpLmZvckVhY2goKFtmaWVsZCwgbWV0YV0pID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IChtZXRhIGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICBmaWx0ZXJzW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XHJcbiAgICAvLyBEZWZhdWx0IHF1ZXJ5XHJcbiAgaWYoIWZpbHRlcnNbJ3F1ZXJ5J10pe1xyXG4gICAgICAgLy8gVXNlIHRoZSBuZXcgUXVlcnlCdWlsZGVyU2VydmljZSBtZXRob2RzXHJcbiAgICBjb25zdCBvZGF0YVBhcmFtcyA9IHRoaXMucXVlcnlCdWlsZGVyLmJ1aWxkT0RhdGFGcm9tUXVlcnlNb2RlbCh0aGlzLm1vZGVsLCB0aGlzLmZvcm1GaWVsZHNfKTtcclxuICAgIC8vIHRoaXMub2RhdGFTZWFyY2guZW1pdChvZGF0YVBhcmFtcyk7XHJcblxyXG4gICAgLy8gR2VuZXJhdGUgcXVlcnkgc3RyaW5nIHVzaW5nIHRoZSB1bmlmaWVkIG1ldGhvZFxyXG4gICAgIHF1ZXJ5U3RyaW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIudG9PRGF0YVF1ZXJ5U3RyaW5nKG9kYXRhUGFyYW1zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdPRGF0YSBRdWVyeSBTdHJpbmc6JywgcXVlcnlTdHJpbmcpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICB0aGlzLmZpcnN0ICAgICA9IGZpcnN0O1xyXG4gIHRoaXMucm93cyAgICAgID0gcm93cztcclxuICB0aGlzLnNvcnRGaWVsZCA9IHNvcnRGaWVsZDtcclxuICB0aGlzLnNvcnRPcmRlciA9IHNvcnRPcmRlciBhcyAxfCAtMTtcclxuY29uc3QgZGlyID0gc29ydE9yZGVyID09PSAxID8gJ2FzYycgOiAnZGVzYyc7XHJcbiBjb25zdCBzb3J0ID0gc29ydEZpZWxkID8gYCR7c29ydEZpZWxkfSAke2Rpcn1gIDogdW5kZWZpbmVkO1xyXG5cclxuICAvLyB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IGZpcnN0LCByb3dzICxzb3J0LCBmaWx0ZXJzIH0pO1xyXG4gICB0aGlzLmFwcGx5U2VhcmNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyOnRoaXMubW9kZWxbJ2ZpbHRlciddLFxyXG4gICAgICAgIHF1ZXJ5OnF1ZXJ5U3RyaW5nLFxyXG4gICAgICAgIHNvcnRpbmc6c29ydCxcclxuICAgICAgICBza2lwQ291bnQ6Zmlyc3QsXHJcbiAgICAgICAgbWF4UmVzdWx0Q291bnQ6cm93cyxcclxuXHJcbiAgICB9XHJcbiAgKTtcclxuXHJcblxyXG4gIC8vINmK2KjZhtmKINin2YTZhti1INmI2KXYsdiz2KfZhNmHXHJcblxyXG59XHJcblxyXG5cclxuICAvKiog2KrYtdmK2YrYsSDYp9mE2KjZitin2YbYp9iqINit2LPYqCDYp9mE2LXZgdit2KkgKi9cclxuICBnZXQgcGFnZWREYXRhKCk6IFRbXSB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhLnNsaWNlKHRoaXMuZmlyc3QsIHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MpIDogW107XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbmdldCBnbG9iYWxGaWx0ZXJGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gIHJldHVybiB0aGlzLmNvbHVtbnMubWFwKGMgPT4gU3RyaW5nKGMua2V5KSk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8qKiDYo9ix2LPZhCDYpdmE2Ykg2KfZhNij2Kgg2YTYo9iq2YXYqtipINi02YPZhCDYp9mE2KjYrdirINil2LDYpyDZitit2KrYp9isICovXHJcbi8vIGZyb20gZ2VuZXJpYy1jcnVkLXRhYmxlLmNvbXBvbmVudC50c1xyXG5cclxuLyoqINio2K/ZkdmEIGFwcGx5U2VhcmNoINmE2KrYqNirIHBhZ2VDaGFuZ2Ug2YXYqNin2LTYsdip2YsgKi9cclxuIGFwcGx5U2VhcmNoKGZpbHRlcnM6IGFueSkge1xyXG4gICAgLy8gdGhpcy5nZW5lcmljVGFibGUuYXBwbHlGaWx0ZXIoZ2xvYmFsKTtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gLyoqINiv2KfZhNipINiq2YbZgdmR2LAg2LnZhtivINin2YTZhtmC2LEg2LnZhNmJINi12YEgKi9cclxuICBvblJvd0NsaWNrKHJvdzogVCkge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5vblN1Ym1pdCgpIHtcclxuIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFwcGx5U2VhcmNoKCcnKTtcclxuICAgICAgICB9XHJcbn1cclxuXHJcbiAgICAgdHJhY2tCeUlkeChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiBpbmRleDtcclxuIH1cclxuXHJcbm9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc1NpbmdsZUl0ZW1TZWxlY3RlZCkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9zZWxlY3RlZFJvd3NbMF07XHJcbiAgdGhpcy5zaW5nbGVBY3Rpb24uZW1pdCh7XHJcbiAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnc2luZ2xlQWN0aW9uJyxcclxuICAgIGl0ZW06IHNlbGVjdGVkSXRlbVxyXG4gIH0pO1xyXG59XHJcblxyXG5vbkludGVybmFsQnVsa0FjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc011bHRpcGxlSXRlbVNlbGVjdGVkKSByZXR1cm47XHJcblxyXG4gIHRoaXMuYnVsa0FjdGlvbi5lbWl0KHtcclxuICAgIG5hbWU6IGJ0bi5hY3Rpb25OYW1lID8/ICdidWxrQWN0aW9uJyxcclxuICAgIGl0ZW1zOiBbLi4udGhpcy5fc2VsZWN0ZWRSb3dzXSAgLy8g2YbYsdiz2YQg2YbYs9iu2Kkg2YXZhiDYp9mE2YXYtdmB2YjZgdipXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwibW9kZSAhPT0gJ2Zvcm0tb25seScgJiYgbW9kZSAhPT0gJ2RldGFpbCcgID8gdGFibGVDbGFzcyA6ICcnXCJcclxuPlxyXG4gPGFwcC1nZW5lcmljLWNydWQtaGVhZGVyXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYl9cIlxyXG4gIFtpc1NpbmdsZUl0ZW1TZWxlY3RlZF09XCJpc1NpbmdsZUl0ZW1TZWxlY3RlZFwiXHJcbiAgW3NlbGVjdGVkSXRlbXNdPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgW3NpbmdsZUFjdGlvbkJ1dHRvbnNdPVwic2luZ2xlQWN0aW9uQnV0dG9uc1wiXHJcbiAgW2J1bGtBY3Rpb25CdXR0b25zXT1cImJ1bGtBY3Rpb25CdXR0b25zXCJcclxuICBbYWRkQnV0dG9uQ29uZmlnc109XCJhZGRCdXR0b25Db25maWdzXCJcclxuICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gIFtmaWx0ZXJNb2RlbF09XCJmaWx0ZXJNb2RlbFwiXHJcbiAgW3Nob3dTZWFyY2hdPVwic2hvd1NlYXJjaFwiXHJcbiAgKHNpbmdsZUl0ZW1BY3Rpb24pPVwib25TaW5nbGVJdGVtQWN0aW9uKCRldmVudClcIlxyXG4gIChidWxrQWN0aW9uKT1cIm9uSW50ZXJuYWxCdWxrQWN0aW9uKCRldmVudClcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocmVzZXRTZWFyY2gpPVwiYXBwbHlTZWFyY2goJycpXCJcclxuICAocGFnaW5hdGVDaGFuZ2UpPVwib25IZWFkZXJQYWdpbmF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gIFtyb3dzXT1cInJvd3NcIlxyXG4gIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuLz5cclxuXHJcbiAgIEBpZiAoIWhpZGVUYWJsZSkge1xyXG4gIDxsaWItZ2VuZXJpYy10YWJsZVxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcclxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXHJcbiAgICBbYWN0aW9uc01vZGVdPVwiYWN0aW9uc01vZGVcIlxyXG4gICAgW2ZpcnN0XT1cImZpcnN0XCJcclxuICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGRcIlxyXG4gICAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXJcIlxyXG4gICAgW2FkZEJ1dHRvbkNvbmZpZ3NdPVwiYWRkQnV0dG9uQ29uZmlnc1wiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXHJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXHJcbiAgICBbcm93U3R5bGVGbl09XCJyb3dTdHlsZUZuXCJcclxuICAgIFtyb3dDbGFzc0ZuXT1cInJvd0NsYXNzRm5cIlxyXG4gICAgW2Rpc2FibGVSb3dDaGVja2JveEZuXT1cImRpc2FibGVSb3dDaGVja2JveEZuXCJcclxuICAgIFtzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hdPVwic2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAob25BZGROZXcpPVwiYWN0aW9uLmVtaXQoeyBuYW1lOiAnYWRkJywgcm93OiBudWxsISB9KVwiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJvbkxhenlMb2FkKCRldmVudClcIlxyXG4gICAgW3Jvd1NlbGVjdGFibGVdPVwicm93U2VsZWN0YWJsZVwiXHJcbiAgICAocm93U2VsZWN0KT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbKHNlbGVjdGlvbildPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgICAjZ2VuZXJpY1RhYmxlXHJcbiAgPjwvbGliLWdlbmVyaWMtdGFibGU+XHJcblxyXG4gIH1cclxuXHJcbiAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgI2RpYWxvZ1xyXG4gICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gICAgW2Zvcm1GaWVsZHNdPVwiZm9ybUZpZWxkc1wiXHJcbiAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgW2FwaU5hbWVdPVwiYXBpTmFtZVwiXHJcbiAgICBbaWRGaWVsZF09XCJpZEZpZWxkXCJcclxuICAgIFtkaWFsb2dNYXhXaWR0aF09XCJkaWFsb2dNYXhXaWR0aFwiXHJcbiAgICBbZGlzcGxheU1vZGVdPVwiZGlzcGxheU1vZGVcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbZm9yY2VTdGF0ZV09XCJmb3JjZVN0YXRlXCJcclxuICAgIFtkcmF3ZXJWaXNpYmxlXT1cImRyYXdlclZpc2libGVcIlxyXG4gICAgW2RpYWxvZ1Zpc2libGVdPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICBbaXNWaWV3TW9kZV09XCJpc1ZpZXdNb2RlXCJcclxuICAgIFtpc0VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIlxyXG4gICAgW3VzZUNvbmZpcm1PblNhdmVdPVwidXNlQ29uZmlybU9uU2F2ZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtlcnJvck1zZ109XCJlcnJvck1zZ1wiXHJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXHJcbiAgICBbYmVmb3JlU2F2ZVRyYW5zZm9ybV09XCJiZWZvcmVTYXZlVHJhbnNmb3JtXCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZS5lbWl0KCRldmVudCk7b25TdWJtaXQoKTtcIlxyXG4gICAgKGFmdGVyRGVsZXRlKT1cImFmdGVyRGVsZXRlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlU2F2ZSk9XCJiZWZvcmVTYXZlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlRGVsZXRlKT1cImJlZm9yZURlbGV0ZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGZvcm1DYW5jZWwpPVwiZm9ybUNhbmNlbC5lbWl0KClcIlxyXG4gICAgKGZvcm1Jbml0KT1cImZvcm1Jbml0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZGF0YUxvYWRlZCk9XCJkYXRhTG9hZGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdlbmVyaWMtZGlhbG9nPlxyXG5cclxuICAgPGFwcC1kZXRhaWwtdmlld1xyXG4gICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3RpdGxlXT1cImJyZWFkY3J1bWJfPy5bMF0/LmxhYmVsIHx8ICdEZXRhaWwnXCJcclxuICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgW2FwaU5hbWVdPVwic2VydmljZS5hcGlOYW1lXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZFwiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFtmb3JtRmllbGRzXT1cImZvcm1GaWVsZHNcIlxyXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgIFt0YWJzXT1cInRhYnNcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iX1wiXHJcbiAgICBbY3JlYXRlRWRpdEFjdGlvbnNdPVwiY3JlYXRlRWRpdEFjdGlvbnNcIlxyXG4gICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgPC9hcHAtZGV0YWlsLXZpZXc+XHJcblxyXG48L2Rpdj5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-generic-crud-table.mjs","sources":["../tmp-esm2022/generic-crud-table/lib/generic-crud-table-module.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-header.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-table.js","../tmp-esm2022/generic-crud-table/elite.framework-ng.ui.core-generic-crud-table.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenericButtonModule } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nexport class GenericCrudTableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, GenericButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUtqRixNQUFNLE9BQU8sc0JBQXNCO3VHQUF0QixzQkFBc0I7d0dBQXRCLHNCQUFzQixZQUZ2QixZQUFZLEVBQUMsbUJBQW1CO3dHQUUvQixzQkFBc0IsWUFGdkIsWUFBWSxFQUFDLG1CQUFtQjs7MkZBRS9CLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsbUJBQW1CLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZW5lcmljQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxHZW5lcmljQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NydWRUYWJsZU1vZHVsZSB7fVxuIl19","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Menu } from 'primeng/menu';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { GenericSearchAdvanced } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport { GenericReportComponent } from '@elite.framework/ng.ui.core/generic-report';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/button\";\nimport * as i2 from \"primeng/divider\";\nimport * as i3 from \"primeng/tooltip\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericCrudHeaderComponent {\n translate = inject(TranslateService);\n dialogService = inject(DialogService);\n // 🟢 Inputs\n mode = 'full';\n breadcrumb;\n isSingleItemSelected = false;\n selectedItems = [];\n singleActionButtons = [];\n bulkActionButtons = [];\n addButtonConfigs = [];\n filters;\n filterModel = {};\n showSearch = true;\n first = 0; // Add input for current 'first' index\n rows = 10; // Add input for current 'rows' per page\n totalRecords = 0; // Add input for total records\n apiName = '';\n actions = [\n {\n label: this.translate.instant('REPORT'),\n icon: 'pi pi-file-export',\n command: (e) => {\n this.openReportDialog();\n }\n }\n ];\n // 🟢 Outputs\n singleItemAction = new EventEmitter();\n bulkAction = new EventEmitter();\n search = new EventEmitter();\n resetSearch = new EventEmitter();\n action = new EventEmitter();\n paginateChange = new EventEmitter(); // NEW OUTPUT\n // 🟢 Helpers\n trackByIdx = (index) => index;\n // 🟢 Actions\n onSingleItemAction(btn) {\n this.singleItemAction.emit(btn);\n }\n onInternalBulkAction(btn) {\n this.bulkAction.emit(btn);\n }\n paginationChange(value) {\n this.rows = value.top;\n }\n applySearch(value) {\n this.search.emit(value);\n }\n reset() {\n this.resetSearch.emit();\n }\n // Go to previous page\n // 🟢 Actions (Keep or adapt your existing pagination logic)\n totalPages() {\n if (this.totalRecords === 0 || this.rows === 0)\n return 0;\n return Math.ceil(this.totalRecords / this.rows);\n }\n pageInput = null;\n showPageMenu = false;\n // Get current page number (1-based)\n get currentPage() {\n return Math.floor(this.first / this.rows) + 1;\n }\n // Go to specific page from menu\n goToPageMenu() {\n if (this.pageInput && this.pageInput >= 1 && this.pageInput <= this.totalPages()) {\n const newFirst = (this.pageInput - 1) * this.rows;\n this.paginateChange.emit({ first: newFirst, rows: this.rows });\n this.pageInput = null;\n this.showPageMenu = false; // Close menu after navigation\n }\n }\n // Go to specific page (original method)\n goToPage() {\n this.goToPageMenu(); // Reuse the same logic\n }\n // Go to first page\n goFirst() {\n this.paginateChange.emit({ first: 0, rows: this.rows }); // EMIT EVENT\n }\n // Go to last page\n goLast() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n this.paginateChange.emit({ first: maxFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to previous page\n goPrev() {\n const newFirst = Math.max(this.first - this.rows, 0);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to next page\n goNext() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n const newFirst = Math.min(this.first + this.rows, maxFirst);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Check first/last page\n isFirstPage() {\n return this.first === 0;\n }\n isLastPage() {\n return this.first + this.rows >= this.totalRecords;\n }\n // Detect RTL direction\n get isRTL() {\n return document.documentElement.dir === 'rtl' ||\n document.body.dir === 'rtl' ||\n // this.translateService?.currentLang === 'ar' || // if using translation\n false; // default to LTR\n }\n /**\n * Handles button click in a unified way.\n * - If btn.action is defined, execute it.\n * - Otherwise, emit event with actionName or default 'add'.\n */\n async handleButtonClick(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n this.action.emit({\n name: btn.actionName ?? 'add',\n row: null, // provide row if available\n });\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n openReportDialog() {\n const ref = this.dialogService.open(GenericReportComponent, {\n header: this.translate.instant('REPORT'),\n showHeader: false,\n width: '90%',\n height: 'auto',\n modal: true,\n focusOnShow: false,\n data: {\n apiName: this.apiName,\n filterFields: this.filters,\n filterModel: { /* status: 'Active' */},\n defaultFileName: this.translate.instant('REPORT') + ' ' + this.translate.instant(this.breadcrumb?.length ? this.breadcrumb[this.breadcrumb.length - 1].label ?? '' : '')\n }\n });\n ref.onClose.subscribe((exportConfig) => {\n if (exportConfig) {\n console.log('Export configuration:', exportConfig);\n // Handle the export - call your API service here\n this.handleExport(exportConfig);\n }\n });\n }\n handleExport(config) {\n // Your export logic here\n // if (config.exportType === 'EXCEL') {\n // this.exportToExcel(config);\n // } else if (config.exportType === 'PDF') {\n // this.exportToPdf(config);\n // }\n // etc.\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudHeaderComponent, isStandalone: true, selector: \"app-generic-crud-header\", inputs: { mode: \"mode\", breadcrumb: \"breadcrumb\", isSingleItemSelected: \"isSingleItemSelected\", selectedItems: \"selectedItems\", singleActionButtons: \"singleActionButtons\", bulkActionButtons: \"bulkActionButtons\", addButtonConfigs: \"addButtonConfigs\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", apiName: \"apiName\", actions: \"actions\" }, outputs: { singleItemAction: \"singleItemAction\", bulkAction: \"bulkAction\", search: \"search\", resetSearch: \"resetSearch\", action: \"action\", paginateChange: \"paginateChange\" }, providers: [DialogService], ngImport: i0, template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i1.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"component\", type: i2.Divider, selector: \"p-divider\", inputs: [\"styleClass\", \"layout\", \"type\", \"align\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"component\", type: GenericSearchAdvanced, selector: \"lib-generic-search-advanced\", inputs: [\"model\", \"fields\", \"enableSelect\", \"enableGroup\", \"odataConfig\"], outputs: [\"search\", \"paginationChange\", \"odataSearch\"] }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-header', standalone: true, imports: [\n GenericButton,\n TranslateModule,\n BreadcrumbComponent,\n CommonModule,\n ButtonModule,\n DividerModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n Menu,\n GenericSearchAdvanced\n ], providers: [DialogService], template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { mode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], isSingleItemSelected: [{\n type: Input\n }], selectedItems: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], apiName: [{\n type: Input\n }], actions: [{\n type: Input\n }], singleItemAction: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], search: [{\n type: Output\n }], resetSearch: [{\n type: Output\n }], action: [{\n type: Output\n }], paginateChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtaGVhZGVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztB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QUFhO3dCQUNiLElBQUk7d0JBQ0oscUJBQXFCO3FCQUN0QixhQUVXLENBQUMsYUFBYSxDQUFDOzhCQVFsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWIsS0FBSztnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBZixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uQ29uZmlnIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEaXZpZGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaXZpZGVyJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEdlbmVyaWNTZWFyY2hBZHZhbmNlZCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZXBvcnRDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1yZXBvcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJpYy1jcnVkLWhlYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQnJlYWRjcnVtYkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIERpdmlkZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudSxcclxuICAgIEdlbmVyaWNTZWFyY2hBZHZhbmNlZFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCcsXHJcbiAgIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNDcnVkSGVhZGVyQ29tcG9uZW50IHtcclxuXHJcbiAgdHJhbnNsYXRlICA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBkaWFsb2dTZXJ2aWNlICA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAvLyDwn5+iIElucHV0c1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdmdWxsJyB8ICdmb3JtLW9ubHknIHwgJ3RhYmxlLW9ubHknIHwgJ2RldGFpbCcgPSAnZnVsbCc7XHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYjogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc1NpbmdsZUl0ZW1TZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBidWxrQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBhZGRCdXR0b25Db25maWdzOiBCdXR0b25Db25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcclxuICBASW5wdXQoKSBmaWx0ZXJNb2RlbDogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcbiAgIEBJbnB1dCgpIGZpcnN0ID0gMDsgLy8gQWRkIGlucHV0IGZvciBjdXJyZW50ICdmaXJzdCcgaW5kZXhcclxuICBASW5wdXQoKSByb3dzID0gMTA7IC8vIEFkZCBpbnB1dCBmb3IgY3VycmVudCAncm93cycgcGVyIHBhZ2VcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwOyAvLyBBZGQgaW5wdXQgZm9yIHRvdGFsIHJlY29yZHNcclxuICBASW5wdXQoKSBhcGlOYW1lOiBzdHJpbmcgPSAnJztcclxuICAgQElucHV0KCkgYWN0aW9uczpNZW51SXRlbVtdID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWZpbGUtZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDooZTphbnkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVwb3J0RGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuXHJcblxyXG4gIC8vIPCfn6IgT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzaW5nbGVJdGVtQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25Db25maWc+KCk7XHJcbiAgQE91dHB1dCgpIGJ1bGtBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNvbmZpZz4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gQE91dHB1dCgpIHBhZ2luYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9PigpOyAvLyBORVcgT1VUUFVUXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIPCfn6IgSGVscGVyc1xyXG4gIHRyYWNrQnlJZHggPSAoaW5kZXg6IG51bWJlcikgPT4gaW5kZXg7XHJcblxyXG4gIC8vIPCfn6IgQWN0aW9uc1xyXG4gIG9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdGhpcy5zaW5nbGVJdGVtQWN0aW9uLmVtaXQoYnRuKTtcclxuICB9XHJcbiAgb25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuOiBCdXR0b25Db25maWcpIHtcclxuICAgIHRoaXMuYnVsa0FjdGlvbi5lbWl0KGJ0bik7XHJcbiAgfVxyXG5wYWdpbmF0aW9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucm93cyA9IHZhbHVlLnRvcDtcclxuICB9XHJcbiAgYXBwbHlTZWFyY2godmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5yZXNldFNlYXJjaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgICAvLyBHbyB0byBwcmV2aW91cyBwYWdlXHJcbiAgLy8g8J+foiBBY3Rpb25zIChLZWVwIG9yIGFkYXB0IHlvdXIgZXhpc3RpbmcgcGFnaW5hdGlvbiBsb2dpYylcclxuICB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy50b3RhbFJlY29yZHMgPT09IDAgfHwgdGhpcy5yb3dzID09PSAwKSByZXR1cm4gMDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnJvd3MpO1xyXG4gIH1cclxuIHBhZ2VJbnB1dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1BhZ2VNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEdldCBjdXJyZW50IHBhZ2UgbnVtYmVyICgxLWJhc2VkKVxyXG4gIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5maXJzdCAvIHRoaXMucm93cykgKyAxO1xyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gc3BlY2lmaWMgcGFnZSBmcm9tIG1lbnVcclxuICBnb1RvUGFnZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlSW5wdXQgJiYgdGhpcy5wYWdlSW5wdXQgPj0gMSAmJiB0aGlzLnBhZ2VJbnB1dCA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICBjb25zdCBuZXdGaXJzdCA9ICh0aGlzLnBhZ2VJbnB1dCAtIDEpICogdGhpcy5yb3dzO1xyXG4gICAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcclxuICAgICAgdGhpcy5wYWdlSW5wdXQgPSBudWxsO1xyXG4gICAgICB0aGlzLnNob3dQYWdlTWVudSA9IGZhbHNlOyAvLyBDbG9zZSBtZW51IGFmdGVyIG5hdmlnYXRpb25cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdvIHRvIHNwZWNpZmljIHBhZ2UgKG9yaWdpbmFsIG1ldGhvZClcclxuICBnb1RvUGFnZSgpIHtcclxuICAgIHRoaXMuZ29Ub1BhZ2VNZW51KCk7IC8vIFJldXNlIHRoZSBzYW1lIGxvZ2ljXHJcbiAgfVxyXG5cclxuICAvLyBHbyB0byBmaXJzdCBwYWdlXHJcbmdvRmlyc3QoKSB7XHJcbiAgdGhpcy5wYWdpbmF0ZUNoYW5nZS5lbWl0KHsgZmlyc3Q6IDAsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG59XHJcblxyXG4vLyBHbyB0byBsYXN0IHBhZ2VcclxuZ29MYXN0KCkge1xyXG4gIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgKHRoaXMudG90YWxQYWdlcygpIC0gMSkgKiB0aGlzLnJvd3MpO1xyXG4gIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBtYXhGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbn1cclxuXHJcbiAgLy8gR28gdG8gcHJldmlvdXMgcGFnZVxyXG4gIGdvUHJldigpIHtcclxuICAgIGNvbnN0IG5ld0ZpcnN0ID0gTWF0aC5tYXgodGhpcy5maXJzdCAtIHRoaXMucm93cywgMCk7XHJcbiAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gbmV4dCBwYWdlXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCAodGhpcy50b3RhbFBhZ2VzKCkgLSAxKSAqIHRoaXMucm93cyk7XHJcbiAgICBjb25zdCBuZXdGaXJzdCA9IE1hdGgubWluKHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MsIG1heEZpcnN0KTtcclxuICAgIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBuZXdGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBmaXJzdC9sYXN0IHBhZ2VcclxuICBpc0ZpcnN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNMYXN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ICsgdGhpcy5yb3dzID49IHRoaXMudG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERldGVjdCBSVEwgZGlyZWN0aW9uXHJcbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAvLyAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlPy5jdXJyZW50TGFuZyA9PT0gJ2FyJyB8fCAvLyBpZiB1c2luZyB0cmFuc2xhdGlvblxyXG4gICAgICAgICAgIGZhbHNlOyAvLyBkZWZhdWx0IHRvIExUUlxyXG4gIH1cclxuICAgLyoqXHJcbiAgICogSGFuZGxlcyBidXR0b24gY2xpY2sgaW4gYSB1bmlmaWVkIHdheS5cclxuICAgKiAtIElmIGJ0bi5hY3Rpb24gaXMgZGVmaW5lZCwgZXhlY3V0ZSBpdC5cclxuICAgKiAtIE90aGVyd2lzZSwgZW1pdCBldmVudCB3aXRoIGFjdGlvbk5hbWUgb3IgZGVmYXVsdCAnYWRkJy5cclxuICAgKi9cclxuICBhc3luYyBoYW5kbGVCdXR0b25DbGljayhidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGJ0bi5hY3Rpb24pIHtcclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcm92aWRlZCBhY3Rpb25cclxuICAgICAgICBhd2FpdCBidG4uYWN0aW9uKG51bGwpOyAvLyBZb3UgY2FuIHBhc3Mgcm93IG9yIGNvbnRleHQgaGVyZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGVtaXR0aW5nIGV2ZW50XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnYWRkJyxcclxuICAgICAgICAgIHJvdzogbnVsbCEsIC8vIHByb3ZpZGUgcm93IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignQnV0dG9uIGFjdGlvbiBlcnJvcicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGlhbG9nKCkge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihHZW5lcmljUmVwb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICBzaG93SGVhZGVyOmZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJyxcclxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgICBmb2N1c09uU2hvdzpmYWxzZSxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBhcGlOYW1lOnRoaXMuYXBpTmFtZSxcclxuICAgICAgICAgIGZpbHRlckZpZWxkczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyTW9kZWw6IHsgLyogc3RhdHVzOiAnQWN0aXZlJyAgKi99LFxyXG4gICAgICAgIGRlZmF1bHRGaWxlTmFtZTp0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSArICcgJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5icmVhZGNydW1iPy5sZW5ndGggPyB0aGlzLmJyZWFkY3J1bWJbdGhpcy5icmVhZGNydW1iLmxlbmd0aCAtIDFdLmxhYmVsID8/Jyc6ICcnKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChleHBvcnRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChleHBvcnRDb25maWcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHBvcnQgY29uZmlndXJhdGlvbjonLCBleHBvcnRDb25maWcpO1xyXG4gICAgICAgICAgLy8gSGFuZGxlIHRoZSBleHBvcnQgLSBjYWxsIHlvdXIgQVBJIHNlcnZpY2UgaGVyZVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZXhwb3J0Q29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXhwb3J0KGNvbmZpZzogYW55KSB7XHJcbiAgICAgIC8vIFlvdXIgZXhwb3J0IGxvZ2ljIGhlcmVcclxuICAgICAgLy8gaWYgKGNvbmZpZy5leHBvcnRUeXBlID09PSAnRVhDRUwnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb0V4Y2VsKGNvbmZpZyk7XHJcbiAgICAgIC8vIH0gZWxzZSBpZiAoY29uZmlnLmV4cG9ydFR5cGUgPT09ICdQREYnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb1BkZihjb25maWcpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGV0Yy5cclxuICAgIH1cclxuXHJcbn1cclxuIiwiQGlmIChtb2RlICE9PSAnZm9ybS1vbmx5JyAmJiBtb2RlICE9PSAnZGV0YWlsJykge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICA8ZGl2PlxyXG4gICAgPGFwcC1icmVhZGNydW1iXHJcbiAgICAgIGNsYXNzPVwieHM6YmxvY2sgaGlkZGVuXCJcclxuICAgICAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXHJcbiAgICA+PC9hcHAtYnJlYWRjcnVtYj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgQGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgPCEtLSDYo9iy2LHYp9ixINin2YTYudmG2KfYtdixINin2YTZhdmB2LHYr9ipIC0tPlxyXG4gICAgICBAaWYgKGlzU2luZ2xlSXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIHNpbmdsZUFjdGlvbkJ1dHRvbnM7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgICAgQGlmICghYnRuLnZpc2libGUgfHwgKGJ0bi52aXNpYmxlICYmIGJ0bi52aXNpYmxlID09PSB0cnVlKSkge1xyXG4gICAgICAgICAgICA8bGliLWdlbmVyaWMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidG4ubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bi52YXJpYW50XCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bi5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cImJ0bi5zcGxpdEFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNpbmdsZUl0ZW1BY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDZhdiq2LnYr9iv2Kkg2KfZhNi52YbYp9i12LEgLS0+XHJcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIGJ1bGtBY3Rpb25CdXR0b25zOyB0cmFjayB0cmFja0J5SWR4KCRpbmRleCkpIHtcclxuICAgICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgICAgPGxpYi1nZW5lcmljLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiYnRuLnNpemVcIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJidG4ucGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDYp9mE2KXYttin2YHYqSAtLT5cclxuICAgICAgQGZvciAoYnRuIG9mIGFkZEJ1dHRvbkNvbmZpZ3M7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuLnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwiYnRuLnNwbGl0QWN0aW9uc1wiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICA+PC9saWItZ2VuZXJpYy1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5AaWYgKG1vZGUgIT09ICdmb3JtLW9ubHknICYmIG1vZGUgIT09ICdkZXRhaWwnKSB7XHJcbjxkaXYgY2xhc3M9XCJtdC0yIG1iLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgPCEtLSDYp9mE2KjYrdirIC0tPlxyXG4gIEBpZiAoc2hvd1NlYXJjaCAmJiBmaWx0ZXJzKSB7XHJcbiAgICA8bGliLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkXHJcbiAgICBbbW9kZWxdPVwiZmlsdGVyTW9kZWxcIlxyXG4gIFtmaWVsZHNdPVwiZmlsdGVyc1wiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gID5cclxuPC9saWItZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSDYo9iv2YjYp9iqINil2LbYp9mB2YrYqSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcnRsOnNwYWNlLXgtcmV2ZXJzZVwiPlxyXG4gICAgPCEtLSBSZWZyZXNoIEJ1dHRvbiAtLT5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktcmVmcmVzaFwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAob25DbGljayk9XCJyZXNldCgpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiIGNsYXNzPVwibS0wIHAtMCBoaWRkZW4geHM6YmxvY2tcIiAvPlxyXG5cclxuXHJcbiAgICA8cC1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIiAgY2xhc3M9XCJ4czpibG9ja1wiICBzZXZlcml0eT1cInNlY29uZGFyeVwiIG91dGxpbmVkIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIvPlxyXG4gICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgLz5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBydGw6c3BhY2UteC1yZXZlcnNlXCI+XHJcbiAgICAgIDwhLS0gRmlyc3QgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCcgOiAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cImhpZGRlbiB4czpibG9ja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImdvRmlyc3QoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gUHJldmlvdXMgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWNoZXZyb24tcmlnaHQnIDogJ3BpIHBpLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwieHM6YmxvY2tcIlxyXG4gICAgICAgIChjbGljayk9XCJnb1ByZXYoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgICAgPCEtLSBDdXJyZW50IFBhZ2UgRGlzcGxheSB3aXRoIERyb3Bkb3duIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBbbGFiZWxdPVwiY3VycmVudFBhZ2UgKyAnIC8gJyArIHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1BhZ2VNZW51ID0gIXNob3dQYWdlTWVudVwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCJ7e3RvdGFsUmVjb3Jkc319XCJcclxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgIC8+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuICAgICAgPCEtLSBOZXh0IFBhZ2UgQnV0dG9uIC0tPlxyXG4gICAgICA8cC1idXR0b25cclxuICAgICAgICBbaWNvbl09XCJpc1JUTCA/ICdwaSBwaS1jaGV2cm9uLWxlZnQnIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cInhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gTGFzdCBQYWdlIEJ1dHRvbiAtLT5cclxuICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgW2ljb25dPVwiaXNSVEwgPyAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnIDogJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuIHhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29MYXN0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=","/* eslint-disable @angular-eslint/no-output-on-prefix */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { DividerModule } from 'primeng/divider';\nimport { Component, Input, Output, EventEmitter, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MessageModule } from 'primeng/message';\nimport { ButtonModule } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { DrawerModule } from 'primeng/drawer';\nimport { DialogModule } from 'primeng/dialog';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { GenericCrudHeaderComponent } from './generic-crud-header';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GenericTable } from '@elite.framework/ng.ui.core/generic-table';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericViewComponent } from '@elite.framework/ng.ui.core/generic-view';\nimport { QueryBuilderService } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport * as i0 from \"@angular/core\";\n/**\n * مكون جدول CRUD عام يمكن إعادة استخدامه\n * يدعم العمليات الأساسية: إنشاء، قراءة، تحديث، حذف\n * مع إمكانية التخصيص عبر عدة أوضاع وعرض\n */\nexport class GenericCrudTableComponent {\n genericTable;\n dialog;\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n queryBuilder = inject(QueryBuilderService);\n home = { icon: 'pi pi-home', routerLink: '/' };\n data = [];\n formFields_ = []; // <-- هنا\n formFields = []; // <-- هنا\n columns = []; // <-- هنا\n dialogMaxWidth = '40rem'; // unset , fit-content\n isViewMode = false;\n displayMode = 'drawer';\n useConfirmOnSave = false;\n isEditMode = false;\n drawerVisible = false;\n dialogVisible = false;\n form = new UntypedFormGroup({});\n model;\n model_ = {};\n loading = false;\n errorMsg = '';\n errorMessage = '';\n options = {};\n actions = [];\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\n actionsMode = 'buttons';\n action = new EventEmitter();\n bulkAction = new EventEmitter();\n singleAction = new EventEmitter();\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n // البحث\n // Search\n filters;\n filterModel = {};\n search = new EventEmitter();\n /** للتحكم بإظهار/إخفاء قسم البحث */\n showSearch = true;\n /** Pagination Inputs */\n first = 0;\n rows = 10;\n totalRecords = 0;\n pageChange = new EventEmitter();\n onSearch = new EventEmitter();\n visibleChange = new EventEmitter();\n ;\n // @Output() visibleChange = new EventEmitter<boolean>();\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\n rowSelectable = false;\n /** حدث يخرج الصف المحدّد */\n rowSelect = new EventEmitter();\n selection = null;\n // الفرز\n sortField;\n sortOrder = 1;\n scrollHeight = '400px';\n paginator = true;\n service = inject(BaseService);\n apiName = '';\n idField = 'id';\n showRowSelectionCheckbox = false;\n showAddButton = true;\n addPermissionName;\n addButtonConfigs = [\n {\n icon: 'pi pi-plus',\n label: 'ADD',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'add',\n visible: this.showAddButton,\n permission: this.addPermissionName,\n },\n ];\n createEditActions = [\n {\n icon: 'pi pi-check',\n label: 'SAVE',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'save',\n type: 'submit',\n splitActions: [\n {\n label: this.translate.instant('SAVE_AND_ADD'),\n icon: 'pi pi-save',\n actionName: 'saveAndAdd'\n }\n ]\n },\n {\n icon: 'pi pi-times',\n label: 'CANCEL',\n variant: 'raised',\n severity: 'danger',\n size: 'small',\n actionName: 'cancel',\n type: 'button',\n },\n ];\n supportSubPage = true;\n tabs = [];\n bulkActionButtons = [];\n singleActionButtons = [];\n _selectedRows = [];\n get isSingleItemSelected() {\n return this._selectedRows.length === 1;\n }\n get isMultipleItemSelected() {\n return this._selectedRows.length > 1;\n }\n get selectedItems() {\n return this._selectedRows;\n }\n breadcrumb;\n get breadcrumb_() {\n return this.breadcrumb?.map(v => ({\n ...v,\n label: this.translate.instant(v.label ?? '')\n }));\n }\n get rtl() {\n try {\n return document?.documentElement?.dir === 'rtl';\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Modes to control what parts of the component are visible\n * - 'full': Table + CRUD operations (default)\n * - 'form-only': Only show form (for create/edit/view)\n * - 'table-only': Only show table (read-only mode)\n */\n mode = 'full';\n /** Force the component to show specific state */\n forceState = null;\n /** Hide table completely when in form-only mode */\n get hideTable() {\n return (this.mode === 'form-only' || this.mode === 'detail' || (this.forceState && this.mode !== 'table-only')) ?? false;\n }\n /** Auto-show form when in form-only mode with forceState */\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n //لتغيير لون صف معيّن\n rowStyleFn;\n // ✅ لتعيين كلاس CSS أو Tailwind على الصف\n rowClassFn;\n //آخر لتجميد / تعطيل checkbox الاختيار\n disableRowCheckboxFn;\n tableClass = 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl xs:rounded-2xl p-4 bg-white';\n route = inject(ActivatedRoute);\n router = inject(Router);\n currentId;\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n if (this.tabs.length == 0) {\n this.formFields_ = this.formFields;\n this.tabs.push({ header: 'التفاصيل', icon: 'pi pi-info-circle', fields: this.formFields_, model: this.model });\n }\n if (this.supportSubPage) {\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n this.mode = 'detail';\n this.loadDetail(id);\n }\n else {\n this.currentId = undefined;\n }\n });\n }\n }\n // 3. Handle Header's Paginate Change Event\n onHeaderPaginateChange(event) {\n this.first = event.first; // Update the 'first' index\n this.rows = event.rows;\n const lazyLoadEvent = {\n first: this.first,\n rows: this.rows,\n // You'd typically include current sorting and filtering state here\n sortField: this.sortField,\n sortOrder: 1,\n filters: this.filters,\n globalFilter: null, // or your current global filter value\n };\n this.onLazyLoad(lazyLoadEvent);\n }\n loadDetail(id) {\n this.service.get(id).subscribe({\n next: res => {\n this.model = res;\n }\n });\n }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.dialog.openForm(mode, model);\n }\n // private destroy$ = new Subject<void>();\n /** الآن يتلقّى pagination + sort في حدث واحد */\n onLazyLoad(event) {\n // this.model_= this.model ?? {};\n this.model = this.model ?? {};\n this.formFields_ = this.formFields;\n const first = event.first ?? this.first;\n const rows = event.rows ?? this.rows;\n const sortField = typeof event.sortField === 'string'\n ? event.sortField\n : this.sortField;\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\n const filters = {};\n if (event.filters) {\n Object.entries(event.filters).forEach(([field, meta]) => {\n const value = meta.value;\n if (value != null && value !== '') {\n filters[field] = value;\n }\n });\n }\n var queryString = '';\n // Default query\n if (!filters['query']) {\n // Use the new QueryBuilderService methods\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.filterModel, this.formFields_);\n // this.odataSearch.emit(odataParams);\n // Generate query string using the unified method\n queryString = this.queryBuilder.toODataQueryString(odataParams);\n // console.log('OData Query String:', queryString);\n }\n this.first = first;\n this.rows = rows;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n const dir = sortOrder === 1 ? 'asc' : 'desc';\n const sort = sortField ? `${sortField} ${dir}` : undefined;\n // this.pageChange.emit({ first, rows ,sort, filters });\n this.applySearch({\n filter: this.model['filter'],\n query: queryString,\n sorting: sort,\n skipCount: first,\n maxResultCount: rows,\n });\n // يبني النص وإرساله\n }\n /** تصيير البيانات حسب الصفحة */\n get pagedData() {\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\n return this.data;\n }\n get globalFilterFields() {\n return this.columns.map(c => String(c.key));\n }\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\n // from generic-crud-table.component.ts\n /** بدّل applySearch لتبث pageChange مباشرةً */\n applySearch(filters) {\n // this.genericTable.applyFilter(global);\n this.onSearch.emit(filters);\n }\n /** دالة تنفّذ عند النقر على صف */\n onRowClick(row) {\n if (this.rowSelectable) {\n this.rowSelect.emit(row);\n }\n }\n onSubmit() {\n if (this.mode != 'form-only') {\n this.applySearch('');\n }\n }\n trackByIdx(index, item) {\n return index;\n }\n onSingleItemAction(btn) {\n if (!this.isSingleItemSelected)\n return;\n const selectedItem = this._selectedRows[0];\n this.singleAction.emit({\n name: btn.actionName ?? 'singleAction',\n item: selectedItem\n });\n }\n onInternalBulkAction(btn) {\n if (!this.isMultipleItemSelected)\n return;\n this.bulkAction.emit({\n name: btn.actionName ?? 'bulkAction',\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudTableComponent, isStandalone: true, selector: \"app-generic-crud-table\", inputs: { data: \"data\", formFields: \"formFields\", columns: \"columns\", dialogMaxWidth: \"dialogMaxWidth\", isViewMode: \"isViewMode\", displayMode: \"displayMode\", useConfirmOnSave: \"useConfirmOnSave\", isEditMode: \"isEditMode\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", model: \"model\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", actions: \"actions\", actionsMode: \"actionsMode\", beforeSaveTransform: \"beforeSaveTransform\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", rowSelectable: \"rowSelectable\", scrollHeight: \"scrollHeight\", paginator: \"paginator\", service: \"service\", apiName: \"apiName\", idField: \"idField\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", showAddButton: \"showAddButton\", addPermissionName: \"addPermissionName\", addButtonConfigs: \"addButtonConfigs\", createEditActions: \"createEditActions\", supportSubPage: \"supportSubPage\", tabs: \"tabs\", bulkActionButtons: \"bulkActionButtons\", singleActionButtons: \"singleActionButtons\", breadcrumb: \"breadcrumb\", mode: \"mode\", forceState: \"forceState\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\", rowStyleFn: \"rowStyleFn\", rowClassFn: \"rowClassFn\", disableRowCheckboxFn: \"disableRowCheckboxFn\" }, outputs: { action: \"action\", bulkAction: \"bulkAction\", singleAction: \"singleAction\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", search: \"search\", pageChange: \"pageChange\", onSearch: \"onSearch\", visibleChange: \"visibleChange\", rowSelect: \"rowSelect\" }, viewQueries: [{ propertyName: \"genericTable\", first: true, predicate: [\"genericTable\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: TableModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: GenericTable, selector: \"lib-generic-table\", inputs: [\"data\", \"columns\", \"loading\", \"actions\", \"actionsPosition\", \"actionsMode\", \"first\", \"rows\", \"totalRecords\", \"sortField\", \"sortOrder\", \"globalFilterFields\", \"addButtonConfigs\", \"scrollHeight\", \"rowSelectable\", \"rowStyleFn\", \"rowClassFn\", \"disableRowCheckboxFn\", \"selection\", \"paginator\", \"showRowSelectionCheckbox\"], outputs: [\"action\", \"pageChange\", \"onAddNew\", \"rowSelect\", \"selectionChange\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: MessageModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericCrudHeaderComponent, selector: \"app-generic-crud-header\", inputs: [\"mode\", \"breadcrumb\", \"isSingleItemSelected\", \"selectedItems\", \"singleActionButtons\", \"bulkActionButtons\", \"addButtonConfigs\", \"filters\", \"filterModel\", \"showSearch\", \"first\", \"rows\", \"totalRecords\", \"apiName\", \"actions\"], outputs: [\"singleItemAction\", \"bulkAction\", \"search\", \"resetSearch\", \"action\", \"paginateChange\"] }, { kind: \"component\", type: GenericViewComponent, selector: \"app-detail-view\", inputs: [\"title\", \"actions\", \"createEditActions\", \"tabs\", \"viewMode\", \"breadcrumb\", \"service\", \"formFields\", \"apiName\", \"idField\", \"standaloneMode\", \"isViewMode\", \"isCreateMode\", \"isEditMode\", \"model\", \"displayMode\", \"mode\", \"loading\"], outputs: [\"action\", \"afterDelete\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-table', standalone: true, imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n GenericTable,\n ToolbarModule,\n TranslateModule,\n DividerModule,\n IconFieldModule,\n DrawerModule,\n ReactiveFormsModule,\n FormsModule,\n MessageModule,\n DialogModule,\n GenericDialogComponent,\n GenericCrudHeaderComponent,\n GenericViewComponent\n ], host: {\n class: ''\n }, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { genericTable: [{\n type: ViewChild,\n args: ['genericTable']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], data: [{\n type: Input\n }], formFields: [{\n type: Input\n }], columns: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], model: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], action: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], singleAction: [{\n type: Output\n }], beforeSaveTransform: [{\n type: Input\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], search: [{\n type: Output\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], onSearch: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], rowSelectable: [{\n type: Input\n }], rowSelect: [{\n type: Output\n }], scrollHeight: [{\n type: Input\n }], paginator: [{\n type: Input\n }], service: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], addPermissionName: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], supportSubPage: [{\n type: Input\n }], tabs: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], rowStyleFn: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], disableRowCheckboxFn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC10YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFDeEQscURBQXFEO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTyxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFRLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FB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c0JBQVosS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sWUFBWTtzQkFBeEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXggKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFBhZ2luYXRvclN0YXRlIH0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSxUYWJsZUxhenlMb2FkRXZlbnQgIH0gIGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sYmFyTW9kdWxlIH0gICBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEljb25GaWVsZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaWNvbmZpZWxkJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJhd2VyJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCdXR0b25Db25maWcgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgR2VuZXJpY0NydWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2VuZXJpY1RhYmxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtdGFibGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nJztcclxuaW1wb3J0IHsgRGV0YWlsVGFiLCBHZW5lcmljVmlld0NvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXZpZXcnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNoYW5nZVBheWxvYWQgZXh0ZW5kcyBQYWdpbmF0b3JTdGF0ZSB7XHJcbnNvcnQ/OiBzdHJpbmc7XHJcbmZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25zTW9kZSA9ICdidXR0b25zJyB8ICdtZW51JztcclxuXHJcbi8qKlxyXG4gKiDZhdmD2YjZhiDYrNiv2YjZhCBDUlVEINi52KfZhSDZitmF2YPZhiDYpdi52KfYr9ipINin2LPYqtiu2K/Yp9mF2YdcclxuICog2YrYr9i52YUg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KPYs9in2LPZitipOiDYpdmG2LTYp9ih2Iwg2YLYsdin2KHYqdiMINiq2K3Yr9mK2KvYjCDYrdiw2YFcclxuICog2YXYuSDYpdmF2YPYp9mG2YrYqSDYp9mE2KrYrti12YrYtSDYudio2LEg2LnYr9ipINij2YjYttin2Lkg2YjYudix2LZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtY3J1ZC10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEdlbmVyaWNUYWJsZSxcclxuICAgIFRvb2xiYXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBEaXZpZGVyTW9kdWxlLFxyXG4gICAgSWNvbkZpZWxkTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWVzc2FnZU1vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZW5lcmljQ3J1ZEhlYWRlckNvbXBvbmVudCxcclxuICAgIEdlbmVyaWNWaWV3Q29tcG9uZW50XHJcbl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC10YWJsZS5odG1sJyxcclxuICAgaG9zdDoge1xyXG4gICAgICAgIGNsYXNzOiAnJ1xyXG4gICAgfSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ3J1ZFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuIEBWaWV3Q2hpbGQoJ2dlbmVyaWNUYWJsZScpIGdlbmVyaWNUYWJsZSE6IEdlbmVyaWNUYWJsZTxUPjtcclxuIEBWaWV3Q2hpbGQoJ2RpYWxvZycpIGRpYWxvZyE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcbiB0cmFuc2xhdGU6VHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyID0gaW5qZWN0KFF1ZXJ5QnVpbGRlclNlcnZpY2UpO1xyXG5cclxuICAgIGhvbWU6IE1lbnVJdGVtIHwgdW5kZWZpbmVkID0geyBpY29uOiAncGkgcGktaG9tZScsIHJvdXRlckxpbms6ICcvJyB9O1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xyXG4gICBmb3JtRmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdOyAgLy8gPC0tINmH2YbYp1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTsgIC8vIDwtLSDZh9mG2KdcclxuICBASW5wdXQoKSBjb2x1bW5zOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107ICAvLyA8LS0g2YfZhtinXHJcbiAgQElucHV0KCkgZGlhbG9nTWF4V2lkdGggPSAnNDByZW0nOyAvLyB1bnNldCAsIGZpdC1jb250ZW50XHJcbiAgQElucHV0KCkgaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzcGxheU1vZGU6XHJcbiAgICB8ICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxSZWNvcmQ8J2FkZCcgfCAnZWRpdCcgfCAndmlldycsICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSc+PlxyXG4gICAgPSAnZHJhd2VyJztcclxuICBASW5wdXQoKSB1c2VDb25maXJtT25TYXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiBASW5wdXQoKSBtb2RlbDogYW55O1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yTXNnID0gJyc7XHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmd8YW55ID0gJyc7XHJcblxyXG5vcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBhY3Rpb25zOiBBY3Rpb25EZWY8VD5bXSA9IFtdO1xyXG4gICAgLyoqINiq2K3Yr9ivINi32LHZitmC2Kkg2KfZhNi52LHYtjogJ2J1dHRvbnMnINij2YggJ21lbnUnICovXHJcbiAgQElucHV0KCkgYWN0aW9uc01vZGU6IEFjdGlvbnNNb2RlID0gJ2J1dHRvbnMnO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfT4oKTtcclxuICBAT3V0cHV0KCkgYnVsa0FjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBUW10gfT4oKTtcclxuICBAT3V0cHV0KCkgc2luZ2xlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5hbWU6IHN0cmluZzsgaXRlbTogVCB9PigpO1xyXG4gIEBJbnB1dCgpIGJlZm9yZVNhdmVUcmFuc2Zvcm0/OiAocmVjb3JkOiBhbnksIGlzRWRpdDogYm9vbGVhbikgPT4gYW55OyAvLyDimqEg2K/ZiNin2YQg2YXYrti12LXYqSDZgtio2YQg2KfZhNit2YHYuFxyXG5cclxuXHJcbiAgIEBPdXRwdXQoKSBhZnRlclNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUOyBpc0VkaXQ6IGJvb2xlYW47IHJlc3BvbnNlPzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogVDsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IFQ7IGlzRWRpdDogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUIH0+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7IG1vZGVsOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBUW107IHRvdGFsOiBudW1iZXIgfT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNlbGVjdGVkOiBUW107IHNlbGVjdGVkQ291bnQ6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8eyBlcnJvcjogYW55OyBjb250ZXh0OiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgLy8g2KfZhNio2K3Yq1xyXG4vLyBTZWFyY2hcclxuICBASW5wdXQoKSBmaWx0ZXJzOiBhbnk7XHJcbiAgIEBJbnB1dCgpIGZpbHRlck1vZGVsOiBhbnkgPSB7fTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBzdHJpbmc7IGdsb2JhbDogc3RyaW5nIH0+KCk7XHJcblxyXG4vKiog2YTZhNiq2K3Zg9mFINio2KXYuNmH2KfYsS/Ypdiu2YHYp9ihINmC2LPZhSDYp9mE2KjYrdirICovXHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcblxyXG4gIC8qKiBQYWdpbmF0aW9uIElucHV0cyAqL1xyXG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcclxuICBASW5wdXQoKSByb3dzID0gMTA7XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZVBheWxvYWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5AT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOztcclxuLy8gQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgIC8qKiDZhNis2LnZhCDYp9mE2KzYr9mI2YQg2YLYp9io2YQg2YTYp9iu2KrZitin2LEg2KfZhNi12YHZiNmBICjYp9mB2KrYsdin2LbZiiBmYWxzZSkgKi9cclxuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XHJcbiAgLyoqINit2K/YqyDZitiu2LHYrCDYp9mE2LXZgSDYp9mE2YXYrdiv2ZHYryAqL1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIHNlbGVjdGlvbjogVCB8IG51bGwgPSBudWxsO1xyXG5cclxuIC8vINin2YTZgdix2LJcclxuICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiAxIHwgLTEgPSAxO1xyXG5cclxuQElucHV0KCkgc2Nyb2xsSGVpZ2h0ID0gJzQwMHB4JztcclxuXHJcbiBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlO1xyXG5cclxuQElucHV0KCkgc2VydmljZTogQmFzZVNlcnZpY2UgPSBpbmplY3QoQmFzZVNlcnZpY2UpO1xyXG5ASW5wdXQoKSBhcGlOYW1lID0gJyc7XHJcbkBJbnB1dCgpIGlkRmllbGQgPSAnaWQnO1xyXG5cclxuIEBJbnB1dCgpIHNob3dSb3dTZWxlY3Rpb25DaGVja2JveCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uID0gdHJ1ZTtcclxuXHJcbkBJbnB1dCgpIGFkZFBlcm1pc3Npb25OYW1lPzpzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGFkZEJ1dHRvbkNvbmZpZ3M6IEJ1dHRvbkNvbmZpZ1tdID0gW1xyXG4gIHtcclxuICAgIGljb246ICdwaSBwaS1wbHVzJyxcclxuICAgIGxhYmVsOiAnQUREJyxcclxuICAgIHZhcmlhbnQ6ICdyYWlzZWQnLFxyXG4gICAgc2V2ZXJpdHk6ICdwcmltYXJ5JyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnYWRkJyxcclxuICAgIHZpc2libGU6IHRoaXMuc2hvd0FkZEJ1dHRvbixcclxuICAgIHBlcm1pc3Npb246IHRoaXMuYWRkUGVybWlzc2lvbk5hbWUsXHJcbiAgfSxcclxuXTtcclxuXHJcbiBASW5wdXQoKSBjcmVhdGVFZGl0QWN0aW9uczogQnV0dG9uQ29uZmlnW10gPSBbXHJcbiAge1xyXG4gICAgaWNvbjogJ3BpIHBpLWNoZWNrJyxcclxuICAgIGxhYmVsOiAnU0FWRScsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAncHJpbWFyeScsXHJcbiAgICBzaXplOiAnc21hbGwnLFxyXG4gICAgYWN0aW9uTmFtZTogJ3NhdmUnLFxyXG4gICAgdHlwZTogJ3N1Ym1pdCcsXHJcbiAgICBzcGxpdEFjdGlvbnM6IFtcclxuICAgICB7XHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTQVZFX0FORF9BREQnKSxcclxuICAgICAgaWNvbjogJ3BpIHBpLXNhdmUnLFxyXG4gICAgICAgYWN0aW9uTmFtZTogJ3NhdmVBbmRBZGQnXHJcbiAgICB9XHJcbiAgXVxyXG4gIH0sXHJcbiAgIHtcclxuICAgIGljb246ICdwaSBwaS10aW1lcycsXHJcbiAgICBsYWJlbDogJ0NBTkNFTCcsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAnZGFuZ2VyJyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnY2FuY2VsJyxcclxuICAgIHR5cGU6ICdidXR0b24nLFxyXG4gIH0sXHJcbl07XHJcblxyXG4gQElucHV0KCkgc3VwcG9ydFN1YlBhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuIEBJbnB1dCgpIHRhYnM6IERldGFpbFRhYltdID0gW107XHJcbiAgQElucHV0KCkgYnVsa0FjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuXHJcbiBfc2VsZWN0ZWRSb3dzOiBUW10gPSBbXTtcclxuXHJcbmdldCBpc1NpbmdsZUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMTtcclxufVxyXG5cclxuZ2V0IGlzTXVsdGlwbGVJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5sZW5ndGggPiAxO1xyXG59XHJcblxyXG5nZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xyXG4gIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3M7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5ASW5wdXQoKSBicmVhZGNydW1iOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuXHJcbmdldCBicmVhZGNydW1iXygpOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gdGhpcy5icmVhZGNydW1iPy5tYXAodiA9PiAoe1xyXG4gICAgLi4udixcclxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHYubGFiZWwgPz8gJycpXHJcbiAgfSkpO1xyXG59XHJcbmdldCBydGwoKTogYm9vbGVhbiB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBkb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50Py5kaXIgPT09ICdydGwnO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbiAvKipcclxuICAgKiBNb2RlcyB0byBjb250cm9sIHdoYXQgcGFydHMgb2YgdGhlIGNvbXBvbmVudCBhcmUgdmlzaWJsZVxyXG4gICAqIC0gJ2Z1bGwnOiBUYWJsZSArIENSVUQgb3BlcmF0aW9ucyAoZGVmYXVsdClcclxuICAgKiAtICdmb3JtLW9ubHknOiBPbmx5IHNob3cgZm9ybSAoZm9yIGNyZWF0ZS9lZGl0L3ZpZXcpXHJcbiAgICogLSAndGFibGUtb25seSc6IE9ubHkgc2hvdyB0YWJsZSAocmVhZC1vbmx5IG1vZGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ2Zvcm0tb25seScgfCAndGFibGUtb25seScgfCAnZGV0YWlsJyA9ICdmdWxsJztcclxuXHJcbiAgLyoqIEZvcmNlIHRoZSBjb21wb25lbnQgdG8gc2hvdyBzcGVjaWZpYyBzdGF0ZSAqL1xyXG4gIEBJbnB1dCgpIGZvcmNlU3RhdGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBIaWRlIHRhYmxlIGNvbXBsZXRlbHkgd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSAqL1xyXG4gIEBJbnB1dCgpIGdldCBoaWRlVGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgfHwgdGhpcy5tb2RlID09PSAnZGV0YWlsJyB8fCAodGhpcy5mb3JjZVN0YXRlICYmIHRoaXMubW9kZSAhPT0gJ3RhYmxlLW9ubHknKSApPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogQXV0by1zaG93IGZvcm0gd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSB3aXRoIGZvcmNlU3RhdGUgKi9cclxuICBASW5wdXQoKSBnZXQgYXV0b1Nob3dGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgISF0aGlzLmZvcmNlU3RhdGU7XHJcbiAgfVxyXG4vL9mE2KrYutmK2YrYsSDZhNmI2YYg2LXZgSDZhdi52YrZkdmGXHJcbiAgQElucHV0KCkgcm93U3R5bGVGbj86IChyb3c6IFQpID0+IGFueTtcclxuXHJcbiAgLy8g4pyFINmE2KrYudmK2YrZhiDZg9mE2KfYsyBDU1Mg2KPZiCBUYWlsd2luZCDYudmE2Ykg2KfZhNi12YFcclxuICBASW5wdXQoKSByb3dDbGFzc0ZuPzogKHJvdzogVCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPjtcclxuXHJcbiAgLy/Yotiu2LEg2YTYqtis2YXZitivIC8g2KrYudi32YrZhCBjaGVja2JveCDYp9mE2KfYrtiq2YrYp9ixXHJcbiAgQElucHV0KCkgZGlzYWJsZVJvd0NoZWNrYm94Rm4/OiAocm93OiBUKSA9PiBib29sZWFuO1xyXG4gdGFibGVDbGFzcyA9ICdoLWZ1bGwgZmxleC0xIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItc3VyZmFjZSByb3VuZGVkLTJ4bCB4czpyb3VuZGVkLTJ4bCBwLTQgYmctd2hpdGUnO1xyXG5cclxuIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5wcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5jdXJyZW50SWQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5hcGlOYW1lICYmIHRoaXMuYXBpTmFtZSAhPSAnJyl7XHJcbiAgICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lIDtcclxuICAgIH1cclxuICAgICBpZiAodGhpcy5hcGlOYW1lKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuYXBpTmFtZSA9IHRoaXMuYXBpTmFtZTtcclxuICB9XHJcblxyXG4gIGlmKHRoaXMudGFicy5sZW5ndGggPT0gMCl7XHJcbiAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgdGhpcy50YWJzLnB1c2goeyBoZWFkZXI6ICfYp9mE2KrZgdin2LXZitmEJyxpY29uOidwaSBwaS1pbmZvLWNpcmNsZScsIGZpZWxkczogdGhpcy5mb3JtRmllbGRzXywgbW9kZWw6IHRoaXMubW9kZWwgfSk7XHJcbiAgfVxyXG4gICAgaWYgKHRoaXMuc3VwcG9ydFN1YlBhZ2UpIHtcclxuICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KHRoaXMuaWRGaWVsZCk7XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWQgPSBpZDtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RldGFpbCc7XHJcbiAgICAgIHRoaXMubG9hZERldGFpbChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4gIH1cclxuXHJcbiAgIC8vIDMuIEhhbmRsZSBIZWFkZXIncyBQYWdpbmF0ZSBDaGFuZ2UgRXZlbnRcclxuICBvbkhlYWRlclBhZ2luYXRlQ2hhbmdlKGV2ZW50OiB7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9KSB7XHJcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7IC8vIFVwZGF0ZSB0aGUgJ2ZpcnN0JyBpbmRleFxyXG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcclxuXHJcblxyXG4gICAgICAgY29uc3QgbGF6eUxvYWRFdmVudDogVGFibGVMYXp5TG9hZEV2ZW50ID0ge1xyXG4gICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxyXG4gICAgICAgIHJvd3M6IHRoaXMucm93cyxcclxuICAgICAgICAvLyBZb3UnZCB0eXBpY2FsbHkgaW5jbHVkZSBjdXJyZW50IHNvcnRpbmcgYW5kIGZpbHRlcmluZyBzdGF0ZSBoZXJlXHJcbiAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcclxuICAgICAgICBzb3J0T3JkZXI6IDEsXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzICxcclxuICAgICAgICBnbG9iYWxGaWx0ZXI6IG51bGwsIC8vIG9yIHlvdXIgY3VycmVudCBnbG9iYWwgZmlsdGVyIHZhbHVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vbkxhenlMb2FkKGxhenlMb2FkRXZlbnQpO1xyXG4gIH1cclxuICBsb2FkRGV0YWlsKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICB0aGlzLnNlcnZpY2UuZ2V0KGlkIGFzIGFueSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByZXM7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8vIEhlbHBlciBtZXRob2QgdG8gb3BlbiBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxub3BlbkZvcm0obW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgfCAndmlldycsIG1vZGVsPzogYW55KSB7XHJcbiAgdGhpcy5kaWFsb2cub3BlbkZvcm0obW9kZSxtb2RlbCk7XHJcbn1cclxuXHJcblxyXG4vLyAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAvKiog2KfZhNii2YYg2YrYqtmE2YLZkdmJIHBhZ2luYXRpb24gKyBzb3J0INmB2Yog2K3Yr9irINmI2KfYrdivICovXHJcbm9uTGF6eUxvYWQoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCkge1xyXG4gIC8vIHRoaXMubW9kZWxfPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLm1vZGVsPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gIGNvbnN0IGZpcnN0ICAgICA9IGV2ZW50LmZpcnN0ICA/PyB0aGlzLmZpcnN0O1xyXG4gIGNvbnN0IHJvd3MgICAgICA9IGV2ZW50LnJvd3MgICA/PyB0aGlzLnJvd3M7XHJcbiAgY29uc3Qgc29ydEZpZWxkID0gdHlwZW9mIGV2ZW50LnNvcnRGaWVsZCA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LnNvcnRGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zb3J0RmllbGQ7XHJcbiAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyID09PSAtMSA/IC0xIDogMTtcclxuXHJcblxyXG4gIGNvbnN0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGlmIChldmVudC5maWx0ZXJzKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50LmZpbHRlcnMpLmZvckVhY2goKFtmaWVsZCwgbWV0YV0pID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IChtZXRhIGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICBmaWx0ZXJzW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XHJcbiAgICAvLyBEZWZhdWx0IHF1ZXJ5XHJcbiAgaWYoIWZpbHRlcnNbJ3F1ZXJ5J10pe1xyXG4gICAgICAgLy8gVXNlIHRoZSBuZXcgUXVlcnlCdWlsZGVyU2VydmljZSBtZXRob2RzXHJcbiAgICBjb25zdCBvZGF0YVBhcmFtcyA9IHRoaXMucXVlcnlCdWlsZGVyLmJ1aWxkT0RhdGFGcm9tUXVlcnlNb2RlbCh0aGlzLmZpbHRlck1vZGVsLCB0aGlzLmZvcm1GaWVsZHNfKTtcclxuICAgIC8vIHRoaXMub2RhdGFTZWFyY2guZW1pdChvZGF0YVBhcmFtcyk7XHJcblxyXG4gICAgLy8gR2VuZXJhdGUgcXVlcnkgc3RyaW5nIHVzaW5nIHRoZSB1bmlmaWVkIG1ldGhvZFxyXG4gICAgIHF1ZXJ5U3RyaW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIudG9PRGF0YVF1ZXJ5U3RyaW5nKG9kYXRhUGFyYW1zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdPRGF0YSBRdWVyeSBTdHJpbmc6JywgcXVlcnlTdHJpbmcpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICB0aGlzLmZpcnN0ICAgICA9IGZpcnN0O1xyXG4gIHRoaXMucm93cyAgICAgID0gcm93cztcclxuICB0aGlzLnNvcnRGaWVsZCA9IHNvcnRGaWVsZDtcclxuICB0aGlzLnNvcnRPcmRlciA9IHNvcnRPcmRlciBhcyAxfCAtMTtcclxuY29uc3QgZGlyID0gc29ydE9yZGVyID09PSAxID8gJ2FzYycgOiAnZGVzYyc7XHJcbiBjb25zdCBzb3J0ID0gc29ydEZpZWxkID8gYCR7c29ydEZpZWxkfSAke2Rpcn1gIDogdW5kZWZpbmVkO1xyXG5cclxuICAvLyB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IGZpcnN0LCByb3dzICxzb3J0LCBmaWx0ZXJzIH0pO1xyXG4gICB0aGlzLmFwcGx5U2VhcmNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyOnRoaXMubW9kZWxbJ2ZpbHRlciddLFxyXG4gICAgICAgIHF1ZXJ5OnF1ZXJ5U3RyaW5nLFxyXG4gICAgICAgIHNvcnRpbmc6c29ydCxcclxuICAgICAgICBza2lwQ291bnQ6Zmlyc3QsXHJcbiAgICAgICAgbWF4UmVzdWx0Q291bnQ6cm93cyxcclxuXHJcbiAgICB9XHJcbiAgKTtcclxuXHJcblxyXG4gIC8vINmK2KjZhtmKINin2YTZhti1INmI2KXYsdiz2KfZhNmHXHJcblxyXG59XHJcblxyXG5cclxuICAvKiog2KrYtdmK2YrYsSDYp9mE2KjZitin2YbYp9iqINit2LPYqCDYp9mE2LXZgdit2KkgKi9cclxuICBnZXQgcGFnZWREYXRhKCk6IFRbXSB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhLnNsaWNlKHRoaXMuZmlyc3QsIHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MpIDogW107XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbmdldCBnbG9iYWxGaWx0ZXJGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gIHJldHVybiB0aGlzLmNvbHVtbnMubWFwKGMgPT4gU3RyaW5nKGMua2V5KSk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8qKiDYo9ix2LPZhCDYpdmE2Ykg2KfZhNij2Kgg2YTYo9iq2YXYqtipINi02YPZhCDYp9mE2KjYrdirINil2LDYpyDZitit2KrYp9isICovXHJcbi8vIGZyb20gZ2VuZXJpYy1jcnVkLXRhYmxlLmNvbXBvbmVudC50c1xyXG5cclxuLyoqINio2K/ZkdmEIGFwcGx5U2VhcmNoINmE2KrYqNirIHBhZ2VDaGFuZ2Ug2YXYqNin2LTYsdip2YsgKi9cclxuIGFwcGx5U2VhcmNoKGZpbHRlcnM6IGFueSkge1xyXG4gICAgLy8gdGhpcy5nZW5lcmljVGFibGUuYXBwbHlGaWx0ZXIoZ2xvYmFsKTtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gLyoqINiv2KfZhNipINiq2YbZgdmR2LAg2LnZhtivINin2YTZhtmC2LEg2LnZhNmJINi12YEgKi9cclxuICBvblJvd0NsaWNrKHJvdzogVCkge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5vblN1Ym1pdCgpIHtcclxuIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFwcGx5U2VhcmNoKCcnKTtcclxuICAgICAgICB9XHJcbn1cclxuXHJcbiAgICAgdHJhY2tCeUlkeChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiBpbmRleDtcclxuIH1cclxuXHJcbm9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc1NpbmdsZUl0ZW1TZWxlY3RlZCkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9zZWxlY3RlZFJvd3NbMF07XHJcbiAgdGhpcy5zaW5nbGVBY3Rpb24uZW1pdCh7XHJcbiAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnc2luZ2xlQWN0aW9uJyxcclxuICAgIGl0ZW06IHNlbGVjdGVkSXRlbVxyXG4gIH0pO1xyXG59XHJcblxyXG5vbkludGVybmFsQnVsa0FjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc011bHRpcGxlSXRlbVNlbGVjdGVkKSByZXR1cm47XHJcblxyXG4gIHRoaXMuYnVsa0FjdGlvbi5lbWl0KHtcclxuICAgIG5hbWU6IGJ0bi5hY3Rpb25OYW1lID8/ICdidWxrQWN0aW9uJyxcclxuICAgIGl0ZW1zOiBbLi4udGhpcy5fc2VsZWN0ZWRSb3dzXSAgLy8g2YbYsdiz2YQg2YbYs9iu2Kkg2YXZhiDYp9mE2YXYtdmB2YjZgdipXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwibW9kZSAhPT0gJ2Zvcm0tb25seScgJiYgbW9kZSAhPT0gJ2RldGFpbCcgID8gdGFibGVDbGFzcyA6ICcnXCJcclxuPlxyXG4gPGFwcC1nZW5lcmljLWNydWQtaGVhZGVyXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYl9cIlxyXG4gIFtpc1NpbmdsZUl0ZW1TZWxlY3RlZF09XCJpc1NpbmdsZUl0ZW1TZWxlY3RlZFwiXHJcbiAgW3NlbGVjdGVkSXRlbXNdPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgW3NpbmdsZUFjdGlvbkJ1dHRvbnNdPVwic2luZ2xlQWN0aW9uQnV0dG9uc1wiXHJcbiAgW2J1bGtBY3Rpb25CdXR0b25zXT1cImJ1bGtBY3Rpb25CdXR0b25zXCJcclxuICBbYWRkQnV0dG9uQ29uZmlnc109XCJhZGRCdXR0b25Db25maWdzXCJcclxuICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gIFtmaWx0ZXJNb2RlbF09XCJmaWx0ZXJNb2RlbFwiXHJcbiAgW3Nob3dTZWFyY2hdPVwic2hvd1NlYXJjaFwiXHJcbiAgKHNpbmdsZUl0ZW1BY3Rpb24pPVwib25TaW5nbGVJdGVtQWN0aW9uKCRldmVudClcIlxyXG4gIChidWxrQWN0aW9uKT1cIm9uSW50ZXJuYWxCdWxrQWN0aW9uKCRldmVudClcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocmVzZXRTZWFyY2gpPVwiYXBwbHlTZWFyY2goJycpXCJcclxuICAocGFnaW5hdGVDaGFuZ2UpPVwib25IZWFkZXJQYWdpbmF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gIFtyb3dzXT1cInJvd3NcIlxyXG4gIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuLz5cclxuXHJcbiAgIEBpZiAoIWhpZGVUYWJsZSkge1xyXG4gIDxsaWItZ2VuZXJpYy10YWJsZVxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcclxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXHJcbiAgICBbYWN0aW9uc01vZGVdPVwiYWN0aW9uc01vZGVcIlxyXG4gICAgW2ZpcnN0XT1cImZpcnN0XCJcclxuICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGRcIlxyXG4gICAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXJcIlxyXG4gICAgW2FkZEJ1dHRvbkNvbmZpZ3NdPVwiYWRkQnV0dG9uQ29uZmlnc1wiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXHJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXHJcbiAgICBbcm93U3R5bGVGbl09XCJyb3dTdHlsZUZuXCJcclxuICAgIFtyb3dDbGFzc0ZuXT1cInJvd0NsYXNzRm5cIlxyXG4gICAgW2Rpc2FibGVSb3dDaGVja2JveEZuXT1cImRpc2FibGVSb3dDaGVja2JveEZuXCJcclxuICAgIFtzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hdPVwic2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAob25BZGROZXcpPVwiYWN0aW9uLmVtaXQoeyBuYW1lOiAnYWRkJywgcm93OiBudWxsISB9KVwiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJvbkxhenlMb2FkKCRldmVudClcIlxyXG4gICAgW3Jvd1NlbGVjdGFibGVdPVwicm93U2VsZWN0YWJsZVwiXHJcbiAgICAocm93U2VsZWN0KT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbKHNlbGVjdGlvbildPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgICAjZ2VuZXJpY1RhYmxlXHJcbiAgPjwvbGliLWdlbmVyaWMtdGFibGU+XHJcblxyXG4gIH1cclxuXHJcbiAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgI2RpYWxvZ1xyXG4gICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gICAgW2Zvcm1GaWVsZHNdPVwiZm9ybUZpZWxkc1wiXHJcbiAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgW2FwaU5hbWVdPVwiYXBpTmFtZVwiXHJcbiAgICBbaWRGaWVsZF09XCJpZEZpZWxkXCJcclxuICAgIFtkaWFsb2dNYXhXaWR0aF09XCJkaWFsb2dNYXhXaWR0aFwiXHJcbiAgICBbZGlzcGxheU1vZGVdPVwiZGlzcGxheU1vZGVcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbZm9yY2VTdGF0ZV09XCJmb3JjZVN0YXRlXCJcclxuICAgIFtkcmF3ZXJWaXNpYmxlXT1cImRyYXdlclZpc2libGVcIlxyXG4gICAgW2RpYWxvZ1Zpc2libGVdPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICBbaXNWaWV3TW9kZV09XCJpc1ZpZXdNb2RlXCJcclxuICAgIFtpc0VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIlxyXG4gICAgW3VzZUNvbmZpcm1PblNhdmVdPVwidXNlQ29uZmlybU9uU2F2ZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtlcnJvck1zZ109XCJlcnJvck1zZ1wiXHJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXHJcbiAgICBbYmVmb3JlU2F2ZVRyYW5zZm9ybV09XCJiZWZvcmVTYXZlVHJhbnNmb3JtXCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZS5lbWl0KCRldmVudCk7b25TdWJtaXQoKTtcIlxyXG4gICAgKGFmdGVyRGVsZXRlKT1cImFmdGVyRGVsZXRlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlU2F2ZSk9XCJiZWZvcmVTYXZlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlRGVsZXRlKT1cImJlZm9yZURlbGV0ZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGZvcm1DYW5jZWwpPVwiZm9ybUNhbmNlbC5lbWl0KClcIlxyXG4gICAgKGZvcm1Jbml0KT1cImZvcm1Jbml0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZGF0YUxvYWRlZCk9XCJkYXRhTG9hZGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdlbmVyaWMtZGlhbG9nPlxyXG5cclxuICAgPGFwcC1kZXRhaWwtdmlld1xyXG4gICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3RpdGxlXT1cImJyZWFkY3J1bWJfPy5bMF0/LmxhYmVsIHx8ICdEZXRhaWwnXCJcclxuICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgW2FwaU5hbWVdPVwic2VydmljZS5hcGlOYW1lXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZFwiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFtmb3JtRmllbGRzXT1cImZvcm1GaWVsZHNcIlxyXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgIFt0YWJzXT1cInRhYnNcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iX1wiXHJcbiAgICBbY3JlYXRlRWRpdEFjdGlvbnNdPVwiY3JlYXRlRWRpdEFjdGlvbnNcIlxyXG4gICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgPC9hcHAtZGV0YWlsLXZpZXc+XHJcblxyXG48L2Rpdj5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|