@c8y/ngx-components 1021.67.0 → 1021.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
- package/core/beta-feature/beta-feature-show-notification.service.d.ts +10 -0
- package/core/beta-feature/beta-feature-show-notification.service.d.ts.map +1 -0
- package/core/beta-feature/beta-feature.providers.d.ts +3 -0
- package/core/beta-feature/beta-feature.providers.d.ts.map +1 -0
- package/core/beta-feature/beta-preview-button.component.d.ts +17 -0
- package/core/beta-feature/beta-preview-button.component.d.ts.map +1 -0
- package/core/beta-feature/beta-preview-drawer.factory.d.ts +19 -0
- package/core/beta-feature/beta-preview-drawer.factory.d.ts.map +1 -0
- package/core/beta-feature/beta-preview.component.d.ts +25 -0
- package/core/beta-feature/beta-preview.component.d.ts.map +1 -0
- package/core/beta-feature/beta-preview.model.d.ts +24 -0
- package/core/beta-feature/beta-preview.model.d.ts.map +1 -0
- package/core/beta-feature/beta-preview.service.d.ts +47 -0
- package/core/beta-feature/beta-preview.service.d.ts.map +1 -0
- package/core/beta-feature/feature-cache.service.d.ts +26 -0
- package/core/beta-feature/feature-cache.service.d.ts.map +1 -0
- package/core/beta-feature/feature-state.pipe.d.ts +12 -0
- package/core/beta-feature/feature-state.pipe.d.ts.map +1 -0
- package/core/beta-feature/index.d.ts +7 -0
- package/core/beta-feature/index.d.ts.map +1 -0
- package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.component.d.ts +1 -0
- package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.model.d.ts +4 -0
- package/core/bottom-drawer/bottom-drawer.model.d.ts.map +1 -1
- package/core/common/ApplicationOptions.d.ts +8 -0
- package/core/common/ApplicationOptions.d.ts.map +1 -1
- package/core/common/bytes.pipe.d.ts +26 -10
- package/core/common/bytes.pipe.d.ts.map +1 -1
- package/core/common/index.d.ts +1 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/notification-display.service.d.ts +19 -0
- package/core/common/notification-display.service.d.ts.map +1 -0
- package/core/core.module.d.ts.map +1 -1
- package/core/header/header-bar/header-bar.component.d.ts +1 -0
- package/core/header/header-bar/header-bar.component.d.ts.map +1 -1
- package/core/header/header.service.d.ts +4 -1
- package/core/header/header.service.d.ts.map +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts +10 -0
- package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -0
- package/datapoint-explorer/datapoint-explorer-route-factory.d.ts +10 -0
- package/datapoint-explorer/datapoint-explorer-route-factory.d.ts.map +1 -0
- package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
- package/echart/charts.component.d.ts +14 -3
- package/echart/charts.component.d.ts.map +1 -1
- package/esm2022/branding/shared/lazy/branding-import-modal/branding-import-modal.component.mjs +4 -7
- package/esm2022/core/beta-feature/beta-feature-show-notification.service.mjs +17 -0
- package/esm2022/core/beta-feature/beta-feature.providers.mjs +9 -0
- package/esm2022/core/beta-feature/beta-preview-button.component.mjs +53 -0
- package/esm2022/core/beta-feature/beta-preview-drawer.factory.mjs +52 -0
- package/esm2022/core/beta-feature/beta-preview.component.mjs +64 -0
- package/esm2022/core/beta-feature/beta-preview.model.mjs +2 -0
- package/esm2022/core/beta-feature/beta-preview.service.mjs +114 -0
- package/esm2022/core/beta-feature/feature-cache.service.mjs +48 -0
- package/esm2022/core/beta-feature/feature-state.pipe.mjs +22 -0
- package/esm2022/core/beta-feature/index.mjs +7 -0
- package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +4 -1
- package/esm2022/core/bottom-drawer/bottom-drawer.component.mjs +4 -3
- package/esm2022/core/bottom-drawer/bottom-drawer.model.mjs +1 -1
- package/esm2022/core/common/ApplicationOptions.mjs +1 -1
- package/esm2022/core/common/bytes.pipe.mjs +47 -18
- package/esm2022/core/common/index.mjs +2 -1
- package/esm2022/core/common/notification-display.service.mjs +2 -0
- package/esm2022/core/core.module.mjs +4 -2
- package/esm2022/core/data-grid/data-grid.component.mjs +3 -3
- package/esm2022/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +3 -3
- package/esm2022/core/header/header-bar/header-bar.component.mjs +4 -3
- package/esm2022/core/header/header.service.mjs +12 -6
- package/esm2022/core/index.mjs +2 -1
- package/esm2022/core/user/user-details-drawer/user-details-drawer.component.mjs +3 -3
- package/esm2022/core/version/version-list/version-list.component.mjs +3 -3
- package/esm2022/datapoint-explorer/datapoint-explorer-navigation-factory.mjs +31 -0
- package/esm2022/datapoint-explorer/datapoint-explorer-route-factory.mjs +37 -0
- package/esm2022/datapoint-explorer/datapoint-explorer.module.mjs +22 -48
- package/esm2022/echart/charts.component.mjs +50 -3
- package/esm2022/messaging-management/api/model/backlogQuota.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespace.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceDetails.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceList.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespacePolicies.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespacePublishers.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceSubscribers.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceTopics.mjs +2 -0
- package/esm2022/messaging-management/api/model/pageStatistics.mjs +2 -0
- package/esm2022/messaging-management/api/model/pageable.mjs +2 -0
- package/esm2022/messaging-management/api/model/sortable.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriber.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberList.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberToDelete.mjs +2 -0
- package/esm2022/messaging-management/api/model/topic.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicDetailFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicList.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicListFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicType.mjs +9 -0
- package/esm2022/messaging-management/api/services/messaging-namespaces.service.mjs +83 -0
- package/esm2022/messaging-management/api/services/messaging-subscribers.service.mjs +55 -0
- package/esm2022/messaging-management/api/services/messaging-topics.service.mjs +48 -0
- package/esm2022/messaging-management/c8y-ngx-components-messaging-management.mjs +5 -0
- package/esm2022/messaging-management/constants.mjs +4 -0
- package/esm2022/messaging-management/index.mjs +2 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.mjs +43 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.mjs +36 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-list.component.mjs +51 -0
- package/esm2022/messaging-management/messaging/shared/usage/usage.component.mjs +68 -0
- package/esm2022/messaging-management/messaging/topic/topic-list-view.component.mjs +81 -0
- package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.mjs +220 -0
- package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.mjs +137 -0
- package/esm2022/messaging-management/messaging/topic/topics-data-grid.service.mjs +113 -0
- package/esm2022/messaging-management/messaging-management.guard.mjs +40 -0
- package/esm2022/messaging-management/messaging-management.module.mjs +72 -0
- package/esm2022/messaging-management/navigator/messaging-navigator-factory.mjs +55 -0
- package/esm2022/messaging-management/navigator/topic-details-tab.factory.mjs +33 -0
- package/esm2022/messaging-management/utils/backlog-quota-limit.pipe.mjs +32 -0
- package/esm2022/messaging-management/utils/namespace-props.mjs +23 -0
- package/esm2022/messaging-management/utils/time-to-live.pipe.mjs +122 -0
- package/esm2022/operations/device-selector/device-selector.component.mjs +5 -1
- package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +8 -10
- package/esm2022/register-device/general/general-device-registration.component.mjs +8 -10
- package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +10 -12
- package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2022/upgrade/ng1/index.mjs +3 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +2 -2
- package/esm2022/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.mjs +56 -0
- package/esm2022/widgets/definitions/datapoints-graph/index.mjs +12 -29
- package/esm2022/widgets/definitions/index.mjs +3 -2
- package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +18 -3
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +3 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +81 -48
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +49 -2
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +1225 -0
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +4 -0
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +10 -14
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +18 -20
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +65 -28
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +17 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +396 -39
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +272 -5
- package/locales/es.po +271 -4
- package/locales/fr.po +272 -5
- package/locales/ja_JP.po +272 -5
- package/locales/ko.po +271 -4
- package/locales/locales.pot +271 -8
- package/locales/nl.po +271 -4
- package/locales/pl.po +271 -4
- package/locales/pt_BR.po +272 -5
- package/locales/zh_CN.po +271 -4
- package/locales/zh_TW.po +272 -5
- package/messaging-management/api/model/backlogQuota.d.ts +14 -0
- package/messaging-management/api/model/backlogQuota.d.ts.map +1 -0
- package/messaging-management/api/model/namespace.d.ts +13 -0
- package/messaging-management/api/model/namespace.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceDetails.d.ts +8 -0
- package/messaging-management/api/model/namespaceDetails.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceList.d.ts +5 -0
- package/messaging-management/api/model/namespaceList.d.ts.map +1 -0
- package/messaging-management/api/model/namespacePolicies.d.ts +10 -0
- package/messaging-management/api/model/namespacePolicies.d.ts.map +1 -0
- package/messaging-management/api/model/namespacePublishers.d.ts +4 -0
- package/messaging-management/api/model/namespacePublishers.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceSubscribers.d.ts +4 -0
- package/messaging-management/api/model/namespaceSubscribers.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceTopics.d.ts +5 -0
- package/messaging-management/api/model/namespaceTopics.d.ts.map +1 -0
- package/messaging-management/api/model/pageStatistics.d.ts +12 -0
- package/messaging-management/api/model/pageStatistics.d.ts.map +1 -0
- package/messaging-management/api/model/pageable.d.ts +8 -0
- package/messaging-management/api/model/pageable.d.ts.map +1 -0
- package/messaging-management/api/model/sortable.d.ts +6 -0
- package/messaging-management/api/model/sortable.d.ts.map +1 -0
- package/messaging-management/api/model/subscriber.d.ts +28 -0
- package/messaging-management/api/model/subscriber.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberFilters.d.ts +13 -0
- package/messaging-management/api/model/subscriberFilters.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberList.d.ts +7 -0
- package/messaging-management/api/model/subscriberList.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberToDelete.d.ts +12 -0
- package/messaging-management/api/model/subscriberToDelete.d.ts.map +1 -0
- package/messaging-management/api/model/topic.d.ts +52 -0
- package/messaging-management/api/model/topic.d.ts.map +1 -0
- package/messaging-management/api/model/topicDetailFilters.d.ts +9 -0
- package/messaging-management/api/model/topicDetailFilters.d.ts.map +1 -0
- package/messaging-management/api/model/topicList.d.ts +7 -0
- package/messaging-management/api/model/topicList.d.ts.map +1 -0
- package/messaging-management/api/model/topicListFilters.d.ts +12 -0
- package/messaging-management/api/model/topicListFilters.d.ts.map +1 -0
- package/messaging-management/api/model/topicType.d.ts +8 -0
- package/messaging-management/api/model/topicType.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-namespaces.service.d.ts +52 -0
- package/messaging-management/api/services/messaging-namespaces.service.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-subscribers.service.d.ts +30 -0
- package/messaging-management/api/services/messaging-subscribers.service.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-topics.service.d.ts +21 -0
- package/messaging-management/api/services/messaging-topics.service.d.ts.map +1 -0
- package/messaging-management/c8y-ngx-components-messaging-management.d.ts.map +1 -0
- package/messaging-management/constants.d.ts +4 -0
- package/messaging-management/constants.d.ts.map +1 -0
- package/messaging-management/index.d.ts +2 -0
- package/messaging-management/index.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts +29 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts +15 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts +17 -0
- package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts.map +1 -0
- package/messaging-management/messaging/shared/usage/usage.component.d.ts +40 -0
- package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts +38 -0
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts +21 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts +52 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts +13 -0
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -0
- package/messaging-management/messaging-management.guard.d.ts +12 -0
- package/messaging-management/messaging-management.guard.d.ts.map +1 -0
- package/messaging-management/messaging-management.module.d.ts +7 -0
- package/messaging-management/messaging-management.module.d.ts.map +1 -0
- package/messaging-management/navigator/messaging-navigator-factory.d.ts +18 -0
- package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -0
- package/messaging-management/navigator/topic-details-tab.factory.d.ts +15 -0
- package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -0
- package/messaging-management/utils/backlog-quota-limit.pipe.d.ts +13 -0
- package/messaging-management/utils/backlog-quota-limit.pipe.d.ts.map +1 -0
- package/messaging-management/utils/namespace-props.d.ts +10 -0
- package/messaging-management/utils/namespace-props.d.ts.map +1 -0
- package/messaging-management/utils/time-to-live.pipe.d.ts +16 -0
- package/messaging-management/utils/time-to-live.pipe.d.ts.map +1 -0
- package/operations/device-selector/device-selector.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts +5 -5
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts +5 -5
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts +4 -4
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
- package/upgrade/ng1/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +1 -1
- package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts +11 -0
- package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -0
- package/widgets/definitions/datapoints-graph/index.d.ts +0 -28
- package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
- package/widgets/definitions/index.d.ts +2 -1
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +2 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
|
@@ -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,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvZGV2aWNlLXNlbGVjdG9yL2RldmljZS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2RldmljZS1zZWxlY3Rvci9kZXZpY2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsbUJBQW1CLEVBQ25CLG9DQUFvQyxFQUVyQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWpFLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDO0FBZTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFkcEM7UUE0QkUsZUFBVSxHQUFXLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUdoRCw4QkFBeUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU3RSxZQUFPLEdBQWE7WUFDbEIsSUFBSSxzQkFBc0IsRUFBRTtZQUM1QixJQUFJLG9CQUFvQixFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxxQkFBcUIsRUFBRTtZQUMzQixJQUFJLHFCQUFxQixFQUFFO1lBQzNCLElBQUksZ0NBQWdDLEVBQUU7WUFDdEMsSUFBSSxzQkFBc0IsRUFBRTtTQUM3QixDQUFDO1FBRU0saUJBQVksR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQW1DeEQ7YUEvRGlCLHdCQUFtQixHQUFxQztRQUN0RSxHQUFHLEVBQUUsZUFBZTtRQUNwQixZQUFZLEVBQUU7WUFDWixNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0YsQUFMa0MsQ0FLakM7SUF5QkYsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQzFELFNBQVMsQ0FBQyxDQUFDLEtBQWUsRUFBRSxFQUFFO2dCQUM3Qix5SEFBeUg7Z0JBQ3pILG9KQUFvSjtnQkFDcEosbUpBQW1KO2dCQUNuSixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBRWhELElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdEQsSUFBSSxFQUNGLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTt3QkFDbkIsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFdBQVc7d0JBQ2pDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO29CQUNyQyxPQUFPLEVBQUUsS0FBSzt3QkFDWixDQUFDLENBQUM7NEJBQ0UsaUJBQWlCLEVBQUU7Z0NBQ2pCLG1CQUFtQixFQUFFO29DQUNuQixLQUFLO2lDQUNOOzZCQUNGO3lCQUNGO3dCQUNILENBQUMsQ0FBQyxTQUFTO2lCQUNkLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQS9EVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwySkFYdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxRQUFRLEVBQUUsb0NBQW9DO2FBQy9DO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLG1CQUFtQjthQUN0RDtTQUNGLHNFQVVVLG1CQUFtQiw4RENyRGhDLDhTQVNBOzs0RkRvQ2EsdUJBQXVCO2tCQWRuQyxTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsb0NBQW9DO3lCQUMvQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsd0JBQXdCLG1CQUFtQjt5QkFDdEQ7cUJBQ0Y7OEJBV0QsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJaEQsV0FBVztzQkFEVixLQUFLO2dCQU1OLHlCQUF5QjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uLFxuICBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhULFxuICBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9TVFJBVEVHWSxcbiAgRmlsdGVyaW5nQWN0aW9uVHlwZSxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFsYXJtc0RldmljZUdyaWRDb2x1bW4sXG4gIERldmljZUdyaWRDb21wb25lbnQsXG4gIEdyb3VwRGV2aWNlR3JpZENvbHVtbixcbiAgTW9kZWxEZXZpY2VHcmlkQ29sdW1uLFxuICBOYW1lRGV2aWNlR3JpZENvbHVtbixcbiAgUmVnaXN0cmF0aW9uRGF0ZURldmljZUdyaWRDb2x1bW4sXG4gIFN0YXR1c0RldmljZUdyaWRDb2x1bW4sXG4gIFR5cGVEZXZpY2VHcmlkQ29sdW1uXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgR1JJRF9DT05GSUdfS0VZID0gJ2RldmljZS1ncmlkLWJ1bGsnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9DT05URVhULFxuICAgICAgdXNlVmFsdWU6IERldmljZVNlbGVjdG9yQ29tcG9uZW50LkdSSURfQ09ORklHX0NPTlRFWFRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyByZWFkb25seSBHUklEX0NPTkZJR19DT05URVhUOiBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dCA9IHtcbiAgICBrZXk6IEdSSURfQ09ORklHX0tFWSxcbiAgICBjb25maWdGaWx0ZXI6IHtcbiAgICAgIGZpbHRlcjogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgQFZpZXdDaGlsZChEZXZpY2VHcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkZXZpY2VHcmlkOiBEZXZpY2VHcmlkQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIGRldmljZVR5cGVzOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICB0eXBlQ29sdW1uOiBDb2x1bW4gPSBuZXcgVHlwZURldmljZUdyaWRDb2x1bW4oKTtcblxuICBAT3V0cHV0KClcbiAgb25EZXZpY2VRdWVyeVN0cmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICBuZXcgU3RhdHVzRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBOYW1lRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIHRoaXMudHlwZUNvbHVtbixcbiAgICBuZXcgTW9kZWxEZXZpY2VHcmlkQ29sdW1uKCksXG4gICAgbmV3IEdyb3VwRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBSZWdpc3RyYXRpb25EYXRlRGV2aWNlR3JpZENvbHVtbigpLFxuICAgIG5ldyBBbGFybXNEZXZpY2VHcmlkQ29sdW1uKClcbiAgXTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGV2aWNlVHlwZXMpIHtcbiAgICAgIHRoaXMuZGV2aWNlVHlwZXNcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgLnN1YnNjcmliZSgodHlwZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgLy8gdGhlcmUgaXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aGVuIHVwZGF0ZUZpbHRlcmluZyBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjb2x1bW5zIGhhdmUgYWN0dWFsbHkgYmVlbiBwYXNzZWQgaW50byB0aGUgZ3JpZFxuICAgICAgICAgIC8vIHNvIHdlIGFyZSBhbHJlYWR5IHVwZGF0aW5nIHRoZSB0eXBlQ29sdW1uIGhlcmUgYWRkaXRpb25hbGx5IHNvIGluIGNhc2UgdXBkYXRlRmlsdGVyaW5nIGhhcyBubyBhZmZlY3QsIHRoZSB0eXBlIGNvbHVtbiBpcyBzdGlsbCBjb3JyZWN0bHkgZmlsdGVyZWRcbiAgICAgICAgICAvLyBcIkR5bmFtaWMgZ3JvdXAgY3JlYXRlZCBmb3IgYnVsayBvcGVyYXRpb24gc2hvdWxkIGJlIGludmlzaWJsZVwiIGN5cHJlc3MgdGVzdHMgb2YgY29uZmlndXJhdGlvblVwZGF0ZUJ1bGtPcGVyYXRpb24uY3kudHMgc3RhcnRlZCBmYWlsaW5nIG90aGVyd2lzZVxuICAgICAgICAgIHRoaXMudHlwZUNvbHVtbi5leHRlcm5hbEZpbHRlclF1ZXJ5ID0geyB0eXBlcyB9O1xuXG4gICAgICAgICAgdGhpcy5kZXZpY2VHcmlkLnVwZGF0ZUZpbHRlcmluZyhbdGhpcy50eXBlQ29sdW1uLm5hbWVdLCB7XG4gICAgICAgICAgICB0eXBlOlxuICAgICAgICAgICAgICB0eXBlcyAmJiB0eXBlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IEZpbHRlcmluZ0FjdGlvblR5cGUuQXBwbHlGaWx0ZXJcbiAgICAgICAgICAgICAgICA6IEZpbHRlcmluZ0FjdGlvblR5cGUuUmVzZXRGaWx0ZXIsXG4gICAgICAgICAgICBwYXlsb2FkOiB0eXBlc1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmluZ01vZGlmaWVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyUXVlcnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxjOHktZGV2aWNlLWdyaWRcbiAgW3RpdGxlXT1cIidUYXJnZXQgZGV2aWNlcycgfCB0cmFuc2xhdGVcIlxuICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gIFtzaG93U2VhcmNoXT1cImZhbHNlXCJcbiAgKG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2UpPVwib25EZXZpY2VRdWVyeVN0cmluZ0NoYW5nZS5lbWl0KCRldmVudClcIlxuICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICBbYWN0aW9uTmFtZV09XCInYnVsa09wZXJhdGlvbnMnXCJcbj48L2M4eS1kZXZpY2UtZ3JpZD5cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ViewChild } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { DeviceRegistrationBulkService
|
|
4
|
-
import { C8yJSONSchema, C8yStepper, GainsightService, gettext } from '@c8y/ngx-components';
|
|
3
|
+
import { DeviceRegistrationBulkService } from '@c8y/client';
|
|
4
|
+
import { C8yJSONSchema, C8yStepper, FeatureCacheService, GainsightService, gettext } from '@c8y/ngx-components';
|
|
5
5
|
import { saveAs } from 'file-saver';
|
|
6
6
|
import { BsModalRef } from 'ngx-bootstrap/modal';
|
|
7
7
|
import { PRODUCT_EXPERIENCE_BASE_REGISTRATION } from '../extensible/base-device-registration.model';
|
|
@@ -44,19 +44,17 @@ const csvHeaders = [
|
|
|
44
44
|
const fullCsvHeaders = [...csvHeaders, 'CREDENTIALS'];
|
|
45
45
|
export const ESTCsvHeaders = [...csvHeaders, 'ENROLLMENT_OTP'];
|
|
46
46
|
export class BulkDeviceRegistrationModalComponent {
|
|
47
|
-
constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService,
|
|
47
|
+
constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService, featureCacheService, translateService) {
|
|
48
48
|
this.jsonschema = jsonschema;
|
|
49
49
|
this.deviceRegistrationService = deviceRegistrationService;
|
|
50
50
|
this.registerDeviceService = registerDeviceService;
|
|
51
51
|
this.bsModalRef = bsModalRef;
|
|
52
52
|
this.gainsightService = gainsightService;
|
|
53
|
-
this.
|
|
53
|
+
this.featureCacheService = featureCacheService;
|
|
54
54
|
this.translateService = translateService;
|
|
55
55
|
this.form = new FormGroup({});
|
|
56
56
|
this.model = {};
|
|
57
|
-
this.certificateAuthorityFeatureEnabled = this.
|
|
58
|
-
.detail('certificate-authority')
|
|
59
|
-
.then(({ data }) => data.active);
|
|
57
|
+
this.certificateAuthorityFeatureEnabled = this.featureCacheService.getFeatureState('certificate-authority');
|
|
60
58
|
}
|
|
61
59
|
ngOnInit() {
|
|
62
60
|
this.template = [this.jsonschema.toFieldConfig(registerDeviceBulkSchema)];
|
|
@@ -129,14 +127,14 @@ export class BulkDeviceRegistrationModalComponent {
|
|
|
129
127
|
const csvBulkFile = model?.csvBulkFile;
|
|
130
128
|
return csvBulkFile ? csvBulkFile[0]?.file : undefined;
|
|
131
129
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }, { token:
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }, { token: i1.FeatureCacheService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
131
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BulkDeviceRegistrationModalComponent, selector: "bulk-device-registration", viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i1.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i7.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i1.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i8.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.JsonPipe, name: "json" }] }); }
|
|
134
132
|
}
|
|
135
133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, decorators: [{
|
|
136
134
|
type: Component,
|
|
137
135
|
args: [{ selector: 'bulk-device-registration', template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
|
|
138
|
-
}], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type:
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type: i1.FeatureCacheService }, { type: i5.TranslateService }], propDecorators: { stepper: [{
|
|
139
137
|
type: ViewChild,
|
|
140
138
|
args: [C8yStepper, { static: true }]
|
|
141
139
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsY0FBYyxFQUVmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBRXZELE1BQU0sd0JBQXdCLEdBQVc7SUFDdkMsT0FBTyxFQUFFLDhDQUE4QztJQUN2RCxJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxXQUFXLEVBQUUsT0FB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b0M7a0JBSmhELFNBQVM7K0JBQ0UsMEJBQTBCO3NSQUlLLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBEZXZpY2VSZWdpc3RyYXRpb25CdWxrU2VydmljZSxcbiAgRmVhdHVyZVNlcnZpY2UsXG4gIElEZXZpY2VSZWdpc3RyYXRpb25CdWxrUmVzdWx0XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEM4eUpTT05TY2hlbWEsIEM4eVN0ZXBwZXIsIEdhaW5zaWdodFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTiB9IGZyb20gJy4uL2V4dGVuc2libGUvYmFzZS1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEJ1bGtGYWlsZWRSZXN1bHQgfSBmcm9tICcuLi9leHRlbnNpYmxlL2J1bGsvZXh0ZW5zaWJsZS1idWxrLWRldmljZS1yZWdpc3RyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVnaXN0ZXItZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCByZWdpc3RlckRldmljZUJ1bGtTY2hlbWE6IG9iamVjdCA9IHtcbiAgJHNjaGVtYTogJ2h0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvc2NoZW1hJyxcbiAgdHlwZTogJ29iamVjdCcsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBjc3ZCdWxrRmlsZToge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdDU1YgZmlsZSB1cGxvYWQnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAnWW91IGNhbiB1c2UgZmlsZSB1cGxvYWQgY29tcG9uZW50IHRvIGxldCB1c2VycyBzZW5kIGZpbGVzLiBUaGlzIGlucHV0IGFjY2VwdHMgb25seSBhIHNpbmdsZSBDU1YgZmlsZS4nXG4gICAgICApLFxuICAgICAgY29udGVudE1lZGlhVHlwZTogJ2NzdidcbiAgICB9XG4gIH0sXG4gIHJlcXVpcmVkOiBbJ2NzdkJ1bGtGaWxlJ10sXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxufTtcblxuY29uc3Qgc2ltcGxlQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbJ0lEJywgJ1BBVEgnXTtcbmNvbnN0IGNzdkhlYWRlcnM6IHN0cmluZ1tdID0gW1xuICAnSUQnLFxuICAnVFlQRScsXG4gICdOQU1FJyxcbiAgJ0lDQ0lEJyxcbiAgJ0lEVFlQRScsXG4gICdQQVRIJyxcbiAgJ1NIRUxMJyxcbiAgJ0FVVEhfVFlQRSdcbl07XG5jb25zdCBmdWxsQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbLi4uY3N2SGVhZGVycywgJ0NSRURFTlRJQUxTJ107XG5leHBvcnQgY29uc3QgRVNUQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbLi4uY3N2SGVhZGVycywgJ0VOUk9MTE1FTlRfT1RQJ107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdWxrRGV2aWNlUmVnaXN0cmF0aW9uTW9kYWxDb21wb25lbnQge1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiB0cnVlIH0pIHN0ZXBwZXI6IEM4eVN0ZXBwZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgcGVuZGluZzogYm9vbGVhbjtcbiAgcmVzdWx0OiBJRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1Jlc3VsdDtcbiAgZmFpbGVkUmVzdWx0OiBCdWxrRmFpbGVkUmVzdWx0O1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsID0ge307XG4gIHRlbXBsYXRlOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xuICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUZlYXR1cmVFbmFibGVkID0gdGhpcy5mZWF0dXJlU2VydmljZVxuICAgIC5kZXRhaWwoJ2NlcnRpZmljYXRlLWF1dGhvcml0eScpXG4gICAgLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhLmFjdGl2ZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBqc29uc2NoZW1hOiBDOHlKU09OU2NoZW1hLFxuICAgIHByaXZhdGUgZGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZTogRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWdpc3RlckRldmljZVNlcnZpY2U6IFJlZ2lzdGVyRGV2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IEZlYXR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IFt0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhyZWdpc3RlckRldmljZUJ1bGtTY2hlbWEpXTtcbiAgfVxuXG4gIHVwbG9hZCgpIHtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUodGhpcy5tb2RlbCk7XG4gICAgdGhpcy5kZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGZpbGUpXG4gICAgICAudGhlbigoeyByZXMsIGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHRoaXMucmVzdWx0ID0gZGF0YTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBkYXRhLm51bWJlck9mRmFpbGVkID09PSAwICYmIGRhdGEubnVtYmVyT2ZTdWNjZXNzZnVsID09PSBkYXRhLm51bWJlck9mQWxsO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuc3VjY2Vzc1xuICAgICAgICAgICAgPyBnZXR0ZXh0KCdEZXZpY2UgcmVnaXN0cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICAgICAgIDogKHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpKTtcbiAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZFJlc3VsdCA9IGRhdGEgYXMgdW5rbm93biBhcyBCdWxrRmFpbGVkUmVzdWx0O1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkNPTVBPTkVOVC5CVUxLXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSB1cGxvYWRlZCBmaWxlLicpO1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZG93bmxvYWRTaW1wbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoc2ltcGxlQ3N2SGVhZGVycywgZ2V0dGV4dCgnU2ltcGxlIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRGdWxsKCkge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkKGZ1bGxDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdGdWxsIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRFc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoRVNUQ3N2SGVhZGVycywgZ2V0dGV4dCgnRVNUIHJlZ2lzdHJhdGlvbiAtIHRlbXBsYXRlLmNzdicpKTtcbiAgfVxuXG4gIGRvd25sb2FkKGhlYWRlcnM6IHN0cmluZ1tdLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVyUmF3ID0gaGVhZGVycy5tYXAoaGVhZGVyID0+IGBcIiR7aGVhZGVyfVwiYCkuam9pbignOycpO1xuICAgIGNvbnN0IGJpbmFyeUZpbGUgPSBuZXcgQmxvYihbaGVhZGVyUmF3XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhiaW5hcnlGaWxlLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmaWxlTmFtZSkpO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2UubGlzdCgpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZShtb2RlbCk6IEZpbGUge1xuICAgIGNvbnN0IGNzdkJ1bGtGaWxlID0gKG1vZGVsIGFzIGFueSk/LmNzdkJ1bGtGaWxlO1xuICAgIHJldHVybiBjc3ZCdWxrRmlsZSA/IGNzdkJ1bGtGaWxlWzBdPy5maWxlIDogdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCInQnVsayBkZXZpY2UgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIFtjdXN0b21Gb290ZXJdPVwidHJ1ZVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxpIGM4eUljb249XCJ1cGxvYWRcIj48L2k+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxjOHktc3RlcHBlciBbaGlkZVN0ZXBQcm9ncmVzc109XCJ0cnVlXCIgbGluZWFyIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxjZGstc3RlcD5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtc3VidGl0bGUgc3RpY2t5LXRvcFwiIHRyYW5zbGF0ZT5SZWdpc3RlciBkZXZpY2VzIGluIGJ1bGs8L3A+XG5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImQtYmxvY2sgcC0yNCBwLXQtMTYgcC1iLTAgbS1iLTBcIj5cbiAgICAgICAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cInRlbXBsYXRlXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTI0IG0tdC0wIGJnLWxldmVsLTFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPlNpbXBsZSByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIHJlZ2lzdHJhdGlvbiByZXF1ZXN0cyBhdCBvbmNlLCB0aGVuIGVhY2ggb25lIG5lZWRzIHRvIGdvIHRocm91Z2ggcmVndWxhclxuICAgICAgICAgICAgICAgIGFjY2VwdGFuY2UgcHJvY2Vzcy5cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi0xNiBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX3NlbGZcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFNpbXBsZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkZ1bGwgcmVnaXN0cmF0aW9uPC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBDcmVhdGVzIGFsbCBkZXZpY2UgY3JlZGVudGlhbHMgYW5kIGRldmljZXMgdXNpbmcgcHJvdmlkZWQgbGlzdCBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgRGV2aWNlcyBjYW4gc3RhcnQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSBpbW1lZGlhdGVseS5cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi0xNiBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX3NlbGZcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZ1bGwoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIiB0cmFuc2xhdGU+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyYXktd2hpdGUgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMTYgcC1iLTE2IHAtbC0yNCBwLXItMjRcIiAqbmdJZj1cImNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkZ1bGwgcmVnaXN0cmF0aW9uIHdpdGggZGV2aWNlIGNlcnRpZmljYXRlIGNyZWF0aW9uPC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBDcmVhdGVzIGRldmljZSBjZXJ0aWZpY2F0ZXMgYW5kIGRldmljZXMgdXNpbmcgdGhlIHByb3ZpZGVkIGxpc3Qgb2YgcHJvcGVydHkgdmFsdWVzLiBPbmNlIHRoZSBjZXJ0aWZpY2F0ZXMgYXJlIHByb3Zpc2lvbmVkLCB0aGUgZGV2aWNlcyBjYW4gaW1tZWRpYXRlbHkgc3RhcnQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRXN0KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjYW5jZWw6IHRydWUsIG5leHQ6IHRydWUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCJcbiAgICAgICAgKG9uTmV4dCk9XCJ1cGxvYWQoKVwiXG4gICAgICAgIFtsYWJlbHNdPVwieyBuZXh0OiAnVXBsb2FkJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cblxuICAgIDxjZGstc3RlcCBzdGF0ZT1cImZpbmFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibS0yNFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3VjY2VzczsgZWxzZSB3YXJuaW5nXCI+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN3YXJuaW5nPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgdGV4dD1cInt7IG1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cInNlcGFyYXRvci10b3AgbS10LTE2XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdDsgZWxzZSBmYWlsZWRSZXNwb25zZVwiPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdJZj1cInN1Y2Nlc3M7IGVsc2UgZmFpbFwiPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIiBpY29uPVwiY2hlY2stY2lyY2xlXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHA+e3sgJ0FsbCBkZXZpY2VzIGhhdmUgYmVlbiBwcm9jZXNzZWQuJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IHJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZhaWw+XG4gICAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBpY29uPVwiYmFuXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGNvdW50OiByZXN1bHQ/Lm51bWJlck9mRmFpbGVkLCB0b3RhbDogcmVzdWx0Py5udW1iZXJPZkFsbCB9XCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEZhaWxlZCB0byBwcm9jZXNzIHt7IGNvdW50IH19IG91dCBvZiB7eyB0b3RhbCB9fS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbGVkUmVzcG9uc2U+XG4gICAgICAgICAgICA8Yzh5LWxpPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIFtpY29uXT1cIidiYW4nXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGZhaWxlZFJlc3VsdD8ubWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxjOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyBmYWlsZWRSZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1sZXZlbC0wXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgKG9uTmV4dCk9XCJjb21wbGV0ZSgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6IHN1Y2Nlc3MgPyAnQ2xvc2UnIDogJ0NhbmNlbCcgfVwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSw2QkFBNkIsRUFBaUMsTUFBTSxhQUFhLENBQUM7QUFDM0YsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQUV2RCxNQUFNLHdCQUF3QixHQUFXO0lBQ3ZDLE9BQU8sRUFBRSw4Q0FBOEM7SUFDdkQsSUFBSSxFQUFFLFFBQVE7SUFDZCxVQUFVLEVBQUU7UUFDVixXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDakMsV0FBVyxFQUFF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VSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEZXZpY2VSZWdpc3RyYXRpb25CdWxrU2VydmljZSwgSURldmljZVJlZ2lzdHJhdGlvbkJ1bGtSZXN1bHQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBDOHlKU09OU2NoZW1hLFxuICBDOHlTdGVwcGVyLFxuICBGZWF0dXJlQ2FjaGVTZXJ2aWNlLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OIH0gZnJvbSAnLi4vZXh0ZW5zaWJsZS9iYXNlLWRldmljZS1yZWdpc3RyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQnVsa0ZhaWxlZFJlc3VsdCB9IGZyb20gJy4uL2V4dGVuc2libGUvYnVsay9leHRlbnNpYmxlLWJ1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZWdpc3RlckRldmljZVNlcnZpY2UgfSBmcm9tICcuLi9yZWdpc3Rlci1kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmNvbnN0IHJlZ2lzdGVyRGV2aWNlQnVsa1NjaGVtYTogb2JqZWN0ID0ge1xuICAkc2NoZW1hOiAnaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAxOS0wOS9zY2hlbWEnLFxuICB0eXBlOiAnb2JqZWN0JyxcbiAgcHJvcGVydGllczoge1xuICAgIGNzdkJ1bGtGaWxlOiB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0NTViBmaWxlIHVwbG9hZCcpLFxuICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAgICdZb3UgY2FuIHVzZSBmaWxlIHVwbG9hZCBjb21wb25lbnQgdG8gbGV0IHVzZXJzIHNlbmQgZmlsZXMuIFRoaXMgaW5wdXQgYWNjZXB0cyBvbmx5IGEgc2luZ2xlIENTViBmaWxlLidcbiAgICAgICksXG4gICAgICBjb250ZW50TWVkaWFUeXBlOiAnY3N2J1xuICAgIH1cbiAgfSxcbiAgcmVxdWlyZWQ6IFsnY3N2QnVsa0ZpbGUnXSxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG59O1xuXG5jb25zdCBzaW1wbGVDc3ZIZWFkZXJzOiBzdHJpbmdbXSA9IFsnSUQnLCAnUEFUSCddO1xuY29uc3QgY3N2SGVhZGVyczogc3RyaW5nW10gPSBbXG4gICdJRCcsXG4gICdUWVBFJyxcbiAgJ05BTUUnLFxuICAnSUNDSUQnLFxuICAnSURUWVBFJyxcbiAgJ1BBVEgnLFxuICAnU0hFTEwnLFxuICAnQVVUSF9UWVBFJ1xuXTtcbmNvbnN0IGZ1bGxDc3ZIZWFkZXJzOiBzdHJpbmdbXSA9IFsuLi5jc3ZIZWFkZXJzLCAnQ1JFREVOVElBTFMnXTtcbmV4cG9ydCBjb25zdCBFU1RDc3ZIZWFkZXJzOiBzdHJpbmdbXSA9IFsuLi5jc3ZIZWFkZXJzLCAnRU5ST0xMTUVOVF9PVFAnXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdidWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJ1bGtEZXZpY2VSZWdpc3RyYXRpb25Nb2RhbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoQzh5U3RlcHBlciwgeyBzdGF0aWM6IHRydWUgfSkgc3RlcHBlcjogQzh5U3RlcHBlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICByZXN1bHQ6IElEZXZpY2VSZWdpc3RyYXRpb25CdWxrUmVzdWx0O1xuICBmYWlsZWRSZXN1bHQ6IEJ1bGtGYWlsZWRSZXN1bHQ7XG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWwgPSB7fTtcbiAgdGVtcGxhdGU6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIGNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgPVxuICAgIHRoaXMuZmVhdHVyZUNhY2hlU2VydmljZS5nZXRGZWF0dXJlU3RhdGUoJ2NlcnRpZmljYXRlLWF1dGhvcml0eScpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNvbnNjaGVtYTogQzh5SlNPTlNjaGVtYSxcbiAgICBwcml2YXRlIGRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2U6IERldmljZVJlZ2lzdHJhdGlvbkJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0ZXJEZXZpY2VTZXJ2aWNlOiBSZWdpc3RlckRldmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVDYWNoZVNlcnZpY2U6IEZlYXR1cmVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gW3RoaXMuanNvbnNjaGVtYS50b0ZpZWxkQ29uZmlnKHJlZ2lzdGVyRGV2aWNlQnVsa1NjaGVtYSldO1xuICB9XG5cbiAgdXBsb2FkKCkge1xuICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZSh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2VcbiAgICAgIC5jcmVhdGUoZmlsZSlcbiAgICAgIC50aGVuKCh7IHJlcywgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgPSBkYXRhO1xuICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IGRhdGEubnVtYmVyT2ZGYWlsZWQgPT09IDAgJiYgZGF0YS5udW1iZXJPZlN1Y2Nlc3NmdWwgPT09IGRhdGEubnVtYmVyT2ZBbGw7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5zdWNjZXNzXG4gICAgICAgICAgICA/IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gY3JlYXRlZC4nKVxuICAgICAgICAgICAgOiAodGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnRGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJykpO1xuICAgICAgICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5TVUNDRVNTLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5DT01QT05FTlQuQlVMS1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5GQUlMVVJFLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5DT01QT05FTlQuQlVMS1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmFpbGVkUmVzdWx0ID0gZGF0YSBhcyB1bmtub3duIGFzIEJ1bGtGYWlsZWRSZXN1bHQ7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnRGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJyk7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uRVZFTlQsIHtcbiAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5GQUlMVVJFLFxuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIHVwbG9hZGVkIGZpbGUuJyk7XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBkb3dubG9hZFNpbXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kb3dubG9hZChzaW1wbGVDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdTaW1wbGUgYnVsayByZWdpc3RyYXRpb24gLSB0ZW1wbGF0ZS5jc3YnKSk7XG4gIH1cblxuICBkb3dubG9hZEZ1bGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoZnVsbENzdkhlYWRlcnMsIGdldHRleHQoJ0Z1bGwgYnVsayByZWdpc3RyYXRpb24gLSB0ZW1wbGF0ZS5jc3YnKSk7XG4gIH1cblxuICBkb3dubG9hZEVzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5kb3dubG9hZChFU1RDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdFU1QgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWQoaGVhZGVyczogc3RyaW5nW10sIGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJSYXcgPSBoZWFkZXJzLm1hcChoZWFkZXIgPT4gYFwiJHtoZWFkZXJ9XCJgKS5qb2luKCc7Jyk7XG4gICAgY29uc3QgYmluYXJ5RmlsZSA9IG5ldyBCbG9iKFtoZWFkZXJSYXddLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgc2F2ZUFzKGJpbmFyeUZpbGUsIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGZpbGVOYW1lKSk7XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZS5saXN0KCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlKG1vZGVsKTogRmlsZSB7XG4gICAgY29uc3QgY3N2QnVsa0ZpbGUgPSAobW9kZWwgYXMgYW55KT8uY3N2QnVsa0ZpbGU7XG4gICAgcmV0dXJuIGNzdkJ1bGtGaWxlID8gY3N2QnVsa0ZpbGVbMF0/LmZpbGUgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxjOHktbW9kYWxcbiAgW3RpdGxlXT1cIidCdWxrIGRldmljZSByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGM4eS1zdGVwcGVyIFtoaWRlU3RlcFByb2dyZXNzXT1cInRydWVcIiBsaW5lYXIgaWQ9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGNkay1zdGVwPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1zdWJ0aXRsZSBzdGlja3ktdG9wXCIgdHJhbnNsYXRlPlJlZ2lzdGVyIGRldmljZXMgaW4gYnVsazwvcD5cblxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZC1ibG9jayBwLTI0IHAtdC0xNiBwLWItMCBtLWItMFwiPlxuICAgICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZHNdPVwidGVtcGxhdGVcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgPGRpdiBjbGFzcz1cInAtMjQgbS10LTAgYmctbGV2ZWwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+U2ltcGxlIHJlZ2lzdHJhdGlvbjwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgQ3JlYXRlcyBhbGwgcmVnaXN0cmF0aW9uIHJlcXVlc3RzIGF0IG9uY2UsIHRoZW4gZWFjaCBvbmUgbmVlZHMgdG8gZ28gdGhyb3VnaCByZWd1bGFyXG4gICAgICAgICAgICAgICAgYWNjZXB0YW5jZSBwcm9jZXNzLlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkU2ltcGxlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCIgdHJhbnNsYXRlPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIGRldmljZSBjcmVkZW50aWFscyBhbmQgZGV2aWNlcyB1c2luZyBwcm92aWRlZCBsaXN0IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICAgICAgICBEZXZpY2VzIGNhbiBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRnVsbCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiICpuZ0lmPVwiY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb24gd2l0aCBkZXZpY2UgY2VydGlmaWNhdGUgY3JlYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgZGV2aWNlIGNlcnRpZmljYXRlcyBhbmQgZGV2aWNlcyB1c2luZyB0aGUgcHJvdmlkZWQgbGlzdCBvZiBwcm9wZXJ0eSB2YWx1ZXMuIE9uY2UgdGhlIGNlcnRpZmljYXRlcyBhcmUgcHJvdmlzaW9uZWQsIHRoZSBkZXZpY2VzIGNhbiBpbW1lZGlhdGVseSBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtXG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWItMTYgbS10LTE2XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9zZWxmXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRFc3QoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cInN0aWNreS1ib3R0b20gZC1ibG9jayBwLXQtMTYgcC1iLTE2IHNlcGFyYXRvci10b3AgYmctbGV2ZWwtMFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJ7IGNhbmNlbDogdHJ1ZSwgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdcIlxuICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgICAob25OZXh0KT1cInVwbG9hZCgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6ICdVcGxvYWQnIH1cIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuXG4gICAgPGNkay1zdGVwIHN0YXRlPVwiZmluYWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLTI0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzOyBlbHNlIHdhcm5pbmdcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgIHRleHQ9XCJ7eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3dhcm5pbmc+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwic2VwYXJhdG9yLXRvcCBtLXQtMTZcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0OyBlbHNlIGZhaWxlZFJlc3BvbnNlXCI+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0lmPVwic3VjY2VzczsgZWxzZSBmYWlsXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiIGljb249XCJjaGVjay1jaXJjbGVcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8cD57eyAnQWxsIGRldmljZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgPC9jOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbD5cbiAgICAgICAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIGljb249XCJiYW5cIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IHJlc3VsdD8ubnVtYmVyT2ZGYWlsZWQsIHRvdGFsOiByZXN1bHQ/Lm51bWJlck9mQWxsIH1cIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHByb2Nlc3Mge3sgY291bnQgfX0gb3V0IG9mIHt7IHRvdGFsIH19LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyByZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmYWlsZWRSZXNwb25zZT5cbiAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgW2ljb25dPVwiJ2JhbidcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZmFpbGVkUmVzdWx0Py5tZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IGZhaWxlZFJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBuZXh0OiB0cnVlIH1cIlxuICAgICAgICAob25OZXh0KT1cImNvbXBsZXRlKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgbmV4dDogc3VjY2VzcyA/ICdDbG9zZScgOiAnQ2FuY2VsJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgPC9jOHktc3RlcHBlcj5cbjwvYzh5LW1vZGFsPlxuIl19
|