aril 2.0.1-dev.4 → 2.0.1-dev.5
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/boot/config/apps/src/interfaces.d.ts +7 -1
- package/boot/config/apps/src/route-close.service.d.ts +8 -3
- package/boot/config/apps/src/route-permissions.d.ts +2 -2
- package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
- package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
- package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
- package/esm2022/boot/config/apps/src/route-close.service.mjs +11 -4
- package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
- package/esm2022/boot/host/src/bootstrap.mjs +5 -3
- package/esm2022/boot/mfe/src/bootstrap.mjs +11 -3
- package/esm2022/http/index.mjs +1 -2
- package/esm2022/http/src/serviceBase.mjs +4 -4
- package/esm2022/http/src/serviceStateMethods.mjs +9 -1
- package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
- package/esm2022/selection/aril-selection.mjs +5 -0
- package/esm2022/selection/index.mjs +2 -0
- package/esm2022/selection/src/interfaces.mjs +2 -0
- package/esm2022/selection/src/selection-group.service.mjs +195 -0
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +2 -2
- package/esm2022/theme/layout/index.mjs +4 -2
- package/esm2022/ui/button/index.mjs +1 -2
- package/esm2022/ui/button/src/button.component.mjs +5 -2
- package/esm2022/ui/charts/index.mjs +1 -11
- package/esm2022/ui/lib/index.mjs +1 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +9 -5
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +25 -25
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +2 -2
- package/esm2022/ui/selectBox/src/select-box.component.mjs +11 -34
- package/esm2022/ui/table/src/table.component.mjs +10 -5
- package/esm2022/ui/value/src/value.component.mjs +3 -2
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +14 -6
- package/esm2022/util/activity/aril-util-activity.mjs +5 -0
- package/esm2022/util/activity/index.mjs +4 -0
- package/esm2022/util/activity/src/activity.constants.mjs +4 -0
- package/esm2022/util/activity/src/activity.service.mjs +218 -0
- package/esm2022/util/activity/src/activity.types.mjs +2 -0
- package/esm2022/util/block/src/block.mjs +9 -25
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +10 -5
- package/fesm2022/{aril-app.component-s14ruALV.mjs → aril-app.component-MjG_tPEe.mjs} +2 -1
- package/fesm2022/{aril-app.component-s14ruALV.mjs.map → aril-app.component-MjG_tPEe.mjs.map} +1 -1
- package/fesm2022/aril-boot-config-api.mjs +2 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +36 -12
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +6 -4
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +4 -2
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-oxzMhRXe.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
- package/fesm2022/{aril-boot-mfe-app.component-oxzMhRXe.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-CKOM61xb.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +12 -4
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +11 -7
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +4 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-selection.mjs +202 -0
- package/fesm2022/aril-selection.mjs.map +1 -0
- package/fesm2022/aril-theme-layout.mjs +4 -193
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +14 -6
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +5 -17
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +4 -1302
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +10 -98
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +24 -24
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +10 -33
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +9 -4
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +2 -1
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +228 -0
- package/fesm2022/aril-util-activity.mjs.map +1 -0
- package/fesm2022/aril-util-block.mjs +9 -25
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +9 -4
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril.mjs +14 -5
- package/fesm2022/aril.mjs.map +1 -1
- package/http/index.d.ts +0 -1
- package/http/src/serviceStateMethods.d.ts +1 -0
- package/package.json +215 -239
- package/selection/index.d.ts +1 -0
- package/selection/src/interfaces.d.ts +8 -0
- package/{theme/layout/service → selection/src}/selection-group.service.d.ts +1 -1
- package/theme/layout/index.d.ts +1 -1
- package/theme/layout/index.ts +3 -1
- package/ui/button/index.d.ts +0 -1
- package/ui/button/src/button.component.d.ts +2 -0
- package/ui/charts/index.d.ts +0 -10
- package/ui/lib/index.d.ts +0 -3
- package/ui/lib/src/form/form-error-message.directive.d.ts +4 -3
- package/ui/multiSelect/src/multi-select.component.d.ts +4 -5
- package/ui/selectBox/src/select-box.component.d.ts +2 -7
- package/ui/table/src/table.component.d.ts +3 -2
- package/util/activity/index.d.ts +3 -0
- package/util/activity/src/activity.constants.d.ts +3 -0
- package/util/activity/src/activity.service.d.ts +35 -0
- package/util/activity/src/activity.types.d.ts +13 -0
- package/util/block/src/block.d.ts +4 -10
- package/util/pub-sub/src/pub-sub.service.d.ts +2 -2
- package/esm2022/http/src/serviceMockBase.mjs +0 -4
- package/esm2022/theme/layout/service/selection-group.service.mjs +0 -195
- package/esm2022/ui/button/src/split-button.component.mjs +0 -18
- package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +0 -124
- package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +0 -164
- package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +0 -116
- package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +0 -114
- package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +0 -100
- package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +0 -117
- package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +0 -252
- package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +0 -89
- package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +0 -82
- package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +0 -137
- package/esm2022/ui/charts/src/theme/theme.mjs +0 -54
- package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +0 -5
- package/esm2022/ui/dxEditor/index.mjs +0 -2
- package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +0 -26
- package/esm2022/ui/lib/src/form/form-field-builder.mjs +0 -23
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +0 -49
- package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +0 -25
- package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +0 -5
- package/esm2022/ui/overlayPanel/index.mjs +0 -2
- package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +0 -20
- package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +0 -5
- package/esm2022/ui/tooltip/index.mjs +0 -2
- package/esm2022/ui/tooltip/src/tooltip-component.mjs +0 -23
- package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +0 -5
- package/esm2022/ui/treeTable/index.mjs +0 -2
- package/esm2022/ui/treeTable/src/tree-table.component.mjs +0 -55
- package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +0 -5
- package/esm2022/ui-business/operation-types-dialog/index.mjs +0 -2
- package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +0 -76
- package/esm2022/util/unwrap/aril-util-unwrap.mjs +0 -5
- package/esm2022/util/unwrap/index.mjs +0 -2
- package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +0 -24
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-CKOM61xb.mjs.map +0 -1
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs +0 -83
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +0 -1
- package/fesm2022/aril-ui-dxEditor.mjs +0 -33
- package/fesm2022/aril-ui-dxEditor.mjs.map +0 -1
- package/fesm2022/aril-ui-overlayPanel.mjs +0 -27
- package/fesm2022/aril-ui-overlayPanel.mjs.map +0 -1
- package/fesm2022/aril-ui-tooltip.mjs +0 -30
- package/fesm2022/aril-ui-tooltip.mjs.map +0 -1
- package/fesm2022/aril-ui-treeTable.mjs +0 -62
- package/fesm2022/aril-ui-treeTable.mjs.map +0 -1
- package/fesm2022/aril-util-unwrap.mjs +0 -31
- package/fesm2022/aril-util-unwrap.mjs.map +0 -1
- package/http/src/serviceMockBase.d.ts +0 -6
- package/theme/layout/service/selection-group.service.ts +0 -209
- package/ui/button/src/split-button.component.d.ts +0 -8
- package/ui/charts/src/amCharts/column/column-chart.component.d.ts +0 -25
- package/ui/charts/src/amCharts/line/line-chart.component.d.ts +0 -26
- package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +0 -24
- package/ui/charts/src/highCharts/area/area-chart.component.d.ts +0 -20
- package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +0 -26
- package/ui/charts/src/highCharts/column/column-chart.component.d.ts +0 -28
- package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +0 -32
- package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +0 -21
- package/ui/charts/src/highCharts/line/line-chart.component.d.ts +0 -21
- package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +0 -27
- package/ui/charts/src/theme/theme.d.ts +0 -5
- package/ui/dxEditor/index.d.ts +0 -1
- package/ui/dxEditor/src/dx-editor.component.d.ts +0 -11
- package/ui/lib/src/form/form-field-builder.d.ts +0 -8
- package/ui/lib/src/input/common-input-validators.service.d.ts +0 -20
- package/ui/lib/src/input/input-disabled.directive.d.ts +0 -9
- package/ui/overlayPanel/index.d.ts +0 -1
- package/ui/overlayPanel/src/overlay-panel.component.d.ts +0 -8
- package/ui/tooltip/index.d.ts +0 -1
- package/ui/tooltip/src/tooltip-component.d.ts +0 -14
- package/ui/treeTable/index.d.ts +0 -1
- package/ui/treeTable/src/tree-table.component.d.ts +0 -21
- package/ui-business/operation-types-dialog/index.d.ts +0 -1
- package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +0 -28
- package/util/unwrap/index.d.ts +0 -1
- package/util/unwrap/src/unwrap-tag.directive.d.ts +0 -9
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Output, computed, input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Output, computed, inject, input } from '@angular/core';
|
|
2
2
|
import { ButtonModule } from 'primeng/button';
|
|
3
3
|
import { iconTransform } from 'aril/ui/lib';
|
|
4
|
+
import { ActivityService } from 'aril/util/activity';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "primeng/button";
|
|
6
7
|
export class ButtonComponent {
|
|
@@ -18,6 +19,7 @@ export class ButtonComponent {
|
|
|
18
19
|
this.iconPos = input('left');
|
|
19
20
|
this.color = input.required();
|
|
20
21
|
this.clickEvent = new EventEmitter();
|
|
22
|
+
this.activity = inject(ActivityService);
|
|
21
23
|
this._icon = computed(() => iconTransform(this.icon()));
|
|
22
24
|
this._color = computed(() => `p-button-${this.color()}`);
|
|
23
25
|
this._styleClass = computed(() => {
|
|
@@ -26,6 +28,7 @@ export class ButtonComponent {
|
|
|
26
28
|
}
|
|
27
29
|
clickEvnt(e) {
|
|
28
30
|
e.stopPropagation();
|
|
31
|
+
this.activity.track(this.label() ?? '', {}, 'BUTTON_CLICK');
|
|
29
32
|
this.clickEvent.emit(e);
|
|
30
33
|
}
|
|
31
34
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -37,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
37
40
|
}], propDecorators: { clickEvent: [{
|
|
38
41
|
type: Output
|
|
39
42
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvYnV0dG9uL3NyYy9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS9idXR0b24vc3JjL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFjckQsTUFBTSxPQUFPLGVBQWU7SUFSNUI7UUFTQyxVQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDeEIsWUFBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDOUIsWUFBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3hCLFNBQUksR0FBRyxLQUFLLENBQU8sSUFBSSxDQUFDLENBQUM7UUFDekIsU0FBSSxHQUFHLEtBQUssRUFBYSxDQUFDO1FBQzFCLFlBQU8sR0FBRyxLQUFLLENBQXFCLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFdkIsZUFBVSxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBRW5ELGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdEQsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRyxDQUFDLENBQUMsQ0FBQztRQUVwRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwRCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDbkssQ0FBQyxDQUFDLENBQUM7S0FPSDtJQUxBLFNBQVMsQ0FBQyxDQUFRO1FBQ2pCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTlCVyxlQUFlO2tHQUFmLGVBQWUsd2tEQUpmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw4QkNmcEQsK1RBWUEsMkNESVcsWUFBWTs7MkZBR1YsZUFBZTtrQkFSM0IsU0FBUztpQ0FDRyxJQUFJLFlBQ04sMEJBQTBCLFFBRTlCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQzVDLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU07OEJBZ0JyQyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcblxyXG5pbXBvcnQgeyBQcmltZUljb24sIGljb25UcmFuc2Zvcm0gfSBmcm9tICdhcmlsL3VpL2xpYic7XHJcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9hY3Rpdml0eSc7XHJcblxyXG50eXBlIFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZyc7XHJcbnR5cGUgQ29sb3JzID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnaGVscCcgfCAnZGFuZ2VyJztcclxudHlwZSBCdXR0b25JY29uUG9zaXRpb24gPSAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcmlsLWJ1dHRvbjpub3QoW2NsaWNrXSknLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG5cdGhvc3Q6IHsgaWQ6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKSB9LFxyXG5cdGltcG9ydHM6IFtCdXR0b25Nb2R1bGVdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQge1xyXG5cdGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdGxvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0cmFpc2VkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cm91bmRlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR0ZXh0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG91dGxpbmVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGJhZGdlID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdHNpemUgPSBpbnB1dDxTaXplPignc20nKTtcclxuXHRpY29uID0gaW5wdXQ8UHJpbWVJY29uPigpO1xyXG5cdGljb25Qb3MgPSBpbnB1dDxCdXR0b25JY29uUG9zaXRpb24+KCdsZWZ0Jyk7XHJcblx0Y29sb3IgPSBpbnB1dC5yZXF1aXJlZDxDb2xvcnM+KCk7XHJcblxyXG5cdEBPdXRwdXQoKSBjbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2aXR5ID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XHJcblxyXG5cdF9pY29uID0gY29tcHV0ZWQoKCkgPT4gaWNvblRyYW5zZm9ybSh0aGlzLmljb24oKSEpKTtcclxuXHJcblx0X2NvbG9yID0gY29tcHV0ZWQoKCkgPT4gYHAtYnV0dG9uLSR7dGhpcy5jb2xvcigpfWApO1xyXG5cclxuXHRfc3R5bGVDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdHJldHVybiBgJHt0aGlzLnJhaXNlZCgpID8gYHAtYnV0dG9uLXJhaXNlZGAgOiAnJ30gJHt0aGlzLm91dGxpbmVkKCkgPyBgcC1idXR0b24tb3V0bGluZWRgIDogJyd9ICR7dGhpcy5zaXplKCkgPyBgcC1idXR0b24tJHt0aGlzLnNpemUoKX1gIDogJyd9ICR7dGhpcy5fY29sb3IoKX1gO1xyXG5cdH0pO1xyXG5cclxuXHRjbGlja0V2bnQoZTogRXZlbnQpIHtcclxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHR0aGlzLmFjdGl2aXR5LnRyYWNrKHRoaXMubGFiZWwoKSA/PyAnJywge30sICdCVVRUT05fQ0xJQ0snKTtcclxuXHRcdHRoaXMuY2xpY2tFdmVudC5lbWl0KGUpO1xyXG5cdH1cclxufVxyXG4iLCI8cC1idXR0b25cclxuXHRbbGFiZWxdPVwibGFiZWwoKVwiXHJcblx0W2JhZGdlXT1cImJhZGdlKClcIlxyXG5cdFtpY29uXT1cIl9pY29uKClcIlxyXG5cdFt0ZXh0XT1cInRleHQoKVwiXHJcblx0W3JvdW5kZWRdPVwicm91bmRlZCgpXCJcclxuXHRbaWNvblBvc109XCJpY29uUG9zKClcIlxyXG5cdFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuXHRbc3R5bGVDbGFzc109XCJfc3R5bGVDbGFzcygpXCJcclxuXHRbbG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG5cdChvbkNsaWNrKT1cImNsaWNrRXZudCgkZXZlbnQpXCI+XHJcbjwvcC1idXR0b24+XHJcbiJdfQ==
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
export * from './src/amCharts/pie/pie-chart.component';
|
|
2
|
-
export * from './src/amCharts/column/column-chart.component';
|
|
3
|
-
export * from './src/amCharts/line/line-chart.component';
|
|
4
|
-
export * from './src/highCharts/pie/pie-chart.component';
|
|
5
|
-
export * from './src/highCharts/bar/bar-chart.component';
|
|
6
|
-
export * from './src/highCharts/column/column-chart.component';
|
|
7
|
-
export * from './src/highCharts/area/area-chart.component';
|
|
8
1
|
export * from './src/highCharts/line/line-chart-datetime-axis.component';
|
|
9
|
-
export * from './src/highCharts/line/line-chart-series.component';
|
|
10
|
-
export * as HighChartLine from './src/highCharts/line/line-chart.component';
|
|
11
2
|
export * from './src/highCharts/gauge/solid-gauge.component';
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2NoYXJ0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxPQUFPLEtBQUssYUFBYSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2FtQ2hhcnRzL3BpZS9waWUtY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYW1DaGFydHMvY29sdW1uL2NvbHVtbi1jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hbUNoYXJ0cy9saW5lL2xpbmUtY2hhcnQuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hpZ2hDaGFydHMvcGllL3BpZS1jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9oaWdoQ2hhcnRzL2Jhci9iYXItY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaGlnaENoYXJ0cy9jb2x1bW4vY29sdW1uLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hpZ2hDaGFydHMvYXJlYS9hcmVhLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hpZ2hDaGFydHMvbGluZS9saW5lLWNoYXJ0LWRhdGV0aW1lLWF4aXMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaGlnaENoYXJ0cy9saW5lL2xpbmUtY2hhcnQtc2VyaWVzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGFzIEhpZ2hDaGFydExpbmUgZnJvbSAnLi9zcmMvaGlnaENoYXJ0cy9saW5lL2xpbmUtY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaGlnaENoYXJ0cy9nYXVnZS9zb2xpZC1nYXVnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9oaWdoQ2hhcnRzL2hlYXRtYXAvaGVhdE1hcC1jaGFydC5jb21wb25lbnQnOyJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2NoYXJ0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsOENBQThDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9oaWdoQ2hhcnRzL2xpbmUvbGluZS1jaGFydC1kYXRldGltZS1heGlzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hpZ2hDaGFydHMvZ2F1Z2Uvc29saWQtZ2F1Z2UuY29tcG9uZW50JztcclxuIl19
|
package/esm2022/ui/lib/index.mjs
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/* form */
|
|
2
2
|
export * from './src/form/form-error-message.directive';
|
|
3
3
|
export * from './src/form/form-validation';
|
|
4
|
-
export * from './src/form/form-field-builder';
|
|
5
4
|
/* grid */
|
|
6
5
|
export * from './src/grid/flex-grid.directive';
|
|
7
6
|
export * from './src/grid/enum-color-picker.pipe';
|
|
8
7
|
/* input */
|
|
9
8
|
export * from './src/input/baseInput';
|
|
10
|
-
export * from './src/input/common-input-validators.service';
|
|
11
9
|
export * from './src/input/dx-input-error-message.pipe';
|
|
12
|
-
export * from './src/input/input-disabled.directive';
|
|
13
10
|
export * from './src/input/input-error-message.pipe';
|
|
14
11
|
export * from './src/input/input-transforms';
|
|
15
12
|
export * from './src/input/value-accessor.directive';
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLFVBQVU7QUFDVixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsV0FBVztBQUNYLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGZvcm0gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZm9ybS9mb3JtLWVycm9yLW1lc3NhZ2UuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZm9ybS9mb3JtLXZhbGlkYXRpb24nO1xyXG5cclxuLyogZ3JpZCAqL1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9ncmlkL2ZsZXgtZ3JpZC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9ncmlkL2VudW0tY29sb3ItcGlja2VyLnBpcGUnO1xyXG5cclxuLyogaW5wdXQgKi9cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5wdXQvYmFzZUlucHV0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5wdXQvZHgtaW5wdXQtZXJyb3ItbWVzc2FnZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5wdXQvaW5wdXQtZXJyb3ItbWVzc2FnZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5wdXQvaW5wdXQtdHJhbnNmb3Jtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2lucHV0L3ZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbiJdfQ==
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
/* eslint-disable @angular-eslint/directive-selector */
|
|
2
2
|
import { Directive, input } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
4
|
import { FormErrorMessagesComponent } from './form-error-message.component';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export class FormErrorMessageDirective {
|
|
6
|
-
constructor(viewContainerRef) {
|
|
7
|
+
constructor(viewContainerRef, destroyRef) {
|
|
7
8
|
this.viewContainerRef = viewContainerRef;
|
|
9
|
+
this.destroyRef = destroyRef;
|
|
8
10
|
this.formErrorMessage = input.required();
|
|
9
11
|
this.errorKeys = [];
|
|
10
12
|
}
|
|
11
13
|
ngOnInit() {
|
|
12
|
-
this.formErrorMessage()
|
|
14
|
+
this.formErrorMessage()
|
|
15
|
+
.statusChanges.pipe(takeUntilDestroyed(this.destroyRef))
|
|
16
|
+
.subscribe((status) => {
|
|
13
17
|
if (this.componentRef)
|
|
14
18
|
this.viewContainerRef.remove();
|
|
15
19
|
if (status === 'INVALID') {
|
|
@@ -21,7 +25,7 @@ export class FormErrorMessageDirective {
|
|
|
21
25
|
}
|
|
22
26
|
});
|
|
23
27
|
}
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormErrorMessageDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormErrorMessageDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25
29
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.1.2", type: FormErrorMessageDirective, isStandalone: true, selector: "[formErrorMessage]", inputs: { formErrorMessage: { classPropertyName: "formErrorMessage", publicName: "formErrorMessage", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
26
30
|
}
|
|
27
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormErrorMessageDirective, decorators: [{
|
|
@@ -30,5 +34,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
30
34
|
standalone: true,
|
|
31
35
|
selector: '[formErrorMessage]'
|
|
32
36
|
}]
|
|
33
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.DestroyRef }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci1tZXNzYWdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvbGliL3NyYy9mb3JtL2Zvcm0tZXJyb3ItbWVzc2FnZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBNEIsU0FBUyxFQUE0QixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBTTVFLE1BQU0sT0FBTyx5QkFBeUI7SUFDckMsWUFDa0IsZ0JBQWtDLEVBQ2xDLFVBQXNCO1FBRHRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUd4QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7UUFFL0MsY0FBUyxHQUFhLEVBQUUsQ0FBQztJQUp0QixDQUFDO0lBT0osUUFBUTtRQUNQLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTthQUNyQixhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN2RCxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV0RCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBQ3RGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBekJXLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsb0JBQW9CO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBGb3JtRXJyb3JNZXNzYWdlc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1lcnJvci1tZXNzYWdlLmNvbXBvbmVudCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnW2Zvcm1FcnJvck1lc3NhZ2VdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yTWVzc2FnZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuXHQpIHt9XHJcblxyXG5cdGZvcm1FcnJvck1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA+KCk7XHJcblxyXG5cdGVycm9yS2V5czogc3RyaW5nW10gPSBbXTtcclxuXHRjb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8Rm9ybUVycm9yTWVzc2FnZXNDb21wb25lbnQ+O1xyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZm9ybUVycm9yTWVzc2FnZSgpXHJcblx0XHRcdC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmNvbXBvbmVudFJlZikgdGhpcy52aWV3Q29udGFpbmVyUmVmLnJlbW92ZSgpO1xyXG5cclxuXHRcdFx0XHRpZiAoc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmZvcm1FcnJvck1lc3NhZ2UoKS5lcnJvcnMpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEZvcm1FcnJvck1lc3NhZ2VzQ29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0dGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVzc2FnZXMgPSB0aGlzLmZvcm1FcnJvck1lc3NhZ2UoKS5lcnJvcnM7XHJcblx0XHRcdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lclJlZi5pbnNlcnQodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { Component, effect, input
|
|
1
|
+
import { Component, computed, effect, input } from '@angular/core';
|
|
2
2
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { MultiSelectModule } from 'primeng/multiselect';
|
|
4
|
-
import { firstValueFrom } from 'rxjs';
|
|
5
|
-
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
6
4
|
import { BaseInputComponent, ValueAccessorDirective } from 'aril/ui/lib';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
6
|
+
import * as i1 from "aril/selection";
|
|
9
7
|
import * as i2 from "@ngneat/transloco";
|
|
10
8
|
import * as i3 from "aril/ui/lib";
|
|
11
9
|
import * as i4 from "@angular/forms";
|
|
12
10
|
import * as i5 from "primeng/multiselect";
|
|
13
11
|
export class MultiSelectComponent extends BaseInputComponent {
|
|
14
|
-
constructor(
|
|
12
|
+
constructor(selectionGroupService, translocoService) {
|
|
15
13
|
super();
|
|
16
|
-
this.
|
|
14
|
+
this.selectionGroupService = selectionGroupService;
|
|
17
15
|
this.translocoService = translocoService;
|
|
18
16
|
this.options = input([]);
|
|
19
17
|
this.optionLabel = input('text');
|
|
@@ -27,31 +25,33 @@ export class MultiSelectComponent extends BaseInputComponent {
|
|
|
27
25
|
this.tooltipPosition = input('top');
|
|
28
26
|
this.groupName = input('');
|
|
29
27
|
this.parentSelectionKey = input(null);
|
|
30
|
-
this.selectionItems = signal(null);
|
|
31
28
|
this.showClear = input(false);
|
|
29
|
+
// Enum item'ları artık merkezi SelectionGroupService cache'inden okunur (localStorage + cross-MFE
|
|
30
|
+
// dedupe). groupName yoksa null döner → template options() input'una düşer. Aynı groupName~parent
|
|
31
|
+
// için tekrar HTTP atılmaz; parentSelectionKey değişiminde stale-response race'ini servis yönetir.
|
|
32
|
+
this.selectionItems = computed(() => {
|
|
33
|
+
const groupName = this.groupName();
|
|
34
|
+
if (!groupName)
|
|
35
|
+
return null;
|
|
36
|
+
const key = `${groupName}~${this.parentSelectionKey() ?? 'ALL'}`;
|
|
37
|
+
const group = this.selectionGroupService.selectionGroups()[key];
|
|
38
|
+
return (group?.selectionItems?.map((item) => ({
|
|
39
|
+
key: item.selectionKey,
|
|
40
|
+
text: item.selectionDisplay,
|
|
41
|
+
parentSelectionKey: item.parentSelectionKey
|
|
42
|
+
})) ?? null);
|
|
43
|
+
});
|
|
32
44
|
effect(() => {
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
const groupName = this.groupName();
|
|
46
|
+
if (groupName)
|
|
47
|
+
this.selectionGroupService.fetchEnum(groupName, this.parentSelectionKey() ?? 'ALL');
|
|
35
48
|
});
|
|
36
49
|
}
|
|
37
|
-
|
|
38
|
-
const payload = {
|
|
39
|
-
groupName: this.groupName(),
|
|
40
|
-
parentSelectionKey: this.parentSelectionKey()
|
|
41
|
-
};
|
|
42
|
-
const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
|
|
43
|
-
const selectionGroup = await firstValueFrom(this.http.post(hostApi + '/selection-group/load', payload));
|
|
44
|
-
this.selectionItems.set(selectionGroup?.selectionItems.map((item) => ({
|
|
45
|
-
key: item.selectionKey,
|
|
46
|
-
text: item.selectionDisplay,
|
|
47
|
-
parentSelectionKey: item.parentSelectionKey
|
|
48
|
-
})));
|
|
49
|
-
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i1.SelectionGroupService }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
51
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.2", type: MultiSelectComponent, isStandalone: true, selector: "aril-multi-select[ngModel], aril-multi-select[formControl], aril-multi-select[formControlName]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, defaultLabel: { classPropertyName: "defaultLabel", publicName: "defaultLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsLabel: { classPropertyName: "selectedItemsLabel", publicName: "selectedItemsLabel", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null }, parentSelectionKey: { classPropertyName: "parentSelectionKey", publicName: "parentSelectionKey", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "<p-multiSelect\r\n\t[options]=\"selectionItems() || options()\"\r\n\t[optionLabel]=\"optionLabel()\"\r\n\t[optionValue]=\"optionValue()\"\r\n\t[defaultLabel]=\"defaultLabel()\"\r\n\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t[style]=\"style()\"\r\n\t[styleClass]=\"styleClass()\"\r\n\t[tooltip]=\"tooltip()\"\r\n\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t[appendTo]=\"appendTo()\"\r\n\t[showClear]=\"showClear()\" />\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] }); }
|
|
52
52
|
}
|
|
53
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{ standalone: true, selector: 'aril-multi-select[ngModel], aril-multi-select[formControl], aril-multi-select[formControlName]', imports: [ReactiveFormsModule, MultiSelectModule], hostDirectives: [ValueAccessorDirective], template: "<p-multiSelect\r\n\t[options]=\"selectionItems() || options()\"\r\n\t[optionLabel]=\"optionLabel()\"\r\n\t[optionValue]=\"optionValue()\"\r\n\t[defaultLabel]=\"defaultLabel()\"\r\n\t[selectedItemsLabel]=\"selectedItemsLabel()\"\r\n\t[style]=\"style()\"\r\n\t[styleClass]=\"styleClass()\"\r\n\t[tooltip]=\"tooltip()\"\r\n\t[tooltipPosition]=\"tooltipPosition()\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\t[appendTo]=\"appendTo()\"\r\n\t[showClear]=\"showClear()\" />\r\n" }]
|
|
56
|
-
}], ctorParameters: () => [{ type: i1.
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
}], ctorParameters: () => [{ type: i1.SelectionGroupService }, { type: i2.TranslocoService }] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvbXVsdGlTZWxlY3Qvc3JjL211bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL211bHRpU2VsZWN0L3NyYy9tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFXekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGtCQUFrQjtJQWdDM0QsWUFDa0IscUJBQTRDLEVBQ3RELGdCQUFrQztRQUV6QyxLQUFLLEVBQUUsQ0FBQztRQUhTLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDdEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWpDMUMsWUFBTyxHQUFHLEtBQUssQ0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLEtBQUssQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUNwQyxnQkFBVyxHQUFHLEtBQUssQ0FBUyxLQUFLLENBQUMsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUN4Qyx1QkFBa0IsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7UUFDL0UsYUFBUSxHQUFHLEtBQUssQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1QixvQkFBZSxHQUFHLEtBQUssQ0FBTSxLQUFLLENBQUMsQ0FBQztRQUNwQyxjQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWxDLGtHQUFrRztRQUNsRyxrR0FBa0c7UUFDbEcsbUdBQW1HO1FBQ25HLG1CQUFjLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzVCLE1BQU0sR0FBRyxHQUFHLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRSxPQUFPLENBQ04sS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQzNCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7YUFDM0MsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUNYLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQU9GLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxTQUFTO2dCQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3BHLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F6Q1csb0JBQW9CO2tHQUFwQixvQkFBb0Isay9EQ25CakMsd2hCQWNBLDJDREVXLG1CQUFtQix5VEFBRSxpQkFBaUI7OzJGQUdwQyxvQkFBb0I7a0JBUGhDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdHQUFnRyxXQUVqRyxDQUFDLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLGtCQUNqQyxDQUFDLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEJveEl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtbXVsdGktc2VsZWN0W25nTW9kZWxdLCBhcmlsLW11bHRpLXNlbGVjdFtmb3JtQ29udHJvbF0sIGFyaWwtbXVsdGktc2VsZWN0W2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQge1xyXG5cdG9wdGlvbnMgPSBpbnB1dDxbXT4oW10pO1xyXG5cdG9wdGlvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigndGV4dCcpO1xyXG5cdG9wdGlvblZhbHVlID0gaW5wdXQ8c3RyaW5nPigna2V5Jyk7XHJcblx0ZGVmYXVsdExhYmVsID0gaW5wdXQ8c3RyaW5nPignU2XDp2luaXonKTtcclxuXHRzZWxlY3RlZEl0ZW1zTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gZGVmYXVsdCB2YWx1ZSAtPiAoezB9IGl0ZW1zIHNlbGVjdGVkXHJcblx0YXBwZW5kVG8gPSBpbnB1dDxzdHJpbmc+KCdib2R5Jyk7XHJcblx0c3R5bGUgPSBpbnB1dDxvYmplY3Q+KHt9KTtcclxuXHRzdHlsZUNsYXNzID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0dG9vbHRpcCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PGFueT4oJ3RvcCcpO1xyXG5cdGdyb3VwTmFtZSA9IGlucHV0KCcnKTtcclxuXHRwYXJlbnRTZWxlY3Rpb25LZXkgPSBpbnB1dChudWxsKTtcclxuXHRzaG93Q2xlYXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdC8vIEVudW0gaXRlbSdsYXLEsSBhcnTEsWsgbWVya2V6aSBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgY2FjaGUnaW5kZW4gb2t1bnVyIChsb2NhbFN0b3JhZ2UgKyBjcm9zcy1NRkVcclxuXHQvLyBkZWR1cGUpLiBncm91cE5hbWUgeW9rc2EgbnVsbCBkw7ZuZXIg4oaSIHRlbXBsYXRlIG9wdGlvbnMoKSBpbnB1dCd1bmEgZMO8xZ9lci4gQXluxLEgZ3JvdXBOYW1lfnBhcmVudFxyXG5cdC8vIGnDp2luIHRla3JhciBIVFRQIGF0xLFsbWF6OyBwYXJlbnRTZWxlY3Rpb25LZXkgZGXEn2nFn2ltaW5kZSBzdGFsZS1yZXNwb25zZSByYWNlJ2luaSBzZXJ2aXMgecO2bmV0aXIuXHJcblx0c2VsZWN0aW9uSXRlbXMgPSBjb21wdXRlZDxTZWxlY3RCb3hJdGVtW10gfCBudWxsPigoKSA9PiB7XHJcblx0XHRjb25zdCBncm91cE5hbWUgPSB0aGlzLmdyb3VwTmFtZSgpO1xyXG5cdFx0aWYgKCFncm91cE5hbWUpIHJldHVybiBudWxsO1xyXG5cdFx0Y29uc3Qga2V5ID0gYCR7Z3JvdXBOYW1lfX4ke3RoaXMucGFyZW50U2VsZWN0aW9uS2V5KCkgPz8gJ0FMTCd9YDtcclxuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2Uuc2VsZWN0aW9uR3JvdXBzKClba2V5XTtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdGdyb3VwPy5zZWxlY3Rpb25JdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0a2V5OiBpdGVtLnNlbGVjdGlvbktleSxcclxuXHRcdFx0XHR0ZXh0OiBpdGVtLnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0cGFyZW50U2VsZWN0aW9uS2V5OiBpdGVtLnBhcmVudFNlbGVjdGlvbktleVxyXG5cdFx0XHR9KSkgPz8gbnVsbFxyXG5cdFx0KTtcclxuXHR9KTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlLFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBncm91cE5hbWUgPSB0aGlzLmdyb3VwTmFtZSgpO1xyXG5cdFx0XHRpZiAoZ3JvdXBOYW1lKSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5mZXRjaEVudW0oZ3JvdXBOYW1lLCB0aGlzLnBhcmVudFNlbGVjdGlvbktleSgpID8/ICdBTEwnKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iLCI8cC1tdWx0aVNlbGVjdFxyXG5cdFtvcHRpb25zXT1cInNlbGVjdGlvbkl0ZW1zKCkgfHwgb3B0aW9ucygpXCJcclxuXHRbb3B0aW9uTGFiZWxdPVwib3B0aW9uTGFiZWwoKVwiXHJcblx0W29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlKClcIlxyXG5cdFtkZWZhdWx0TGFiZWxdPVwiZGVmYXVsdExhYmVsKClcIlxyXG5cdFtzZWxlY3RlZEl0ZW1zTGFiZWxdPVwic2VsZWN0ZWRJdGVtc0xhYmVsKClcIlxyXG5cdFtzdHlsZV09XCJzdHlsZSgpXCJcclxuXHRbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzKClcIlxyXG5cdFt0b29sdGlwXT1cInRvb2x0aXAoKVwiXHJcblx0W3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24oKVwiXHJcblx0W2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuXHQobmdNb2RlbENoYW5nZSk9XCJuZ0NvbnRyb2wudmlld1RvTW9kZWxVcGRhdGUoJGV2ZW50KVwiXHJcblx0W2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIlxyXG5cdFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIiAvPlxyXG4iXX0=
|
|
@@ -223,7 +223,7 @@ export class RelativeDateSelectorComponent extends BaseInputComponent {
|
|
|
223
223
|
return `relativeDateSelector.units.${unitNameMap[unit]}${suffix}`;
|
|
224
224
|
}
|
|
225
225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RelativeDateSelectorComponent, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RelativeDateSelectorComponent, isStandalone: true, selector: "aril-relative-date-picker[ngModel], aril-relative-date-picker[formControl], aril-relative-date-picker[formControlName]", viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: ["op"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i2.ValueAccessorDirective }], ngImport: i0, template: "<div class=\"relative-date-selector\">\r\n\t<div class=\"input-wrapper flex align-items-center\" (click)=\"onInputClick($event)\">\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\treadonly\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\tclass=\"p-inputtext p-component\"\r\n\t\t\t[class.p-invalid]=\"ngControl.invalid && ngControl.touched\"\r\n\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.placeholder')\"\r\n\t\t\t[pTooltip]=\"ngControl.invalid && ngControl.touched ? (ngControl.control.value | inputErrorMessage: ngControl) : ''\"\r\n\t\t\t[tooltipOptions]=\"tooltipOptions\" />\r\n\t\t<div class=\"calendar-icon-wrapper flex align-items-center justify-content-center\" (click)=\"toggleQuickSelect($event)\">\r\n\t\t\t<i class=\"pi pi-calendar calendar-icon\"></i>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-overlayPanel\r\n\t\t#op\r\n\t\t[style]=\"{ minWidth: '350px', maxHeight: '600px', overflow: 'visible' }\"\r\n\t\t[dismissable]=\"true\"\r\n\t\t(onHide)=\"showOverlayPanel.set(false)\">\r\n\t\t<p-tabView (onChange)=\"onTabChange($event)\" [activeIndex]=\"activeTabIndex()\">\r\n\t\t\t<p-tabPanel [header]=\"translocoService.translate('relativeDateSelector.absolute')\">\r\n\t\t\t\t<div class=\"flex justify-content-center\">\r\n\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t[(ngModel)]=\"absoluteDate\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onAbsoluteDateChange($event)\"\r\n\t\t\t\t\t\t[inline]=\"true\"\r\n\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t[showSeconds]=\"true\">\r\n\t\t\t\t\t</aril-calendar>\r\n\t\t\t\t</div>\r\n\t\t\t</p-tabPanel>\r\n\r\n\t\t\t<p-tabPanel [header]=\"translocoService.translate('relativeDateSelector.relative')\">\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<div class=\"flex flex-column gap-2 m-2\">\r\n\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t[(ngModel)]=\"relativeValue\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"onRelativeChange()\"\r\n\t\t\t\t\t\t\t[min]=\"1\"\r\n\t\t\t\t\t\t\t[showButtons]=\"true\"\r\n\t\t\t\t\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.valuePlaceholder')\">\r\n\t\t\t\t\t\t</aril-number>\r\n\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"relativeUnit\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"onRelativeChange()\"\r\n\t\t\t\t\t\t\t[items]=\"relativeUnits\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\"\r\n\t\t\t\t\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.selectUnit')\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"m-2\">\r\n\t\t\t\t\t\t<small class=\"text-muted\">\r\n\t\t\t\t\t\t\t<strong>{{ translocoService.translate('relativeDateSelector.examples') }}:</strong> {{ translocoService.translate('relativeDateSelector.examplesText') }}\r\n\t\t\t\t\t\t</small>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</p-tabPanel>\r\n\t\t</p-tabView>\r\n\t</p-overlayPanel>\r\n\r\n\t<!-- Quick Select Panel -->\r\n\t@if (showQuickSelect()) {\r\n\t\t<div class=\"quick-select-panel mt-2\">\r\n\t\t\t<div class=\"quick-select-header flex justify-content-between align-items-center p-3\">\r\n\t\t\t\t<span class=\"title\">{{ translocoService.translate('relativeDateSelector.quickSelect') }}</span>\r\n\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t<i class=\"pi pi-times cursor-pointer\" (click)=\"showQuickSelect.set(false)\"></i>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"quick-select-body p-3\">\r\n\t\t\t\t<!-- Custom Quick Select Inputs -->\r\n\t\t\t\t<div class=\"quick-select-custom mb-3 pb-3\">\r\n\t\t\t\t\t<div class=\"flex gap-2 align-items-center mb-3\">\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"quickSelectDirection\"\r\n\t\t\t\t\t\t\t[items]=\"quickSelectDirections\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\r\n\t\t\t\t\t\t<aril-number [(ngModel)]=\"quickSelectValue\" [min]=\"1\" [showButtons]=\"true\"> </aril-number>\r\n\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"quickSelectUnit\"\r\n\t\t\t\t\t\t\t[items]=\"quickSelectUnits\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"translocoService.translate('relativeDateSelector.apply')\"\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"applyQuickSelectCustom()\"\r\n\t\t\t\t\t\t\t[style]=\"{ 'min-width': '80px' }\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Commonly Used Options -->\r\n\t\t\t\t<div class=\"quick-select-section\">\r\n\t\t\t\t\t<span class=\"title-section mb-2\">{{ translocoService.translate('relativeDateSelector.commonlyUsed') }}</span>\r\n\t\t\t\t\t<div class=\"quick-select-options\">\r\n\t\t\t\t\t\t@for (option of commonlyUsedOptions; track option.value) {\r\n\t\t\t\t\t\t\t<button type=\"button\" class=\"quick-select-option\" (click)=\"applyQuickSelect(option)\">\r\n\t\t\t\t\t\t\t\t{{ option.label }}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n", styles: [".relative-date-selector{position:relative}.relative-date-selector .input-wrapper{position:relative;cursor:pointer}.relative-date-selector .input-wrapper input{width:100%;padding-right:3rem;cursor:pointer;transition:all var(--transition-duration) ease}.relative-date-selector .input-wrapper input:hover{border-color:var(--focus-border-color)}.relative-date-selector .input-wrapper input:focus{box-shadow:var(--focus-ring);border-color:var(--focus-border-color)}.relative-date-selector .input-wrapper input.p-invalid{border-color:var(--error-300)}.relative-date-selector .input-wrapper .calendar-icon-wrapper{position:absolute;right:.5rem;width:2rem;height:2rem;background:var(--surface-100);border:1px solid var(--surface-border);border-radius:var(--border-radius);cursor:pointer;transition:all var(--transition-duration) ease;z-index:2}.relative-date-selector .input-wrapper .calendar-icon-wrapper:hover{background:var(--surface-200);border-color:var(--primary-color);transform:scale(1.05)}.relative-date-selector .input-wrapper .calendar-icon-wrapper:hover .calendar-icon{color:var(--primary-color)}.relative-date-selector .input-wrapper .calendar-icon-wrapper:active{transform:scale(.98)}.relative-date-selector .input-wrapper .calendar-icon-wrapper .calendar-icon{font-size:.9375rem;color:var(--text-color-secondary);transition:color var(--transition-duration) ease}.relative-date-selector .quick-select-panel{position:absolute;top:100%;right:0;background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;box-shadow:0 4px 20px #00000014;z-index:1000;width:460px;max-height:520px;overflow:hidden;animation:slideDown var(--transition-duration) ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.relative-date-selector .quick-select-panel .quick-select-header{border-bottom:1px solid var(--surface-200);background:var(--surface-100)}.relative-date-selector .quick-select-panel .quick-select-header .title{margin:0;font-size:13px;font-weight:700;color:var(--surface-600)}.relative-date-selector .quick-select-panel .quick-select-header i{cursor:pointer;color:var(--text-color-secondary);font-size:.875rem;transition:all var(--transition-duration) ease}.relative-date-selector .quick-select-panel .quick-select-header i:hover{color:var(--text-color);transform:scale(1.1)}.relative-date-selector .quick-select-panel .quick-select-body{max-height:440px;overflow-y:auto}.relative-date-selector .quick-select-panel .quick-select-custom{border-bottom:1px solid var(--surface-200)}.relative-date-selector .quick-select-panel .quick-select-section .title-section{display:inline-block;font-size:.8rem;font-weight:600;color:var(--text-color-secondary);text-transform:uppercase;letter-spacing:.5px}.relative-date-selector .quick-select-panel .quick-select-options{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.relative-date-selector .quick-select-panel .quick-select-options .quick-select-option{padding:.625rem 1rem;background:var(--surface-100);border:1px solid var(--surface-200);text-align:left;cursor:pointer;border-radius:var(--border-radius);transition:all var(--transition-duration) ease;color:var(--text-color);font-size:.875rem;font-weight:500}.relative-date-selector .quick-select-panel .quick-select-options .quick-select-option:hover{transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i4.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: CalendarComponent, selector: "aril-calendar[ngModel], aril-calendar[formControl], aril-calendar[formControlName]", inputs: ["minDate", "maxDate", "inputStyle", "inputStyleClass", "autoZIndex", "inline", "showIcon", "showTime", "showWeek", "showSeconds", "disabledDates", "numberOfMonthToShow", "appendTo", "dataType", "placeholder", "view", "selectionMode", "rangeConfig", "tabindex", "showOnFocus", "timeOnly", "keepInvalid"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: NumberComponent, selector: "aril-number[ngModel], aril-number[formControl], aril-number[formControlName]", inputs: ["min", "max", "showButtons", "placeholder", "prefix", "locale", "suffix", "maxlength", "showClear", "useGrouping", "maxDigits", "minDigits", "tabindex", "inputStyle", "buttonLayout"] }, { kind: "component", type: SelectBoxComponent, selector: "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "grouped", "showClearButton", "placeholder", "searchExpr"], outputs: ["onSelectionChanged"] }, { kind: "pipe", type: InputErrorMessagePipe, name: "inputErrorMessage" }] }); }
|
|
226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RelativeDateSelectorComponent, isStandalone: true, selector: "aril-relative-date-picker[ngModel], aril-relative-date-picker[formControl], aril-relative-date-picker[formControlName]", viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: ["op"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i2.ValueAccessorDirective }], ngImport: i0, template: "<div class=\"relative-date-selector\">\r\n\t<div class=\"input-wrapper flex align-items-center\" (click)=\"onInputClick($event)\">\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\treadonly\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\tclass=\"p-inputtext p-component\"\r\n\t\t\t[class.p-invalid]=\"ngControl.invalid && ngControl.touched\"\r\n\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.placeholder')\"\r\n\t\t\t[pTooltip]=\"ngControl.invalid && ngControl.touched ? (ngControl.control.value | inputErrorMessage: ngControl) : ''\"\r\n\t\t\t[tooltipOptions]=\"tooltipOptions\" />\r\n\t\t<div class=\"calendar-icon-wrapper flex align-items-center justify-content-center\" (click)=\"toggleQuickSelect($event)\">\r\n\t\t\t<i class=\"pi pi-calendar calendar-icon\"></i>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-overlayPanel\r\n\t\t#op\r\n\t\t[style]=\"{ minWidth: '350px', maxHeight: '600px', overflow: 'visible' }\"\r\n\t\t[dismissable]=\"true\"\r\n\t\t(onHide)=\"showOverlayPanel.set(false)\">\r\n\t\t<p-tabView (onChange)=\"onTabChange($event)\" [activeIndex]=\"activeTabIndex()\">\r\n\t\t\t<p-tabPanel [header]=\"translocoService.translate('relativeDateSelector.absolute')\">\r\n\t\t\t\t<div class=\"flex justify-content-center\">\r\n\t\t\t\t\t<aril-calendar\r\n\t\t\t\t\t\t[(ngModel)]=\"absoluteDate\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onAbsoluteDateChange($event)\"\r\n\t\t\t\t\t\t[inline]=\"true\"\r\n\t\t\t\t\t\t[showTime]=\"true\"\r\n\t\t\t\t\t\t[showSeconds]=\"true\">\r\n\t\t\t\t\t</aril-calendar>\r\n\t\t\t\t</div>\r\n\t\t\t</p-tabPanel>\r\n\r\n\t\t\t<p-tabPanel [header]=\"translocoService.translate('relativeDateSelector.relative')\">\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<div class=\"flex flex-column gap-2 m-2\">\r\n\t\t\t\t\t\t<aril-number\r\n\t\t\t\t\t\t\t[(ngModel)]=\"relativeValue\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"onRelativeChange()\"\r\n\t\t\t\t\t\t\t[min]=\"1\"\r\n\t\t\t\t\t\t\t[showButtons]=\"true\"\r\n\t\t\t\t\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.valuePlaceholder')\">\r\n\t\t\t\t\t\t</aril-number>\r\n\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"relativeUnit\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"onRelativeChange()\"\r\n\t\t\t\t\t\t\t[items]=\"relativeUnits\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\"\r\n\t\t\t\t\t\t\t[placeholder]=\"translocoService.translate('relativeDateSelector.selectUnit')\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"m-2\">\r\n\t\t\t\t\t\t<small class=\"text-muted\">\r\n\t\t\t\t\t\t\t<strong>{{ translocoService.translate('relativeDateSelector.examples') }}:</strong> {{ translocoService.translate('relativeDateSelector.examplesText') }}\r\n\t\t\t\t\t\t</small>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</p-tabPanel>\r\n\t\t</p-tabView>\r\n\t</p-overlayPanel>\r\n\r\n\t<!-- Quick Select Panel -->\r\n\t@if (showQuickSelect()) {\r\n\t\t<div class=\"quick-select-panel mt-2\">\r\n\t\t\t<div class=\"quick-select-header flex justify-content-between align-items-center p-3\">\r\n\t\t\t\t<span class=\"title\">{{ translocoService.translate('relativeDateSelector.quickSelect') }}</span>\r\n\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t<i class=\"pi pi-times cursor-pointer\" (click)=\"showQuickSelect.set(false)\"></i>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"quick-select-body p-3\">\r\n\t\t\t\t<!-- Custom Quick Select Inputs -->\r\n\t\t\t\t<div class=\"quick-select-custom mb-3 pb-3\">\r\n\t\t\t\t\t<div class=\"flex gap-2 align-items-center mb-3\">\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"quickSelectDirection\"\r\n\t\t\t\t\t\t\t[items]=\"quickSelectDirections\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\r\n\t\t\t\t\t\t<aril-number [(ngModel)]=\"quickSelectValue\" [min]=\"1\" [showButtons]=\"true\"> </aril-number>\r\n\r\n\t\t\t\t\t\t<aril-select-box\r\n\t\t\t\t\t\t\t[(ngModel)]=\"quickSelectUnit\"\r\n\t\t\t\t\t\t\t[items]=\"quickSelectUnits\"\r\n\t\t\t\t\t\t\t[itemKey]=\"'value'\"\r\n\t\t\t\t\t\t\t[itemText]=\"'label'\">\r\n\t\t\t\t\t\t</aril-select-box>\r\n\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"translocoService.translate('relativeDateSelector.apply')\"\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"applyQuickSelectCustom()\"\r\n\t\t\t\t\t\t\t[style]=\"{ 'min-width': '80px' }\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Commonly Used Options -->\r\n\t\t\t\t<div class=\"quick-select-section\">\r\n\t\t\t\t\t<span class=\"title-section mb-2\">{{ translocoService.translate('relativeDateSelector.commonlyUsed') }}</span>\r\n\t\t\t\t\t<div class=\"quick-select-options\">\r\n\t\t\t\t\t\t@for (option of commonlyUsedOptions; track option.value) {\r\n\t\t\t\t\t\t\t<button type=\"button\" class=\"quick-select-option\" (click)=\"applyQuickSelect(option)\">\r\n\t\t\t\t\t\t\t\t{{ option.label }}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n", styles: [".relative-date-selector{position:relative}.relative-date-selector .input-wrapper{position:relative;cursor:pointer}.relative-date-selector .input-wrapper input{width:100%;padding-right:3rem;cursor:pointer;transition:all var(--transition-duration) ease}.relative-date-selector .input-wrapper input:hover{border-color:var(--focus-border-color)}.relative-date-selector .input-wrapper input:focus{box-shadow:var(--focus-ring);border-color:var(--focus-border-color)}.relative-date-selector .input-wrapper input.p-invalid{border-color:var(--error-300)}.relative-date-selector .input-wrapper .calendar-icon-wrapper{position:absolute;right:.5rem;width:2rem;height:2rem;background:var(--surface-100);border:1px solid var(--surface-border);border-radius:var(--border-radius);cursor:pointer;transition:all var(--transition-duration) ease;z-index:2}.relative-date-selector .input-wrapper .calendar-icon-wrapper:hover{background:var(--surface-200);border-color:var(--primary-color);transform:scale(1.05)}.relative-date-selector .input-wrapper .calendar-icon-wrapper:hover .calendar-icon{color:var(--primary-color)}.relative-date-selector .input-wrapper .calendar-icon-wrapper:active{transform:scale(.98)}.relative-date-selector .input-wrapper .calendar-icon-wrapper .calendar-icon{font-size:.9375rem;color:var(--text-color-secondary);transition:color var(--transition-duration) ease}.relative-date-selector .quick-select-panel{position:absolute;top:100%;right:0;background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;box-shadow:0 4px 20px #00000014;z-index:1000;width:460px;max-height:520px;overflow:hidden;animation:slideDown var(--transition-duration) ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.relative-date-selector .quick-select-panel .quick-select-header{border-bottom:1px solid var(--surface-200);background:var(--surface-100)}.relative-date-selector .quick-select-panel .quick-select-header .title{margin:0;font-size:13px;font-weight:700;color:var(--surface-600)}.relative-date-selector .quick-select-panel .quick-select-header i{cursor:pointer;color:var(--text-color-secondary);font-size:.875rem;transition:all var(--transition-duration) ease}.relative-date-selector .quick-select-panel .quick-select-header i:hover{color:var(--text-color);transform:scale(1.1)}.relative-date-selector .quick-select-panel .quick-select-body{max-height:440px;overflow-y:auto}.relative-date-selector .quick-select-panel .quick-select-custom{border-bottom:1px solid var(--surface-200)}.relative-date-selector .quick-select-panel .quick-select-section .title-section{display:inline-block;font-size:.8rem;font-weight:600;color:var(--text-color-secondary);text-transform:uppercase;letter-spacing:.5px}.relative-date-selector .quick-select-panel .quick-select-options{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.relative-date-selector .quick-select-panel .quick-select-options .quick-select-option{padding:.625rem 1rem;background:var(--surface-100);border:1px solid var(--surface-200);text-align:left;cursor:pointer;border-radius:var(--border-radius);transition:all var(--transition-duration) ease;color:var(--text-color);font-size:.875rem;font-weight:500}.relative-date-selector .quick-select-panel .quick-select-options .quick-select-option:hover{transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i4.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i5.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: CalendarComponent, selector: "aril-calendar[ngModel], aril-calendar[formControl], aril-calendar[formControlName]", inputs: ["minDate", "maxDate", "inputStyle", "inputStyleClass", "autoZIndex", "inline", "showIcon", "showTime", "showWeek", "showSeconds", "disabledDates", "numberOfMonthToShow", "appendTo", "dataType", "placeholder", "view", "selectionMode", "rangeConfig", "tabindex", "showOnFocus", "timeOnly", "keepInvalid"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: NumberComponent, selector: "aril-number[ngModel], aril-number[formControl], aril-number[formControlName]", inputs: ["min", "max", "showButtons", "placeholder", "prefix", "locale", "suffix", "maxlength", "showClear", "useGrouping", "maxDigits", "minDigits", "tabindex", "inputStyle", "buttonLayout"] }, { kind: "component", type: SelectBoxComponent, selector: "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", inputs: ["itemKey", "itemText", "parentSelectionKey", "tabindex", "items", "grouped", "showClearButton", "placeholder", "searchExpr"], outputs: ["onSelectionChanged"] }, { kind: "pipe", type: InputErrorMessagePipe, name: "inputErrorMessage" }] }); }
|
|
227
227
|
}
|
|
228
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RelativeDateSelectorComponent, decorators: [{
|
|
229
229
|
type: Component,
|
|
@@ -245,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
245
245
|
type: ViewChild,
|
|
246
246
|
args: ['op']
|
|
247
247
|
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUtZGF0ZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL3JlbGF0aXZlRGF0ZVNlbGVjdG9yL3NyYy9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvcmVsYXRpdmVEYXRlU2VsZWN0b3Ivc3JjL3JlbGF0aXZlLWRhdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFF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QyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDeEcsT0FBTyw4QkFBOEIsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ25FLENBQUM7OEdBbFBXLDZCQUE2QjtrR0FBN0IsNkJBQTZCLHlXQy9DMUMscWlLQXNIQSx1MUdEdEZFLFlBQVksOEJBQ1osbUJBQW1CLHNJQUNuQixXQUFXLHNQQUNYLGtCQUFrQixrV0FDbEIsYUFBYSwya0JBQ2IsYUFBYSxxWEFDYixlQUFlLCtCQUNmLGlCQUFpQix3YkFDakIsZUFBZSw4TkFDZixlQUFlLDBUQUNmLGtCQUFrQixxVEFDbEIscUJBQXFCOzsyRkFJViw2QkFBNkI7a0JBdEJ6QyxTQUFTO2lDQUNHLElBQUksWUFFZix3SEFBd0gsV0FHaEg7d0JBQ1IsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDckIsa0JBQ2UsQ0FBQyxzQkFBc0IsQ0FBQztxRkFHdkIsWUFBWTtzQkFBNUIsU0FBUzt1QkFBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwsIFZpZXdDaGlsZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgT3ZlcmxheVBhbmVsLCBPdmVybGF5UGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgSW5wdXRFcnJvck1lc3NhZ2VQaXBlLCBWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC91aS9saWInO1xyXG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IE51bWJlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvbnVtYmVyJztcclxuaW1wb3J0IHsgU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9zZWxlY3RCb3gnO1xyXG5pbXBvcnQgJ2FyaWwvdXRpbC9wcmltaXRpdmUtZXh0ZW5zaW9ucyc7XHJcblxyXG5pbXBvcnQgeyBSZWxhdGl2ZURhdGVVbml0LCBSZWxhdGl2ZURhdGVEaXJlY3Rpb24sIFJlbGF0aXZlRGF0ZVVuaXROYW1lLCBSZWxhdGl2ZURhdGVVbml0U3VmZml4IH0gZnJvbSAnLi9lbnVtJztcclxuXHJcbmludGVyZmFjZSBRdWlja1NlbGVjdE9wdGlvbiB7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHR2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOlxyXG5cdFx0J2FyaWwtcmVsYXRpdmUtZGF0ZS1waWNrZXJbbmdNb2RlbF0sIGFyaWwtcmVsYXRpdmUtZGF0ZS1waWNrZXJbZm9ybUNvbnRyb2xdLCBhcmlsLXJlbGF0aXZlLWRhdGUtcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0T3ZlcmxheVBhbmVsTW9kdWxlLFxyXG5cdFx0VGFiVmlld01vZHVsZSxcclxuXHRcdFRvb2x0aXBNb2R1bGUsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRDYWxlbmRhckNvbXBvbmVudCxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdE51bWJlckNvbXBvbmVudCxcclxuXHRcdFNlbGVjdEJveENvbXBvbmVudCxcclxuXHRcdElucHV0RXJyb3JNZXNzYWdlUGlwZVxyXG5cdF0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cdEBWaWV3Q2hpbGQoJ29wJykgb3ZlcmxheVBhbmVsITogT3ZlcmxheVBhbmVsO1xyXG5cclxuXHRhY3RpdmVUYWJJbmRleCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cdHNob3dRdWlja1NlbGVjdCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblx0c2hvd092ZXJsYXlQYW5lbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdC8vIEFic29sdXRlIG1vZGVcclxuXHRhYnNvbHV0ZURhdGU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHQvLyBSZWxhdGl2ZSBtb2RlXHJcblx0cmVsYXRpdmVWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblx0cmVsYXRpdmVVbml0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHRyZWxhdGl2ZURpcmVjdGlvbiA9IFJlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0O1xyXG5cclxuXHRyZWxhdGl2ZVVuaXRzOiBhbnlbXSA9IFtdO1xyXG5cdHF1aWNrU2VsZWN0RGlyZWN0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW107XHJcblx0cXVpY2tTZWxlY3RVbml0czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW107XHJcblx0Y29tbW9ubHlVc2VkT3B0aW9uczogUXVpY2tTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG5cclxuXHQvLyBRdWljayBzZWxlY3QgaW5wdXRzXHJcblx0cXVpY2tTZWxlY3REaXJlY3Rpb24gPSBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdDtcclxuXHRxdWlja1NlbGVjdFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHRxdWlja1NlbGVjdFVuaXQgPSBSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXM7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuXHRcdFx0dGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlICE9IG51bGwpIHtcclxuXHRcdFx0dGhpcy5vblZhbHVlQ2hhbmdlKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZU9wdGlvbnMoKTogdm9pZCB7XHJcblx0XHRjb25zdCB1bml0cyA9IE9iamVjdC52YWx1ZXMoUmVsYXRpdmVEYXRlVW5pdCk7XHJcblx0XHRjb25zdCB1bml0TmFtZXMgPSBPYmplY3QudmFsdWVzKFJlbGF0aXZlRGF0ZVVuaXROYW1lKTtcclxuXHRcdGNvbnN0IGRpcmVjdGlvbnMgPSBPYmplY3QudmFsdWVzKFJlbGF0aXZlRGF0ZURpcmVjdGlvbik7XHJcblx0XHRjb25zdCBkaXJlY3Rpb25TdWZmaXhlcyA9IE9iamVjdC52YWx1ZXMoUmVsYXRpdmVEYXRlVW5pdFN1ZmZpeCk7XHJcblxyXG5cdFx0Ly8gUmVsYXRpdmUgdW5pdHNcclxuXHRcdHRoaXMucmVsYXRpdmVVbml0cyA9IHVuaXRzLmZsYXRNYXAoKGNvZGUsIGluZGV4KSA9PlxyXG5cdFx0XHRkaXJlY3Rpb25zLm1hcCgoZGlyLCBkaXJJbmRleCkgPT4gKHtcclxuXHRcdFx0XHRsYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShcclxuXHRcdFx0XHRcdGByZWxhdGl2ZURhdGVTZWxlY3Rvci51bml0cy4ke3VuaXROYW1lc1tpbmRleF19JHtkaXJlY3Rpb25TdWZmaXhlc1tkaXJJbmRleF19YFxyXG5cdFx0XHRcdCksXHJcblx0XHRcdFx0dmFsdWU6IGAke2NvZGV9JHtkaXJ9YFxyXG5cdFx0XHR9KSlcclxuXHRcdCk7XHJcblxyXG5cdFx0Ly8gUXVpY2sgU2VsZWN0IC0gTGFzdC9OZXh0IG9wdGlvbnNcclxuXHRcdHRoaXMucXVpY2tTZWxlY3REaXJlY3Rpb25zID0gW1xyXG5cdFx0XHR7IGxhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5sYXN0JyksIHZhbHVlOiBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdCB9LFxyXG5cdFx0XHR7IGxhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5uZXh0JyksIHZhbHVlOiBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uRnV0dXJlIH1cclxuXHRcdF07XHJcblxyXG5cdFx0dGhpcy5xdWlja1NlbGVjdFVuaXRzID0gdW5pdHMubWFwKChjb2RlLCBpbmRleCkgPT4gKHtcclxuXHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoYHJlbGF0aXZlRGF0ZVNlbGVjdG9yLnVuaXRzLiR7dW5pdE5hbWVzW2luZGV4XX1gKSxcclxuXHRcdFx0dmFsdWU6IGNvZGVcclxuXHRcdH0pKTtcclxuXHJcblx0XHQvLyBDb21tb25seSB1c2VkIHF1aWNrIHNlbGVjdHNcclxuXHRcdGNvbnN0IHF1aWNrT3B0aW9ucyA9IFtcclxuXHRcdFx0eyBrZXk6ICd0b2RheScsIHZhbHVlOiBgbm93LyR7UmVsYXRpdmVEYXRlVW5pdC5EYXlzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICd0aGlzV2VlaycsIHZhbHVlOiBgbm93LyR7UmVsYXRpdmVEYXRlVW5pdC5XZWVrc31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFNaW51dGUnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9MSR7UmVsYXRpdmVEYXRlVW5pdC5NaW51dGVzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0MTVNaW51dGVzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTE1JHtSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3QzME1pbnV0ZXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9MzAke1JlbGF0aXZlRGF0ZVVuaXQuTWludXRlc31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFIb3VyJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTEke1JlbGF0aXZlRGF0ZVVuaXQuSG91cnN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3QyNEhvdXJzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTI0JHtSZWxhdGl2ZURhdGVVbml0LkhvdXJzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0N0RheXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9NyR7UmVsYXRpdmVEYXRlVW5pdC5EYXlzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0MzBEYXlzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTMwJHtSZWxhdGl2ZURhdGVVbml0LkRheXN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3Q5MERheXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9OTAke1JlbGF0aXZlRGF0ZVVuaXQuRGF5c31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFZZWFyJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTEke1JlbGF0aXZlRGF0ZVVuaXQuWWVhcnN9YCB9XHJcblx0XHRdO1xyXG5cclxuXHRcdHRoaXMuY29tbW9ubHlVc2VkT3B0aW9ucyA9IHF1aWNrT3B0aW9ucy5tYXAoKG9wdCkgPT4gKHtcclxuXHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoYHJlbGF0aXZlRGF0ZVNlbGVjdG9yLnF1aWNrT3B0aW9ucy4ke29wdC5rZXl9YCksXHJcblx0XHRcdHZhbHVlOiBvcHQudmFsdWVcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdG9uVmFsdWVDaGFuZ2UodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuXHRcdGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0dGhpcy5hY3RpdmVUYWJJbmRleC5zZXQoMCk7XHJcblx0XHRcdFx0dGhpcy5hYnNvbHV0ZURhdGUgPSB2YWx1ZTtcclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0dGhpcy5hY3RpdmVUYWJJbmRleC5zZXQoMSk7XHJcblx0XHRcdFx0dGhpcy5wYXJzZVJlbGF0aXZlVmFsdWUodmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmFic29sdXRlRGF0ZSA9IG51bGw7XHJcblx0XHRcdHRoaXMucmVsYXRpdmVWYWx1ZSA9IG51bGw7XHJcblx0XHRcdHRoaXMucmVsYXRpdmVVbml0ID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHBhcnNlUmVsYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9ebm93XFxzKig/OihbKy1dKVxccyooXFxkKykoW3NtaGR3TXldKSk/XFxzKig/OlxcLyhbc21oZHdNeV0pKT8kLyk7XHJcblxyXG5cdFx0aWYgKG1hdGNoKSB7XHJcblx0XHRcdGNvbnN0IFssIGRpcmVjdGlvbiwgYW1vdW50LCB1bml0XSA9IG1hdGNoO1xyXG5cdFx0XHRpZiAoZGlyZWN0aW9uICYmIGFtb3VudCAmJiB1bml0KSB7XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZURpcmVjdGlvbiA9IGRpcmVjdGlvbiBhcyBSZWxhdGl2ZURhdGVEaXJlY3Rpb247XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZVZhbHVlID0gcGFyc2VJbnQoYW1vdW50LCAxMCk7XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZVVuaXQgPSB1bml0ICsgZGlyZWN0aW9uO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkFic29sdXRlRGF0ZUNoYW5nZShkYXRlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmFic29sdXRlRGF0ZSA9IGRhdGU7XHJcblx0XHR0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcblx0fVxyXG5cclxuXHRvblJlbGF0aXZlQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy51cGRhdGVWYWx1ZSgpO1xyXG5cdH1cclxuXHJcblx0b25UYWJDaGFuZ2UoZXZlbnQ6IHsgaW5kZXg6IG51bWJlciB9KTogdm9pZCB7XHJcblx0XHR0aGlzLmFjdGl2ZVRhYkluZGV4LnNldChldmVudC5pbmRleCk7XHJcblx0fVxyXG5cclxuXHR1cGRhdGVWYWx1ZSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVRhYkluZGV4KCkgPT09IDAgJiYgdGhpcy5hYnNvbHV0ZURhdGUgIT0gbnVsbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmFic29sdXRlRGF0ZSk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiSW5kZXgoKSA9PT0gMSAmJiB0aGlzLnJlbGF0aXZlVmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlbGF0aXZlVW5pdCkge1xyXG5cdFx0XHRjb25zdCB1bml0ID0gdGhpcy5yZWxhdGl2ZVVuaXQuY2hhckF0KDApO1xyXG5cdFx0XHRjb25zdCBkaXJlY3Rpb24gPSB0aGlzLnJlbGF0aXZlVW5pdC5jaGFyQXQoMSk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKGBub3cke2RpcmVjdGlvbn0ke3RoaXMucmVsYXRpdmVWYWx1ZX0ke3VuaXR9YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhcHBseVF1aWNrU2VsZWN0KG9wdGlvbjogUXVpY2tTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuYXBwbHlSZWxhdGl2ZVZhbHVlKG9wdGlvbi52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRhcHBseVF1aWNrU2VsZWN0Q3VzdG9tKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMucXVpY2tTZWxlY3RWYWx1ZSAhPSBudWxsICYmIHRoaXMucXVpY2tTZWxlY3RVbml0KSB7XHJcblx0XHRcdGNvbnN0IHJlbGF0aXZlU3RyaW5nID0gYG5vdyR7dGhpcy5xdWlja1NlbGVjdERpcmVjdGlvbn0ke3RoaXMucXVpY2tTZWxlY3RWYWx1ZX0ke3RoaXMucXVpY2tTZWxlY3RVbml0fWA7XHJcblx0XHRcdHRoaXMuYXBwbHlSZWxhdGl2ZVZhbHVlKHJlbGF0aXZlU3RyaW5nKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXBwbHlSZWxhdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuYWN0aXZlVGFiSW5kZXguc2V0KDEpO1xyXG5cdFx0dGhpcy5wYXJzZVJlbGF0aXZlVmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5jbG9zZVF1aWNrU2VsZWN0UGFuZWxzKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlUXVpY2tTZWxlY3RQYW5lbHMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dRdWlja1NlbGVjdC5zZXQoZmFsc2UpO1xyXG5cdFx0dGhpcy5zaG93T3ZlcmxheVBhbmVsLnNldChmYWxzZSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVRdWlja1NlbGVjdChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0dGhpcy5zaG93UXVpY2tTZWxlY3QudXBkYXRlKCh2YWx1ZSkgPT4gIXZhbHVlKTtcclxuXHRcdGlmICh0aGlzLnNob3dRdWlja1NlbGVjdCgpKSB7XHJcblx0XHRcdHRoaXMuc2hvd092ZXJsYXlQYW5lbC5zZXQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLm92ZXJsYXlQYW5lbD8uaGlkZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25JbnB1dENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zaG93UXVpY2tTZWxlY3Quc2V0KGZhbHNlKTtcclxuXHRcdHRoaXMub3ZlcmxheVBhbmVsPy50b2dnbGUoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlO1xyXG5cclxuXHRcdGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0QWJzb2x1dGVEYXRlKHZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5mb3JtYXRSZWxhdGl2ZURhdGUodmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZm9ybWF0QWJzb2x1dGVEYXRlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZGF0ZVN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAoZGF0ZVN0ci5sZW5ndGggPT09IDE0KSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3QgZGF0ZSA9IHBhcnNlKGRhdGVTdHIsICd5eXl5TU1kZEhIbW1zcycsIG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdHJldHVybiBmb3JtYXQoZGF0ZSwgJ2RkLk1NLnl5eXkgSEg6bW06c3MnKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRyZXR1cm4gZGF0ZVN0cjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGRhdGVTdHI7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFJlbGF0aXZlRGF0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IHF1aWNrT3B0aW9uID0gdGhpcy5jb21tb25seVVzZWRPcHRpb25zLmZpbmQoKG9wdDogUXVpY2tTZWxlY3RPcHRpb24pID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xyXG5cdFx0aWYgKHF1aWNrT3B0aW9uKSB7XHJcblx0XHRcdHJldHVybiBxdWlja09wdGlvbi5sYWJlbDtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9ebm93XFxzKihbKy1dKVxccyooXFxkKykoW3NtaGR3TXldKSQvKTtcclxuXHRcdGlmIChtYXRjaCkge1xyXG5cdFx0XHRjb25zdCBbLCBkaXJlY3Rpb24sIGFtb3VudCwgdW5pdF0gPSBtYXRjaDtcclxuXHRcdFx0Y29uc3QgZGlyZWN0aW9uVGV4dCA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoXHJcblx0XHRcdFx0ZGlyZWN0aW9uID09PSBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdCA/ICdyZWxhdGl2ZURhdGVTZWxlY3Rvci5sYXN0JyA6ICdyZWxhdGl2ZURhdGVTZWxlY3Rvci5uZXh0J1xyXG5cdFx0XHQpO1xyXG5cdFx0XHRjb25zdCB1bml0VGV4dCA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUodGhpcy5nZXRVbml0VHJhbnNsYXRpb25LZXkodW5pdCwgZGlyZWN0aW9uKSk7XHJcblx0XHRcdHJldHVybiBgJHtkaXJlY3Rpb25UZXh0fSAke2Ftb3VudH0gJHt1bml0VGV4dH1gO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0VW5pdFRyYW5zbGF0aW9uS2V5KHVuaXQ6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdW5pdE5hbWVNYXA6IFJlY29yZDxzdHJpbmcsIFJlbGF0aXZlRGF0ZVVuaXROYW1lPiA9IHtcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuU2Vjb25kc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLlNlY29uZHMsXHJcblx0XHRcdFtSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXNdOiBSZWxhdGl2ZURhdGVVbml0TmFtZS5NaW51dGVzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5Ib3Vyc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLkhvdXJzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5EYXlzXTogUmVsYXRpdmVEYXRlVW5pdE5hbWUuRGF5cyxcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuV2Vla3NdOiBSZWxhdGl2ZURhdGVVbml0TmFtZS5XZWVrcyxcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuTW9udGhzXTogUmVsYXRpdmVEYXRlVW5pdE5hbWUuTW9udGhzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5ZZWFyc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLlllYXJzXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IHN1ZmZpeCA9XHJcblx0XHRcdGRpcmVjdGlvbiA9PT0gUmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3QgPyBSZWxhdGl2ZURhdGVVbml0U3VmZml4LkFnbyA6IFJlbGF0aXZlRGF0ZVVuaXRTdWZmaXguRnJvbU5vdztcclxuXHRcdHJldHVybiBgcmVsYXRpdmVEYXRlU2VsZWN0b3IudW5pdHMuJHt1bml0TmFtZU1hcFt1bml0XX0ke3N1ZmZpeH1gO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmUtZGF0ZS1zZWxlY3RvclwiPlxyXG5cdDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCI+XHJcblx0XHQ8aW5wdXRcclxuXHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRyZWFkb25seVxyXG5cdFx0XHRbdmFsdWVdPVwiZ2V0RGlzcGxheVZhbHVlKClcIlxyXG5cdFx0XHRjbGFzcz1cInAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCJcclxuXHRcdFx0W2NsYXNzLnAtaW52YWxpZF09XCJuZ0NvbnRyb2wuaW52YWxpZCAmJiBuZ0NvbnRyb2wudG91Y2hlZFwiXHJcblx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IucGxhY2Vob2xkZXInKVwiXHJcblx0XHRcdFtwVG9vbHRpcF09XCJuZ0NvbnRyb2wuaW52YWxpZCAmJiBuZ0NvbnRyb2wudG91Y2hlZCA/IChuZ0NvbnRyb2wuY29udHJvbC52YWx1ZSB8IGlucHV0RXJyb3JNZXNzYWdlOiBuZ0NvbnRyb2wpIDogJydcIlxyXG5cdFx0XHRbdG9vbHRpcE9wdGlvbnNdPVwidG9vbHRpcE9wdGlvbnNcIiAvPlxyXG5cdFx0PGRpdiBjbGFzcz1cImNhbGVuZGFyLWljb24td3JhcHBlciBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKGNsaWNrKT1cInRvZ2dsZVF1aWNrU2VsZWN0KCRldmVudClcIj5cclxuXHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jYWxlbmRhciBjYWxlbmRhci1pY29uXCI+PC9pPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxwLW92ZXJsYXlQYW5lbFxyXG5cdFx0I29wXHJcblx0XHRbc3R5bGVdPVwieyBtaW5XaWR0aDogJzM1MHB4JywgbWF4SGVpZ2h0OiAnNjAwcHgnLCBvdmVyZmxvdzogJ3Zpc2libGUnIH1cIlxyXG5cdFx0W2Rpc21pc3NhYmxlXT1cInRydWVcIlxyXG5cdFx0KG9uSGlkZSk9XCJzaG93T3ZlcmxheVBhbmVsLnNldChmYWxzZSlcIj5cclxuXHRcdDxwLXRhYlZpZXcgKG9uQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIiBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlVGFiSW5kZXgoKVwiPlxyXG5cdFx0XHQ8cC10YWJQYW5lbCBbaGVhZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5hYnNvbHV0ZScpXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJhYnNvbHV0ZURhdGVcIlxyXG5cdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkFic29sdXRlRGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0W2lubGluZV09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0W3Nob3dUaW1lXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRbc2hvd1NlY29uZHNdPVwidHJ1ZVwiPlxyXG5cdFx0XHRcdFx0PC9hcmlsLWNhbGVuZGFyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3AtdGFiUGFuZWw+XHJcblxyXG5cdFx0XHQ8cC10YWJQYW5lbCBbaGVhZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5yZWxhdGl2ZScpXCI+XHJcblx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0yIG0tMlwiPlxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1udW1iZXJcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInJlbGF0aXZlVmFsdWVcIlxyXG5cdFx0XHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uUmVsYXRpdmVDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdFx0W21pbl09XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci52YWx1ZVBsYWNlaG9sZGVyJylcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLW51bWJlcj5cclxuXHJcblx0XHRcdFx0XHRcdDxhcmlsLXNlbGVjdC1ib3hcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInJlbGF0aXZlVW5pdFwiXHJcblx0XHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25SZWxhdGl2ZUNoYW5nZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicmVsYXRpdmVVbml0c1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1LZXldPVwiJ3ZhbHVlJ1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1UZXh0XT1cIidsYWJlbCdcIlxyXG5cdFx0XHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3Iuc2VsZWN0VW5pdCcpXCI+XHJcblx0XHRcdFx0XHRcdDwvYXJpbC1zZWxlY3QtYm94PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm0tMlwiPlxyXG5cdFx0XHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcblx0XHRcdFx0XHRcdFx0PHN0cm9uZz57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IuZXhhbXBsZXMnKSB9fTo8L3N0cm9uZz4ge3sgdHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmV4YW1wbGVzVGV4dCcpIH19XHJcblx0XHRcdFx0XHRcdDwvc21hbGw+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9wLXRhYlBhbmVsPlxyXG5cdFx0PC9wLXRhYlZpZXc+XHJcblx0PC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcblx0PCEtLSBRdWljayBTZWxlY3QgUGFuZWwgLS0+XHJcblx0QGlmIChzaG93UXVpY2tTZWxlY3QoKSkge1xyXG5cdFx0PGRpdiBjbGFzcz1cInF1aWNrLXNlbGVjdC1wYW5lbCBtdC0yXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJxdWljay1zZWxlY3QtaGVhZGVyIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHAtM1wiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IucXVpY2tTZWxlY3QnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktdGltZXMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd1F1aWNrU2VsZWN0LnNldChmYWxzZSlcIj48L2k+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LWJvZHkgcC0zXCI+XHJcblx0XHRcdFx0PCEtLSBDdXN0b20gUXVpY2sgU2VsZWN0IElucHV0cyAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LWN1c3RvbSBtYi0zIHBiLTNcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcblx0XHRcdFx0XHRcdDxhcmlsLXNlbGVjdC1ib3hcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInF1aWNrU2VsZWN0RGlyZWN0aW9uXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicXVpY2tTZWxlY3REaXJlY3Rpb25zXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbUtleV09XCIndmFsdWUnXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbVRleHRdPVwiJ2xhYmVsJ1wiPlxyXG5cdFx0XHRcdFx0XHQ8L2FyaWwtc2VsZWN0LWJveD5cclxuXHJcblx0XHRcdFx0XHRcdDxhcmlsLW51bWJlciBbKG5nTW9kZWwpXT1cInF1aWNrU2VsZWN0VmFsdWVcIiBbbWluXT1cIjFcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiPiA8L2FyaWwtbnVtYmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PGFyaWwtc2VsZWN0LWJveFxyXG5cdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwicXVpY2tTZWxlY3RVbml0XCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicXVpY2tTZWxlY3RVbml0c1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1LZXldPVwiJ3ZhbHVlJ1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1UZXh0XT1cIidsYWJlbCdcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLXNlbGVjdC1ib3g+XHJcblxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmFwcGx5JylcIlxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiYXBwbHlRdWlja1NlbGVjdEN1c3RvbSgpXCJcclxuXHRcdFx0XHRcdFx0XHRbc3R5bGVdPVwieyAnbWluLXdpZHRoJzogJzgwcHgnIH1cIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8IS0tIENvbW1vbmx5IFVzZWQgT3B0aW9ucyAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LXNlY3Rpb25cIj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtc2VjdGlvbiBtYi0yXCI+e3sgdHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmNvbW1vbmx5VXNlZCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInF1aWNrLXNlbGVjdC1vcHRpb25zXCI+XHJcblx0XHRcdFx0XHRcdEBmb3IgKG9wdGlvbiBvZiBjb21tb25seVVzZWRPcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInF1aWNrLXNlbGVjdC1vcHRpb25cIiAoY2xpY2spPVwiYXBwbHlRdWlja1NlbGVjdChvcHRpb24pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBvcHRpb24ubGFiZWwgfX1cclxuXHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0fVxyXG48L2Rpdj5cclxuIl19
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUtZGF0ZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL3JlbGF0aXZlRGF0ZVNlbGVjdG9yL3NyYy9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvcmVsYXRpdmVEYXRlU2VsZWN0b3Ivc3JjL3JlbGF0aXZlLWRhdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBNkIvRyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsa0JBQWtCO0lBeUJwRSxZQUE0QixnQkFBa0M7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEbUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXRCOUQsbUJBQWMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMscUJBQWdCLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTFDLGdCQUFnQjtRQUNoQixpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFbkMsZ0JBQWdCO1FBQ2hCLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUNwQyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsc0JBQWlCLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBRS9DLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLDBCQUFxQixHQUE0QyxFQUFFLENBQUM7UUFDcEUscUJBQWdCLEdBQTRDLEVBQUUsQ0FBQztRQUMvRCx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBRTlDLHNCQUFzQjtRQUN0Qix5QkFBb0IsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDbEQscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2QyxvQkFBZSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUsxQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDRixDQUFDO0lBRU8saUJBQWlCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWhFLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDbEQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQ3JDLDhCQUE4QixTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDOUU7WUFDRCxLQUFLLEVBQUUsR0FBRyxJQUFJLEdBQUcsR0FBRyxFQUFFO1NBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHO1lBQzVCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFO1lBQzFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsTUFBTSxFQUFFO1NBQzVHLENBQUM7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hGLEtBQUssRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFSiw4QkFBOEI7UUFDOUIsTUFBTSxZQUFZLEdBQUc7WUFDcEIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3ZELEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzRCxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdGLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEcsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNoRyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pGLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUYsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFGLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUYsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRTtTQUN6RixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMscUNBQXFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0RixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7U0FDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXlDO1FBQ3RELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNGLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztJQUNGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUV6RixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUMsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBa0MsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdEMsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBbUI7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUF3QjtRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztJQUNGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUF5QjtRQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxzQkFBc0I7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sc0JBQXNCO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVk7UUFDN0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDRixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWU7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFFNUMsSUFBSSxLQUFLLElBQUksSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWE7UUFDdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0osTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzFELE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNoQixPQUFPLE9BQU8sQ0FBQztZQUNoQixDQUFDO1FBQ0YsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2hCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ25HLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQ3BELFNBQVMsS0FBSyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FDcEcsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sR0FBRyxhQUFhLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsU0FBaUI7UUFDNUQsTUFBTSxXQUFXLEdBQXlDO1lBQ3pELENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsT0FBTztZQUN4RCxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLG9CQUFvQixDQUFDLE9BQU87WUFDeEQsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLO1lBQ3BELENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsSUFBSTtZQUNsRCxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEtBQUs7WUFDcEQsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNO1lBQ3RELENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsS0FBSztTQUNwRCxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQ1gsU0FBUyxLQUFLLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7UUFDeEcsT0FBTyw4QkFBOEIsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ25FLENBQUM7OEdBbFBXLDZCQUE2QjtrR0FBN0IsNkJBQTZCLHlXQy9DMUMscWlLQXNIQSx1MUdEdEZFLFlBQVksOEJBQ1osbUJBQW1CLHNJQUNuQixXQUFXLHNQQUNYLGtCQUFrQixrV0FDbEIsYUFBYSwya0JBQ2IsYUFBYSxxWEFDYixlQUFlLCtCQUNmLGlCQUFpQix3YkFDakIsZUFBZSw4TkFDZixlQUFlLDBUQUNmLGtCQUFrQix3U0FDbEIscUJBQXFCOzsyRkFJViw2QkFBNkI7a0JBdEJ6QyxTQUFTO2lDQUNHLElBQUksWUFFZix3SEFBd0gsV0FHaEg7d0JBQ1IsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDckIsa0JBQ2UsQ0FBQyxzQkFBc0IsQ0FBQztxRkFHdkIsWUFBWTtzQkFBNUIsU0FBUzt1QkFBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwsIFZpZXdDaGlsZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgT3ZlcmxheVBhbmVsLCBPdmVybGF5UGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgSW5wdXRFcnJvck1lc3NhZ2VQaXBlLCBWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC91aS9saWInO1xyXG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IE51bWJlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvbnVtYmVyJztcclxuaW1wb3J0IHsgU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9zZWxlY3RCb3gnO1xyXG5pbXBvcnQgJ2FyaWwvdXRpbC9wcmltaXRpdmUtZXh0ZW5zaW9ucyc7XHJcblxyXG5pbXBvcnQgeyBSZWxhdGl2ZURhdGVVbml0LCBSZWxhdGl2ZURhdGVEaXJlY3Rpb24sIFJlbGF0aXZlRGF0ZVVuaXROYW1lLCBSZWxhdGl2ZURhdGVVbml0U3VmZml4IH0gZnJvbSAnLi9lbnVtJztcclxuXHJcbmludGVyZmFjZSBRdWlja1NlbGVjdE9wdGlvbiB7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHR2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOlxyXG5cdFx0J2FyaWwtcmVsYXRpdmUtZGF0ZS1waWNrZXJbbmdNb2RlbF0sIGFyaWwtcmVsYXRpdmUtZGF0ZS1waWNrZXJbZm9ybUNvbnRyb2xdLCBhcmlsLXJlbGF0aXZlLWRhdGUtcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9yZWxhdGl2ZS1kYXRlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0T3ZlcmxheVBhbmVsTW9kdWxlLFxyXG5cdFx0VGFiVmlld01vZHVsZSxcclxuXHRcdFRvb2x0aXBNb2R1bGUsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRDYWxlbmRhckNvbXBvbmVudCxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdE51bWJlckNvbXBvbmVudCxcclxuXHRcdFNlbGVjdEJveENvbXBvbmVudCxcclxuXHRcdElucHV0RXJyb3JNZXNzYWdlUGlwZVxyXG5cdF0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cdEBWaWV3Q2hpbGQoJ29wJykgb3ZlcmxheVBhbmVsITogT3ZlcmxheVBhbmVsO1xyXG5cclxuXHRhY3RpdmVUYWJJbmRleCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cdHNob3dRdWlja1NlbGVjdCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblx0c2hvd092ZXJsYXlQYW5lbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdC8vIEFic29sdXRlIG1vZGVcclxuXHRhYnNvbHV0ZURhdGU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHQvLyBSZWxhdGl2ZSBtb2RlXHJcblx0cmVsYXRpdmVWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblx0cmVsYXRpdmVVbml0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHRyZWxhdGl2ZURpcmVjdGlvbiA9IFJlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0O1xyXG5cclxuXHRyZWxhdGl2ZVVuaXRzOiBhbnlbXSA9IFtdO1xyXG5cdHF1aWNrU2VsZWN0RGlyZWN0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW107XHJcblx0cXVpY2tTZWxlY3RVbml0czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW107XHJcblx0Y29tbW9ubHlVc2VkT3B0aW9uczogUXVpY2tTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG5cclxuXHQvLyBRdWljayBzZWxlY3QgaW5wdXRzXHJcblx0cXVpY2tTZWxlY3REaXJlY3Rpb24gPSBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdDtcclxuXHRxdWlja1NlbGVjdFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHRxdWlja1NlbGVjdFVuaXQgPSBSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXM7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuXHRcdFx0dGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlICE9IG51bGwpIHtcclxuXHRcdFx0dGhpcy5vblZhbHVlQ2hhbmdlKHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZU9wdGlvbnMoKTogdm9pZCB7XHJcblx0XHRjb25zdCB1bml0cyA9IE9iamVjdC52YWx1ZXMoUmVsYXRpdmVEYXRlVW5pdCk7XHJcblx0XHRjb25zdCB1bml0TmFtZXMgPSBPYmplY3QudmFsdWVzKFJlbGF0aXZlRGF0ZVVuaXROYW1lKTtcclxuXHRcdGNvbnN0IGRpcmVjdGlvbnMgPSBPYmplY3QudmFsdWVzKFJlbGF0aXZlRGF0ZURpcmVjdGlvbik7XHJcblx0XHRjb25zdCBkaXJlY3Rpb25TdWZmaXhlcyA9IE9iamVjdC52YWx1ZXMoUmVsYXRpdmVEYXRlVW5pdFN1ZmZpeCk7XHJcblxyXG5cdFx0Ly8gUmVsYXRpdmUgdW5pdHNcclxuXHRcdHRoaXMucmVsYXRpdmVVbml0cyA9IHVuaXRzLmZsYXRNYXAoKGNvZGUsIGluZGV4KSA9PlxyXG5cdFx0XHRkaXJlY3Rpb25zLm1hcCgoZGlyLCBkaXJJbmRleCkgPT4gKHtcclxuXHRcdFx0XHRsYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShcclxuXHRcdFx0XHRcdGByZWxhdGl2ZURhdGVTZWxlY3Rvci51bml0cy4ke3VuaXROYW1lc1tpbmRleF19JHtkaXJlY3Rpb25TdWZmaXhlc1tkaXJJbmRleF19YFxyXG5cdFx0XHRcdCksXHJcblx0XHRcdFx0dmFsdWU6IGAke2NvZGV9JHtkaXJ9YFxyXG5cdFx0XHR9KSlcclxuXHRcdCk7XHJcblxyXG5cdFx0Ly8gUXVpY2sgU2VsZWN0IC0gTGFzdC9OZXh0IG9wdGlvbnNcclxuXHRcdHRoaXMucXVpY2tTZWxlY3REaXJlY3Rpb25zID0gW1xyXG5cdFx0XHR7IGxhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5sYXN0JyksIHZhbHVlOiBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdCB9LFxyXG5cdFx0XHR7IGxhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5uZXh0JyksIHZhbHVlOiBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uRnV0dXJlIH1cclxuXHRcdF07XHJcblxyXG5cdFx0dGhpcy5xdWlja1NlbGVjdFVuaXRzID0gdW5pdHMubWFwKChjb2RlLCBpbmRleCkgPT4gKHtcclxuXHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoYHJlbGF0aXZlRGF0ZVNlbGVjdG9yLnVuaXRzLiR7dW5pdE5hbWVzW2luZGV4XX1gKSxcclxuXHRcdFx0dmFsdWU6IGNvZGVcclxuXHRcdH0pKTtcclxuXHJcblx0XHQvLyBDb21tb25seSB1c2VkIHF1aWNrIHNlbGVjdHNcclxuXHRcdGNvbnN0IHF1aWNrT3B0aW9ucyA9IFtcclxuXHRcdFx0eyBrZXk6ICd0b2RheScsIHZhbHVlOiBgbm93LyR7UmVsYXRpdmVEYXRlVW5pdC5EYXlzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICd0aGlzV2VlaycsIHZhbHVlOiBgbm93LyR7UmVsYXRpdmVEYXRlVW5pdC5XZWVrc31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFNaW51dGUnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9MSR7UmVsYXRpdmVEYXRlVW5pdC5NaW51dGVzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0MTVNaW51dGVzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTE1JHtSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3QzME1pbnV0ZXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9MzAke1JlbGF0aXZlRGF0ZVVuaXQuTWludXRlc31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFIb3VyJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTEke1JlbGF0aXZlRGF0ZVVuaXQuSG91cnN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3QyNEhvdXJzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTI0JHtSZWxhdGl2ZURhdGVVbml0LkhvdXJzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0N0RheXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9NyR7UmVsYXRpdmVEYXRlVW5pdC5EYXlzfWAgfSxcclxuXHRcdFx0eyBrZXk6ICdsYXN0MzBEYXlzJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTMwJHtSZWxhdGl2ZURhdGVVbml0LkRheXN9YCB9LFxyXG5cdFx0XHR7IGtleTogJ2xhc3Q5MERheXMnLCB2YWx1ZTogYG5vdyR7UmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3R9OTAke1JlbGF0aXZlRGF0ZVVuaXQuRGF5c31gIH0sXHJcblx0XHRcdHsga2V5OiAnbGFzdDFZZWFyJywgdmFsdWU6IGBub3cke1JlbGF0aXZlRGF0ZURpcmVjdGlvbi5QYXN0fTEke1JlbGF0aXZlRGF0ZVVuaXQuWWVhcnN9YCB9XHJcblx0XHRdO1xyXG5cclxuXHRcdHRoaXMuY29tbW9ubHlVc2VkT3B0aW9ucyA9IHF1aWNrT3B0aW9ucy5tYXAoKG9wdCkgPT4gKHtcclxuXHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoYHJlbGF0aXZlRGF0ZVNlbGVjdG9yLnF1aWNrT3B0aW9ucy4ke29wdC5rZXl9YCksXHJcblx0XHRcdHZhbHVlOiBvcHQudmFsdWVcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdG9uVmFsdWVDaGFuZ2UodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuXHRcdGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0dGhpcy5hY3RpdmVUYWJJbmRleC5zZXQoMCk7XHJcblx0XHRcdFx0dGhpcy5hYnNvbHV0ZURhdGUgPSB2YWx1ZTtcclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0dGhpcy5hY3RpdmVUYWJJbmRleC5zZXQoMSk7XHJcblx0XHRcdFx0dGhpcy5wYXJzZVJlbGF0aXZlVmFsdWUodmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmFic29sdXRlRGF0ZSA9IG51bGw7XHJcblx0XHRcdHRoaXMucmVsYXRpdmVWYWx1ZSA9IG51bGw7XHJcblx0XHRcdHRoaXMucmVsYXRpdmVVbml0ID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHBhcnNlUmVsYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9ebm93XFxzKig/OihbKy1dKVxccyooXFxkKykoW3NtaGR3TXldKSk/XFxzKig/OlxcLyhbc21oZHdNeV0pKT8kLyk7XHJcblxyXG5cdFx0aWYgKG1hdGNoKSB7XHJcblx0XHRcdGNvbnN0IFssIGRpcmVjdGlvbiwgYW1vdW50LCB1bml0XSA9IG1hdGNoO1xyXG5cdFx0XHRpZiAoZGlyZWN0aW9uICYmIGFtb3VudCAmJiB1bml0KSB7XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZURpcmVjdGlvbiA9IGRpcmVjdGlvbiBhcyBSZWxhdGl2ZURhdGVEaXJlY3Rpb247XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZVZhbHVlID0gcGFyc2VJbnQoYW1vdW50LCAxMCk7XHJcblx0XHRcdFx0dGhpcy5yZWxhdGl2ZVVuaXQgPSB1bml0ICsgZGlyZWN0aW9uO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkFic29sdXRlRGF0ZUNoYW5nZShkYXRlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmFic29sdXRlRGF0ZSA9IGRhdGU7XHJcblx0XHR0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcblx0fVxyXG5cclxuXHRvblJlbGF0aXZlQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy51cGRhdGVWYWx1ZSgpO1xyXG5cdH1cclxuXHJcblx0b25UYWJDaGFuZ2UoZXZlbnQ6IHsgaW5kZXg6IG51bWJlciB9KTogdm9pZCB7XHJcblx0XHR0aGlzLmFjdGl2ZVRhYkluZGV4LnNldChldmVudC5pbmRleCk7XHJcblx0fVxyXG5cclxuXHR1cGRhdGVWYWx1ZSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZVRhYkluZGV4KCkgPT09IDAgJiYgdGhpcy5hYnNvbHV0ZURhdGUgIT0gbnVsbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmFic29sdXRlRGF0ZSk7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiSW5kZXgoKSA9PT0gMSAmJiB0aGlzLnJlbGF0aXZlVmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlbGF0aXZlVW5pdCkge1xyXG5cdFx0XHRjb25zdCB1bml0ID0gdGhpcy5yZWxhdGl2ZVVuaXQuY2hhckF0KDApO1xyXG5cdFx0XHRjb25zdCBkaXJlY3Rpb24gPSB0aGlzLnJlbGF0aXZlVW5pdC5jaGFyQXQoMSk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKGBub3cke2RpcmVjdGlvbn0ke3RoaXMucmVsYXRpdmVWYWx1ZX0ke3VuaXR9YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhcHBseVF1aWNrU2VsZWN0KG9wdGlvbjogUXVpY2tTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuYXBwbHlSZWxhdGl2ZVZhbHVlKG9wdGlvbi52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRhcHBseVF1aWNrU2VsZWN0Q3VzdG9tKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMucXVpY2tTZWxlY3RWYWx1ZSAhPSBudWxsICYmIHRoaXMucXVpY2tTZWxlY3RVbml0KSB7XHJcblx0XHRcdGNvbnN0IHJlbGF0aXZlU3RyaW5nID0gYG5vdyR7dGhpcy5xdWlja1NlbGVjdERpcmVjdGlvbn0ke3RoaXMucXVpY2tTZWxlY3RWYWx1ZX0ke3RoaXMucXVpY2tTZWxlY3RVbml0fWA7XHJcblx0XHRcdHRoaXMuYXBwbHlSZWxhdGl2ZVZhbHVlKHJlbGF0aXZlU3RyaW5nKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXBwbHlSZWxhdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuYWN0aXZlVGFiSW5kZXguc2V0KDEpO1xyXG5cdFx0dGhpcy5wYXJzZVJlbGF0aXZlVmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5jbG9zZVF1aWNrU2VsZWN0UGFuZWxzKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlUXVpY2tTZWxlY3RQYW5lbHMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dRdWlja1NlbGVjdC5zZXQoZmFsc2UpO1xyXG5cdFx0dGhpcy5zaG93T3ZlcmxheVBhbmVsLnNldChmYWxzZSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVRdWlja1NlbGVjdChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0dGhpcy5zaG93UXVpY2tTZWxlY3QudXBkYXRlKCh2YWx1ZSkgPT4gIXZhbHVlKTtcclxuXHRcdGlmICh0aGlzLnNob3dRdWlja1NlbGVjdCgpKSB7XHJcblx0XHRcdHRoaXMuc2hvd092ZXJsYXlQYW5lbC5zZXQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLm92ZXJsYXlQYW5lbD8uaGlkZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25JbnB1dENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zaG93UXVpY2tTZWxlY3Quc2V0KGZhbHNlKTtcclxuXHRcdHRoaXMub3ZlcmxheVBhbmVsPy50b2dnbGUoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Z2V0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnZhbHVlO1xyXG5cclxuXHRcdGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0QWJzb2x1dGVEYXRlKHZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5mb3JtYXRSZWxhdGl2ZURhdGUodmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZm9ybWF0QWJzb2x1dGVEYXRlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZGF0ZVN0ciA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAoZGF0ZVN0ci5sZW5ndGggPT09IDE0KSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3QgZGF0ZSA9IHBhcnNlKGRhdGVTdHIsICd5eXl5TU1kZEhIbW1zcycsIG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdHJldHVybiBmb3JtYXQoZGF0ZSwgJ2RkLk1NLnl5eXkgSEg6bW06c3MnKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRyZXR1cm4gZGF0ZVN0cjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGRhdGVTdHI7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFJlbGF0aXZlRGF0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IHF1aWNrT3B0aW9uID0gdGhpcy5jb21tb25seVVzZWRPcHRpb25zLmZpbmQoKG9wdDogUXVpY2tTZWxlY3RPcHRpb24pID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xyXG5cdFx0aWYgKHF1aWNrT3B0aW9uKSB7XHJcblx0XHRcdHJldHVybiBxdWlja09wdGlvbi5sYWJlbDtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9ebm93XFxzKihbKy1dKVxccyooXFxkKykoW3NtaGR3TXldKSQvKTtcclxuXHRcdGlmIChtYXRjaCkge1xyXG5cdFx0XHRjb25zdCBbLCBkaXJlY3Rpb24sIGFtb3VudCwgdW5pdF0gPSBtYXRjaDtcclxuXHRcdFx0Y29uc3QgZGlyZWN0aW9uVGV4dCA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoXHJcblx0XHRcdFx0ZGlyZWN0aW9uID09PSBSZWxhdGl2ZURhdGVEaXJlY3Rpb24uUGFzdCA/ICdyZWxhdGl2ZURhdGVTZWxlY3Rvci5sYXN0JyA6ICdyZWxhdGl2ZURhdGVTZWxlY3Rvci5uZXh0J1xyXG5cdFx0XHQpO1xyXG5cdFx0XHRjb25zdCB1bml0VGV4dCA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUodGhpcy5nZXRVbml0VHJhbnNsYXRpb25LZXkodW5pdCwgZGlyZWN0aW9uKSk7XHJcblx0XHRcdHJldHVybiBgJHtkaXJlY3Rpb25UZXh0fSAke2Ftb3VudH0gJHt1bml0VGV4dH1gO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0VW5pdFRyYW5zbGF0aW9uS2V5KHVuaXQ6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgdW5pdE5hbWVNYXA6IFJlY29yZDxzdHJpbmcsIFJlbGF0aXZlRGF0ZVVuaXROYW1lPiA9IHtcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuU2Vjb25kc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLlNlY29uZHMsXHJcblx0XHRcdFtSZWxhdGl2ZURhdGVVbml0Lk1pbnV0ZXNdOiBSZWxhdGl2ZURhdGVVbml0TmFtZS5NaW51dGVzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5Ib3Vyc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLkhvdXJzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5EYXlzXTogUmVsYXRpdmVEYXRlVW5pdE5hbWUuRGF5cyxcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuV2Vla3NdOiBSZWxhdGl2ZURhdGVVbml0TmFtZS5XZWVrcyxcclxuXHRcdFx0W1JlbGF0aXZlRGF0ZVVuaXQuTW9udGhzXTogUmVsYXRpdmVEYXRlVW5pdE5hbWUuTW9udGhzLFxyXG5cdFx0XHRbUmVsYXRpdmVEYXRlVW5pdC5ZZWFyc106IFJlbGF0aXZlRGF0ZVVuaXROYW1lLlllYXJzXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IHN1ZmZpeCA9XHJcblx0XHRcdGRpcmVjdGlvbiA9PT0gUmVsYXRpdmVEYXRlRGlyZWN0aW9uLlBhc3QgPyBSZWxhdGl2ZURhdGVVbml0U3VmZml4LkFnbyA6IFJlbGF0aXZlRGF0ZVVuaXRTdWZmaXguRnJvbU5vdztcclxuXHRcdHJldHVybiBgcmVsYXRpdmVEYXRlU2VsZWN0b3IudW5pdHMuJHt1bml0TmFtZU1hcFt1bml0XX0ke3N1ZmZpeH1gO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmUtZGF0ZS1zZWxlY3RvclwiPlxyXG5cdDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCI+XHJcblx0XHQ8aW5wdXRcclxuXHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRyZWFkb25seVxyXG5cdFx0XHRbdmFsdWVdPVwiZ2V0RGlzcGxheVZhbHVlKClcIlxyXG5cdFx0XHRjbGFzcz1cInAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCJcclxuXHRcdFx0W2NsYXNzLnAtaW52YWxpZF09XCJuZ0NvbnRyb2wuaW52YWxpZCAmJiBuZ0NvbnRyb2wudG91Y2hlZFwiXHJcblx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IucGxhY2Vob2xkZXInKVwiXHJcblx0XHRcdFtwVG9vbHRpcF09XCJuZ0NvbnRyb2wuaW52YWxpZCAmJiBuZ0NvbnRyb2wudG91Y2hlZCA/IChuZ0NvbnRyb2wuY29udHJvbC52YWx1ZSB8IGlucHV0RXJyb3JNZXNzYWdlOiBuZ0NvbnRyb2wpIDogJydcIlxyXG5cdFx0XHRbdG9vbHRpcE9wdGlvbnNdPVwidG9vbHRpcE9wdGlvbnNcIiAvPlxyXG5cdFx0PGRpdiBjbGFzcz1cImNhbGVuZGFyLWljb24td3JhcHBlciBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKGNsaWNrKT1cInRvZ2dsZVF1aWNrU2VsZWN0KCRldmVudClcIj5cclxuXHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jYWxlbmRhciBjYWxlbmRhci1pY29uXCI+PC9pPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxwLW92ZXJsYXlQYW5lbFxyXG5cdFx0I29wXHJcblx0XHRbc3R5bGVdPVwieyBtaW5XaWR0aDogJzM1MHB4JywgbWF4SGVpZ2h0OiAnNjAwcHgnLCBvdmVyZmxvdzogJ3Zpc2libGUnIH1cIlxyXG5cdFx0W2Rpc21pc3NhYmxlXT1cInRydWVcIlxyXG5cdFx0KG9uSGlkZSk9XCJzaG93T3ZlcmxheVBhbmVsLnNldChmYWxzZSlcIj5cclxuXHRcdDxwLXRhYlZpZXcgKG9uQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIiBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlVGFiSW5kZXgoKVwiPlxyXG5cdFx0XHQ8cC10YWJQYW5lbCBbaGVhZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5hYnNvbHV0ZScpXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0PGFyaWwtY2FsZW5kYXJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJhYnNvbHV0ZURhdGVcIlxyXG5cdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvbkFic29sdXRlRGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0W2lubGluZV09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0W3Nob3dUaW1lXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRbc2hvd1NlY29uZHNdPVwidHJ1ZVwiPlxyXG5cdFx0XHRcdFx0PC9hcmlsLWNhbGVuZGFyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3AtdGFiUGFuZWw+XHJcblxyXG5cdFx0XHQ8cC10YWJQYW5lbCBbaGVhZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci5yZWxhdGl2ZScpXCI+XHJcblx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0yIG0tMlwiPlxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1udW1iZXJcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInJlbGF0aXZlVmFsdWVcIlxyXG5cdFx0XHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cIm9uUmVsYXRpdmVDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdFx0W21pbl09XCIxXCJcclxuXHRcdFx0XHRcdFx0XHRbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWxhdGl2ZURhdGVTZWxlY3Rvci52YWx1ZVBsYWNlaG9sZGVyJylcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLW51bWJlcj5cclxuXHJcblx0XHRcdFx0XHRcdDxhcmlsLXNlbGVjdC1ib3hcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInJlbGF0aXZlVW5pdFwiXHJcblx0XHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25SZWxhdGl2ZUNoYW5nZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicmVsYXRpdmVVbml0c1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1LZXldPVwiJ3ZhbHVlJ1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1UZXh0XT1cIidsYWJlbCdcIlxyXG5cdFx0XHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3Iuc2VsZWN0VW5pdCcpXCI+XHJcblx0XHRcdFx0XHRcdDwvYXJpbC1zZWxlY3QtYm94PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm0tMlwiPlxyXG5cdFx0XHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcblx0XHRcdFx0XHRcdFx0PHN0cm9uZz57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IuZXhhbXBsZXMnKSB9fTo8L3N0cm9uZz4ge3sgdHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmV4YW1wbGVzVGV4dCcpIH19XHJcblx0XHRcdFx0XHRcdDwvc21hbGw+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9wLXRhYlBhbmVsPlxyXG5cdFx0PC9wLXRhYlZpZXc+XHJcblx0PC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcblx0PCEtLSBRdWljayBTZWxlY3QgUGFuZWwgLS0+XHJcblx0QGlmIChzaG93UXVpY2tTZWxlY3QoKSkge1xyXG5cdFx0PGRpdiBjbGFzcz1cInF1aWNrLXNlbGVjdC1wYW5lbCBtdC0yXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJxdWljay1zZWxlY3QtaGVhZGVyIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHAtM1wiPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVsYXRpdmVEYXRlU2VsZWN0b3IucXVpY2tTZWxlY3QnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktdGltZXMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd1F1aWNrU2VsZWN0LnNldChmYWxzZSlcIj48L2k+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LWJvZHkgcC0zXCI+XHJcblx0XHRcdFx0PCEtLSBDdXN0b20gUXVpY2sgU2VsZWN0IElucHV0cyAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LWN1c3RvbSBtYi0zIHBiLTNcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcblx0XHRcdFx0XHRcdDxhcmlsLXNlbGVjdC1ib3hcclxuXHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInF1aWNrU2VsZWN0RGlyZWN0aW9uXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicXVpY2tTZWxlY3REaXJlY3Rpb25zXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbUtleV09XCIndmFsdWUnXCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbVRleHRdPVwiJ2xhYmVsJ1wiPlxyXG5cdFx0XHRcdFx0XHQ8L2FyaWwtc2VsZWN0LWJveD5cclxuXHJcblx0XHRcdFx0XHRcdDxhcmlsLW51bWJlciBbKG5nTW9kZWwpXT1cInF1aWNrU2VsZWN0VmFsdWVcIiBbbWluXT1cIjFcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiPiA8L2FyaWwtbnVtYmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PGFyaWwtc2VsZWN0LWJveFxyXG5cdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwicXVpY2tTZWxlY3RVbml0XCJcclxuXHRcdFx0XHRcdFx0XHRbaXRlbXNdPVwicXVpY2tTZWxlY3RVbml0c1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1LZXldPVwiJ3ZhbHVlJ1wiXHJcblx0XHRcdFx0XHRcdFx0W2l0ZW1UZXh0XT1cIidsYWJlbCdcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLXNlbGVjdC1ib3g+XHJcblxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmFwcGx5JylcIlxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiYXBwbHlRdWlja1NlbGVjdEN1c3RvbSgpXCJcclxuXHRcdFx0XHRcdFx0XHRbc3R5bGVdPVwieyAnbWluLXdpZHRoJzogJzgwcHgnIH1cIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8IS0tIENvbW1vbmx5IFVzZWQgT3B0aW9ucyAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicXVpY2stc2VsZWN0LXNlY3Rpb25cIj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtc2VjdGlvbiBtYi0yXCI+e3sgdHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlbGF0aXZlRGF0ZVNlbGVjdG9yLmNvbW1vbmx5VXNlZCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInF1aWNrLXNlbGVjdC1vcHRpb25zXCI+XHJcblx0XHRcdFx0XHRcdEBmb3IgKG9wdGlvbiBvZiBjb21tb25seVVzZWRPcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInF1aWNrLXNlbGVjdC1vcHRpb25cIiAoY2xpY2spPVwiYXBwbHlRdWlja1NlbGVjdChvcHRpb24pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBvcHRpb24ubGFiZWwgfX1cclxuXHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0fVxyXG48L2Rpdj5cclxuIl19
|