@acorex/modules 20.6.0-next.12 → 20.6.0-next.14

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.
Files changed (61) hide show
  1. package/dashboard-management/index.d.ts +2 -15
  2. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  3. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  4. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs} +22 -17
  5. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs.map +1 -0
  6. package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs} +2 -2
  7. package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs.map → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs.map} +1 -1
  8. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  9. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs} +16 -16
  10. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs.map → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs.map → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs.map → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs.map → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs.map → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-document-management-drive.component-GEe-dEOj.mjs → acorex-modules-document-management-drive.component-CeBlGsLR.mjs} +6 -5
  20. package/fesm2022/acorex-modules-document-management-drive.component-CeBlGsLR.mjs.map +1 -0
  21. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs.map → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs.map → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs.map → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs.map → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs.map → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs.map} +1 -1
  33. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  34. package/fesm2022/{acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs → acorex-modules-notification-management-notification-page.component-XCr4A447.mjs} +35 -23
  35. package/fesm2022/acorex-modules-notification-management-notification-page.component-XCr4A447.mjs.map +1 -0
  36. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  37. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs → acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs} +8 -7
  38. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +1 -0
  39. package/fesm2022/acorex-modules-report-management.mjs +16 -15
  40. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  41. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs} +18 -19
  42. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs.map +1 -0
  43. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs.map → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs → acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs} +20 -17
  46. package/fesm2022/acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs.map +1 -0
  47. package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs.map → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs.map} +1 -1
  49. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  50. package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs} +5 -4
  51. package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs.map → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs.map} +1 -1
  52. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  53. package/package.json +14 -14
  54. package/report-management/index.d.ts +2 -15
  55. package/settings-management/index.d.ts +2 -2
  56. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs.map +0 -1
  57. package/fesm2022/acorex-modules-document-management-drive.component-GEe-dEOj.mjs.map +0 -1
  58. package/fesm2022/acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs.map +0 -1
  59. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs.map +0 -1
  60. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs.map +0 -1
  61. package/fesm2022/acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-notification-management-notification-page.component-XCr4A447.mjs","sources":["../tmp-esm2022/notification-management/lib/features/components/notification-page/notification-page.component.js"],"sourcesContent":["import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXSlidingItemModule } from '@acorex/components/sliding-item';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPUserAvatarComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXContextMenuComponent, } from '@acorex/components/menu';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPNotificationDefinitionService } from '../../shared/notification-definition.service';\nimport { AXMNotificationConnectorService } from '../../shared/notification-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@acorex/components/check-box\";\nimport * as i5 from \"@acorex/components/skeleton\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/badge\";\nimport * as i8 from \"@acorex/components/dropdown\";\nimport * as i9 from \"@acorex/components/search-box\";\nimport * as i10 from \"@acorex/components/label\";\nimport * as i11 from \"@acorex/components/sliding-item\";\nimport * as i12 from \"@acorex/core/format\";\n//#region ---- Component Definition ----\nexport class AXMNotificationPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Services & Dependencies ----\n this.layoutThemeService = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.connector = inject(AXMNotificationConnectorService);\n this.definitionService = inject(AXPNotificationDefinitionService);\n //#endregion\n //#region ---- State & Computed Properties ----\n this.loading = this.connector.loading;\n this.errorMessage = this.connector.errorMessage;\n this.notifications = this.connector.notificationList;\n this.unreadCount = this.connector.unreadCount;\n this.totalCount = this.connector.total;\n // Local UI state\n this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: \"searchQuery\" }] : []));\n this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: \"isEditing\" }] : []));\n this.contextMenu = viewChild('contextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n // #isEditingEff = effect(() => {\n // if (this.isEditing() && this.selectedIds().size === 0) {\n // this.isEditing.set(false);\n // }\n // });\n this.filteredNotifications = computed(() => {\n const query = (this.searchQuery() || '').toLowerCase().trim();\n const items = this.notifications();\n if (!query) {\n return this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n }\n const base = this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n return base.filter((n) => {\n const title = (n.title || '').toLowerCase();\n const body = (n.body || '').toLowerCase();\n const sender = (n.sender?.fullName || '').toLowerCase();\n return title.includes(query) || body.includes(query) || sender.includes(query);\n });\n }, ...(ngDevMode ? [{ debugName: \"filteredNotifications\" }] : []));\n // Tab state: 'all' | 'unread'\n this.tab = signal('all', ...(ngDevMode ? [{ debugName: \"tab\" }] : []));\n this.activeTab = computed(() => this.tab(), ...(ngDevMode ? [{ debugName: \"activeTab\" }] : []));\n // Selection state for bulk actions\n this.selectedIds = signal(new Set(), ...(ngDevMode ? [{ debugName: \"selectedIds\" }] : []));\n this.selectedCount = computed(() => this.selectedIds().size, ...(ngDevMode ? [{ debugName: \"selectedCount\" }] : []));\n this.contextItem = signal(null, ...(ngDevMode ? [{ debugName: \"contextItem\" }] : []));\n }\n selectedTab() {\n return this.tab();\n }\n setTab(v) {\n this.tab.set(v);\n }\n onTabChange(index) {\n this.tab.set(index === 1 ? 'unread' : 'all');\n }\n //#endregion\n //#region ---- Page Interface Methods ----\n async getPageTitle() {\n return 'Notifications';\n }\n getPageDescription() {\n const unread = this.unreadCount();\n const total = this.totalCount();\n if (!total) {\n return 'No notifications';\n }\n return unread > 0 ? `${unread} unread out of ${total}` : `${total} notifications`;\n }\n async getPrimaryMenuItems() {\n const items = [];\n if (this.selectedCount() > 0) {\n items.push({\n title: 'Delete',\n icon: 'fa-light fa-trash',\n command: { name: 'delete-selected' },\n color: 'danger',\n });\n items.push({\n title: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-selected-as-read' },\n color: 'primary',\n });\n }\n return items;\n }\n async getSecondaryMenuItems() {\n const items = [];\n if (this.selectedCount() === 0) {\n items.push({\n title: 'Refresh',\n icon: 'fa-light fa-rotate',\n command: { name: 'refresh' },\n }, {\n title: 'Mark all as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-all-as-read' },\n disabled: this.unreadCount() === 0,\n }, {\n title: 'Select items',\n icon: 'fa-light fa-pen',\n command: { name: 'edit-mode' },\n color: 'primary',\n });\n }\n return items;\n }\n async execute(command) {\n switch (command.name) {\n case 'refresh':\n await this.onRefresh();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'delete-selected':\n await this.deleteSelected();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-selected-as-read':\n await this.markSelectedAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-all-as-read':\n await this.onMarkAllAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'edit-mode':\n if (this.isEditing()) {\n this.deselectAll();\n this.isEditing.set(false);\n }\n else {\n this.isEditing.set(true);\n }\n break;\n }\n }\n //#endregion\n //#region ---- UI Handlers ----\n onSearch(value) {\n this.searchQuery.set(value);\n }\n onClearSearch() {\n this.searchQuery.set('');\n }\n async onRefresh() {\n await this.connector.getList();\n }\n async onMarkAllAsRead() {\n await this.connector.markAllAsRead();\n }\n isSelected(id) {\n return this.selectedIds().has(id);\n }\n toggleSelectionWithModel(id, checked) {\n const next = new Set(this.selectedIds());\n if (checked) {\n next.add(id);\n }\n else {\n next.delete(id);\n }\n this.selectedIds.set(next);\n }\n isAllSelected() {\n const items = this.filteredNotifications();\n return items.length > 0 && items.every((i) => this.selectedIds().has(i.id));\n }\n toggleSelectAll(event) {\n const checked = event.target.checked;\n if (checked) {\n this.selectedIds.set(new Set(this.filteredNotifications().map((i) => i.id)));\n }\n else {\n this.selectedIds.set(new Set());\n }\n }\n async markSelectedAsRead(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n await this.connector.markAsRead({ id: ids });\n this.selectedIds.set(new Set());\n }\n async deleteSelected(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n for (const id of ids) {\n await this.connector.deleteOne(id);\n }\n this.selectedIds.set(new Set());\n }\n deselectAll() {\n if (this.selectedCount() > 0) {\n this.selectedIds.set(new Set());\n }\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n }\n // Row interactions\n onRowClick(id) {\n this.toggleSelectionById(id);\n }\n async openItem(id) {\n if (this.isEditing()) {\n this.toggleSelectionById(id);\n return;\n }\n //avoid double click on selected items\n if (this.selectedCount() > 0) {\n return;\n }\n const item = this.notifications().find((n) => n.id === id);\n if (!item) {\n return;\n }\n // Mark as read (idempotent per service logic)\n await this.connector.markAsRead({ id: [id] });\n // Execute provider click action if available\n const provider = this.definitionService.resolve(item.type);\n await provider?.execute?.({ name: 'click' }, item);\n }\n toggleSelectionById(id) {\n const next = new Set(this.selectedIds());\n if (next.has(id)) {\n next.delete(id);\n }\n else {\n next.add(id);\n }\n this.selectedIds.set(next);\n }\n //#endregion\n slidingItemsHandler(item, action) {\n switch (action) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuItemClick(e) {\n const item = this.contextItem();\n if (!item) {\n return;\n }\n switch (e.item.name) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuOpening(e) {\n e.items = [\n {\n name: 'mark-as-read',\n text: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n color: 'primary',\n },\n ];\n e.items.push({\n name: 'delete',\n text: 'Delete',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n });\n }\n openContextMenu(e, item) {\n if (this.isEditing() || this.selectedCount() > 0) {\n return;\n }\n e.preventDefault();\n this.contextMenu()?.showAt({\n x: e.clientX,\n y: e.clientY,\n });\n this.contextItem.set(item);\n }\n //#region ---- Helper Methods for State Message ----\n getNotificationIcon() {\n if (this.searchQuery()) {\n return 'fa-solid fa-magnifying-glass';\n }\n else if (this.activeTab() === 'unread') {\n return 'fa-solid fa-check-circle';\n }\n else {\n return 'fa-solid fa-bell';\n }\n }\n getNotificationTitle() {\n if (this.searchQuery()) {\n return '@notification-management:state-message.no-results.title';\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.title';\n }\n else {\n return '@notification-management:state-message.no-notifications.title';\n }\n }\n getNotificationDescription() {\n if (this.searchQuery()) {\n return `We couldn't find anything matching \"${this.searchQuery()}\".`;\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.description';\n }\n else {\n return '@notification-management:state-message.no-notifications.description';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMNotificationPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMNotificationPageComponent, isStandalone: true, selector: \"axm-notification-page\", host: { listeners: { \"document:keydown.escape\": \"deselectAll()\" } }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ], viewQueries: [{ propertyName: \"contextMenu\", first: true, predicate: [\"contextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button\n slot=\"actions\"\n look=\"outline\"\n [text]=\"'Clear search'\"\n (onClick)=\"onClearSearch()\"\n ></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (deviceService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i4.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i5.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i6.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i6.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i7.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i8.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i9.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"component\", type: AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i10.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXSlidingItemModule }, { kind: \"component\", type: i11.AXSlidingItemComponent, selector: \"ax-sliding-item\" }, { kind: \"component\", type: i11.AXSlidingItemSuffixComponent, selector: \"ax-sliding-item-suffix\", inputs: [\"color\", \"text\"], outputs: [\"onClick\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i12.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMNotificationPageComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-notification-page',\n template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button\n slot=\"actions\"\n look=\"outline\"\n [text]=\"'Clear search'\"\n (onClick)=\"onClearSearch()\"\n ></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (deviceService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ],\n host: {\n '(document:keydown.escape)': 'deselectAll()',\n },\n imports: [\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXFormatModule,\n AXCheckBoxModule,\n AXSkeletonModule,\n AXButtonModule,\n AXBadgeModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXSearchBoxModule,\n AXPUserAvatarComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXContextMenuComponent,\n AXLabelModule,\n AXSlidingItemModule,\n ],\n }]\n }], propDecorators: { contextMenu: [{ type: i0.ViewChild, args: ['contextMenu', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvY29tcG9uZW50cy9ub3RpZmljYXRpb24tcGFnZS9ub3RpZmljYXRpb24tcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBcUIsZ0JBQWdCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0YsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsc0JBQXNCLEdBQ3ZCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixF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aUJBQzVCLHdCQUF3QiwySEFDeEIsc0JBQXNCLG1LQUN0QixhQUFhLGlLQUNiLG1CQUFtQjs7NEZBR1YsNEJBQTRCO2tCQWxReEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ09UO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGO29CQUNELElBQUksRUFBRTt3QkFDSiwyQkFBMkIsRUFBRSxlQUFlO3FCQUM3QztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixhQUFhO3dCQUNiLG1CQUFtQjtxQkFDcEI7aUJBQ0Y7eUVBc0IyRCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYU2xpZGluZ0l0ZW1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2xpZGluZy1pdGVtJztcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQRGV2aWNlU2VydmljZSwgQVhQRXhlY3V0ZUNvbW1hbmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICBBWFBVc2VyQXZhdGFyQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUFBhZ2VMYXlvdXRCYXNlLCBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCwgQVhQUGFnZUxheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3ZpZXdzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZCc7XG5pbXBvcnQgeyBBWE1Ob3RpZmljYXRpb25JdGVtIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IEFYUE5vdGlmaWNhdGlvbkRlZmluaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL25vdGlmaWNhdGlvbi1kZWZpbml0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNTm90aWZpY2F0aW9uQ29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ub3RpZmljYXRpb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBDb21wb25lbnQgRGVmaW5pdGlvbiAgIC0tLS1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLW5vdGlmaWNhdGlvbi1wYWdlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXhwLXBhZ2UtbGF5b3V0PlxuICAgICAgPGF4cC1wYWdlLXRvb2xiYXI+XG4gICAgICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgICAgICBAaWYgKHNlbGVjdGVkQ291bnQoKSA+IDAgfHwgaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0zIGF4LWl0ZW1zLWNlbnRlciBheC1oLTEwXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGRcIj57eyBzZWxlY3RlZENvdW50KCkgfX0gaXRlbXMgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJkZXNlbGVjdEFsbCgpXCIgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtc2Vjb25kYXJ5IGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgPlVuc2VsZWN0PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJhY3RpdmVUYWIoKSA9PT0gJ2FsbCcgPyAnQWxsIE5vdGlmaWNhdGlvbnMnIDogJ1VucmVhZCBOb3RpZmljYXRpb25zJ1wiPlxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1taW4tdy01MlwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidBbGwgbm90aWZpY2F0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiYWN0aXZlVGFiKCkgPT09ICdhbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2V0VGFiKCdhbGwnKVwiXG4gICAgICAgICAgICAgICAgICA+PC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVW5yZWFkIE5vdGlmaWNhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImFjdGl2ZVRhYigpID09PSAndW5yZWFkJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNldFRhYigndW5yZWFkJylcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJ1bnJlYWRDb3VudCgpLnRvU3RyaW5nKClcIiBbY29sb3JdPVwiJ3ByaW1hcnknXCI+PC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBub3RpZmljYXRpb25zJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hRdWVyeSgpXCJcbiAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LXctNzIgYXgtaGlkZGVuIG1kOmF4LWZsZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zZWFyY2gtYm94PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICAgICAgPCEtLSA8YXhwLWxheW91dC1zdWZmaXg+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiJ01hcmsgYXMgcmVhZCdcIiAob25DbGljayk9XCJtYXJrU2VsZWN0ZWRBc1JlYWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cIm91dGxpbmVcIiBjb2xvcj1cImRhbmdlclwiIFt0ZXh0XT1cIidEZWxldGUnXCIgKG9uQ2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4cC1sYXlvdXQtc3VmZml4PiAtLT5cbiAgICAgIDwvYXhwLXBhZ2UtdG9vbGJhcj5cbiAgICAgIDxheHAtcGFnZS1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICAgIDwhLS0gTGlzdCAtLT5cbiAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1zcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgQGZvciAoXyBvZiBbMSwgMiwgMywgNCwgNSwgNl07IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1zcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xMiBheC1oLTEyIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LXNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMy80IGF4LWgtNCBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTEvMiBheC1oLTMgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZmlsdGVyZWROb3RpZmljYXRpb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgICAgICAgbW9kZT1cImVtcHR5XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiZ2V0Tm90aWZpY2F0aW9uSWNvbigpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImdldE5vdGlmaWNhdGlvblRpdGxlKClcIlxuICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiZ2V0Tm90aWZpY2F0aW9uRGVzY3JpcHRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoc2VhcmNoUXVlcnkoKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgICAgICAgIHNsb3Q9XCJhY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidDbGVhciBzZWFyY2gnXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQ2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoZGV2aWNlU2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICNjb250ZXh0TWVudUNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlc2t0b3BcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heHAtcGFnZS1jb250ZW50PlxuICAgIDwvYXhwLXBhZ2UtbGF5b3V0PlxuXG4gICAgPG5nLXRlbXBsYXRlICNtb2JpbGUgbGV0LWl0ZW0+XG4gICAgICA8YXgtc2xpZGluZy1pdGVtIGNsYXNzPVwiYXgtaC0yNFwiPlxuICAgICAgICA8IS0tIDxheC1zbGlkaW5nLWl0ZW0tcHJlZml4IChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCIgY29sb3I9XCJkYW5nZXJcIiB0ZXh0PVwiZGVsZXRlXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS10cmFzaFwiPjwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1zbGlkaW5nLWl0ZW0tcHJlZml4PiAtLT5cblxuICAgICAgICA8YXgtY29udGVudCBjbGFzcz1cIiFheC1wLTBcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LXNlbGVjdC1ub25lIGF4LWZsZXggYXgtc2l6ZS1mdWxsIGF4LW1iLTIgYXgtZ2FwLTMgYXgtcHktMiBheC1weC00IGF4LWl0ZW1zLWNlbnRlciBheC1yb3VuZGVkLW1kIGF4LWN1cnNvci1wb2ludGVyIGF4LWxpbmUtY2xhbXAtMlwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtYmctbGlnaHRlcl09XCJpc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuSXRlbShpdGVtLmlkKVwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib3BlbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtbXQtMVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uV2l0aE1vZGVsKGl0ZW0uaWQsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsPjwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgIDwvYXgtY2hlY2stYm94PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLSBBdmF0YXIgKyBVbnJlYWQgRG90IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlbGF0aXZlIGF4LXctMTIgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGF4cC11c2VyLWF2YXRhciBbc2l6ZV09XCI0OFwiIFt1c2VySWRdPVwiaXRlbS5zZW5kZXIuaWRcIj48L2F4cC11c2VyLWF2YXRhcj5cbiAgICAgICAgICAgICAgQGlmICghaXRlbS5yZWFkQXQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWFic29sdXRlIGF4LXJpZ2h0LTAgYXgtdG9wLTAgYXgtYmxvY2sgYXgtaC0zIGF4LXctMyBheC1yb3VuZGVkLWZ1bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMSBheC1mbGV4LTEgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbWVkaXVtXCIgW2NsYXNzLmF4LWZvbnQtc2VtaWJvbGRdPVwiIWl0ZW0ucmVhZEF0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uc2VuZGVyLmZ1bGxOYW1lIHx8IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4+4oCiPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQteHMgYXgtb3BhY2l0eS03NVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmNyZWF0ZUF0IHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtbGluZS1jbGFtcC0yXCI+e3sgaXRlbS5ib2R5IH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gQWN0aW9ucyAoZnV0dXJlOiBwZXItaXRlbSBrZWJhYikgLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXgtY29udGVudD5cblxuICAgICAgICA8YXgtc2xpZGluZy1pdGVtLXN1ZmZpeCAob25DbGljayk9XCJzbGlkaW5nSXRlbXNIYW5kbGVyKGl0ZW0sICdtYXJrLWFzLXJlYWQnKVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtZW52ZWxvcGVzLWJ1bGsgZmEteGxcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc2xpZGluZy1pdGVtLXN1ZmZpeD5cblxuICAgICAgICA8YXgtc2xpZGluZy1pdGVtLXN1ZmZpeCAob25DbGljayk9XCJzbGlkaW5nSXRlbXNIYW5kbGVyKGl0ZW0sICdkZWxldGUnKVwiIGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS10cmFzaC1jYW4gZmEteGxcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc2xpZGluZy1pdGVtLXN1ZmZpeD5cbiAgICAgIDwvYXgtc2xpZGluZy1pdGVtPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Rlc2t0b3AgbGV0LWl0ZW0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMyBheC1wLTQgYXgtaXRlbXMtY2VudGVyIGF4LXJvdW5kZWQtbWQgYXgtY3Vyc29yLXBvaW50ZXIgaG92ZXI6YXgtYmctc3VyZmFjZSBheC1tYi0yIGxhc3Q6YXgtbWItMFwiXG4gICAgICAgIFtjbGFzcy5heC1iZy1saWdodGVyXT1cImlzU2VsZWN0ZWQoaXRlbS5pZClcIlxuICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgIChjbGljayk9XCJvcGVuSXRlbShpdGVtLmlkKVwiXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvcGVuQ29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gQGlmIChpc1NlbGVjdGVkKGl0ZW0uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC13LTEgYXgtc2VsZi1zdHJldGNoIGF4LXJvdW5kZWQgYXgtYmctcHJpbWFyeVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgfSAtLT5cbiAgICAgICAgPCEtLSBTZWxlY3QgdmlhIGNoZWNrYm94IC0tPlxuICAgICAgICBAaWYgKGlzRWRpdGluZygpKSB7XG4gICAgICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICAgICAgY2xhc3M9XCJheC1tdC0xXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQoaXRlbS5pZClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uV2l0aE1vZGVsKGl0ZW0uaWQsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1sYWJlbD48L2F4LWxhYmVsPlxuICAgICAgICAgIDwvYXgtY2hlY2stYm94PlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gQXZhdGFyICsgVW5yZWFkIERvdCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlbGF0aXZlIGF4LXctMTIgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8YXhwLXVzZXItYXZhdGFyIFtzaXplXT1cIjQ4XCIgW3VzZXJJZF09XCJpdGVtLnNlbmRlci5pZFwiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgICAgIEBpZiAoIWl0ZW0ucmVhZEF0KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWFic29sdXRlIGF4LXJpZ2h0LTAgYXgtdG9wLTAgYXgtYmxvY2sgYXgtaC0zIGF4LXctMyBheC1yb3VuZGVkLWZ1bGxcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LWZsZXgtMSBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW1cIiBbY2xhc3MuYXgtZm9udC1zZW1pYm9sZF09XCIhaXRlbS5yZWFkQXRcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnNlbmRlci5mdWxsTmFtZSB8fCBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3Bhbj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhzIGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmNyZWF0ZUF0IHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC1saW5lLWNsYW1wLTJcIj57eyBpdGVtLmJvZHkgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQWN0aW9ucyAoZnV0dXJlOiBwZXItaXRlbSBrZWJhYikgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxheC1jb250ZXh0LW1lbnVcbiAgICAgICNjb250ZXh0TWVudVxuICAgICAgW29wZW5Pbl09XCInY2xpY2snXCJcbiAgICAgIFtjbG9zZU9uXT1cIidjbGljaydcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gICAgICAob25PcGVuaW5nKT1cImhhbmRsZUNvbnRleHRNZW51T3BlbmluZygkZXZlbnQpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9heC1jb250ZXh0LW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnKGRvY3VtZW50OmtleWRvd24uZXNjYXBlKSc6ICdkZXNlbGVjdEFsbCgpJyxcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFNsaWRpbmdJdGVtTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXRUaGVtZVNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRldmljZVNlcnZpY2UgPSBpbmplY3QoQVhQRGV2aWNlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29ubmVjdG9yID0gaW5qZWN0KEFYTU5vdGlmaWNhdGlvbkNvbm5lY3RvclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmluaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYUE5vdGlmaWNhdGlvbkRlZmluaXRpb25TZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFN0YXRlICYgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICByZWFkb25seSBsb2FkaW5nID0gdGhpcy5jb25uZWN0b3IubG9hZGluZztcbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlID0gdGhpcy5jb25uZWN0b3IuZXJyb3JNZXNzYWdlO1xuICByZWFkb25seSBub3RpZmljYXRpb25zID0gdGhpcy5jb25uZWN0b3Iubm90aWZpY2F0aW9uTGlzdDtcbiAgcmVhZG9ubHkgdW5yZWFkQ291bnQgPSB0aGlzLmNvbm5lY3Rvci51bnJlYWRDb3VudDtcbiAgcmVhZG9ubHkgdG90YWxDb3VudCA9IHRoaXMuY29ubmVjdG9yLnRvdGFsO1xuXG4gIC8vIExvY2FsIFVJIHN0YXRlXG4gIHJlYWRvbmx5IHNlYXJjaFF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBjb250ZXh0TWVudSA9IHZpZXdDaGlsZDxBWENvbnRleHRNZW51Q29tcG9uZW50PignY29udGV4dE1lbnUnKTtcbiAgLy8gI2lzRWRpdGluZ0VmZiA9IGVmZmVjdCgoKSA9PiB7XG4gIC8vIGlmICh0aGlzLmlzRWRpdGluZygpICYmIHRoaXMuc2VsZWN0ZWRJZHMoKS5zaXplID09PSAwKSB7XG4gIC8vICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgLy8gfVxuICAvLyB9KTtcblxuICByZWFkb25seSBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSAodGhpcy5zZWFyY2hRdWVyeSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMubm90aWZpY2F0aW9ucygpO1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJyA/IGl0ZW1zLmZpbHRlcigobikgPT4gIW4ucmVhZEF0KSA6IGl0ZW1zO1xuICAgIH1cbiAgICBjb25zdCBiYXNlID0gdGhpcy5hY3RpdmVUYWIoKSA9PT0gJ3VucmVhZCcgPyBpdGVtcy5maWx0ZXIoKG4pID0+ICFuLnJlYWRBdCkgOiBpdGVtcztcbiAgICByZXR1cm4gYmFzZS5maWx0ZXIoKG4pID0+IHtcbiAgICAgIGNvbnN0IHRpdGxlID0gKG4udGl0bGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBib2R5ID0gKG4uYm9keSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IHNlbmRlciA9IChuLnNlbmRlcj8uZnVsbE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gdGl0bGUuaW5jbHVkZXMocXVlcnkpIHx8IGJvZHkuaW5jbHVkZXMocXVlcnkpIHx8IHNlbmRlci5pbmNsdWRlcyhxdWVyeSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFRhYiBzdGF0ZTogJ2FsbCcgfCAndW5yZWFkJ1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYiA9IHNpZ25hbDwnYWxsJyB8ICd1bnJlYWQnPignYWxsJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVRhYiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFiKCkpO1xuICBzZWxlY3RlZFRhYigpOiAnYWxsJyB8ICd1bnJlYWQnIHtcbiAgICByZXR1cm4gdGhpcy50YWIoKTtcbiAgfVxuICBzZXRUYWIodjogJ2FsbCcgfCAndW5yZWFkJyk6IHZvaWQge1xuICAgIHRoaXMudGFiLnNldCh2KTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRhYi5zZXQoaW5kZXggPT09IDEgPyAndW5yZWFkJyA6ICdhbGwnKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUGFnZSBJbnRlcmZhY2UgTWV0aG9kcyAgIC0tLS1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gJ05vdGlmaWNhdGlvbnMnO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0UGFnZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5yZWFkID0gdGhpcy51bnJlYWRDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbENvdW50KCk7XG4gICAgaWYgKCF0b3RhbCkge1xuICAgICAgcmV0dXJuICdObyBub3RpZmljYXRpb25zJztcbiAgICB9XG4gICAgcmV0dXJuIHVucmVhZCA+IDAgPyBgJHt1bnJlYWR9IHVucmVhZCBvdXQgb2YgJHt0b3RhbH1gIDogYCR7dG90YWx9IG5vdGlmaWNhdGlvbnNgO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UHJpbWFyeU1lbnVJdGVtcygpOiBQcm9taXNlPEFYUEFjdGlvbk1lbnVJdGVtW10+IHtcbiAgICBjb25zdCBpdGVtczogQVhQQWN0aW9uTWVudUl0ZW1bXSA9IFtdO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnQoKSA+IDApIHtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICB0aXRsZTogJ0RlbGV0ZScsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaCcsXG4gICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2RlbGV0ZS1zZWxlY3RlZCcgfSxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgfSk7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdNYXJrIGFzIHJlYWQnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZW52ZWxvcGVzLWJ1bGsnLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdtYXJrLXNlbGVjdGVkLWFzLXJlYWQnIH0sXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0U2Vjb25kYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBBY3Rpb25NZW51SXRlbVtdID0gW107XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID09PSAwKSB7XG4gICAgICBpdGVtcy5wdXNoKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdSZWZyZXNoJyxcbiAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcm90YXRlJyxcbiAgICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdyZWZyZXNoJyB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdNYXJrIGFsbCBhcyByZWFkJyxcbiAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZW52ZWxvcGVzLWJ1bGsnLFxuICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ21hcmstYWxsLWFzLXJlYWQnIH0sXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMudW5yZWFkQ291bnQoKSA9PT0gMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnU2VsZWN0IGl0ZW1zJyxcbiAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdlZGl0LW1vZGUnIH0sXG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAoY29tbWFuZC5uYW1lKSB7XG4gICAgICBjYXNlICdyZWZyZXNoJzpcbiAgICAgICAgYXdhaXQgdGhpcy5vblJlZnJlc2goKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlLXNlbGVjdGVkJzpcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZWxlY3RlZCgpO1xuICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtYXJrLXNlbGVjdGVkLWFzLXJlYWQnOlxuICAgICAgICBhd2FpdCB0aGlzLm1hcmtTZWxlY3RlZEFzUmVhZCgpO1xuICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtYXJrLWFsbC1hcy1yZWFkJzpcbiAgICAgICAgYXdhaXQgdGhpcy5vbk1hcmtBbGxBc1JlYWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRpdC1tb2RlJzpcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBVSSBIYW5kbGVycyAgIC0tLS1cblxuICBvblNlYXJjaCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQodmFsdWUpO1xuICB9XG5cbiAgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5LnNldCgnJyk7XG4gIH1cblxuICBhc3luYyBvblJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0TGlzdCgpO1xuICB9XG5cbiAgYXN5bmMgb25NYXJrQWxsQXNSZWFkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLm1hcmtBbGxBc1JlYWQoKTtcbiAgfVxuXG4gIC8vIFNlbGVjdGlvbiBzdGF0ZSBmb3IgYnVsayBhY3Rpb25zXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRJZHMgPSBzaWduYWw8U2V0PHN0cmluZz4+KG5ldyBTZXQ8c3RyaW5nPigpKTtcblxuICBzZWxlY3RlZENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZElkcygpLnNpemUpO1xuICBpc1NlbGVjdGVkKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZElkcygpLmhhcyhpZCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb25XaXRoTW9kZWwoaWQ6IHN0cmluZywgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5leHQuYWRkKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dC5kZWxldGUoaWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXh0KTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmZpbHRlcmVkTm90aWZpY2F0aW9ucygpO1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwICYmIGl0ZW1zLmV2ZXJ5KChpKSA9PiB0aGlzLnNlbGVjdGVkSWRzKCkuaGFzKGkuaWQpKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGVja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KHRoaXMuZmlsdGVyZWROb3RpZmljYXRpb25zKCkubWFwKChpKSA9PiBpLmlkKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1hcmtTZWxlY3RlZEFzUmVhZChpdGVtPzogQVhNTm90aWZpY2F0aW9uSXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlkcyA9IGl0ZW0gPyBbaXRlbS5pZF0gOiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgaWYgKGlkcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5tYXJrQXNSZWFkKHsgaWQ6IGlkcyB9KTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KCkpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2VsZWN0ZWQoaXRlbT86IEFYTU5vdGlmaWNhdGlvbkl0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZHMgPSBpdGVtID8gW2l0ZW0uaWRdIDogQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkSWRzKCkpO1xuICAgIGlmIChpZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLmRlbGV0ZU9uZShpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc2V0KG5ldyBTZXQoKSk7XG4gIH1cblxuICBkZXNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0VkaXRpbmcoKSkge1xuICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBSb3cgaW50ZXJhY3Rpb25zXG4gIG9uUm93Q2xpY2soaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uQnlJZChpZCk7XG4gIH1cblxuICBhc3luYyBvcGVuSXRlbShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uQnlJZChpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vYXZvaWQgZG91YmxlIGNsaWNrIG9uIHNlbGVjdGVkIGl0ZW1zXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5ub3RpZmljYXRpb25zKCkuZmluZCgobikgPT4gbi5pZCA9PT0gaWQpO1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBNYXJrIGFzIHJlYWQgKGlkZW1wb3RlbnQgcGVyIHNlcnZpY2UgbG9naWMpXG4gICAgYXdhaXQgdGhpcy5jb25uZWN0b3IubWFya0FzUmVhZCh7IGlkOiBbaWRdIH0pO1xuXG4gICAgLy8gRXhlY3V0ZSBwcm92aWRlciBjbGljayBhY3Rpb24gaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLmRlZmluaXRpb25TZXJ2aWNlLnJlc29sdmUoaXRlbS50eXBlKTtcbiAgICBhd2FpdCBwcm92aWRlcj8uZXhlY3V0ZT8uKHsgbmFtZTogJ2NsaWNrJyB9IGFzIEFYUEV4ZWN1dGVDb21tYW5kLCBpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0aW9uQnlJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQodGhpcy5zZWxlY3RlZElkcygpKTtcbiAgICBpZiAobmV4dC5oYXMoaWQpKSB7XG4gICAgICBuZXh0LmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuYWRkKGlkKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV4dCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICBzbGlkaW5nSXRlbXNIYW5kbGVyKGl0ZW06IEFYTU5vdGlmaWNhdGlvbkl0ZW0sIGFjdGlvbjogJ21hcmstYXMtcmVhZCcgfCAnZGVsZXRlJyk6IHZvaWQge1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdtYXJrLWFzLXJlYWQnOlxuICAgICAgICB0aGlzLm1hcmtTZWxlY3RlZEFzUmVhZChpdGVtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljayhlOiBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50KSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuY29udGV4dEl0ZW0oKTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChlLml0ZW0ubmFtZSkge1xuICAgICAgY2FzZSAnbWFyay1hcy1yZWFkJzpcbiAgICAgICAgdGhpcy5tYXJrU2VsZWN0ZWRBc1JlYWQoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGhhbmRsZUNvbnRleHRNZW51T3BlbmluZyhlOiBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50KSB7XG4gICAgZS5pdGVtcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ21hcmstYXMtcmVhZCcsXG4gICAgICAgIHRleHQ6ICdNYXJrIGFzIHJlYWQnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZW52ZWxvcGVzLWJ1bGsnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGUuaXRlbXMucHVzaCh7XG4gICAgICBuYW1lOiAnZGVsZXRlJyxcbiAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoLWNhbicsXG4gICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgfSk7XG4gIH1cbiAgcHJvdGVjdGVkIGNvbnRleHRJdGVtID0gc2lnbmFsPEFYTU5vdGlmaWNhdGlvbkl0ZW0gfCBudWxsPihudWxsKTtcbiAgb3BlbkNvbnRleHRNZW51KGU6IE1vdXNlRXZlbnQsIGl0ZW06IEFYTU5vdGlmaWNhdGlvbkl0ZW0pIHtcbiAgICBpZiAodGhpcy5pc0VkaXRpbmcoKSB8fCB0aGlzLnNlbGVjdGVkQ291bnQoKSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuY29udGV4dE1lbnUoKT8uc2hvd0F0KHtcbiAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgIHk6IGUuY2xpZW50WSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRleHRJdGVtLnNldChpdGVtKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgZm9yIFN0YXRlIE1lc3NhZ2UgICAtLS0tXG5cbiAgZ2V0Tm90aWZpY2F0aW9uSWNvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgICAgIHJldHVybiAnZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgcmV0dXJuICdmYS1zb2xpZCBmYS1jaGVjay1jaXJjbGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLWJlbGwnO1xuICAgIH1cbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VhcmNoUXVlcnkoKSkge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5uby1yZXN1bHRzLnRpdGxlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiKCkgPT09ICd1bnJlYWQnKSB7XG4gICAgICByZXR1cm4gJ0Bub3RpZmljYXRpb24tbWFuYWdlbWVudDpzdGF0ZS1tZXNzYWdlLmFsbC1jYXVnaHQtdXAudGl0bGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0Bub3RpZmljYXRpb24tbWFuYWdlbWVudDpzdGF0ZS1tZXNzYWdlLm5vLW5vdGlmaWNhdGlvbnMudGl0bGUnO1xuICAgIH1cbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvbkRlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VhcmNoUXVlcnkoKSkge1xuICAgICAgcmV0dXJuIGBXZSBjb3VsZG4ndCBmaW5kIGFueXRoaW5nIG1hdGNoaW5nIFwiJHt0aGlzLnNlYXJjaFF1ZXJ5KCl9XCIuYDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiKCkgPT09ICd1bnJlYWQnKSB7XG4gICAgICByZXR1cm4gJ0Bub3RpZmljYXRpb24tbWFuYWdlbWVudDpzdGF0ZS1tZXNzYWdlLmFsbC1jYXVnaHQtdXAuZGVzY3JpcHRpb24nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0Bub3RpZmljYXRpb24tbWFuYWdlbWVudDpzdGF0ZS1tZXNzYWdlLm5vLW5vdGlmaWNhdGlvbnMuZGVzY3JpcHRpb24nO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19"],"names":["i1","i2","i7","i12"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,4BAA4B;AACrE,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,2BAA2B,EAAE,eAAe;AACpE,qBAAqB;AACrB,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,iBAAiB;AACzC,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,cAAc;AACtC,wBAAwB,gBAAgB;AACxC,wBAAwB,gBAAgB;AACxC,wBAAwB,cAAc;AACtC,wBAAwB,aAAa;AACrC,wBAAwB,gBAAgB;AACxC,wBAAwB,sBAAsB;AAC9C,wBAAwB,iBAAiB;AACzC,wBAAwB,sBAAsB;AAC9C,wBAAwB,sBAAsB;AAC9C,wBAAwB,4BAA4B;AACpD,wBAAwB,wBAAwB;AAChD,wBAAwB,sBAAsB;AAC9C,wBAAwB,aAAa;AACrC,wBAAwB,mBAAmB;AAC3C,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;;;"}
@@ -2469,7 +2469,7 @@ function routesFactory() {
2469
2469
  children: [
2470
2470
  {
2471
2471
  path: '',
2472
- loadComponent: () => import('./acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs').then((c) => c.AXMNotificationPageComponent),
2472
+ loadComponent: () => import('./acorex-modules-notification-management-notification-page.component-XCr4A447.mjs').then((c) => c.AXMNotificationPageComponent),
2473
2473
  data: { reuse: true },
2474
2474
  },
2475
2475
  ],
@@ -23,10 +23,11 @@ import * as i1$1 from '@angular/forms';
23
23
  import { FormsModule } from '@angular/forms';
24
24
  import { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';
25
25
  import { merge, filter, startWith, firstValueFrom } from 'rxjs';
26
+ import { AXLocaleService } from '@acorex/core/locale';
27
+ import { AXPDeviceService } from '@acorex/platform/core';
26
28
  import { AXPPageStatus } from '@acorex/platform/layout/widget-core';
27
29
  import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
28
30
  import { isNil, isEmpty } from 'lodash-es';
29
- import { AXLocaleService } from '@acorex/core/locale';
30
31
  import * as i2 from '@acorex/components/tree-view';
31
32
  import { AXTreeViewModule } from '@acorex/components/tree-view';
32
33
  import { AXPWorkflowService } from '@acorex/platform/workflow';
@@ -40,15 +41,16 @@ const AXPReportRunnerRootViewModel = signalStore(withState(() => ({
40
41
  searchExpression: null,
41
42
  //
42
43
  status: AXPPageStatus.Processing,
43
- })), withComputed((store, layout = inject(AXPLayoutThemeService)) => ({
44
+ })), withComputed((store, deviceService = inject(AXPDeviceService)) => ({
44
45
  searchResults: computed(() => []),
45
46
  hasActiveCategory: computed(() => store.activeCategory() != null),
46
- showSideMenu: computed(() => layout.isLarge()),
47
+ showSideMenu: computed(() => deviceService.isLarge()),
47
48
  isSearching: computed(() => store.searchExpression() != null),
48
49
  isBusy: computed(() => store.status() == AXPPageStatus.Processing),
49
50
  isLoaded: computed(() => store.activeCategory() != null),
50
51
  title: computed(() => store.activeCategory()?.title ?? `@${RootConfig.config.i18n}:report-runner.terms.page-title`),
51
- description: computed(() => store.activeCategory()?.description ?? `@${RootConfig.config.i18n}:report-runner.components.report-runner.description`),
52
+ description: computed(() => store.activeCategory()?.description ??
53
+ `@${RootConfig.config.i18n}:report-runner.components.report-runner.description`),
52
54
  })), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService)) => ({
53
55
  /**
54
56
  * Load root categories
@@ -159,8 +161,7 @@ const AXPReportRunnerRootViewModel = signalStore(withState(() => ({
159
161
  },
160
162
  })), withHooks((store, translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({
161
163
  async onInit() {
162
- merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => {
163
- });
164
+ merge(translationService.langChanges$, localeService.profileChanged$).subscribe(async () => { });
164
165
  //
165
166
  await store.loadRootCategories();
166
167
  },
@@ -498,4 +499,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
498
499
  }] });
499
500
 
500
501
  export { AXMReportRunnerRootPageComponent };
501
- //# sourceMappingURL=acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs.map
502
+ //# sourceMappingURL=acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map