@c8y/ngx-components 1021.67.0 → 1021.70.1

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 (156) hide show
  1. package/core/common/bytes.pipe.d.ts +26 -10
  2. package/core/common/bytes.pipe.d.ts.map +1 -1
  3. package/echart/charts.component.d.ts +14 -3
  4. package/echart/charts.component.d.ts.map +1 -1
  5. package/esm2022/core/common/bytes.pipe.mjs +47 -18
  6. package/esm2022/core/data-grid/data-grid.component.mjs +3 -3
  7. package/esm2022/echart/charts.component.mjs +50 -3
  8. package/esm2022/messaging-management/api/model/backlogQuota.mjs +2 -0
  9. package/esm2022/messaging-management/api/model/namespace.mjs +2 -0
  10. package/esm2022/messaging-management/api/model/namespaceDetails.mjs +2 -0
  11. package/esm2022/messaging-management/api/model/namespaceList.mjs +2 -0
  12. package/esm2022/messaging-management/api/model/namespacePolicies.mjs +2 -0
  13. package/esm2022/messaging-management/api/model/namespacePublishers.mjs +2 -0
  14. package/esm2022/messaging-management/api/model/namespaceSubscribers.mjs +2 -0
  15. package/esm2022/messaging-management/api/model/namespaceTopics.mjs +2 -0
  16. package/esm2022/messaging-management/api/model/pageStatistics.mjs +2 -0
  17. package/esm2022/messaging-management/api/model/pageable.mjs +2 -0
  18. package/esm2022/messaging-management/api/model/sortable.mjs +2 -0
  19. package/esm2022/messaging-management/api/model/subscriber.mjs +2 -0
  20. package/esm2022/messaging-management/api/model/subscriberFilters.mjs +2 -0
  21. package/esm2022/messaging-management/api/model/subscriberList.mjs +2 -0
  22. package/esm2022/messaging-management/api/model/subscriberToDelete.mjs +2 -0
  23. package/esm2022/messaging-management/api/model/topic.mjs +2 -0
  24. package/esm2022/messaging-management/api/model/topicDetailFilters.mjs +2 -0
  25. package/esm2022/messaging-management/api/model/topicList.mjs +2 -0
  26. package/esm2022/messaging-management/api/model/topicListFilters.mjs +2 -0
  27. package/esm2022/messaging-management/api/model/topicType.mjs +9 -0
  28. package/esm2022/messaging-management/api/services/messaging-namespaces.service.mjs +83 -0
  29. package/esm2022/messaging-management/api/services/messaging-subscribers.service.mjs +55 -0
  30. package/esm2022/messaging-management/api/services/messaging-topics.service.mjs +48 -0
  31. package/esm2022/messaging-management/c8y-ngx-components-messaging-management.mjs +5 -0
  32. package/esm2022/messaging-management/constants.mjs +4 -0
  33. package/esm2022/messaging-management/index.mjs +2 -0
  34. package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.mjs +43 -0
  35. package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.mjs +36 -0
  36. package/esm2022/messaging-management/messaging/namespace-list/namespace-list.component.mjs +51 -0
  37. package/esm2022/messaging-management/messaging/shared/usage/usage.component.mjs +68 -0
  38. package/esm2022/messaging-management/messaging/topic/topic-list-view.component.mjs +81 -0
  39. package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.mjs +220 -0
  40. package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.mjs +137 -0
  41. package/esm2022/messaging-management/messaging/topic/topics-data-grid.service.mjs +113 -0
  42. package/esm2022/messaging-management/messaging-management.guard.mjs +40 -0
  43. package/esm2022/messaging-management/messaging-management.module.mjs +72 -0
  44. package/esm2022/messaging-management/navigator/messaging-navigator-factory.mjs +55 -0
  45. package/esm2022/messaging-management/navigator/topic-details-tab.factory.mjs +33 -0
  46. package/esm2022/messaging-management/utils/backlog-quota-limit.pipe.mjs +32 -0
  47. package/esm2022/messaging-management/utils/namespace-props.mjs +23 -0
  48. package/esm2022/messaging-management/utils/time-to-live.pipe.mjs +122 -0
  49. package/esm2022/operations/device-selector/device-selector.component.mjs +5 -1
  50. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +18 -3
  51. package/fesm2022/c8y-ngx-components-echart.mjs +49 -2
  52. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-messaging-management.mjs +1225 -0
  54. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -0
  55. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +4 -0
  56. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +17 -2
  58. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components.mjs +49 -22
  60. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  61. package/locales/de.po +272 -5
  62. package/locales/es.po +271 -4
  63. package/locales/fr.po +272 -5
  64. package/locales/ja_JP.po +272 -5
  65. package/locales/ko.po +271 -4
  66. package/locales/locales.pot +240 -0
  67. package/locales/nl.po +271 -4
  68. package/locales/pl.po +271 -4
  69. package/locales/pt_BR.po +272 -5
  70. package/locales/zh_CN.po +271 -4
  71. package/locales/zh_TW.po +272 -5
  72. package/messaging-management/api/model/backlogQuota.d.ts +14 -0
  73. package/messaging-management/api/model/backlogQuota.d.ts.map +1 -0
  74. package/messaging-management/api/model/namespace.d.ts +13 -0
  75. package/messaging-management/api/model/namespace.d.ts.map +1 -0
  76. package/messaging-management/api/model/namespaceDetails.d.ts +8 -0
  77. package/messaging-management/api/model/namespaceDetails.d.ts.map +1 -0
  78. package/messaging-management/api/model/namespaceList.d.ts +5 -0
  79. package/messaging-management/api/model/namespaceList.d.ts.map +1 -0
  80. package/messaging-management/api/model/namespacePolicies.d.ts +10 -0
  81. package/messaging-management/api/model/namespacePolicies.d.ts.map +1 -0
  82. package/messaging-management/api/model/namespacePublishers.d.ts +4 -0
  83. package/messaging-management/api/model/namespacePublishers.d.ts.map +1 -0
  84. package/messaging-management/api/model/namespaceSubscribers.d.ts +4 -0
  85. package/messaging-management/api/model/namespaceSubscribers.d.ts.map +1 -0
  86. package/messaging-management/api/model/namespaceTopics.d.ts +5 -0
  87. package/messaging-management/api/model/namespaceTopics.d.ts.map +1 -0
  88. package/messaging-management/api/model/pageStatistics.d.ts +12 -0
  89. package/messaging-management/api/model/pageStatistics.d.ts.map +1 -0
  90. package/messaging-management/api/model/pageable.d.ts +8 -0
  91. package/messaging-management/api/model/pageable.d.ts.map +1 -0
  92. package/messaging-management/api/model/sortable.d.ts +6 -0
  93. package/messaging-management/api/model/sortable.d.ts.map +1 -0
  94. package/messaging-management/api/model/subscriber.d.ts +28 -0
  95. package/messaging-management/api/model/subscriber.d.ts.map +1 -0
  96. package/messaging-management/api/model/subscriberFilters.d.ts +13 -0
  97. package/messaging-management/api/model/subscriberFilters.d.ts.map +1 -0
  98. package/messaging-management/api/model/subscriberList.d.ts +7 -0
  99. package/messaging-management/api/model/subscriberList.d.ts.map +1 -0
  100. package/messaging-management/api/model/subscriberToDelete.d.ts +12 -0
  101. package/messaging-management/api/model/subscriberToDelete.d.ts.map +1 -0
  102. package/messaging-management/api/model/topic.d.ts +52 -0
  103. package/messaging-management/api/model/topic.d.ts.map +1 -0
  104. package/messaging-management/api/model/topicDetailFilters.d.ts +9 -0
  105. package/messaging-management/api/model/topicDetailFilters.d.ts.map +1 -0
  106. package/messaging-management/api/model/topicList.d.ts +7 -0
  107. package/messaging-management/api/model/topicList.d.ts.map +1 -0
  108. package/messaging-management/api/model/topicListFilters.d.ts +12 -0
  109. package/messaging-management/api/model/topicListFilters.d.ts.map +1 -0
  110. package/messaging-management/api/model/topicType.d.ts +8 -0
  111. package/messaging-management/api/model/topicType.d.ts.map +1 -0
  112. package/messaging-management/api/services/messaging-namespaces.service.d.ts +52 -0
  113. package/messaging-management/api/services/messaging-namespaces.service.d.ts.map +1 -0
  114. package/messaging-management/api/services/messaging-subscribers.service.d.ts +30 -0
  115. package/messaging-management/api/services/messaging-subscribers.service.d.ts.map +1 -0
  116. package/messaging-management/api/services/messaging-topics.service.d.ts +21 -0
  117. package/messaging-management/api/services/messaging-topics.service.d.ts.map +1 -0
  118. package/messaging-management/c8y-ngx-components-messaging-management.d.ts.map +1 -0
  119. package/messaging-management/constants.d.ts +4 -0
  120. package/messaging-management/constants.d.ts.map +1 -0
  121. package/messaging-management/index.d.ts +2 -0
  122. package/messaging-management/index.d.ts.map +1 -0
  123. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts +29 -0
  124. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -0
  125. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts +15 -0
  126. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts.map +1 -0
  127. package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts +17 -0
  128. package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts.map +1 -0
  129. package/messaging-management/messaging/shared/usage/usage.component.d.ts +40 -0
  130. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -0
  131. package/messaging-management/messaging/topic/topic-list-view.component.d.ts +38 -0
  132. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -0
  133. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts +21 -0
  134. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -0
  135. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts +52 -0
  136. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -0
  137. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts +13 -0
  138. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -0
  139. package/messaging-management/messaging-management.guard.d.ts +12 -0
  140. package/messaging-management/messaging-management.guard.d.ts.map +1 -0
  141. package/messaging-management/messaging-management.module.d.ts +7 -0
  142. package/messaging-management/messaging-management.module.d.ts.map +1 -0
  143. package/messaging-management/navigator/messaging-navigator-factory.d.ts +18 -0
  144. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -0
  145. package/messaging-management/navigator/topic-details-tab.factory.d.ts +15 -0
  146. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -0
  147. package/messaging-management/utils/backlog-quota-limit.pipe.d.ts +13 -0
  148. package/messaging-management/utils/backlog-quota-limit.pipe.d.ts.map +1 -0
  149. package/messaging-management/utils/namespace-props.d.ts +10 -0
  150. package/messaging-management/utils/namespace-props.d.ts.map +1 -0
  151. package/messaging-management/utils/time-to-live.pipe.d.ts +16 -0
  152. package/messaging-management/utils/time-to-live.pipe.d.ts.map +1 -0
  153. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  154. package/package.json +1 -1
  155. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +2 -0
  156. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
@@ -0,0 +1,113 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { BaseColumn, gettext } from '@c8y/ngx-components';
3
+ import { MessagingTopicsService } from '../../api/services/messaging-topics.service';
4
+ import * as i0 from "@angular/core";
5
+ export class TopicsDataGridService {
6
+ constructor() {
7
+ this.topicsService = inject(MessagingTopicsService);
8
+ }
9
+ getColumns() {
10
+ return [
11
+ this.createColumn({
12
+ name: 'name',
13
+ header: gettext('Name'),
14
+ path: 'name',
15
+ filterable: true,
16
+ filteringConfig: {
17
+ fields: [
18
+ {
19
+ key: 'name',
20
+ type: 'input',
21
+ props: {
22
+ label: gettext('Filter topics by partial name'),
23
+ placeholder: 'myTopic',
24
+ required: true
25
+ }
26
+ }
27
+ ],
28
+ getFilter(model) {
29
+ return model.name;
30
+ }
31
+ }
32
+ }),
33
+ this.createColumn({
34
+ name: 'msgRateIn',
35
+ header: gettext('Message rate in (msg/s)'),
36
+ path: 'msgRateIn'
37
+ }),
38
+ this.createColumn({
39
+ name: 'msgRateOut',
40
+ header: gettext('Message rate out (msg/s)'),
41
+ path: 'msgRateOut'
42
+ }),
43
+ this.createColumn({
44
+ name: 'subscribers',
45
+ header: gettext('Subscribers'),
46
+ path: 'subscribers'
47
+ }),
48
+ this.createColumn({
49
+ name: 'backlogSize',
50
+ header: gettext('Message backlog'),
51
+ path: 'backlogSize'
52
+ }),
53
+ this.createColumn({
54
+ name: 'backlogUsagePercentage',
55
+ header: gettext('Used backlog'),
56
+ path: 'backlogUsagePercentage',
57
+ sortOrder: 'desc'
58
+ })
59
+ ];
60
+ }
61
+ async getServerSideData(tenantId, namespaceId, dataSourceModifier) {
62
+ const topicFilters = this.getTopicFilters(tenantId, namespaceId, dataSourceModifier);
63
+ const { res, data, paging } = await this.topicsService.list(topicFilters);
64
+ const filteredSize = paging.totalElements;
65
+ const size = (await this.topicsService.list({
66
+ ...topicFilters,
67
+ currentPage: 1,
68
+ pageSize: 1
69
+ })).paging.totalPages;
70
+ return {
71
+ res,
72
+ data,
73
+ paging,
74
+ size,
75
+ filteredSize
76
+ };
77
+ }
78
+ createColumn(columnProps) {
79
+ const column = new BaseColumn();
80
+ Object.assign(column, columnProps);
81
+ return column;
82
+ }
83
+ getTopicFilters(tenantId, namespaceId, dataSourceModifier) {
84
+ const topicFilters = {
85
+ tenant: tenantId,
86
+ namespace: namespaceId,
87
+ currentPage: dataSourceModifier.pagination.currentPage,
88
+ pageSize: dataSourceModifier.pagination.pageSize
89
+ };
90
+ return dataSourceModifier.columns.reduce((topicFilters, column) => {
91
+ if (column.filterable) {
92
+ if (column.filterPredicate) {
93
+ topicFilters[column.path] = column.filterPredicate;
94
+ }
95
+ if (column.externalFilterQuery) {
96
+ topicFilters[column.path] = column.filteringConfig.getFilter(column.externalFilterQuery);
97
+ }
98
+ }
99
+ if (column.sortable && column.sortOrder) {
100
+ const sortPath = column.sortingConfig?.pathSortingConfigs?.[0]?.path || column.path;
101
+ topicFilters.sort = `${sortPath},${column.sortOrder}`;
102
+ }
103
+ return topicFilters;
104
+ }, topicFilters);
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicsDataGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
107
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicsDataGridService, providedIn: 'root' }); }
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicsDataGridService, decorators: [{
110
+ type: Injectable,
111
+ args: [{ providedIn: 'root' }]
112
+ }] });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWNzLWRhdGEtZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nL3RvcGljL3RvcGljcy1kYXRhLWdyaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsVUFBVSxFQUdWLE9BQU8sRUFFUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUdyRixNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVksa0JBQWEsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQXFIMUQ7SUFuSEMsVUFBVTtRQUNSLE9BQU87WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDdkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGVBQWUsRUFBRTtvQkFDZixNQUFNLEVBQUU7d0JBQ047NEJBQ0UsR0FBRyxFQUFFLE1BQU07NEJBQ1gsSUFBSSxFQUFFLE9BQU87NEJBQ2IsS0FBSyxFQUFFO2dDQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsK0JBQStCLENBQUM7Z0NBQy9DLFdBQVcsRUFBRSxTQUFTO2dDQUN0QixRQUFRLEVBQUUsSUFBSTs2QkFDZjt5QkFDRjtxQkFDRjtvQkFDRCxTQUFTLENBQUMsS0FBdUI7d0JBQy9CLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDcEIsQ0FBQztpQkFDRjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsV0FBVztnQkFDakIsTUFBTSxFQUFF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Z0JBQzNGLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNwRixZQUFZLENBQUMsSUFBSSxHQUFHLEdBQUcsUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4RCxDQUFDO1lBRUQsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ25CLENBQUM7K0dBckhVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7NEZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2VDb2x1bW4sXG4gIENvbHVtbixcbiAgRGF0YVNvdXJjZU1vZGlmaWVyLFxuICBnZXR0ZXh0LFxuICBTZXJ2ZXJTaWRlRGF0YVJlc3VsdFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1lc3NhZ2luZ1RvcGljTGlzdEZpbHRlcnMgfSBmcm9tICcuLi8uLi9hcGkvbW9kZWwvdG9waWNMaXN0RmlsdGVycyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdUb3BpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL21lc3NhZ2luZy10b3BpY3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVG9waWNzRGF0YUdyaWRTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIHRvcGljc1NlcnZpY2UgPSBpbmplY3QoTWVzc2FnaW5nVG9waWNzU2VydmljZSk7XG5cbiAgZ2V0Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY3JlYXRlQ29sdW1uKHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ05hbWUnKSxcbiAgICAgICAgcGF0aDogJ25hbWUnLFxuICAgICAgICBmaWx0ZXJhYmxlOiB0cnVlLFxuICAgICAgICBmaWx0ZXJpbmdDb25maWc6IHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiAnbmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ZpbHRlciB0b3BpY3MgYnkgcGFydGlhbCBuYW1lJyksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdteVRvcGljJyxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBnZXRGaWx0ZXIobW9kZWw6IHsgbmFtZTogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRoaXMuY3JlYXRlQ29sdW1uKHtcbiAgICAgICAgbmFtZTogJ21zZ1JhdGVJbicsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnTWVzc2FnZSByYXRlIGluIChtc2cvcyknKSxcbiAgICAgICAgcGF0aDogJ21zZ1JhdGVJbidcbiAgICAgIH0pLFxuICAgICAgdGhpcy5jcmVhdGVDb2x1bW4oe1xuICAgICAgICBuYW1lOiAnbXNnUmF0ZU91dCcsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnTWVzc2FnZSByYXRlIG91dCAobXNnL3MpJyksXG4gICAgICAgIHBhdGg6ICdtc2dSYXRlT3V0J1xuICAgICAgfSksXG4gICAgICB0aGlzLmNyZWF0ZUNvbHVtbih7XG4gICAgICAgIG5hbWU6ICdzdWJzY3JpYmVycycsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU3Vic2NyaWJlcnMnKSxcbiAgICAgICAgcGF0aDogJ3N1YnNjcmliZXJzJ1xuICAgICAgfSksXG4gICAgICB0aGlzLmNyZWF0ZUNvbHVtbih7XG4gICAgICAgIG5hbWU6ICdiYWNrbG9nU2l6ZScsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnTWVzc2FnZSBiYWNrbG9nJyksXG4gICAgICAgIHBhdGg6ICdiYWNrbG9nU2l6ZSdcbiAgICAgIH0pLFxuICAgICAgdGhpcy5jcmVhdGVDb2x1bW4oe1xuICAgICAgICBuYW1lOiAnYmFja2xvZ1VzYWdlUGVyY2VudGFnZScsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnVXNlZCBiYWNrbG9nJyksXG4gICAgICAgIHBhdGg6ICdiYWNrbG9nVXNhZ2VQZXJjZW50YWdlJyxcbiAgICAgICAgc29ydE9yZGVyOiAnZGVzYydcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlcnZlclNpZGVEYXRhKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlSWQ6IHN0cmluZyxcbiAgICBkYXRhU291cmNlTW9kaWZpZXI6IERhdGFTb3VyY2VNb2RpZmllclxuICApOiBQcm9taXNlPFNlcnZlclNpZGVEYXRhUmVzdWx0PiB7XG4gICAgY29uc3QgdG9waWNGaWx0ZXJzID0gdGhpcy5nZXRUb3BpY0ZpbHRlcnModGVuYW50SWQsIG5hbWVzcGFjZUlkLCBkYXRhU291cmNlTW9kaWZpZXIpO1xuICAgIGNvbnN0IHsgcmVzLCBkYXRhLCBwYWdpbmcgfSA9IGF3YWl0IHRoaXMudG9waWNzU2VydmljZS5saXN0KHRvcGljRmlsdGVycyk7XG4gICAgY29uc3QgZmlsdGVyZWRTaXplID0gcGFnaW5nLnRvdGFsRWxlbWVudHM7XG4gICAgY29uc3Qgc2l6ZSA9IChcbiAgICAgIGF3YWl0IHRoaXMudG9waWNzU2VydmljZS5saXN0KHtcbiAgICAgICAgLi4udG9waWNGaWx0ZXJzLFxuICAgICAgICBjdXJyZW50UGFnZTogMSxcbiAgICAgICAgcGFnZVNpemU6IDFcbiAgICAgIH0pXG4gICAgKS5wYWdpbmcudG90YWxQYWdlcztcblxuICAgIHJldHVybiB7XG4gICAgICByZXMsXG4gICAgICBkYXRhLFxuICAgICAgcGFnaW5nLFxuICAgICAgc2l6ZSxcbiAgICAgIGZpbHRlcmVkU2l6ZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbHVtbihjb2x1bW5Qcm9wczogUGFydGlhbDxCYXNlQ29sdW1uPik6IEJhc2VDb2x1bW4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBCYXNlQ29sdW1uKCk7XG4gICAgT2JqZWN0LmFzc2lnbihjb2x1bW4sIGNvbHVtblByb3BzKTtcbiAgICByZXR1cm4gY29sdW1uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3BpY0ZpbHRlcnMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBuYW1lc3BhY2VJZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2VNb2RpZmllcjogRGF0YVNvdXJjZU1vZGlmaWVyXG4gICk6IE1lc3NhZ2luZ1RvcGljTGlzdEZpbHRlcnMge1xuICAgIGNvbnN0IHRvcGljRmlsdGVyczogTWVzc2FnaW5nVG9waWNMaXN0RmlsdGVycyA9IHtcbiAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZUlkLFxuICAgICAgY3VycmVudFBhZ2U6IGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlLFxuICAgICAgcGFnZVNpemU6IGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLnBhZ2VTaXplXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRhU291cmNlTW9kaWZpZXIuY29sdW1ucy5yZWR1Y2UoKHRvcGljRmlsdGVycywgY29sdW1uKSA9PiB7XG4gICAgICBpZiAoY29sdW1uLmZpbHRlcmFibGUpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWx0ZXJQcmVkaWNhdGUpIHtcbiAgICAgICAgICB0b3BpY0ZpbHRlcnNbY29sdW1uLnBhdGhdID0gY29sdW1uLmZpbHRlclByZWRpY2F0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4uZXh0ZXJuYWxGaWx0ZXJRdWVyeSkge1xuICAgICAgICAgIHRvcGljRmlsdGVyc1tjb2x1bW4ucGF0aF0gPSBjb2x1bW4uZmlsdGVyaW5nQ29uZmlnLmdldEZpbHRlcihjb2x1bW4uZXh0ZXJuYWxGaWx0ZXJRdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbHVtbi5zb3J0YWJsZSAmJiBjb2x1bW4uc29ydE9yZGVyKSB7XG4gICAgICAgIGNvbnN0IHNvcnRQYXRoID0gY29sdW1uLnNvcnRpbmdDb25maWc/LnBhdGhTb3J0aW5nQ29uZmlncz8uWzBdPy5wYXRoIHx8IGNvbHVtbi5wYXRoO1xuICAgICAgICB0b3BpY0ZpbHRlcnMuc29ydCA9IGAke3NvcnRQYXRofSwke2NvbHVtbi5zb3J0T3JkZXJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRvcGljRmlsdGVycztcbiAgICB9LCB0b3BpY0ZpbHRlcnMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { Permissions } from '@c8y/ngx-components';
3
+ import { ApplicationService, FeatureService, UserService } from '@c8y/client';
4
+ import { MESSAGING_MANAGEMENT_FEATURE_KEY, MESSAGING_MANAGEMENT_MICROSERVICE_NAME } from './constants';
5
+ import * as i0 from "@angular/core";
6
+ export class MessagingManagementGuard {
7
+ constructor() {
8
+ this.userService = inject(UserService);
9
+ this.featureService = inject(FeatureService);
10
+ this.applicationService = inject(ApplicationService);
11
+ this.cachedResult = null;
12
+ }
13
+ async canActivate() {
14
+ if (this.cachedResult !== null) {
15
+ return this.cachedResult;
16
+ }
17
+ const currentUser = (await this.userService.current()).data;
18
+ const hasRequiredRoles = this.userService.hasAnyRole(currentUser, [
19
+ Permissions.ROLE_TENANT_STATISTICS_READ,
20
+ Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
21
+ ]);
22
+ const featureEnabled = await this.featureService
23
+ .detail(MESSAGING_MANAGEMENT_FEATURE_KEY)
24
+ .then(({ data }) => data.active)
25
+ .catch(() => false);
26
+ const microserviceSubscribed = await this.applicationService
27
+ .isAvailable(MESSAGING_MANAGEMENT_MICROSERVICE_NAME)
28
+ .then(({ data: subscribed }) => subscribed)
29
+ .catch(() => false);
30
+ this.cachedResult = hasRequiredRoles && featureEnabled && microserviceSubscribed;
31
+ return this.cachedResult;
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementGuard, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementGuard, decorators: [{
37
+ type: Injectable,
38
+ args: [{ providedIn: 'root' }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW1hbmFnZW1lbnQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC9tZXNzYWdpbmctbWFuYWdlbWVudC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUUsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdkMsTUFBTSxhQUFhLENBQUM7O0FBR3JCLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVoRCxpQkFBWSxHQUFtQixJQUFJLENBQUM7S0EyQjdDO0lBekJDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7WUFDaEUsV0FBVyxDQUFDLDJCQUEyQjtZQUN2QyxXQUFXLENBQUMsNEJBQTRCO1NBQ3pDLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWM7YUFDN0MsTUFBTSxDQUFDLGdDQUFnQyxDQUFDO2FBQ3hDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDL0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRCLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCO2FBQ3pELFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQzthQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQzFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsWUFBWSxHQUFHLGdCQUFnQixJQUFJLGNBQWMsSUFBSSxzQkFBc0IsQ0FBQztRQUVqRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzsrR0EvQlUsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FEWCxNQUFNOzs0RkFDbkIsd0JBQXdCO2tCQURwQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSwgRmVhdHVyZVNlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgTUVTU0FHSU5HX01BTkFHRU1FTlRfRkVBVFVSRV9LRVksXG4gIE1FU1NBR0lOR19NQU5BR0VNRU5UX01JQ1JPU0VSVklDRV9OQU1FXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHByaXZhdGUgdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlID0gaW5qZWN0KEZlYXR1cmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoQXBwbGljYXRpb25TZXJ2aWNlKTtcblxuICBwcml2YXRlIGNhY2hlZFJlc3VsdDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuXG4gIGFzeW5jIGNhbkFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNhY2hlZFJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkUmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gKGF3YWl0IHRoaXMudXNlclNlcnZpY2UuY3VycmVudCgpKS5kYXRhO1xuICAgIGNvbnN0IGhhc1JlcXVpcmVkUm9sZXMgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc0FueVJvbGUoY3VycmVudFVzZXIsIFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX1NUQVRJU1RJQ1NfUkVBRCxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU5cbiAgICBdKTtcblxuICAgIGNvbnN0IGZlYXR1cmVFbmFibGVkID0gYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZVxuICAgICAgLmRldGFpbChNRVNTQUdJTkdfTUFOQUdFTUVOVF9GRUFUVVJFX0tFWSlcbiAgICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5hY3RpdmUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuXG4gICAgY29uc3QgbWljcm9zZXJ2aWNlU3Vic2NyaWJlZCA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlXG4gICAgICAuaXNBdmFpbGFibGUoTUVTU0FHSU5HX01BTkFHRU1FTlRfTUlDUk9TRVJWSUNFX05BTUUpXG4gICAgICAudGhlbigoeyBkYXRhOiBzdWJzY3JpYmVkIH0pID0+IHN1YnNjcmliZWQpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuXG4gICAgdGhpcy5jYWNoZWRSZXN1bHQgPSBoYXNSZXF1aXJlZFJvbGVzICYmIGZlYXR1cmVFbmFibGVkICYmIG1pY3Jvc2VydmljZVN1YnNjcmliZWQ7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZWRSZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { hookNavigator, hookRoute, hookTab } from '@c8y/ngx-components';
3
+ import { MessagingNavigatorNodeFactory } from './navigator/messaging-navigator-factory';
4
+ import { NamespaceListComponent } from './messaging/namespace-list/namespace-list.component';
5
+ import { TopicListViewComponent } from './messaging/topic/topic-list-view.component';
6
+ import { TopicSubscribersViewComponent } from './messaging/topic/topic-subscribers-view/topic-subscribers-view.component';
7
+ import { TopicDetailsTabFactory } from './navigator/topic-details-tab.factory';
8
+ import { basePath } from './constants';
9
+ import { MessagingManagementGuard } from './messaging-management.guard';
10
+ import * as i0 from "@angular/core";
11
+ export class MessagingManagementModule {
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule }); }
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule, providers: [
15
+ hookRoute([
16
+ {
17
+ path: basePath,
18
+ component: NamespaceListComponent,
19
+ canActivate: [MessagingManagementGuard]
20
+ },
21
+ {
22
+ path: basePath + '/namespace/:namespace',
23
+ component: TopicListViewComponent,
24
+ canActivate: [MessagingManagementGuard]
25
+ },
26
+ {
27
+ path: basePath + '/namespace/:namespace/topic/:topic',
28
+ redirectTo: basePath + '/namespace/:namespace/topic/:topic/subscribers',
29
+ pathMatch: 'full'
30
+ },
31
+ {
32
+ path: basePath + '/namespace/:namespace/topic/:topic/subscribers',
33
+ component: TopicSubscribersViewComponent,
34
+ canActivate: [MessagingManagementGuard]
35
+ }
36
+ ]),
37
+ hookTab(TopicDetailsTabFactory),
38
+ hookNavigator(MessagingNavigatorNodeFactory)
39
+ ] }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule, decorators: [{
42
+ type: NgModule,
43
+ args: [{
44
+ providers: [
45
+ hookRoute([
46
+ {
47
+ path: basePath,
48
+ component: NamespaceListComponent,
49
+ canActivate: [MessagingManagementGuard]
50
+ },
51
+ {
52
+ path: basePath + '/namespace/:namespace',
53
+ component: TopicListViewComponent,
54
+ canActivate: [MessagingManagementGuard]
55
+ },
56
+ {
57
+ path: basePath + '/namespace/:namespace/topic/:topic',
58
+ redirectTo: basePath + '/namespace/:namespace/topic/:topic/subscribers',
59
+ pathMatch: 'full'
60
+ },
61
+ {
62
+ path: basePath + '/namespace/:namespace/topic/:topic/subscribers',
63
+ component: TopicSubscribersViewComponent,
64
+ canActivate: [MessagingManagementGuard]
65
+ }
66
+ ]),
67
+ hookTab(TopicDetailsTabFactory),
68
+ hookNavigator(MessagingNavigatorNodeFactory)
69
+ ]
70
+ }]
71
+ }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDMUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUE4QnhFLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsYUEzQnpCO1lBQ1QsU0FBUyxDQUFDO2dCQUNSO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLFNBQVMsRUFBRSxzQkFBc0I7b0JBQ2pDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN4QztnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLHVCQUF1QjtvQkFDeEMsU0FBUyxFQUFFLHNCQUFzQjtvQkFDakMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3hDO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsb0NBQW9DO29CQUNyRCxVQUFVLEVBQUUsUUFBUSxHQUFHLGdEQUFnRDtvQkFDdkUsU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsZ0RBQWdEO29CQUNqRSxTQUFTLEVBQUUsNkJBQTZCO29CQUN4QyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDeEM7YUFDRixDQUFDO1lBQ0YsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQy9CLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQztTQUM3Qzs7NEZBRVUseUJBQXlCO2tCQTVCckMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsU0FBUyxDQUFDOzRCQUNSO2dDQUNFLElBQUksRUFBRSxRQUFRO2dDQUNkLFNBQVMsRUFBRSxzQkFBc0I7Z0NBQ2pDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDOzZCQUN4Qzs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLHVCQUF1QjtnQ0FDeEMsU0FBUyxFQUFFLHNCQUFzQjtnQ0FDakMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7NkJBQ3hDOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsb0NBQW9DO2dDQUNyRCxVQUFVLEVBQUUsUUFBUSxHQUFHLGdEQUFnRDtnQ0FDdkUsU0FBUyxFQUFFLE1BQU07NkJBQ2xCOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsZ0RBQWdEO2dDQUNqRSxTQUFTLEVBQUUsNkJBQTZCO2dDQUN4QyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzs2QkFDeEM7eUJBQ0YsQ0FBQzt3QkFDRixPQUFPLENBQUMsc0JBQXNCLENBQUM7d0JBQy9CLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQztxQkFDN0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaG9va05hdmlnYXRvciwgaG9va1JvdXRlLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYXZpZ2F0b3JOb2RlRmFjdG9yeSB9IGZyb20gJy4vbmF2aWdhdG9yL21lc3NhZ2luZy1uYXZpZ2F0b3ItZmFjdG9yeSc7XG5pbXBvcnQgeyBOYW1lc3BhY2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvbmFtZXNwYWNlLWxpc3QvbmFtZXNwYWNlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljTGlzdFZpZXdDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2luZy90b3BpYy90b3BpYy1saXN0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljU3Vic2NyaWJlcnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvdG9waWMvdG9waWMtc3Vic2NyaWJlcnMtdmlldy90b3BpYy1zdWJzY3JpYmVycy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb3BpY0RldGFpbHNUYWJGYWN0b3J5IH0gZnJvbSAnLi9uYXZpZ2F0b3IvdG9waWMtZGV0YWlscy10YWIuZmFjdG9yeSc7XG5pbXBvcnQgeyBiYXNlUGF0aCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1lc3NhZ2luZ01hbmFnZW1lbnRHdWFyZCB9IGZyb20gJy4vbWVzc2FnaW5nLW1hbmFnZW1lbnQuZ3VhcmQnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBob29rUm91dGUoW1xuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCxcbiAgICAgICAgY29tcG9uZW50OiBOYW1lc3BhY2VMaXN0Q29tcG9uZW50LFxuICAgICAgICBjYW5BY3RpdmF0ZTogW01lc3NhZ2luZ01hbmFnZW1lbnRHdWFyZF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6IGJhc2VQYXRoICsgJy9uYW1lc3BhY2UvOm5hbWVzcGFjZScsXG4gICAgICAgIGNvbXBvbmVudDogVG9waWNMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCArICcvbmFtZXNwYWNlLzpuYW1lc3BhY2UvdG9waWMvOnRvcGljJyxcbiAgICAgICAgcmVkaXJlY3RUbzogYmFzZVBhdGggKyAnL25hbWVzcGFjZS86bmFtZXNwYWNlL3RvcGljLzp0b3BpYy9zdWJzY3JpYmVycycsXG4gICAgICAgIHBhdGhNYXRjaDogJ2Z1bGwnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCArICcvbmFtZXNwYWNlLzpuYW1lc3BhY2UvdG9waWMvOnRvcGljL3N1YnNjcmliZXJzJyxcbiAgICAgICAgY29tcG9uZW50OiBUb3BpY1N1YnNjcmliZXJzVmlld0NvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmRdXG4gICAgICB9XG4gICAgXSksXG4gICAgaG9va1RhYihUb3BpY0RldGFpbHNUYWJGYWN0b3J5KSxcbiAgICBob29rTmF2aWdhdG9yKE1lc3NhZ2luZ05hdmlnYXRvck5vZGVGYWN0b3J5KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ01hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,55 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { AppStateService, gettext, NavigatorNode, NavigatorService } from '@c8y/ngx-components';
3
+ import { NAMESPACE_PROPS } from '../utils/namespace-props';
4
+ import { MessagingNamespacesService } from '../api/services/messaging-namespaces.service';
5
+ import { catchError, filter, map, shareReplay, switchMap, take } from 'rxjs/operators';
6
+ import { from } from 'rxjs';
7
+ import { MessagingManagementGuard } from '../messaging-management.guard';
8
+ import * as i0 from "@angular/core";
9
+ const baseNode = new NavigatorNode({
10
+ label: gettext('Messaging service'),
11
+ icon: 'arrows-dotted-left-right',
12
+ path: 'monitoring/messaging-service',
13
+ priority: 100,
14
+ parent: {
15
+ label: gettext('Monitoring'),
16
+ icon: 'monitoring'
17
+ }
18
+ });
19
+ export class MessagingNavigatorNodeFactory {
20
+ constructor() {
21
+ this.appState = inject(AppStateService);
22
+ this.navigatorService = inject(NavigatorService);
23
+ this.namespacesService = inject(MessagingNamespacesService);
24
+ this.guard = inject(MessagingManagementGuard);
25
+ this.currentTenantId = this.appState.currentTenant.pipe(filter(currentTenant => !!currentTenant), map(currentTenant => currentTenant.name), take(1));
26
+ this.navigatorNode$ = from(this.guard.canActivate()).pipe(filter(allowed => allowed), switchMap(() => this.currentTenantId), switchMap(currentTenantId => this.namespacesService.getNamespaces(currentTenantId)), map(({ namespaces }) => {
27
+ if (!namespaces?.length) {
28
+ return [];
29
+ }
30
+ namespaces.forEach(namespace => {
31
+ const label = NAMESPACE_PROPS[namespace.name]?.label || namespace.name;
32
+ const childNode = new NavigatorNode({
33
+ label,
34
+ path: `monitoring/messaging-service/namespace/${namespace.name}`,
35
+ icon: NAMESPACE_PROPS[namespace.name]?.icon,
36
+ routerLinkExact: false
37
+ });
38
+ baseNode.add(childNode);
39
+ });
40
+ return baseNode;
41
+ }), catchError(() => {
42
+ return [];
43
+ }), shareReplay(1));
44
+ }
45
+ get() {
46
+ return this.navigatorNode$;
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNavigatorNodeFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNavigatorNodeFactory, providedIn: 'root' }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingNavigatorNodeFactory, decorators: [{
52
+ type: Injectable,
53
+ args: [{ providedIn: 'root' }]
54
+ }], ctorParameters: () => [] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW5hdmlnYXRvci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbmF2aWdhdG9yL21lc3NhZ2luZy1uYXZpZ2F0b3ItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFDUCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRXpFLE1BQU0sUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDO0lBQ2pDLEtBQUssRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUM7SUFDbkMsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQyxJQUFJLEVBQUUsOEJBQThCO0lBQ3BDLFFBQVEsRUFBRSxHQUFHO0lBQ2IsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUIsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDLENBQUM7QUFHSCxNQUFNLE9BQU8sNkJBQTZCO0lBY3hDO1FBYkEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RCxVQUFLLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFekMsb0JBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ2hELE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFDeEMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztRQUtBLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUNyQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQ25GLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3QixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUN2RSxNQUFNLFNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBQztvQkFDbEMsS0FBSztvQkFDTCxJQUFJLEVBQUUsMENBQTBDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2hFLElBQUksRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7b0JBQzNDLGVBQWUsRUFBRSxLQUFLO2lCQUN2QixDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQzsrR0E1Q1UsNkJBQTZCO21IQUE3Qiw2QkFBNkIsY0FEaEIsTUFBTTs7NEZBQ25CLDZCQUE2QjtrQkFEekMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcFN0YXRlU2VydmljZSxcbiAgRXh0ZW5zaW9uRmFjdG9yeSxcbiAgZ2V0dGV4dCxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE5BTUVTUEFDRV9QUk9QUyB9IGZyb20gJy4uL3V0aWxzL25hbWVzcGFjZS1wcm9wcyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYW1lc3BhY2VzU2VydmljZSB9IGZyb20gJy4uL2FwaS9zZXJ2aWNlcy9tZXNzYWdpbmctbmFtZXNwYWNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnaW5nTWFuYWdlbWVudEd1YXJkIH0gZnJvbSAnLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQuZ3VhcmQnO1xuXG5jb25zdCBiYXNlTm9kZSA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgbGFiZWw6IGdldHRleHQoJ01lc3NhZ2luZyBzZXJ2aWNlJyksXG4gIGljb246ICdhcnJvd3MtZG90dGVkLWxlZnQtcmlnaHQnLFxuICBwYXRoOiAnbW9uaXRvcmluZy9tZXNzYWdpbmctc2VydmljZScsXG4gIHByaW9yaXR5OiAxMDAsXG4gIHBhcmVudDoge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNb25pdG9yaW5nJyksXG4gICAgaWNvbjogJ21vbml0b3JpbmcnXG4gIH1cbn0pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ05hdmlnYXRvck5vZGVGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxOYXZpZ2F0b3JOb2RlPiB7XG4gIGFwcFN0YXRlID0gaW5qZWN0KEFwcFN0YXRlU2VydmljZSk7XG4gIG5hdmlnYXRvclNlcnZpY2UgPSBpbmplY3QoTmF2aWdhdG9yU2VydmljZSk7XG4gIG5hbWVzcGFjZXNTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2luZ05hbWVzcGFjZXNTZXJ2aWNlKTtcbiAgZ3VhcmQgPSBpbmplY3QoTWVzc2FnaW5nTWFuYWdlbWVudEd1YXJkKTtcblxuICBjdXJyZW50VGVuYW50SWQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQucGlwZShcbiAgICBmaWx0ZXIoY3VycmVudFRlbmFudCA9PiAhIWN1cnJlbnRUZW5hbnQpLFxuICAgIG1hcChjdXJyZW50VGVuYW50ID0+IGN1cnJlbnRUZW5hbnQubmFtZSksXG4gICAgdGFrZSgxKVxuICApO1xuXG4gIG5hdmlnYXRvck5vZGUkOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGUgfCBOYXZpZ2F0b3JOb2RlW10+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubmF2aWdhdG9yTm9kZSQgPSBmcm9tKHRoaXMuZ3VhcmQuY2FuQWN0aXZhdGUoKSkucGlwZShcbiAgICAgIGZpbHRlcihhbGxvd2VkID0+IGFsbG93ZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY3VycmVudFRlbmFudElkKSxcbiAgICAgIHN3aXRjaE1hcChjdXJyZW50VGVuYW50SWQgPT4gdGhpcy5uYW1lc3BhY2VzU2VydmljZS5nZXROYW1lc3BhY2VzKGN1cnJlbnRUZW5hbnRJZCkpLFxuICAgICAgbWFwKCh7IG5hbWVzcGFjZXMgfSkgPT4ge1xuICAgICAgICBpZiAoIW5hbWVzcGFjZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBuYW1lc3BhY2VzLmZvckVhY2gobmFtZXNwYWNlID0+IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IE5BTUVTUEFDRV9QUk9QU1tuYW1lc3BhY2UubmFtZV0/LmxhYmVsIHx8IG5hbWVzcGFjZS5uYW1lO1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgcGF0aDogYG1vbml0b3JpbmcvbWVzc2FnaW5nLXNlcnZpY2UvbmFtZXNwYWNlLyR7bmFtZXNwYWNlLm5hbWV9YCxcbiAgICAgICAgICAgIGljb246IE5BTUVTUEFDRV9QUk9QU1tuYW1lc3BhY2UubmFtZV0/Lmljb24sXG4gICAgICAgICAgICByb3V0ZXJMaW5rRXhhY3Q6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYmFzZU5vZGUuYWRkKGNoaWxkTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYmFzZU5vZGU7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGUgfCBOYXZpZ2F0b3JOb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0b3JOb2RlJDtcbiAgfVxufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { gettext } from '@c8y/ngx-components';
3
+ import { Router } from '@angular/router';
4
+ import { basePath } from '../constants';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ export class TopicDetailsTabFactory {
8
+ constructor(router) {
9
+ this.router = router;
10
+ }
11
+ get() {
12
+ const pattern = /\/namespace\/(.+)\/topic\/(.+)\/subscribers$/;
13
+ const matches = this.router.url.match(pattern);
14
+ if (matches) {
15
+ const namespace = matches[1];
16
+ const topic = matches[2];
17
+ return [
18
+ {
19
+ path: basePath + `/namespace/${namespace}/topic/${topic}/subscribers`,
20
+ priority: 500,
21
+ label: gettext('Subscribers')
22
+ }
23
+ ];
24
+ }
25
+ return [];
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicDetailsTabFactory, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicDetailsTabFactory }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TopicDetailsTabFactory, decorators: [{
31
+ type: Injectable
32
+ }], ctorParameters: () => [{ type: i1.Router }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMtZGV0YWlscy10YWIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21lc3NhZ2luZy1tYW5hZ2VtZW50L25hdmlnYXRvci90b3BpYy1kZXRhaWxzLXRhYi5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHeEMsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFckMsR0FBRztRQUNELE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixPQUFPO2dCQUNMO29CQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsY0FBYyxTQUFTLFVBQVUsS0FBSyxjQUFjO29CQUNyRSxRQUFRLEVBQUUsR0FBRztvQkFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztpQkFDOUI7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0FuQlUsc0JBQXNCO21IQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBUYWJGYWN0b3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYmFzZVBhdGggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9waWNEZXRhaWxzVGFiRmFjdG9yeSBpbXBsZW1lbnRzIFRhYkZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgZ2V0KCkge1xuICAgIGNvbnN0IHBhdHRlcm4gPSAvXFwvbmFtZXNwYWNlXFwvKC4rKVxcL3RvcGljXFwvKC4rKVxcL3N1YnNjcmliZXJzJC87XG4gICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMucm91dGVyLnVybC5tYXRjaChwYXR0ZXJuKTtcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICBjb25zdCBuYW1lc3BhY2UgPSBtYXRjaGVzWzFdO1xuICAgICAgY29uc3QgdG9waWMgPSBtYXRjaGVzWzJdO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6IGJhc2VQYXRoICsgYC9uYW1lc3BhY2UvJHtuYW1lc3BhY2V9L3RvcGljLyR7dG9waWN9L3N1YnNjcmliZXJzYCxcbiAgICAgICAgICBwcmlvcml0eTogNTAwLFxuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTdWJzY3JpYmVycycpXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { formatNumber } from '@angular/common';
2
+ import { inject, LOCALE_ID, Pipe } from '@angular/core';
3
+ import { gettext } from '@c8y/ngx-components';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * In case of limits in Messaging management, value of '-1' means that there is no limit.
8
+ */
9
+ export class BacklogQuotaLimitPipe {
10
+ constructor() {
11
+ this.translateService = inject(TranslateService);
12
+ this.locale = inject(LOCALE_ID);
13
+ }
14
+ transform(value) {
15
+ if (value == null || isNaN(value)) {
16
+ return '-';
17
+ }
18
+ else if (value === -1) {
19
+ return this.translateService.instant(gettext('Unlimited` backlog quota`'));
20
+ }
21
+ else {
22
+ return formatNumber(value, this.locale);
23
+ }
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BacklogQuotaLimitPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
26
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BacklogQuotaLimitPipe, isStandalone: true, name: "backlogQuotaLimit" }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BacklogQuotaLimitPipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{ name: 'backlogQuotaLimit', standalone: true }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2xvZy1xdW90YS1saW1pdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvdXRpbHMvYmFja2xvZy1xdW90YS1saW1pdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFdkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQVdwQztJQVRDLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7YUFBTSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzsrR0FaVSxxQkFBcUI7NkdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8qKlxuICogSW4gY2FzZSBvZiBsaW1pdHMgaW4gTWVzc2FnaW5nIG1hbmFnZW1lbnQsIHZhbHVlIG9mICctMScgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBsaW1pdC5cbiAqL1xuQFBpcGUoeyBuYW1lOiAnYmFja2xvZ1F1b3RhTGltaXQnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQmFja2xvZ1F1b3RhTGltaXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlcik6IG51bWJlciB8IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IC0xKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnVW5saW1pdGVkYCBiYWNrbG9nIHF1b3RhYCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcih2YWx1ZSwgdGhpcy5sb2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { gettext } from '@c8y/ngx-components';
2
+ /**
3
+ * Currently known namespaces and their properties.
4
+ */
5
+ export const NAMESPACE_PROPS = {
6
+ mqtt: {
7
+ icon: 'c8y-device-protocols',
8
+ label: gettext('MQTT Service')
9
+ },
10
+ 'data-broker-fwd': {
11
+ icon: 'c8y-data-broker',
12
+ label: gettext('Data Broker')
13
+ },
14
+ relnotif: {
15
+ icon: 'c8y-notification',
16
+ label: gettext('Notifications 2.0')
17
+ },
18
+ 'streaming-analytics': {
19
+ icon: 'c8y-streaming-analytics',
20
+ label: gettext('Streaming Analytics')
21
+ }
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvdXRpbHMvbmFtZXNwYWNlLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU85Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBbUM7SUFDN0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztLQUMvQjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDOUI7SUFDRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLEtBQUssRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUM7S0FDcEM7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixJQUFJLEVBQUUseUJBQXlCO1FBQy9CLEtBQUssRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7S0FDdEM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG50eXBlIE5hbWVzcGFjZVByb3BzID0ge1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEN1cnJlbnRseSBrbm93biBuYW1lc3BhY2VzIGFuZCB0aGVpciBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3QgTkFNRVNQQUNFX1BST1BTOiBSZWNvcmQ8c3RyaW5nLCBOYW1lc3BhY2VQcm9wcz4gPSB7XG4gIG1xdHQ6IHtcbiAgICBpY29uOiAnYzh5LWRldmljZS1wcm90b2NvbHMnLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdNUVRUIFNlcnZpY2UnKVxuICB9LFxuICAnZGF0YS1icm9rZXItZndkJzoge1xuICAgIGljb246ICdjOHktZGF0YS1icm9rZXInLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdEYXRhIEJyb2tlcicpXG4gIH0sXG4gIHJlbG5vdGlmOiB7XG4gICAgaWNvbjogJ2M4eS1ub3RpZmljYXRpb24nLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdOb3RpZmljYXRpb25zIDIuMCcpXG4gIH0sXG4gICdzdHJlYW1pbmctYW5hbHl0aWNzJzoge1xuICAgIGljb246ICdjOHktc3RyZWFtaW5nLWFuYWx5dGljcycsXG4gICAgbGFiZWw6IGdldHRleHQoJ1N0cmVhbWluZyBBbmFseXRpY3MnKVxuICB9XG59O1xuIl19
@@ -0,0 +1,122 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { gettext } from '@c8y/ngx-components';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ export class TimeToLivePipe {
7
+ constructor(translateService) {
8
+ this.translateService = translateService;
9
+ }
10
+ /**
11
+ * Transform time in seconds to human readable format.
12
+ * @param seconds time in seconds
13
+ * @returns human readable time period
14
+ */
15
+ transform(seconds) {
16
+ if (seconds == null || isNaN(seconds)) {
17
+ return '-';
18
+ }
19
+ if (seconds === -1) {
20
+ return this.translateService.instant(gettext('Unlimited` time-to-live period`'));
21
+ }
22
+ const minutes = Math.floor(seconds / 60);
23
+ const hours = Math.floor(minutes / 60);
24
+ const days = Math.floor(hours / 24);
25
+ if (days >= 1) {
26
+ const remainingHours = hours % 24;
27
+ if (days === 1) {
28
+ if (remainingHours === 0) {
29
+ return this.translateService.instant(gettext('1 day'));
30
+ }
31
+ if (remainingHours === 1) {
32
+ return this.translateService.instant(gettext('1 day 1 hour'));
33
+ }
34
+ return this.translateService.instant(gettext('1 day {{hours}} hours'), {
35
+ hours: remainingHours
36
+ });
37
+ }
38
+ else {
39
+ if (remainingHours === 0) {
40
+ return this.translateService.instant(gettext('{{days}} days'), { days });
41
+ }
42
+ if (remainingHours === 1) {
43
+ return this.translateService.instant(gettext('{{days}} days 1 hour'), { days });
44
+ }
45
+ return this.translateService.instant(gettext('{{days}} days {{hours}} hours'), {
46
+ days,
47
+ hours: remainingHours
48
+ });
49
+ }
50
+ }
51
+ if (hours > 0) {
52
+ const remainingMinutes = minutes % 60;
53
+ if (hours === 1) {
54
+ if (remainingMinutes === 0) {
55
+ return this.translateService.instant(gettext('1 hour'));
56
+ }
57
+ if (remainingMinutes === 1) {
58
+ return this.translateService.instant(gettext('1 hour 1 minute'));
59
+ }
60
+ return this.translateService.instant(gettext('1 hour {{minutes}} minutes'), {
61
+ minutes: remainingMinutes
62
+ });
63
+ }
64
+ else {
65
+ if (remainingMinutes === 0) {
66
+ return this.translateService.instant(gettext('{{hours}} hours'), { hours });
67
+ }
68
+ if (remainingMinutes === 1) {
69
+ return this.translateService.instant(gettext('{{hours}} hours 1 minute'), { hours });
70
+ }
71
+ return this.translateService.instant(gettext('{{hours}} hours {{minutes}} minutes'), {
72
+ hours,
73
+ minutes: remainingMinutes
74
+ });
75
+ }
76
+ }
77
+ if (minutes > 0) {
78
+ const remainingSeconds = seconds % 60;
79
+ if (minutes === 1) {
80
+ if (remainingSeconds === 0) {
81
+ return this.translateService.instant(gettext('1 minute'));
82
+ }
83
+ if (remainingSeconds === 1) {
84
+ return this.translateService.instant(gettext('1 minute 1 second'));
85
+ }
86
+ return this.translateService.instant(gettext('1 minute {{seconds}} seconds'), {
87
+ seconds: remainingSeconds
88
+ });
89
+ }
90
+ else {
91
+ if (remainingSeconds === 0) {
92
+ return this.translateService.instant(gettext('{{minutes}} minutes'), { minutes });
93
+ }
94
+ if (remainingSeconds === 1) {
95
+ return this.translateService.instant(gettext('{{minutes}} minutes 1 second'), {
96
+ minutes
97
+ });
98
+ }
99
+ return this.translateService.instant(gettext('{{minutes}} minutes {{seconds}} seconds'), {
100
+ minutes,
101
+ seconds: remainingSeconds
102
+ });
103
+ }
104
+ }
105
+ if (seconds === 1) {
106
+ return this.translateService.instant(gettext('1 second'));
107
+ }
108
+ else {
109
+ return this.translateService.instant(gettext('{{seconds}} seconds'), { seconds });
110
+ }
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeToLivePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
113
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TimeToLivePipe, isStandalone: true, name: "timeToLive" }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeToLivePipe, decorators: [{
116
+ type: Pipe,
117
+ args: [{
118
+ name: 'timeToLive',
119
+ standalone: true
120
+ }]
121
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS10by1saXZlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tZXNzYWdpbmctbWFuYWdlbWVudC91dGlscy90aW1lLXRvLWxpdmUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU12RCxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLGNBQWMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2xD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QUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDOytHQXhHVSxjQUFjOzZHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBSjFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAndGltZVRvTGl2ZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGltZVRvTGl2ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGltZSBpbiBzZWNvbmRzIHRvIGh1bWFuIHJlYWRhYmxlIGZvcm1hdC5cbiAgICogQHBhcmFtIHNlY29uZHMgdGltZSBpbiBzZWNvbmRzXG4gICAqIEByZXR1cm5zIGh1bWFuIHJlYWRhYmxlIHRpbWUgcGVyaW9kXG4gICAqL1xuICB0cmFuc2Zvcm0oc2Vjb25kczogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKHNlY29uZHMgPT0gbnVsbCB8fCBpc05hTihzZWNvbmRzKSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgaWYgKHNlY29uZHMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnVW5saW1pdGVkYCB0aW1lLXRvLWxpdmUgcGVyaW9kYCcpKTtcbiAgICB9XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcblxuICAgIGlmIChkYXlzID49IDEpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0hvdXJzID0gaG91cnMgJSAyNDtcbiAgICAgIGlmIChkYXlzID09PSAxKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmdIb3VycyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIGRheScpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtYWluaW5nSG91cnMgPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnMSBkYXkgMSBob3VyJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIGRheSB7e2hvdXJzfX0gaG91cnMnKSwge1xuICAgICAgICAgIGhvdXJzOiByZW1haW5pbmdIb3Vyc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZW1haW5pbmdIb3VycyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCd7e2RheXN9fSBkYXlzJyksIHsgZGF5cyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtYWluaW5nSG91cnMgPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgne3tkYXlzfX0gZGF5cyAxIGhvdXInKSwgeyBkYXlzIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCd7e2RheXN9fSBkYXlzIHt7aG91cnN9fSBob3VycycpLCB7XG4gICAgICAgICAgZGF5cyxcbiAgICAgICAgICBob3VyczogcmVtYWluaW5nSG91cnNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzID4gMCkge1xuICAgICAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IG1pbnV0ZXMgJSA2MDtcbiAgICAgIGlmIChob3VycyA9PT0gMSkge1xuICAgICAgICBpZiAocmVtYWluaW5nTWludXRlcyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIGhvdXInKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlbWFpbmluZ01pbnV0ZXMgPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnMSBob3VyIDEgbWludXRlJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIGhvdXIge3ttaW51dGVzfX0gbWludXRlcycpLCB7XG4gICAgICAgICAgbWludXRlczogcmVtYWluaW5nTWludXRlc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZW1haW5pbmdNaW51dGVzID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7aG91cnN9fSBob3VycycpLCB7IGhvdXJzIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZW1haW5pbmdNaW51dGVzID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7aG91cnN9fSBob3VycyAxIG1pbnV0ZScpLCB7IGhvdXJzIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCd7e2hvdXJzfX0gaG91cnMge3ttaW51dGVzfX0gbWludXRlcycpLCB7XG4gICAgICAgICAgaG91cnMsXG4gICAgICAgICAgbWludXRlczogcmVtYWluaW5nTWludXRlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWludXRlcyA+IDApIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBzZWNvbmRzICUgNjA7XG4gICAgICBpZiAobWludXRlcyA9PT0gMSkge1xuICAgICAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIG1pbnV0ZScpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCcxIG1pbnV0ZSAxIHNlY29uZCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnMSBtaW51dGUge3tzZWNvbmRzfX0gc2Vjb25kcycpLCB7XG4gICAgICAgICAgc2Vjb25kczogcmVtYWluaW5nU2Vjb25kc1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7bWludXRlc319IG1pbnV0ZXMnKSwgeyBtaW51dGVzIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZW1haW5pbmdTZWNvbmRzID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7bWludXRlc319IG1pbnV0ZXMgMSBzZWNvbmQnKSwge1xuICAgICAgICAgICAgbWludXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCd7e21pbnV0ZXN9fSBtaW51dGVzIHt7c2Vjb25kc319IHNlY29uZHMnKSwge1xuICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgc2Vjb25kczogcmVtYWluaW5nU2Vjb25kc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJzEgc2Vjb25kJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgne3tzZWNvbmRzfX0gc2Vjb25kcycpLCB7IHNlY29uZHMgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -33,6 +33,10 @@ export class DeviceSelectorComponent {
33
33
  this.deviceTypes
34
34
  .pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$))
35
35
  .subscribe((types) => {
36
+ // there is a concurrency issue when updateFiltering is called before the columns have actually been passed into the grid
37
+ // so we are already updating the typeColumn here additionally so in case updateFiltering has no affect, the type column is still correctly filtered
38
+ // "Dynamic group created for bulk operation should be invisible" cypress tests of configurationUpdateBulkOperation.cy.ts started failing otherwise
39
+ this.typeColumn.externalFilterQuery = { types };
36
40
  this.deviceGrid.updateFiltering([this.typeColumn.name], {
37
41
  type: types && types.length
38
42
  ? FilteringActionType.ApplyFilter
@@ -86,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
86
90
  }], onDeviceQueryStringChange: [{
87
91
  type: Output
88
92
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvZGV2aWNlLXNlbGVjdG9yL2RldmljZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2RldmljZS1zZWxlY3Rvci9kZXZpY2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsbUJBQW1CLEVBQ25CLG9DQUFvQyxFQUVyQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWpFLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDO0FBZTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFkcEM7UUE0QkUsZUFBVSxHQUFXLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUdoRCw4QkFBeUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3RSxZQUFPLEdBQWE7WUFDbEIsSUFBSSxzQkFBc0IsRUFBRTtZQUM1QixJQUFJLG9CQUFvQixFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxxQkFBcUIsRUFBRTtZQUMzQixJQUFJLHFCQUFxQixFQUFFO1lBQzNCLElBQUksZ0NBQWdDLEVBQUU7WUFDdEMsSUFBSSxzQkFBc0IsRUFBRTtTQUM3QixDQUFDO1FBRU0saUJBQVksR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQThCeEQ7YUExRGlCLHdCQUFtQixHQUFxQztRQUN0RSxHQUFHLEVBQUUsZUFBZTtRQUNwQixZQUFZLEVBQUU7WUFDWixNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0YsQUFMa0MsQ0FLakM7SUF5QkYsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQzFELFNBQVMsQ0FBQyxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3RELElBQUksRUFDRixLQUFLLElBQUksS0FBSyxDQUFDLE1BQU07d0JBQ25CLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO3dCQUNqQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsV0FBVztvQkFDckMsT0FBTyxFQUFFLEtBQUs7d0JBQ1osQ0FBQyxDQUFDOzRCQUNFLGlCQUFpQixFQUFFO2dDQUNqQixtQkFBbUIsRUFBRTtvQ0FDbkIsS0FBSztpQ0FDTjs2QkFDRjt5QkFDRjt3QkFDSCxDQUFDLENBQUMsU0FBUztpQkFDZCxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0ExRFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsMkpBWHZCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGdDQUFnQztnQkFDekMsUUFBUSxFQUFFLG9DQUFvQzthQUMvQztZQUNEO2dCQUNFLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxtQkFBbUI7YUFDdEQ7U0FDRixzRUFVVSxtQkFBbUIsOERDckRoQyw4U0FTQTs7NEZEb0NhLHVCQUF1QjtrQkFkbkMsU0FBUzsrQkFDRSxxQkFBcUIsYUFFcEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLG9DQUFvQzt5QkFDL0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsUUFBUSxFQUFFLHdCQUF3QixtQkFBbUI7eUJBQ3REO3FCQUNGOzhCQVdELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWhELFdBQVc7c0JBRFYsS0FBSztnQkFNTix5QkFBeUI7c0JBRHhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbHVtbixcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fQ09OVEVYVCxcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gIEZpbHRlcmluZ0FjdGlvblR5cGUsXG4gIFVzZXJQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb25TdHJhdGVneSxcbiAgVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBbGFybXNEZXZpY2VHcmlkQ29sdW1uLFxuICBEZXZpY2VHcmlkQ29tcG9uZW50LFxuICBHcm91cERldmljZUdyaWRDb2x1bW4sXG4gIE1vZGVsRGV2aWNlR3JpZENvbHVtbixcbiAgTmFtZURldmljZUdyaWRDb2x1bW4sXG4gIFJlZ2lzdHJhdGlvbkRhdGVEZXZpY2VHcmlkQ29sdW1uLFxuICBTdGF0dXNEZXZpY2VHcmlkQ29sdW1uLFxuICBUeXBlRGV2aWNlR3JpZENvbHVtblxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RldmljZS1ncmlkJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IEdSSURfQ09ORklHX0tFWSA9ICdkZXZpY2UtZ3JpZC1idWxrJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJ2RldmljZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX1NUUkFURUdZLFxuICAgICAgdXNlQ2xhc3M6IFVzZXJQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb25TdHJhdGVneVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogREFUQV9HUklEX0NPTkZJR1VSQVRJT05fQ09OVEVYVCxcbiAgICAgIHVzZVZhbHVlOiBEZXZpY2VTZWxlY3RvckNvbXBvbmVudC5HUklEX0NPTkZJR19DT05URVhUXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERldmljZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgcmVhZG9ubHkgR1JJRF9DT05GSUdfQ09OVEVYVDogVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHQgPSB7XG4gICAga2V5OiBHUklEX0NPTkZJR19LRVksXG4gICAgY29uZmlnRmlsdGVyOiB7XG4gICAgICBmaWx0ZXI6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIEBWaWV3Q2hpbGQoRGV2aWNlR3JpZENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgZGV2aWNlR3JpZDogRGV2aWNlR3JpZENvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBkZXZpY2VUeXBlczogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbiAgdHlwZUNvbHVtbjogQ29sdW1uID0gbmV3IFR5cGVEZXZpY2VHcmlkQ29sdW1uKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29sdW1uczogQ29sdW1uW10gPSBbXG4gICAgbmV3IFN0YXR1c0RldmljZUdyaWRDb2x1bW4oKSxcbiAgICBuZXcgTmFtZURldmljZUdyaWRDb2x1bW4oKSxcbiAgICB0aGlzLnR5cGVDb2x1bW4sXG4gICAgbmV3IE1vZGVsRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBHcm91cERldmljZUdyaWRDb2x1bW4oKSxcbiAgICBuZXcgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4oKSxcbiAgICBuZXcgQWxhcm1zRGV2aWNlR3JpZENvbHVtbigpXG4gIF07XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRldmljZVR5cGVzKSB7XG4gICAgICB0aGlzLmRldmljZVR5cGVzXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHR5cGVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGV2aWNlR3JpZC51cGRhdGVGaWx0ZXJpbmcoW3RoaXMudHlwZUNvbHVtbi5uYW1lXSwge1xuICAgICAgICAgICAgdHlwZTpcbiAgICAgICAgICAgICAgdHlwZXMgJiYgdHlwZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBGaWx0ZXJpbmdBY3Rpb25UeXBlLkFwcGx5RmlsdGVyXG4gICAgICAgICAgICAgICAgOiBGaWx0ZXJpbmdBY3Rpb25UeXBlLlJlc2V0RmlsdGVyLFxuICAgICAgICAgICAgcGF5bG9hZDogdHlwZXNcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJpbmdNb2RpZmllcjoge1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbEZpbHRlclF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8Yzh5LWRldmljZS1ncmlkXG4gIFt0aXRsZV09XCInVGFyZ2V0IGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtpbmZpbml0ZVNjcm9sbF09XCInYXV0bydcIlxuICBbc2hvd1NlYXJjaF09XCJmYWxzZVwiXG4gIChvbkRldmljZVF1ZXJ5U3RyaW5nQ2hhbmdlKT1cIm9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgW2FjdGlvbk5hbWVdPVwiJ2J1bGtPcGVyYXRpb25zJ1wiXG4+PC9jOHktZGV2aWNlLWdyaWQ+XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvZGV2aWNlLXNlbGVjdG9yL2RldmljZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2RldmljZS1zZWxlY3Rvci9kZXZpY2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsbUJBQW1CLEVBQ25CLG9DQUFvQyxFQUVyQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWpFLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDO0FBZTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFkcEM7UUE0QkUsZUFBVSxHQUFXLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUdoRCw4QkFBeUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3RSxZQUFPLEdBQWE7WUFDbEIsSUFBSSxzQkFBc0IsRUFBRTtZQUM1QixJQUFJLG9CQUFvQixFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxxQkFBcUIsRUFBRTtZQUMzQixJQUFJLHFCQUFxQixFQUFFO1lBQzNCLElBQUksZ0NBQWdDLEVBQUU7WUFDdEMsSUFBSSxzQkFBc0IsRUFBRTtTQUM3QixDQUFDO1FBRU0saUJBQVksR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQW1DeEQ7YUEvRGlCLHdCQUFtQixHQUFxQztRQUN0RSxHQUFHLEVBQUUsZUFBZTtRQUNwQixZQUFZLEVBQUU7WUFDWixNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0YsQUFMa0MsQ0FLakM7SUF5QkYsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQzFELFNBQVMsQ0FBQyxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUM3Qix5SEFBeUg7Z0JBQ3pILG9KQUFvSjtnQkFDcEosbUpBQW1KO2dCQUNuSixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBRWhELElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdEQsSUFBSSxFQUNGLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTt3QkFDbkIsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFdBQVc7d0JBQ2pDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO29CQUNyQyxPQUFPLEVBQUUsS0FBSzt3QkFDWixDQUFDLENBQUM7NEJBQ0UsaUJBQWlCLEVBQUU7Z0NBQ2pCLG1CQUFtQixFQUFFO29DQUNuQixLQUFLO2lDQUNOOzZCQUNGO3lCQUNGO3dCQUNILENBQUMsQ0FBQyxTQUFTO2lCQUNkLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQS9EVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwySkFYdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxRQUFRLEVBQUUsb0NBQW9DO2FBQy9DO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLG1CQUFtQjthQUN0RDtTQUNGLHNFQVVVLG1CQUFtQiw4RENyRGhDLDhTQVNBOzs0RkRvQ2EsdUJBQXVCO2tCQWRuQyxTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsb0NBQW9DO3lCQUMvQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsd0JBQXdCLG1CQUFtQjt5QkFDdEQ7cUJBQ0Y7OEJBV0QsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJaEQsV0FBVztzQkFEVixLQUFLO2dCQU1OLHlCQUF5QjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uLFxuICBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhULFxuICBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9TVFJBVEVHWSxcbiAgRmlsdGVyaW5nQWN0aW9uVHlwZSxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFsYXJtc0RldmljZUdyaWRDb2x1bW4sXG4gIERldmljZUdyaWRDb21wb25lbnQsXG4gIEdyb3VwRGV2aWNlR3JpZENvbHVtbixcbiAgTW9kZWxEZXZpY2VHcmlkQ29sdW1uLFxuICBOYW1lRGV2aWNlR3JpZENvbHVtbixcbiAgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4sXG4gIFN0YXR1c0RldmljZUdyaWRDb2x1bW4sXG4gIFR5cGVEZXZpY2VHcmlkQ29sdW1uXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgR1JJRF9DT05GSUdfS0VZID0gJ2RldmljZS1ncmlkLWJ1bGsnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhULFxuICAgICAgdXNlVmFsdWU6IERldmljZVNlbGVjdG9yQ29tcG9uZW50LkdSSURfQ09ORklHX0NPTlRFWFRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyByZWFkb25seSBHUklEX0NPTkZJR19DT05URVhUOiBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dCA9IHtcbiAgICBrZXk6IEdSSURfQ09ORklHX0tFWSxcbiAgICBjb25maWdGaWx0ZXI6IHtcbiAgICAgIGZpbHRlcjogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgQFZpZXdDaGlsZChEZXZpY2VHcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkZXZpY2VHcmlkOiBEZXZpY2VHcmlkQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIGRldmljZVR5cGVzOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICB0eXBlQ29sdW1uOiBDb2x1bW4gPSBuZXcgVHlwZURldmljZUdyaWRDb2x1bW4oKTtcblxuICBAT3V0cHV0KClcbiAgb25EZXZpY2VRdWVyeVN0cmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICBuZXcgU3RhdHVzRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBOYW1lRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIHRoaXMudHlwZUNvbHVtbixcbiAgICBuZXcgTW9kZWxEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgbmV3IEdyb3VwRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBBbGFybXNEZXZpY2VHcmlkQ29sdW1uKClcbiAgXTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGV2aWNlVHlwZXMpIHtcbiAgICAgIHRoaXMuZGV2aWNlVHlwZXNcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgLnN1YnNjcmliZSgodHlwZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgLy8gdGhlcmUgaXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aGVuIHVwZGF0ZUZpbHRlcmluZyBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjb2x1bW5zIGhhdmUgYWN0dWFsbHkgYmVlbiBwYXNzZWQgaW50byB0aGUgZ3JpZFxuICAgICAgICAgIC8vIHNvIHdlIGFyZSBhbHJlYWR5IHVwZGF0aW5nIHRoZSB0eXBlQ29sdW1uIGhlcmUgYWRkaXRpb25hbGx5IHNvIGluIGNhc2UgdXBkYXRlRmlsdGVyaW5nIGhhcyBubyBhZmZlY3QsIHRoZSB0eXBlIGNvbHVtbiBpcyBzdGlsbCBjb3JyZWN0bHkgZmlsdGVyZWRcbiAgICAgICAgICAvLyBcIkR5bmFtaWMgZ3JvdXAgY3JlYXRlZCBmb3IgYnVsayBvcGVyYXRpb24gc2hvdWxkIGJlIGludmlzaWJsZVwiIGN5cHJlc3MgdGVzdHMgb2YgY29uZmlndXJhdGlvblVwZGF0ZUJ1bGtPcGVyYXRpb24uY3kudHMgc3RhcnRlZCBmYWlsaW5nIG90aGVyd2lzZVxuICAgICAgICAgIHRoaXMudHlwZUNvbHVtbi5leHRlcm5hbEZpbHRlclF1ZXJ5ID0geyB0eXBlcyB9O1xuXG4gICAgICAgICAgdGhpcy5kZXZpY2VHcmlkLnVwZGF0ZUZpbHRlcmluZyhbdGhpcy50eXBlQ29sdW1uLm5hbWVdLCB7XG4gICAgICAgICAgICB0eXBlOlxuICAgICAgICAgICAgICB0eXBlcyAmJiB0eXBlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IEZpbHRlcmluZ0FjdGlvblR5cGUuQXBwbHlGaWx0ZXJcbiAgICAgICAgICAgICAgICA6IEZpbHRlcmluZ0FjdGlvblR5cGUuUmVzZXRGaWx0ZXIsXG4gICAgICAgICAgICBwYXlsb2FkOiB0eXBlc1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmluZ01vZGlmaWVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyUXVlcnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxjOHktZGV2aWNlLWdyaWRcbiAgW3RpdGxlXT1cIidUYXJnZXQgZGV2aWNlcycgfCB0cmFuc2xhdGVcIlxuICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gIFtzaG93U2VhcmNoXT1cImZhbHNlXCJcbiAgKG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2UpPVwib25EZXZpY2VRdWVyeVN0cmluZ0NoYW5nZS5lbWl0KCRldmVudClcIlxuICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICBbYWN0aW9uTmFtZV09XCInYnVsa09wZXJhdGlvbnMnXCJcbj48L2M4eS1kZXZpY2UtZ3JpZD5cbiJdfQ==