vc-create-dashboard 3.0.83 → 3.0.85
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/README.md +24 -24
- package/esm2022/lib/configurations.mjs +7 -7
- package/esm2022/lib/create-dashboard-container/categories/categories-config.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/categories/categories.component.mjs +212 -212
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.mjs +350 -350
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets.module.mjs +47 -47
- package/esm2022/lib/create-dashboard-container/constants/assets.constant.mjs +37 -37
- package/esm2022/lib/create-dashboard-container/create-dashboard-config.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/create-dashboard.component.mjs +1601 -1520
- package/esm2022/lib/create-dashboard-container/create-dashboard.module.mjs +127 -127
- package/esm2022/lib/create-dashboard-container/directives/directives.module.mjs +24 -24
- package/esm2022/lib/create-dashboard-container/directives/scroll-in-view.directive.mjs +36 -36
- package/esm2022/lib/create-dashboard-container/form-group/form-group.component.mjs +153 -153
- package/esm2022/lib/create-dashboard-container/frequency/frequency.component.mjs +309 -309
- package/esm2022/lib/create-dashboard-container/interfaces/widget-data-model.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/pipes/filter.pipe.mjs +30 -30
- package/esm2022/lib/create-dashboard-container/pipes/search-program.pipe.mjs +37 -37
- package/esm2022/lib/create-dashboard-container/pipes/search.pipe.mjs +25 -25
- package/esm2022/lib/create-dashboard-container/pipes/text-count.pipe.mjs +18 -19
- package/esm2022/lib/create-dashboard-container/program-list/constant.mjs +31 -31
- package/esm2022/lib/create-dashboard-container/program-list/information-block/information-block.component.mjs +13 -13
- package/esm2022/lib/create-dashboard-container/program-list/interfaces/list-item.interface.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/program-list/list-container/list-container.component.mjs +50 -50
- package/esm2022/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.mjs +23 -23
- package/esm2022/lib/create-dashboard-container/program-list/program-list/program-list.component.mjs +294 -294
- package/esm2022/lib/create-dashboard-container/program-list/program-list.module.mjs +60 -60
- package/esm2022/lib/create-dashboard-container/program-list/services/list-utils.service.mjs +27 -27
- package/esm2022/lib/create-dashboard-container/program-list/services/program-list-api.service.mjs +28 -35
- package/esm2022/lib/create-dashboard-container/responsibility-center/responsibility-center.component.mjs +224 -149
- package/esm2022/lib/create-dashboard-container/risk-categories/risk-categories-config.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/risk-categories/risk-categories.component.mjs +206 -206
- package/esm2022/lib/create-dashboard-container/services/configure-widgets.service.mjs +233 -238
- package/esm2022/lib/create-dashboard-container/services/create-dashboard.service.mjs +227 -243
- package/esm2022/lib/create-dashboard-container/services/pagination.service.mjs +28 -28
- package/esm2022/lib/create-dashboard-container/user-list/user-list.component.mjs +440 -440
- package/esm2022/lib/create-dashboard-container/user-list/user-list.config.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/utils/dashboard-edit.utils.mjs +181 -181
- package/esm2022/lib/create-dashboard.service.mjs +14 -14
- package/esm2022/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.mjs +52 -52
- package/esm2022/lib/ui-kit/dashboard-footer/dashboard-footer-config.mjs +2 -2
- package/esm2022/lib/ui-kit/dashboard-footer/dashboard-footer.module.mjs +32 -32
- package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +7 -7
- package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +17 -17
- package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +11 -11
- package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +96 -96
- package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +20 -20
- package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +56 -56
- package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +17 -17
- package/esm2022/lib/ui-kit/floating-bar/floating-bar.component.mjs +57 -57
- package/esm2022/lib/ui-kit/floating-bar/floating-bar.module.mjs +32 -32
- package/esm2022/lib/ui-kit/formgroup/click-outside.directive.mjs +30 -30
- package/esm2022/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.mjs +29 -29
- package/esm2022/lib/ui-kit/formgroup/cs-radio/cs-radio.component.mjs +34 -34
- package/esm2022/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -14
- package/esm2022/lib/ui-kit/formgroup/cs-select/cs-select.component.mjs +119 -119
- package/esm2022/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +39 -39
- package/esm2022/lib/ui-kit/formgroup/formgroup.module.mjs +55 -55
- package/esm2022/lib/ui-kit/formgroup/pipes/pascal.pipe.mjs +19 -19
- package/esm2022/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.mjs +24 -24
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -24
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +18 -18
- package/esm2022/lib/ui-kit/no-data/no-data.component.mjs +47 -47
- package/esm2022/lib/ui-kit/no-data/no-data.module.mjs +18 -18
- package/esm2022/lib/ui-kit/pagination/pagination.component.mjs +130 -130
- package/esm2022/lib/ui-kit/pagination/pagination.module.mjs +18 -18
- package/esm2022/lib/ui-kit/popover/popover.component.mjs +129 -129
- package/esm2022/lib/ui-kit/popover/popover.directive.mjs +93 -93
- package/esm2022/lib/ui-kit/popover/popover.module.mjs +21 -21
- package/esm2022/lib/ui-kit/popover/popover.service.mjs +23 -23
- package/esm2022/lib/ui-kit/select/cs-option/cs-option.component.mjs +41 -41
- package/esm2022/lib/ui-kit/select/cs-select/cs-select.component.mjs +107 -107
- package/esm2022/lib/ui-kit/select/safe-html.pipe.mjs +21 -21
- package/esm2022/lib/ui-kit/select/select.module.mjs +21 -21
- package/esm2022/lib/ui-kit/services/cs-select.service.mjs +16 -16
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.component.mjs +52 -52
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.module.mjs +18 -18
- package/esm2022/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +46 -46
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -18
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +23 -23
- package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +168 -168
- package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +18 -18
- package/esm2022/lib/ui-kit/v-loader/loader/loader.component.mjs +24 -24
- package/esm2022/lib/ui-kit/v-loader/loader-inline/loader-inline.component.mjs +24 -24
- package/esm2022/lib/ui-kit/v-loader/v-loader.module.mjs +19 -19
- package/esm2022/public-api.mjs +10 -10
- package/esm2022/vc-create-dashboard.mjs +4 -4
- package/fesm2022/vc-create-dashboard.mjs +6438 -6333
- package/fesm2022/vc-create-dashboard.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/configurations.d.ts +4 -4
- package/lib/create-dashboard-container/categories/categories-config.d.ts +18 -18
- package/lib/create-dashboard-container/categories/categories.component.d.ts +66 -66
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.d.ts +113 -113
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/widget.interface.d.ts +9 -9
- package/lib/create-dashboard-container/configure-widgets/configure-widgets.module.d.ts +14 -14
- package/lib/create-dashboard-container/constants/assets.constant.d.ts +35 -35
- package/lib/create-dashboard-container/create-dashboard-config.d.ts +18 -18
- package/lib/create-dashboard-container/create-dashboard.component.d.ts +219 -216
- package/lib/create-dashboard-container/create-dashboard.module.d.ts +37 -37
- package/lib/create-dashboard-container/directives/directives.module.d.ts +8 -8
- package/lib/create-dashboard-container/directives/scroll-in-view.directive.d.ts +12 -12
- package/lib/create-dashboard-container/form-group/form-group.component.d.ts +48 -48
- package/lib/create-dashboard-container/frequency/frequency.component.d.ts +39 -39
- package/lib/create-dashboard-container/interfaces/widget-data-model.d.ts +8 -8
- package/lib/create-dashboard-container/pipes/filter.pipe.d.ts +7 -7
- package/lib/create-dashboard-container/pipes/search-program.pipe.d.ts +7 -7
- package/lib/create-dashboard-container/pipes/search.pipe.d.ts +7 -7
- package/lib/create-dashboard-container/pipes/text-count.pipe.d.ts +7 -7
- package/lib/create-dashboard-container/program-list/constant.d.ts +24 -24
- package/lib/create-dashboard-container/program-list/information-block/information-block.component.d.ts +6 -6
- package/lib/create-dashboard-container/program-list/interfaces/list-item.interface.d.ts +5 -5
- package/lib/create-dashboard-container/program-list/list-container/list-container.component.d.ts +9 -9
- package/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.d.ts +7 -7
- package/lib/create-dashboard-container/program-list/program-list/program-list.component.d.ts +119 -119
- package/lib/create-dashboard-container/program-list/program-list.module.d.ts +17 -17
- package/lib/create-dashboard-container/program-list/services/list-utils.service.d.ts +7 -7
- package/lib/create-dashboard-container/program-list/services/program-list-api.service.d.ts +12 -14
- package/lib/create-dashboard-container/responsibility-center/responsibility-center.component.d.ts +70 -62
- package/lib/create-dashboard-container/risk-categories/risk-categories-config.d.ts +18 -18
- package/lib/create-dashboard-container/risk-categories/risk-categories.component.d.ts +66 -66
- package/lib/create-dashboard-container/services/configure-widgets.service.d.ts +21 -23
- package/lib/create-dashboard-container/services/create-dashboard.service.d.ts +80 -82
- package/lib/create-dashboard-container/services/pagination.service.d.ts +12 -12
- package/lib/create-dashboard-container/user-list/user-list.component.d.ts +123 -123
- package/lib/create-dashboard-container/user-list/user-list.config.d.ts +13 -13
- package/lib/create-dashboard-container/utils/dashboard-edit.utils.d.ts +16 -16
- package/lib/create-dashboard.service.d.ts +6 -6
- package/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.d.ts +17 -17
- package/lib/ui-kit/dashboard-footer/dashboard-footer-config.d.ts +11 -11
- package/lib/ui-kit/dashboard-footer/dashboard-footer.module.d.ts +10 -10
- package/lib/ui-kit/dialog/dialog-config.d.ts +6 -6
- package/lib/ui-kit/dialog/dialog-injector.d.ts +7 -7
- package/lib/ui-kit/dialog/dialog-ref.d.ts +7 -7
- package/lib/ui-kit/dialog/dialog.component.d.ts +33 -33
- package/lib/ui-kit/dialog/dialog.module.d.ts +9 -9
- package/lib/ui-kit/dialog/dialog.service.d.ts +17 -17
- package/lib/ui-kit/dialog/insertion.directive.d.ts +8 -8
- package/lib/ui-kit/floating-bar/floating-bar.component.d.ts +20 -20
- package/lib/ui-kit/floating-bar/floating-bar.module.d.ts +10 -10
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts +10 -10
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +13 -13
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +15 -15
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +8 -8
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +36 -36
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +15 -15
- package/lib/ui-kit/formgroup/formgroup.module.d.ts +17 -17
- package/lib/ui-kit/formgroup/pipes/pascal.pipe.d.ts +7 -7
- package/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.d.ts +7 -7
- package/lib/ui-kit/loaders/loaders.module.d.ts +8 -8
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -9
- package/lib/ui-kit/no-data/no-data.component.d.ts +19 -19
- package/lib/ui-kit/no-data/no-data.module.d.ts +8 -8
- package/lib/ui-kit/pagination/pagination.component.d.ts +21 -21
- package/lib/ui-kit/pagination/pagination.module.d.ts +8 -8
- package/lib/ui-kit/popover/popover.component.d.ts +28 -28
- package/lib/ui-kit/popover/popover.directive.d.ts +17 -17
- package/lib/ui-kit/popover/popover.module.d.ts +9 -9
- package/lib/ui-kit/popover/popover.service.d.ts +13 -13
- package/lib/ui-kit/select/cs-option/cs-option.component.d.ts +16 -16
- package/lib/ui-kit/select/cs-select/cs-select.component.d.ts +32 -32
- package/lib/ui-kit/select/safe-html.pipe.d.ts +10 -10
- package/lib/ui-kit/select/select.module.d.ts +11 -11
- package/lib/ui-kit/services/cs-select.service.d.ts +7 -7
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +17 -17
- package/lib/ui-kit/smiley-dialog/smiley-dialog.module.d.ts +8 -8
- package/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.d.ts +17 -17
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts +8 -8
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts +9 -9
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts +28 -28
- package/lib/ui-kit/tooltip/tooltip.module.d.ts +8 -8
- package/lib/ui-kit/v-loader/loader/loader.component.d.ts +11 -11
- package/lib/ui-kit/v-loader/loader-inline/loader-inline.component.d.ts +11 -11
- package/lib/ui-kit/v-loader/v-loader.module.d.ts +9 -9
- package/package.json +1 -1
- package/public-api.d.ts +3 -3
- package/esm2022/lib/create-dashboard-container/services/auth.service.mjs +0 -31
- package/lib/create-dashboard-container/services/auth.service.d.ts +0 -11
|
@@ -1,309 +1,309 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../ui-kit/snack-bar/snack-bar.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "../../ui-kit/formgroup/cs-checkbox/cs-checkbox.component";
|
|
6
|
-
import * as i4 from "../../ui-kit/formgroup/cs-radio/cs-radio.component";
|
|
7
|
-
import * as i5 from "@angular/forms";
|
|
8
|
-
import * as i6 from "../../ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component";
|
|
9
|
-
export class FrequencyComponent {
|
|
10
|
-
snackBar;
|
|
11
|
-
animation = true;
|
|
12
|
-
savedFrequencyTab;
|
|
13
|
-
monthlyDate = 1;
|
|
14
|
-
quarterlyDate = 1;
|
|
15
|
-
savedFrequencies;
|
|
16
|
-
selectedDate;
|
|
17
|
-
frequencyTab = 'weekly';
|
|
18
|
-
showFrequency = true;
|
|
19
|
-
dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
|
|
20
|
-
monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
21
|
-
quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];
|
|
22
|
-
selectedDays = [0];
|
|
23
|
-
selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
24
|
-
selectedQuarter = 0;
|
|
25
|
-
closeFrequencyPopup = new EventEmitter();
|
|
26
|
-
saveFrequency = new EventEmitter();
|
|
27
|
-
footerDetails = {
|
|
28
|
-
selectedData: [],
|
|
29
|
-
nonRemovableList: [],
|
|
30
|
-
displayElementKey: '',
|
|
31
|
-
elementId: '',
|
|
32
|
-
singularText: '',
|
|
33
|
-
pluralText: '',
|
|
34
|
-
showFrequency: true,
|
|
35
|
-
frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',
|
|
36
|
-
isDisabled: false
|
|
37
|
-
};
|
|
38
|
-
showRadio = true;
|
|
39
|
-
constructor(snackBar) {
|
|
40
|
-
this.snackBar = snackBar;
|
|
41
|
-
}
|
|
42
|
-
ngOnChanges() {
|
|
43
|
-
this.savedFrequencies = [...new Set(this.savedFrequencies)];
|
|
44
|
-
}
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
this.animation = true;
|
|
47
|
-
setTimeout(() => {
|
|
48
|
-
this.animation = false;
|
|
49
|
-
}, 300);
|
|
50
|
-
if (this.savedFrequencyTab) {
|
|
51
|
-
this.changeTab(this.savedFrequencyTab);
|
|
52
|
-
}
|
|
53
|
-
if (this.selectedDate) {
|
|
54
|
-
switch (this.savedFrequencyTab) {
|
|
55
|
-
case 'weekly':
|
|
56
|
-
this.selectedDays = [...new Set(this.savedFrequencies)];
|
|
57
|
-
break;
|
|
58
|
-
case 'monthly':
|
|
59
|
-
this.monthlyDate = this.selectedDate;
|
|
60
|
-
this.selectedMonths = [...new Set(this.savedFrequencies)];
|
|
61
|
-
break;
|
|
62
|
-
case 'quarterly':
|
|
63
|
-
this.showRadio = false;
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
this.showRadio = true;
|
|
66
|
-
}, 100);
|
|
67
|
-
this.quarterlyDate = this.selectedDate;
|
|
68
|
-
this.selectedQuarter = this.savedFrequencies;
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
closeFrequency() {
|
|
74
|
-
this.closeFrequencyPopup.emit();
|
|
75
|
-
}
|
|
76
|
-
daySelectionChange(event, index) {
|
|
77
|
-
if (event) { //checkbox was selected
|
|
78
|
-
this.selectedDays.push(index);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
let unselectedElementIndex = this.selectedDays.indexOf(index);
|
|
82
|
-
this.selectedDays.splice(unselectedElementIndex, 1);
|
|
83
|
-
}
|
|
84
|
-
this.checkFrequencyValidity();
|
|
85
|
-
}
|
|
86
|
-
monthSelectionChange(event, index) {
|
|
87
|
-
if (event) {
|
|
88
|
-
this.selectedMonths.push(index);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
let unselectedElementIndex = this.selectedMonths.indexOf(index);
|
|
92
|
-
this.selectedMonths.splice(unselectedElementIndex, 1);
|
|
93
|
-
}
|
|
94
|
-
this.checkDateValidity(this.monthlyDate, 'monthly');
|
|
95
|
-
this.checkFrequencyValidity();
|
|
96
|
-
}
|
|
97
|
-
quarterSelectionChange(event, index) {
|
|
98
|
-
this.selectedQuarter = index;
|
|
99
|
-
this.checkDateValidity(this.quarterlyDate, 'quarterly');
|
|
100
|
-
this.checkFrequencyValidity();
|
|
101
|
-
}
|
|
102
|
-
changeTab(tabValue) {
|
|
103
|
-
this.frequencyTab = tabValue;
|
|
104
|
-
this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';
|
|
105
|
-
this.footerDetails.isDisabled = false;
|
|
106
|
-
this.setToDefaultValues();
|
|
107
|
-
if (this.frequencyTab === this.savedFrequencyTab) {
|
|
108
|
-
switch (this.frequencyTab) {
|
|
109
|
-
case 'weekly': {
|
|
110
|
-
this.selectedDays = [...this.savedFrequencies];
|
|
111
|
-
this.monthlyDate = 1;
|
|
112
|
-
this.quarterlyDate = 1;
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
case 'monthly': {
|
|
116
|
-
this.selectedMonths = [...this.savedFrequencies];
|
|
117
|
-
this.monthlyDate = this.selectedDate;
|
|
118
|
-
this.quarterlyDate = 1;
|
|
119
|
-
this.checkDateValidity(this.monthlyDate, 'monthly');
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
case 'quarterly': {
|
|
123
|
-
this.selectedQuarter = this.savedFrequencies;
|
|
124
|
-
this.quarterlyDate = this.selectedDate;
|
|
125
|
-
this.monthlyDate = 1;
|
|
126
|
-
this.checkDateValidity(this.quarterlyDate, 'quarterly');
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
setToDefaultValues() {
|
|
133
|
-
this.selectedDays = [0];
|
|
134
|
-
this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
135
|
-
this.selectedQuarter = 0;
|
|
136
|
-
}
|
|
137
|
-
submitFrequency() {
|
|
138
|
-
let stringVal = "Every ";
|
|
139
|
-
let frequencies;
|
|
140
|
-
let selectedDate = 1;
|
|
141
|
-
switch (this.frequencyTab) {
|
|
142
|
-
case 'weekly': {
|
|
143
|
-
if (this.selectedDays.length > 0) {
|
|
144
|
-
this.selectedDays.sort();
|
|
145
|
-
frequencies = this.selectedDays;
|
|
146
|
-
this.selectedDays.forEach((dayIndex, index) => {
|
|
147
|
-
stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// nothing was selected
|
|
152
|
-
this.closeFrequency();
|
|
153
|
-
}
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
case 'monthly': {
|
|
157
|
-
stringVal = " of every ";
|
|
158
|
-
if (this.selectedMonths.length > 0) {
|
|
159
|
-
frequencies = this.selectedMonths;
|
|
160
|
-
this.monthNames.forEach((monthNames, monthIndex) => {
|
|
161
|
-
if (this.selectedMonths.includes(monthIndex)) {
|
|
162
|
-
stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
let monthDateName;
|
|
166
|
-
if (this.monthlyDate == 1) {
|
|
167
|
-
monthDateName = '1st';
|
|
168
|
-
}
|
|
169
|
-
else if (this.monthlyDate == 2) {
|
|
170
|
-
monthDateName = '2nd';
|
|
171
|
-
}
|
|
172
|
-
else if (this.monthlyDate == 3) {
|
|
173
|
-
monthDateName = '3rd';
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
monthDateName = this.monthlyDate + 'th';
|
|
177
|
-
}
|
|
178
|
-
stringVal = monthDateName + stringVal;
|
|
179
|
-
selectedDate = this.monthlyDate;
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
// nothing was selected
|
|
183
|
-
this.closeFrequency();
|
|
184
|
-
}
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
case 'quarterly': {
|
|
188
|
-
stringVal = " of every ";
|
|
189
|
-
if (this.selectedQuarter >= 0) {
|
|
190
|
-
frequencies = this.selectedQuarter;
|
|
191
|
-
stringVal += this.quarters[this.selectedQuarter];
|
|
192
|
-
selectedDate = this.quarterlyDate;
|
|
193
|
-
let monthDateName;
|
|
194
|
-
if (this.quarterlyDate == 1) {
|
|
195
|
-
monthDateName = '1st';
|
|
196
|
-
}
|
|
197
|
-
else if (this.quarterlyDate == 2) {
|
|
198
|
-
monthDateName = '2nd';
|
|
199
|
-
}
|
|
200
|
-
else if (this.quarterlyDate == 3) {
|
|
201
|
-
monthDateName = '3rd';
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
monthDateName = this.quarterlyDate + 'th';
|
|
205
|
-
}
|
|
206
|
-
stringVal = monthDateName + stringVal;
|
|
207
|
-
selectedDate = this.quarterlyDate;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
// nothing was selected
|
|
211
|
-
this.closeFrequency();
|
|
212
|
-
}
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
this.saveFrequency.emit({
|
|
217
|
-
frequencyString: stringVal,
|
|
218
|
-
frequencyType: this.frequencyTab,
|
|
219
|
-
frequencies: frequencies,
|
|
220
|
-
selectedDate
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
checkDateValidity(date, type) {
|
|
224
|
-
if (date > 31 || date < 1) {
|
|
225
|
-
this.snackBar.show('Select valid date.', 'alert');
|
|
226
|
-
this.footerDetails.isDisabled = true;
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
this.footerDetails.isDisabled = false;
|
|
231
|
-
}
|
|
232
|
-
const monthList = [{ name: 'January', maxDays: 31, value: 0 }, { name: 'February', maxDays: 28, value: 1 }, { name: 'March', maxDays: 31, value: 2 },
|
|
233
|
-
{ name: 'April', maxDays: 30, value: 3 }, { name: 'May', maxDays: 31, value: 4 }, { name: 'June', maxDays: 30, value: 5 },
|
|
234
|
-
{ name: 'July', maxDays: 31, value: 6 }, { name: 'August', maxDays: 31, value: 7 }, { name: 'September', maxDays: 30, value: 8 },
|
|
235
|
-
{ name: 'October', maxDays: 31, value: 9 }, { name: 'November', maxDays: 30, value: 10 }, { name: 'December', maxDays: 31, value: 11 }];
|
|
236
|
-
switch (type) {
|
|
237
|
-
case 'monthly':
|
|
238
|
-
if (this.selectedMonths.length == 1) {
|
|
239
|
-
const index = monthList.findIndex((ele) => ele.value == this.selectedMonths[0]);
|
|
240
|
-
if (date <= monthList[index].maxDays) {
|
|
241
|
-
this.footerDetails.isDisabled = false;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
this.snackBar.show('Select valid date.', 'alert');
|
|
245
|
-
this.footerDetails.isDisabled = true;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
else if (this.selectedMonths.length == 0) {
|
|
249
|
-
this.footerDetails.isDisabled = true;
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
this.footerDetails.isDisabled = false;
|
|
253
|
-
}
|
|
254
|
-
break;
|
|
255
|
-
default:
|
|
256
|
-
this.footerDetails.isDisabled = false;
|
|
257
|
-
return true;
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
checkFrequencyValidity() {
|
|
262
|
-
switch (this.frequencyTab) {
|
|
263
|
-
case 'weekly': {
|
|
264
|
-
if (this.selectedDays.length > 0) {
|
|
265
|
-
this.footerDetails.isDisabled = false;
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
this.footerDetails.isDisabled = true;
|
|
269
|
-
}
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
case 'monthly': {
|
|
273
|
-
if (this.selectedMonths.length > 0) {
|
|
274
|
-
this.footerDetails.isDisabled = false;
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
this.footerDetails.isDisabled = true;
|
|
278
|
-
}
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
case 'quarterly': {
|
|
282
|
-
if (this.selectedQuarter >= 0) {
|
|
283
|
-
this.footerDetails.isDisabled = false;
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
this.footerDetails.isDisabled = true;
|
|
287
|
-
}
|
|
288
|
-
break;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyComponent, deps: [{ token: i1.SnackBarService }], target: i0.ɵɵFactoryTarget.Component });
|
|
293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyComponent, selector: "app-frequency", inputs: { savedFrequencyTab: "savedFrequencyTab", savedFrequencies: "savedFrequencies", selectedDate: "selectedDate" }, outputs: { closeFrequencyPopup: "closeFrequencyPopup", saveFrequency: "saveFrequency" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\n </div>\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\n <div class=\"create-frequency-body-inner\">\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\n <div class=\"create-frequency-tab-head\">\n <ul class=\"navigation\">\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\n </ul>\n </div>\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\n <ng-container *ngIf=\"showRadio\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\n </div>\n </div>\n </ng-container> \n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"create-frequency-footer\">\n <app-dashboard-footer \n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\n (submitEvent)=\"submitFrequency()\"\n ></app-dashboard-footer>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .create-frequency{background:#fff;border-right:1px solid #F1F1F1;position:fixed;inset:0 500px 0 0}::ng-deep .create-frequency-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .create-frequency-body::-webkit-scrollbar-track{background:transparent}::ng-deep .create-frequency-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .create-frequency-body-inner{width:auto}}::ng-deep .create-frequency-tab-head{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .create-frequency-tab-head ul{padding:0;margin:0}::ng-deep .create-frequency-tab-head ul.navigation{display:flex}::ng-deep .create-frequency-tab-head ul.navigation li{list-style:none;padding:0;margin:0 1.5rem 0 0;display:flex;justify-content:center}::ng-deep .create-frequency-tab-head ul.navigation li button{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;font-size:11px;font-weight:500;color:#747576;line-height:1.5rem;position:relative;text-transform:uppercase;cursor:pointer;padding:0}::ng-deep .create-frequency-tab-head ul.navigation li button.active{color:#1e5dd3;border-color:#1e5dd3}::ng-deep .create-frequency-tab-body .checkbox-list{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top{padding:12px;border-bottom:1px solid #F1F1F1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top input.countNum{-webkit-appearance:textfield;-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox{background:#fff;border-radius:.25rem}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{border-right:1px solid #f1f1f1;height:2.75rem}@media screen and (max-width: 1280px){::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{padding:0 .5rem!important}}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item:last-of-type{border-right:none}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio{display:flex}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox label span.value,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio label span.value{font-size:12px!important;color:#161b2f!important;font-weight:400!important}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item{width:calc(100% / 6)}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:first-of-type,::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(2),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(3),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(4),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(5),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-right:none}::ng-deep .create-frequency-footer{padding:0 2rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value"], outputs: ["ngValueChange"] }, { kind: "component", type: i4.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.DashboardFooterComponent, selector: "app-dashboard-footer", inputs: ["footerDetails", "userButtonColor"], outputs: ["cancelEvent", "submitEvent", "deleteEvent"] }] });
|
|
294
|
-
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyComponent, decorators: [{
|
|
296
|
-
type: Component,
|
|
297
|
-
args: [{ selector: 'app-frequency', template: "<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\n </div>\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\n <div class=\"create-frequency-body-inner\">\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\n <div class=\"create-frequency-tab-head\">\n <ul class=\"navigation\">\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\n </ul>\n </div>\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\n <ng-container *ngIf=\"showRadio\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\n </div>\n </div>\n </ng-container> \n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"create-frequency-footer\">\n <app-dashboard-footer \n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\n (submitEvent)=\"submitFrequency()\"\n ></app-dashboard-footer>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .create-frequency{background:#fff;border-right:1px solid #F1F1F1;position:fixed;inset:0 500px 0 0}::ng-deep .create-frequency-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .create-frequency-body::-webkit-scrollbar-track{background:transparent}::ng-deep .create-frequency-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .create-frequency-body-inner{width:auto}}::ng-deep .create-frequency-tab-head{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .create-frequency-tab-head ul{padding:0;margin:0}::ng-deep .create-frequency-tab-head ul.navigation{display:flex}::ng-deep .create-frequency-tab-head ul.navigation li{list-style:none;padding:0;margin:0 1.5rem 0 0;display:flex;justify-content:center}::ng-deep .create-frequency-tab-head ul.navigation li button{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;font-size:11px;font-weight:500;color:#747576;line-height:1.5rem;position:relative;text-transform:uppercase;cursor:pointer;padding:0}::ng-deep .create-frequency-tab-head ul.navigation li button.active{color:#1e5dd3;border-color:#1e5dd3}::ng-deep .create-frequency-tab-body .checkbox-list{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top{padding:12px;border-bottom:1px solid #F1F1F1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top input.countNum{-webkit-appearance:textfield;-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox{background:#fff;border-radius:.25rem}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{border-right:1px solid #f1f1f1;height:2.75rem}@media screen and (max-width: 1280px){::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{padding:0 .5rem!important}}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item:last-of-type{border-right:none}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio{display:flex}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox label span.value,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio label span.value{font-size:12px!important;color:#161b2f!important;font-weight:400!important}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item{width:calc(100% / 6)}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:first-of-type,::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(2),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(3),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(4),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(5),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-right:none}::ng-deep .create-frequency-footer{padding:0 2rem}\n"] }]
|
|
298
|
-
}], ctorParameters: function () { return [{ type: i1.SnackBarService }]; }, propDecorators: { savedFrequencyTab: [{
|
|
299
|
-
type: Input
|
|
300
|
-
}], savedFrequencies: [{
|
|
301
|
-
type: Input
|
|
302
|
-
}], selectedDate: [{
|
|
303
|
-
type: Input
|
|
304
|
-
}], closeFrequencyPopup: [{
|
|
305
|
-
type: Output
|
|
306
|
-
}], saveFrequency: [{
|
|
307
|
-
type: Output
|
|
308
|
-
}] } });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9mcmVxdWVuY3kvZnJlcXVlbmN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9mcmVxdWVuY3kvZnJlcXVlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVUxRixNQUFNLE9BQU8sa0JBQWtCO0lBOEJUO0lBN0JwQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ1IsaUJBQWlCLENBQXFCO0lBQy9DLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNULGdCQUFnQixDQUFNO0lBQ3RCLFlBQVksQ0FBTTtJQUMzQixZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUYsVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4SSxRQUFRLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxpQ0FBaUMsRUFB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Q0QsTUFBTTthQUNQO1lBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFFWixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUV2QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ3RDO2dCQUNILE1BQU07YUFDUDtZQUNELEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBRWhCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUM7b0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztpQkFFdkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUN0QztnQkFDSCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7d0dBbFNZLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJSQ1YvQixva0pBNERNOzs0RkRsRE8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWU7c0dBTWhCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFTSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRm9vdGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vdWkta2l0L2Rhc2hib2FyZC1mb290ZXIvZGFzaGJvYXJkLWZvb3Rlci1jb25maWcnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3kuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgc2F2ZWRGcmVxdWVuY3lUYWI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbW9udGhseURhdGUgPSAxO1xuICBxdWFydGVybHlEYXRlID0gMTtcbiAgQElucHV0KCkgc2F2ZWRGcmVxdWVuY2llczogYW55O1xuICBASW5wdXQoKSBzZWxlY3RlZERhdGU6IGFueTtcbiAgZnJlcXVlbmN5VGFiID0gJ3dlZWtseSc7XG4gIHNob3dGcmVxdWVuY3kgPSB0cnVlO1xuICBkYXlOYW1lcyA9IFsnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScsICdTdW5kYXknXTtcbiAgbW9udGhOYW1lcyA9IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddO1xuICBxdWFydGVycyA9IFsnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLCAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlciddO1xuICBzZWxlY3RlZERheXM6IGFueVtdID0gWzBdO1xuICBzZWxlY3RlZE1vbnRoczogYW55W10gPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXTtcbiAgc2VsZWN0ZWRRdWFydGVyID0gMDtcbiAgQE91dHB1dCgpIGNsb3NlRnJlcXVlbmN5UG9wdXAgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNhdmVGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgZm9vdGVyRGV0YWlsczogRGFzaGJvYXJkRm9vdGVyQ29uZmlnID0ge1xuICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgbm9uUmVtb3ZhYmxlTGlzdDpbXSxcbiAgICBkaXNwbGF5RWxlbWVudEtleTogJycsXG4gICAgZWxlbWVudElkOiAnJyxcbiAgICBzaW5ndWxhclRleHQ6ICcnLFxuICAgIHBsdXJhbFRleHQ6ICcnLFxuICAgIHNob3dGcmVxdWVuY3k6IHRydWUsXG4gICAgZnJlcXVlbmN5VGV4dDogJ1lvdSBoYXZlIHNlbGVjdGVkIGEgPHN0cm9uZz4nICsgdGhpcy5mcmVxdWVuY3lUYWIgKyAnPC9zdHJvbmc+IGZyZXF1ZW5jeS4nLFxuICAgIGlzRGlzYWJsZWQ6IGZhbHNlXG5cbiAgfTtcbiAgc2hvd1JhZGlvID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzbmFja0JhcjpTbmFja0JhclNlcnZpY2UpIHsgfVxuICBuZ09uQ2hhbmdlcygpe1xuICAgIHRoaXMuc2F2ZWRGcmVxdWVuY2llcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2F2ZWRGcmVxdWVuY2llcyldXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgaWYgKHRoaXMuc2F2ZWRGcmVxdWVuY3lUYWIpIHtcbiAgICAgIHRoaXMuY2hhbmdlVGFiKHRoaXMuc2F2ZWRGcmVxdWVuY3lUYWIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zYXZlZEZyZXF1ZW5jeVRhYikge1xuICAgICAgICBjYXNlICd3ZWVrbHknOlxuICAgICAgICAgdGhpcy5zZWxlY3RlZERheXMgPSBbLi4ubmV3IFNldCh0aGlzLnNhdmVkRnJlcXVlbmNpZXMpXVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb250aGx5JzpcbiAgICAgICAgIHRoaXMubW9udGhseURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcbiAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aHMgPSBbLi4ubmV3IFNldCh0aGlzLnNhdmVkRnJlcXVlbmNpZXMpXVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICAgICAgdGhpcy5zaG93UmFkaW8gPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1JhZGlvID0gdHJ1ZVxuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgdGhpcy5xdWFydGVybHlEYXRlID0gdGhpcy5zZWxlY3RlZERhdGVcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUXVhcnRlciA9IHRoaXMuc2F2ZWRGcmVxdWVuY2llcztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICB9XG4gICAgfVxuXG4gIH1cbiAgY2xvc2VGcmVxdWVuY3koKSB7XG4gICAgdGhpcy5jbG9zZUZyZXF1ZW5jeVBvcHVwLmVtaXQoKTtcbiAgfVxuICBkYXlTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSkge1xuICAgIGlmIChldmVudCkgeyAvL2NoZWNrYm94IHdhcyBzZWxlY3RlZFxuICAgICAgdGhpcy5zZWxlY3RlZERheXMucHVzaChpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB1bnNlbGVjdGVkRWxlbWVudEluZGV4ID0gdGhpcy5zZWxlY3RlZERheXMuaW5kZXhPZihpbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cy5zcGxpY2UodW5zZWxlY3RlZEVsZW1lbnRJbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuY2hlY2tGcmVxdWVuY3lWYWxpZGl0eSgpO1xuICB9XG4gIG1vbnRoU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnksIGluZGV4OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aHMucHVzaChpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB1bnNlbGVjdGVkRWxlbWVudEluZGV4ID0gdGhpcy5zZWxlY3RlZE1vbnRocy5pbmRleE9mKGluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aHMuc3BsaWNlKHVuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrRGF0ZVZhbGlkaXR5KHRoaXMubW9udGhseURhdGUsJ21vbnRobHknKVxuICAgIHRoaXMuY2hlY2tGcmVxdWVuY3lWYWxpZGl0eSgpO1xuICB9XG5cbiAgcXVhcnRlclNlbGVjdGlvbkNoYW5nZShldmVudDogYW55LCBpbmRleDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFF1YXJ0ZXIgPSBpbmRleDtcbiAgICB0aGlzLmNoZWNrRGF0ZVZhbGlkaXR5KHRoaXMucXVhcnRlcmx5RGF0ZSwncXVhcnRlcmx5Jyk7XG4gICAgdGhpcy5jaGVja0ZyZXF1ZW5jeVZhbGlkaXR5KCk7XG4gIH1cblxuICBjaGFuZ2VUYWIodGFiVmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gdGFiVmFsdWU7XG4gICAgdGhpcy5mb290ZXJEZXRhaWxzLmZyZXF1ZW5jeVRleHQgPSAnWW91IGhhdmUgc2VsZWN0ZWQgYSA8c3Ryb25nPicgKyB0aGlzLmZyZXF1ZW5jeVRhYiArICc8L3N0cm9uZz4gZnJlcXVlbmN5Lic7XG4gICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNldFRvRGVmYXVsdFZhbHVlcygpXG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5VGFiID09PSB0aGlzLnNhdmVkRnJlcXVlbmN5VGFiKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZnJlcXVlbmN5VGFiKSB7XG4gICAgICAgIGNhc2UgJ3dlZWtseSc6IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFsuLi50aGlzLnNhdmVkRnJlcXVlbmNpZXNdO1xuICAgICAgICAgIHRoaXMubW9udGhseURhdGUgPSAxO1xuICAgICAgICAgIHRoaXMucXVhcnRlcmx5RGF0ZSA9IDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbW9udGhseSc6IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGhzID0gWy4uLnRoaXMuc2F2ZWRGcmVxdWVuY2llc107XG4gICAgICAgICAgdGhpcy5tb250aGx5RGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xuICAgICAgICAgIHRoaXMucXVhcnRlcmx5RGF0ZSA9IDE7XG4gICAgICAgICAgdGhpcy5jaGVja0RhdGVWYWxpZGl0eSh0aGlzLm1vbnRobHlEYXRlLCdtb250aGx5JylcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdxdWFydGVybHknOiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFF1YXJ0ZXIgPSB0aGlzLnNhdmVkRnJlcXVlbmNpZXM7XG4gICAgICAgICAgdGhpcy5xdWFydGVybHlEYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XG4gICAgICAgICAgdGhpcy5tb250aGx5RGF0ZSA9IDE7XG4gICAgICAgICAgdGhpcy5jaGVja0RhdGVWYWxpZGl0eSh0aGlzLnF1YXJ0ZXJseURhdGUsJ3F1YXJ0ZXJseScpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRUb0RlZmF1bHRWYWx1ZXMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERheXMgPSBbMF07XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRocyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTFdO1xuICAgIHRoaXMuc2VsZWN0ZWRRdWFydGVyID0gMDtcbiAgfVxuXG4gIHN1Ym1pdEZyZXF1ZW5jeSgpIHtcbiAgICBsZXQgc3RyaW5nVmFsID0gXCJFdmVyeSBcIjtcbiAgICBsZXQgZnJlcXVlbmNpZXM7XG4gICAgbGV0IHNlbGVjdGVkRGF0ZSA9IDE7XG4gICAgc3dpdGNoICh0aGlzLmZyZXF1ZW5jeVRhYikge1xuICAgICAgY2FzZSAnd2Vla2x5Jzoge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzLnNvcnQoKTtcbiAgICAgICAgICBmcmVxdWVuY2llcyA9IHRoaXMuc2VsZWN0ZWREYXlzO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzLmZvckVhY2goKGRheUluZGV4LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgc3RyaW5nVmFsICs9IGluZGV4ID09PSAwID8gdGhpcy5kYXlOYW1lc1tkYXlJbmRleF0gOiAnLCAnICsgdGhpcy5kYXlOYW1lc1tkYXlJbmRleF07XG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBub3RoaW5nIHdhcyBzZWxlY3RlZFxuICAgICAgICAgIHRoaXMuY2xvc2VGcmVxdWVuY3koKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21vbnRobHknOiB7XG4gICAgICAgIHN0cmluZ1ZhbCA9IFwiIG9mIGV2ZXJ5IFwiO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZnJlcXVlbmNpZXMgPSB0aGlzLnNlbGVjdGVkTW9udGhzO1xuICAgICAgICAgIHRoaXMubW9udGhOYW1lcy5mb3JFYWNoKChtb250aE5hbWVzOiBzdHJpbmcsIG1vbnRoSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb250aHMuaW5jbHVkZXMobW9udGhJbmRleCkpIHtcbiAgICAgICAgICAgICAgc3RyaW5nVmFsICs9IG1vbnRoSW5kZXggID09PSAwID8gbW9udGhOYW1lcyA6ICcsICcgKyBtb250aE5hbWVzO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBsZXQgbW9udGhEYXRlTmFtZTtcbiAgICAgICAgICBpZiAodGhpcy5tb250aGx5RGF0ZSA9PSAxKSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzFzdCdcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5tb250aGx5RGF0ZSA9PSAyKSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzJuZCdcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5tb250aGx5RGF0ZSA9PSAzKSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCdcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5tb250aGx5RGF0ZSArICd0aCdcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyaW5nVmFsID0gbW9udGhEYXRlTmFtZSArIHN0cmluZ1ZhbDtcbiAgICAgICAgICBzZWxlY3RlZERhdGUgPSB0aGlzLm1vbnRobHlEYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG5vdGhpbmcgd2FzIHNlbGVjdGVkXG4gICAgICAgICAgdGhpcy5jbG9zZUZyZXF1ZW5jeSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAncXVhcnRlcmx5Jzoge1xuICAgICAgICBzdHJpbmdWYWwgPSBcIiBvZiBldmVyeSBcIjtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFF1YXJ0ZXIgPj0gMCkge1xuICAgICAgICAgIGZyZXF1ZW5jaWVzID0gdGhpcy5zZWxlY3RlZFF1YXJ0ZXI7XG4gICAgICAgICAgc3RyaW5nVmFsICs9IHRoaXMucXVhcnRlcnNbdGhpcy5zZWxlY3RlZFF1YXJ0ZXJdO1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHRoaXMucXVhcnRlcmx5RGF0ZTtcbiAgICAgICAgICBsZXQgbW9udGhEYXRlTmFtZTtcbiAgICAgICAgICBpZiAodGhpcy5xdWFydGVybHlEYXRlID09IDEpIHtcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMXN0J1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICh0aGlzLnF1YXJ0ZXJseURhdGUgPT0gMikge1xuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMucXVhcnRlcmx5RGF0ZSA9PSAzKSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCdcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5xdWFydGVybHlEYXRlICsgJ3RoJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHJpbmdWYWwgPSBtb250aERhdGVOYW1lICsgc3RyaW5nVmFsO1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHRoaXMucXVhcnRlcmx5RGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBub3RoaW5nIHdhcyBzZWxlY3RlZFxuICAgICAgICAgIHRoaXMuY2xvc2VGcmVxdWVuY3koKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zYXZlRnJlcXVlbmN5LmVtaXQoe1xuICAgICAgZnJlcXVlbmN5U3RyaW5nOiBzdHJpbmdWYWwsXG4gICAgICBmcmVxdWVuY3lUeXBlOiB0aGlzLmZyZXF1ZW5jeVRhYixcbiAgICAgIGZyZXF1ZW5jaWVzOiBmcmVxdWVuY2llcyxcbiAgICAgIHNlbGVjdGVkRGF0ZVxuICAgIH0pXG4gIH1cbiAgXG4gIGNoZWNrRGF0ZVZhbGlkaXR5KGRhdGU6bnVtYmVyLCB0eXBlOnN0cmluZyl7XG4gICAgaWYoZGF0ZT4zMSB8fCBkYXRlPDEpe1xuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdTZWxlY3QgdmFsaWQgZGF0ZS4nLCdhbGVydCcpO1xuICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICByZXR1cm5cbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuICAgY29uc3QgIG1vbnRoTGlzdD1be25hbWU6J0phbnVhcnknLG1heERheXM6MzEsdmFsdWU6MH0se25hbWU6J0ZlYnJ1YXJ5JyxtYXhEYXlzOjI4LHZhbHVlOjF9LHtuYW1lOidNYXJjaCcsbWF4RGF5czozMSx2YWx1ZToyfSxcbiAgIHtuYW1lOidBcHJpbCcsbWF4RGF5czozMCx2YWx1ZTozfSx7bmFtZTonTWF5JyxtYXhEYXlzOjMxLHZhbHVlOjR9LHtuYW1lOidKdW5lJyxtYXhEYXlzOjMwLHZhbHVlOjV9LFxuICAge25hbWU6J0p1bHknLG1heERheXM6MzEsdmFsdWU6Nn0se25hbWU6J0F1Z3VzdCcsbWF4RGF5czozMSx2YWx1ZTo3fSx7bmFtZTonU2VwdGVtYmVyJyxtYXhEYXlzOjMwLHZhbHVlOjh9LFxuICAge25hbWU6J09jdG9iZXInLG1heERheXM6MzEsdmFsdWU6OX0se25hbWU6J05vdmVtYmVyJyxtYXhEYXlzOjMwLHZhbHVlOjEwfSx7bmFtZTonRGVjZW1iZXInLG1heERheXM6MzEsdmFsdWU6MTF9XVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdtb250aGx5JzpcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRNb250aHMubGVuZ3RoPT0xKXtcbiAgICAgICAgY29uc3QgaW5kZXggPSBtb250aExpc3QuZmluZEluZGV4KChlbGU6YW55KT0+ZWxlLnZhbHVlPT10aGlzLnNlbGVjdGVkTW9udGhzWzBdKTtcbiAgICAgICAgaWYoZGF0ZTw9bW9udGhMaXN0W2luZGV4XS5tYXhEYXlzKXtcbiAgICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICBcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdTZWxlY3QgdmFsaWQgZGF0ZS4nLCdhbGVydCcpO1xuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gdHJ1ZTsgXG4gICAgICAgIH1cbiAgICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ZWRNb250aHMubGVuZ3RoPT0wKXtcbiAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSB0cnVlOyBcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBicmVhaztcblxuICB9XG5cbn1cblxuY2hlY2tGcmVxdWVuY3lWYWxpZGl0eSgpe1xuICBzd2l0Y2ggKHRoaXMuZnJlcXVlbmN5VGFiKSB7XG4gICAgY2FzZSAnd2Vla2x5Jzoge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ21vbnRobHknOiB7XG4gICBcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb250aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3F1YXJ0ZXJseSc6IHtcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRRdWFydGVyID49IDApe1xuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9IFxufVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeVwiIFtjbGFzcy5hbmltYXRlLXNsaWRlSW5SaWdodF09XCJhbmltYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeS1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNCB2eC1tYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgRnJlcXVlbmN5PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktYm9keSB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktYm9keS1pbm5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktdGFiXCIgW25nU3dpdGNoXT1cImZyZXF1ZW5jeVRhYlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdGUtZnJlcXVlbmN5LXRhYi1oZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmlnYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09ICd3ZWVrbHknXCIgKGNsaWNrKT1cImNoYW5nZVRhYignd2Vla2x5JylcIj5XZWVrbHk8L2J1dHRvbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxidXR0b24gW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT0gJ21vbnRobHknXCIgKGNsaWNrKT1cImNoYW5nZVRhYignbW9udGhseScpXCI+TW9udGhseTwvYnV0dG9uPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbiBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVRhYiA9PSAncXVhcnRlcmx5J1wiIChjbGljayk9XCJjaGFuZ2VUYWIoJ3F1YXJ0ZXJseScpXCI+UXVhcnRlcmx5PC9idXR0b24+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeS10YWItYm9keSB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5FbWFpbCBSZW1pbmRlciBGcmVxdWVuY3k6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1saXN0XCIgKm5nU3dpdGNoQ2FzZT1cIid3ZWVrbHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94LWl0ZW0gdngtcC0zIHZ4LXByLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5TmFtZXM7IGxldCBkYXlJbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggKG5nVmFsdWVDaGFuZ2UpPVwiZGF5U2VsZWN0aW9uQ2hhbmdlKCRldmVudCwgZGF5SW5kZXgpXCIgW25nVmFsdWVdPVwic2VsZWN0ZWREYXlzLmluY2x1ZGVzKGRheUluZGV4KVwiPnt7ZGF5fX08L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWxpc3QgbW9udGhcIiAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRobHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXRvcCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIj5EYXk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChmb2N1c291dCk9XCJjaGVja0RhdGVWYWxpZGl0eShtb250aGx5RGF0ZSwnbW9udGhseScpXCIgWyhuZ01vZGVsKV09XCJtb250aGx5RGF0ZVwiIGNsYXNzPVwiY291bnROdW1cIiBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMVwiIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPm9mPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY2hlY2tib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94LWl0ZW0gdngtcC0zIHZ4LXByLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aE5hbWVzOyBsZXQgbW9udGhJbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggKG5nVmFsdWVDaGFuZ2UpPVwibW9udGhTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50LCBtb250aEluZGV4KVwiIFtuZ1ZhbHVlXT1cInNlbGVjdGVkTW9udGhzLmluY2x1ZGVzKG1vbnRoSW5kZXgpXCI+e3ttb250aH19PC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1saXN0XCIgKm5nU3dpdGNoQ2FzZT1cIidxdWFydGVybHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1JhZGlvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS10b3AgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPkRheTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChmb2N1c291dCk9XCJjaGVja0RhdGVWYWxpZGl0eShxdWFydGVybHlEYXRlLCdxdWFydGVybHknKVwiIFsobmdNb2RlbCldPVwicXVhcnRlcmx5RGF0ZVwiIGNsYXNzPVwiY291bnROdW1cIiBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMVwiIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIj5vZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY2hlY2tib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94LWl0ZW0gdngtcC0zIHZ4LXByLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC13LTEwMFwiICpuZ0Zvcj1cImxldCBxdWFydGVyIG9mIHF1YXJ0ZXJzLCBsZXQgcXVhcnRlckluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gKGNoZWNrZWRFdmVudCk9XCJxdWFydGVyU2VsZWN0aW9uQ2hhbmdlKCRldmVudCwgcXVhcnRlckluZGV4KVwiIFtjaGVja2VkXT1cInNlbGVjdGVkUXVhcnRlciA9PT0gcXVhcnRlckluZGV4XCI+e3txdWFydGVyfX08L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeS1mb290ZXJcIj5cbiAgICAgICAgPGFwcC1kYXNoYm9hcmQtZm9vdGVyIFxuICAgICAgICBbZm9vdGVyRGV0YWlsc109XCJmb290ZXJEZXRhaWxzXCJcbiAgICAgICAgKGNhbmNlbEV2ZW50KT1cImNsb3NlRnJlcXVlbmN5UG9wdXAuZW1pdCgpXCJcbiAgICAgICAgKHN1Ym1pdEV2ZW50KT1cInN1Ym1pdEZyZXF1ZW5jeSgpXCJcbiAgICAgICAgPjwvYXBwLWRhc2hib2FyZC1mb290ZXI+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../ui-kit/snack-bar/snack-bar.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "../../ui-kit/formgroup/cs-checkbox/cs-checkbox.component";
|
|
6
|
+
import * as i4 from "../../ui-kit/formgroup/cs-radio/cs-radio.component";
|
|
7
|
+
import * as i5 from "@angular/forms";
|
|
8
|
+
import * as i6 from "../../ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component";
|
|
9
|
+
export class FrequencyComponent {
|
|
10
|
+
snackBar;
|
|
11
|
+
animation = true;
|
|
12
|
+
savedFrequencyTab;
|
|
13
|
+
monthlyDate = 1;
|
|
14
|
+
quarterlyDate = 1;
|
|
15
|
+
savedFrequencies;
|
|
16
|
+
selectedDate;
|
|
17
|
+
frequencyTab = 'weekly';
|
|
18
|
+
showFrequency = true;
|
|
19
|
+
dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
|
|
20
|
+
monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
21
|
+
quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];
|
|
22
|
+
selectedDays = [0];
|
|
23
|
+
selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
24
|
+
selectedQuarter = 0;
|
|
25
|
+
closeFrequencyPopup = new EventEmitter();
|
|
26
|
+
saveFrequency = new EventEmitter();
|
|
27
|
+
footerDetails = {
|
|
28
|
+
selectedData: [],
|
|
29
|
+
nonRemovableList: [],
|
|
30
|
+
displayElementKey: '',
|
|
31
|
+
elementId: '',
|
|
32
|
+
singularText: '',
|
|
33
|
+
pluralText: '',
|
|
34
|
+
showFrequency: true,
|
|
35
|
+
frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',
|
|
36
|
+
isDisabled: false
|
|
37
|
+
};
|
|
38
|
+
showRadio = true;
|
|
39
|
+
constructor(snackBar) {
|
|
40
|
+
this.snackBar = snackBar;
|
|
41
|
+
}
|
|
42
|
+
ngOnChanges() {
|
|
43
|
+
this.savedFrequencies = [...new Set(this.savedFrequencies)];
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
this.animation = true;
|
|
47
|
+
setTimeout(() => {
|
|
48
|
+
this.animation = false;
|
|
49
|
+
}, 300);
|
|
50
|
+
if (this.savedFrequencyTab) {
|
|
51
|
+
this.changeTab(this.savedFrequencyTab);
|
|
52
|
+
}
|
|
53
|
+
if (this.selectedDate) {
|
|
54
|
+
switch (this.savedFrequencyTab) {
|
|
55
|
+
case 'weekly':
|
|
56
|
+
this.selectedDays = [...new Set(this.savedFrequencies)];
|
|
57
|
+
break;
|
|
58
|
+
case 'monthly':
|
|
59
|
+
this.monthlyDate = this.selectedDate;
|
|
60
|
+
this.selectedMonths = [...new Set(this.savedFrequencies)];
|
|
61
|
+
break;
|
|
62
|
+
case 'quarterly':
|
|
63
|
+
this.showRadio = false;
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
this.showRadio = true;
|
|
66
|
+
}, 100);
|
|
67
|
+
this.quarterlyDate = this.selectedDate;
|
|
68
|
+
this.selectedQuarter = this.savedFrequencies;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
closeFrequency() {
|
|
74
|
+
this.closeFrequencyPopup.emit();
|
|
75
|
+
}
|
|
76
|
+
daySelectionChange(event, index) {
|
|
77
|
+
if (event) { //checkbox was selected
|
|
78
|
+
this.selectedDays.push(index);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
let unselectedElementIndex = this.selectedDays.indexOf(index);
|
|
82
|
+
this.selectedDays.splice(unselectedElementIndex, 1);
|
|
83
|
+
}
|
|
84
|
+
this.checkFrequencyValidity();
|
|
85
|
+
}
|
|
86
|
+
monthSelectionChange(event, index) {
|
|
87
|
+
if (event) {
|
|
88
|
+
this.selectedMonths.push(index);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
let unselectedElementIndex = this.selectedMonths.indexOf(index);
|
|
92
|
+
this.selectedMonths.splice(unselectedElementIndex, 1);
|
|
93
|
+
}
|
|
94
|
+
this.checkDateValidity(this.monthlyDate, 'monthly');
|
|
95
|
+
this.checkFrequencyValidity();
|
|
96
|
+
}
|
|
97
|
+
quarterSelectionChange(event, index) {
|
|
98
|
+
this.selectedQuarter = index;
|
|
99
|
+
this.checkDateValidity(this.quarterlyDate, 'quarterly');
|
|
100
|
+
this.checkFrequencyValidity();
|
|
101
|
+
}
|
|
102
|
+
changeTab(tabValue) {
|
|
103
|
+
this.frequencyTab = tabValue;
|
|
104
|
+
this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';
|
|
105
|
+
this.footerDetails.isDisabled = false;
|
|
106
|
+
this.setToDefaultValues();
|
|
107
|
+
if (this.frequencyTab === this.savedFrequencyTab) {
|
|
108
|
+
switch (this.frequencyTab) {
|
|
109
|
+
case 'weekly': {
|
|
110
|
+
this.selectedDays = [...this.savedFrequencies];
|
|
111
|
+
this.monthlyDate = 1;
|
|
112
|
+
this.quarterlyDate = 1;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case 'monthly': {
|
|
116
|
+
this.selectedMonths = [...this.savedFrequencies];
|
|
117
|
+
this.monthlyDate = this.selectedDate;
|
|
118
|
+
this.quarterlyDate = 1;
|
|
119
|
+
this.checkDateValidity(this.monthlyDate, 'monthly');
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case 'quarterly': {
|
|
123
|
+
this.selectedQuarter = this.savedFrequencies;
|
|
124
|
+
this.quarterlyDate = this.selectedDate;
|
|
125
|
+
this.monthlyDate = 1;
|
|
126
|
+
this.checkDateValidity(this.quarterlyDate, 'quarterly');
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
setToDefaultValues() {
|
|
133
|
+
this.selectedDays = [0];
|
|
134
|
+
this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
135
|
+
this.selectedQuarter = 0;
|
|
136
|
+
}
|
|
137
|
+
submitFrequency() {
|
|
138
|
+
let stringVal = "Every ";
|
|
139
|
+
let frequencies;
|
|
140
|
+
let selectedDate = 1;
|
|
141
|
+
switch (this.frequencyTab) {
|
|
142
|
+
case 'weekly': {
|
|
143
|
+
if (this.selectedDays.length > 0) {
|
|
144
|
+
this.selectedDays.sort();
|
|
145
|
+
frequencies = this.selectedDays;
|
|
146
|
+
this.selectedDays.forEach((dayIndex, index) => {
|
|
147
|
+
stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// nothing was selected
|
|
152
|
+
this.closeFrequency();
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'monthly': {
|
|
157
|
+
stringVal = " of every ";
|
|
158
|
+
if (this.selectedMonths.length > 0) {
|
|
159
|
+
frequencies = this.selectedMonths;
|
|
160
|
+
this.monthNames.forEach((monthNames, monthIndex) => {
|
|
161
|
+
if (this.selectedMonths.includes(monthIndex)) {
|
|
162
|
+
stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
let monthDateName;
|
|
166
|
+
if (this.monthlyDate == 1) {
|
|
167
|
+
monthDateName = '1st';
|
|
168
|
+
}
|
|
169
|
+
else if (this.monthlyDate == 2) {
|
|
170
|
+
monthDateName = '2nd';
|
|
171
|
+
}
|
|
172
|
+
else if (this.monthlyDate == 3) {
|
|
173
|
+
monthDateName = '3rd';
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
monthDateName = this.monthlyDate + 'th';
|
|
177
|
+
}
|
|
178
|
+
stringVal = monthDateName + stringVal;
|
|
179
|
+
selectedDate = this.monthlyDate;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// nothing was selected
|
|
183
|
+
this.closeFrequency();
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case 'quarterly': {
|
|
188
|
+
stringVal = " of every ";
|
|
189
|
+
if (this.selectedQuarter >= 0) {
|
|
190
|
+
frequencies = this.selectedQuarter;
|
|
191
|
+
stringVal += this.quarters[this.selectedQuarter];
|
|
192
|
+
selectedDate = this.quarterlyDate;
|
|
193
|
+
let monthDateName;
|
|
194
|
+
if (this.quarterlyDate == 1) {
|
|
195
|
+
monthDateName = '1st';
|
|
196
|
+
}
|
|
197
|
+
else if (this.quarterlyDate == 2) {
|
|
198
|
+
monthDateName = '2nd';
|
|
199
|
+
}
|
|
200
|
+
else if (this.quarterlyDate == 3) {
|
|
201
|
+
monthDateName = '3rd';
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
monthDateName = this.quarterlyDate + 'th';
|
|
205
|
+
}
|
|
206
|
+
stringVal = monthDateName + stringVal;
|
|
207
|
+
selectedDate = this.quarterlyDate;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// nothing was selected
|
|
211
|
+
this.closeFrequency();
|
|
212
|
+
}
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
this.saveFrequency.emit({
|
|
217
|
+
frequencyString: stringVal,
|
|
218
|
+
frequencyType: this.frequencyTab,
|
|
219
|
+
frequencies: frequencies,
|
|
220
|
+
selectedDate
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
checkDateValidity(date, type) {
|
|
224
|
+
if (date > 31 || date < 1) {
|
|
225
|
+
this.snackBar.show('Select valid date.', 'alert');
|
|
226
|
+
this.footerDetails.isDisabled = true;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.footerDetails.isDisabled = false;
|
|
231
|
+
}
|
|
232
|
+
const monthList = [{ name: 'January', maxDays: 31, value: 0 }, { name: 'February', maxDays: 28, value: 1 }, { name: 'March', maxDays: 31, value: 2 },
|
|
233
|
+
{ name: 'April', maxDays: 30, value: 3 }, { name: 'May', maxDays: 31, value: 4 }, { name: 'June', maxDays: 30, value: 5 },
|
|
234
|
+
{ name: 'July', maxDays: 31, value: 6 }, { name: 'August', maxDays: 31, value: 7 }, { name: 'September', maxDays: 30, value: 8 },
|
|
235
|
+
{ name: 'October', maxDays: 31, value: 9 }, { name: 'November', maxDays: 30, value: 10 }, { name: 'December', maxDays: 31, value: 11 }];
|
|
236
|
+
switch (type) {
|
|
237
|
+
case 'monthly':
|
|
238
|
+
if (this.selectedMonths.length == 1) {
|
|
239
|
+
const index = monthList.findIndex((ele) => ele.value == this.selectedMonths[0]);
|
|
240
|
+
if (date <= monthList[index].maxDays) {
|
|
241
|
+
this.footerDetails.isDisabled = false;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
this.snackBar.show('Select valid date.', 'alert');
|
|
245
|
+
this.footerDetails.isDisabled = true;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (this.selectedMonths.length == 0) {
|
|
249
|
+
this.footerDetails.isDisabled = true;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
this.footerDetails.isDisabled = false;
|
|
253
|
+
}
|
|
254
|
+
break;
|
|
255
|
+
default:
|
|
256
|
+
this.footerDetails.isDisabled = false;
|
|
257
|
+
return true;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
checkFrequencyValidity() {
|
|
262
|
+
switch (this.frequencyTab) {
|
|
263
|
+
case 'weekly': {
|
|
264
|
+
if (this.selectedDays.length > 0) {
|
|
265
|
+
this.footerDetails.isDisabled = false;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this.footerDetails.isDisabled = true;
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
case 'monthly': {
|
|
273
|
+
if (this.selectedMonths.length > 0) {
|
|
274
|
+
this.footerDetails.isDisabled = false;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
this.footerDetails.isDisabled = true;
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
case 'quarterly': {
|
|
282
|
+
if (this.selectedQuarter >= 0) {
|
|
283
|
+
this.footerDetails.isDisabled = false;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
this.footerDetails.isDisabled = true;
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyComponent, deps: [{ token: i1.SnackBarService }], target: i0.ɵɵFactoryTarget.Component });
|
|
293
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyComponent, selector: "app-frequency", inputs: { savedFrequencyTab: "savedFrequencyTab", savedFrequencies: "savedFrequencies", selectedDate: "selectedDate" }, outputs: { closeFrequencyPopup: "closeFrequencyPopup", saveFrequency: "saveFrequency" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\r\n </div>\r\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\r\n <div class=\"create-frequency-body-inner\">\r\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\r\n <div class=\"create-frequency-tab-head\">\r\n <ul class=\"navigation\">\r\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\r\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\r\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\r\n </ul>\r\n </div>\r\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\r\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\r\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\r\n <div class=\"frequency-top vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\r\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\r\n </div>\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\r\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\r\n <ng-container *ngIf=\"showRadio\">\r\n <div class=\"frequency-top vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\r\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\r\n </div>\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\r\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\r\n </div>\r\n </div>\r\n </ng-container> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"create-frequency-footer\">\r\n <app-dashboard-footer \r\n [footerDetails]=\"footerDetails\"\r\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\r\n (submitEvent)=\"submitFrequency()\"\r\n ></app-dashboard-footer>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .create-frequency{background:#fff;border-right:1px solid #F1F1F1;position:fixed;inset:0 500px 0 0}::ng-deep .create-frequency-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .create-frequency-body::-webkit-scrollbar-track{background:transparent}::ng-deep .create-frequency-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .create-frequency-body-inner{width:auto}}::ng-deep .create-frequency-tab-head{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .create-frequency-tab-head ul{padding:0;margin:0}::ng-deep .create-frequency-tab-head ul.navigation{display:flex}::ng-deep .create-frequency-tab-head ul.navigation li{list-style:none;padding:0;margin:0 1.5rem 0 0;display:flex;justify-content:center}::ng-deep .create-frequency-tab-head ul.navigation li button{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;font-size:11px;font-weight:500;color:#747576;line-height:1.5rem;position:relative;text-transform:uppercase;cursor:pointer;padding:0}::ng-deep .create-frequency-tab-head ul.navigation li button.active{color:#1e5dd3;border-color:#1e5dd3}::ng-deep .create-frequency-tab-body .checkbox-list{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top{padding:12px;border-bottom:1px solid #F1F1F1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top input.countNum{-webkit-appearance:textfield;-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox{background:#fff;border-radius:.25rem}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{border-right:1px solid #f1f1f1;height:2.75rem}@media screen and (max-width: 1280px){::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{padding:0 .5rem!important}}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item:last-of-type{border-right:none}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio{display:flex}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox label span.value,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio label span.value{font-size:12px!important;color:#161b2f!important;font-weight:400!important}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item{width:calc(100% / 6)}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:first-of-type,::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(2),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(3),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(4),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(5),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-right:none}::ng-deep .create-frequency-footer{padding:0 2rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value"], outputs: ["ngValueChange"] }, { kind: "component", type: i4.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.DashboardFooterComponent, selector: "app-dashboard-footer", inputs: ["footerDetails", "userButtonColor"], outputs: ["cancelEvent", "submitEvent", "deleteEvent"] }] });
|
|
294
|
+
}
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyComponent, decorators: [{
|
|
296
|
+
type: Component,
|
|
297
|
+
args: [{ selector: 'app-frequency', template: "<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\r\n </div>\r\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\r\n <div class=\"create-frequency-body-inner\">\r\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\r\n <div class=\"create-frequency-tab-head\">\r\n <ul class=\"navigation\">\r\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\r\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\r\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\r\n </ul>\r\n </div>\r\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\r\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\r\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\r\n <div class=\"frequency-top vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\r\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\r\n </div>\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\r\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\r\n <ng-container *ngIf=\"showRadio\">\r\n <div class=\"frequency-top vx-d-flex vx-align-center\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\r\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\r\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\r\n </div>\r\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\r\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\r\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\r\n </div>\r\n </div>\r\n </ng-container> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"create-frequency-footer\">\r\n <app-dashboard-footer \r\n [footerDetails]=\"footerDetails\"\r\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\r\n (submitEvent)=\"submitFrequency()\"\r\n ></app-dashboard-footer>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .create-frequency{background:#fff;border-right:1px solid #F1F1F1;position:fixed;inset:0 500px 0 0}::ng-deep .create-frequency-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .create-frequency-body::-webkit-scrollbar-track{background:transparent}::ng-deep .create-frequency-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .create-frequency-body-inner{width:auto}}::ng-deep .create-frequency-tab-head{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .create-frequency-tab-head ul{padding:0;margin:0}::ng-deep .create-frequency-tab-head ul.navigation{display:flex}::ng-deep .create-frequency-tab-head ul.navigation li{list-style:none;padding:0;margin:0 1.5rem 0 0;display:flex;justify-content:center}::ng-deep .create-frequency-tab-head ul.navigation li button{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;font-size:11px;font-weight:500;color:#747576;line-height:1.5rem;position:relative;text-transform:uppercase;cursor:pointer;padding:0}::ng-deep .create-frequency-tab-head ul.navigation li button.active{color:#1e5dd3;border-color:#1e5dd3}::ng-deep .create-frequency-tab-body .checkbox-list{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top{padding:12px;border-bottom:1px solid #F1F1F1}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-top input.countNum{-webkit-appearance:textfield;-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox{background:#fff;border-radius:.25rem}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{border-right:1px solid #f1f1f1;height:2.75rem}@media screen and (max-width: 1280px){::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item{padding:0 .5rem!important}}::ng-deep .create-frequency-tab-body .checkbox-list .frequency-checkbox-item:last-of-type{border-right:none}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio{display:flex}::ng-deep .create-frequency-tab-body .checkbox-list app-cs-checkbox label span.value,::ng-deep .create-frequency-tab-body .checkbox-list app-cs-radio label span.value{font-size:12px!important;color:#161b2f!important;font-weight:400!important}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item{width:calc(100% / 6)}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:first-of-type,::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(2),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(3),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(4),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(5),::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-bottom:1px solid #f1f1f1}::ng-deep .create-frequency-tab-body .checkbox-list.month .frequency-checkbox-item:nth-child(6){border-right:none}::ng-deep .create-frequency-footer{padding:0 2rem}\n"] }]
|
|
298
|
+
}], ctorParameters: function () { return [{ type: i1.SnackBarService }]; }, propDecorators: { savedFrequencyTab: [{
|
|
299
|
+
type: Input
|
|
300
|
+
}], savedFrequencies: [{
|
|
301
|
+
type: Input
|
|
302
|
+
}], selectedDate: [{
|
|
303
|
+
type: Input
|
|
304
|
+
}], closeFrequencyPopup: [{
|
|
305
|
+
type: Output
|
|
306
|
+
}], saveFrequency: [{
|
|
307
|
+
type: Output
|
|
308
|
+
}] } });
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9mcmVxdWVuY3kvZnJlcXVlbmN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9mcmVxdWVuY3kvZnJlcXVlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVUxRixNQUFNLE9BQU8sa0JBQWtCO0lBOEJUO0lBN0JwQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ1IsaUJBQWlCLENBQXFCO0lBQy9DLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEIsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNULGdCQUFnQixDQUFNO0lBQ3RCLFlBQVksQ0FBTTtJQUMzQixZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQ3hCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUYsVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4SSxRQUFRLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxpQ0FBaUMsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3BILFlBQVksR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLGNBQWMsR0FBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNWLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDakQsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbEQsYUFBYSxHQUEwQjtRQUNyQyxZQUFZLEVBQUUsRUFBRTtRQUNoQixnQkFBZ0IsRUFBQyxFQUFFO1FBQ25CLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsU0FBUyxFQUFFLEVBQUU7UUFDYixZQUFZLEVBQUUsRUFBRTtRQUNoQixVQUFVLEVBQUUsRUFBRTtRQUNkLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGFBQWEsRUFBRSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLHNCQUFzQjtRQUMxRixVQUFVLEVBQUUsS0FBSztLQUVsQixDQUFDO0lBQ0YsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixZQUFvQixRQUF3QjtRQUF4QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtJQUFJLENBQUM7SUFDakQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUM5QixLQUFLLFFBQVE7b0JBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtvQkFDdEQsTUFBTTtnQkFDUixLQUFLLFNBQVM7b0JBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO29CQUV4RCxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtvQkFDdkIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtvQkFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7b0JBRTdDLE1BQU07YUFFVDtTQUNGO0lBRUgsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELGtCQUFrQixDQUFDLEtBQVUsRUFBRSxLQUFVO1FBQ3ZDLElBQUksS0FBSyxFQUFFLEVBQUUsdUJBQXVCO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxJQUFJLHNCQUFzQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNELG9CQUFvQixDQUFDLEtBQVUsRUFBRSxLQUFVO1FBQ3pDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxTQUFTLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBVSxFQUFFLEtBQVU7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDO1FBQy9HLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ2hELFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDekIsS0FBSyxRQUFRLENBQUMsQ0FBQztvQkFDYixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO29CQUN2QixNQUFNO2lCQUNQO2dCQUNELEtBQUssU0FBUyxDQUFDLENBQUM7b0JBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLFNBQVMsQ0FBQyxDQUFBO29CQUNsRCxNQUFNO2lCQUNQO2dCQUNELEtBQUssV0FBVyxDQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO29CQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQyxXQUFXLENBQUMsQ0FBQTtvQkFDdEQsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pCLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3pCLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTt3QkFDNUMsU0FBUyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN0RixDQUFDLENBQUMsQ0FBQTtpQkFDSDtxQkFBTTtvQkFDTCx1QkFBdUI7b0JBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDdkI7Z0JBQ0QsTUFBTTthQUNQO1lBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFDZCxTQUFTLEdBQUcsWUFBWSxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbEMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLEVBQUU7d0JBQ2pFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7NEJBQzVDLFNBQVMsSUFBSSxVQUFVLEtBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7eUJBRWpFO29CQUNILENBQUMsQ0FBQyxDQUFBO29CQUNGLElBQUksYUFBYSxDQUFDO29CQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFO3dCQUN6QixhQUFhLEdBQUcsS0FBSyxDQUFBO3FCQUN0Qjt5QkFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFO3dCQUM5QixhQUFhLEdBQUcsS0FBSyxDQUFBO3FCQUN0Qjt5QkFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFO3dCQUM5QixhQUFhLEdBQUcsS0FBSyxDQUFBO3FCQUN0Qjt5QkFDSTt3QkFDSCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7cUJBQ3hDO29CQUNELFNBQVMsR0FBRyxhQUFhLEdBQUcsU0FBUyxDQUFDO29CQUN0QyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDakM7cUJBQU07b0JBQ0wsdUJBQXVCO29CQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQ3ZCO2dCQUNELE1BQU07YUFDUDtZQUNELEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBQ2hCLFNBQVMsR0FBRyxZQUFZLENBQUM7Z0JBRXpCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO29CQUNuQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ2pELFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNsQyxJQUFJLGFBQWEsQ0FBQztvQkFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTt3QkFDM0IsYUFBYSxHQUFHLEtBQUssQ0FBQTtxQkFDdEI7eUJBQ0ksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTt3QkFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQTtxQkFDdEI7eUJBQ0ksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTt3QkFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQTtxQkFDdEI7eUJBQ0k7d0JBQ0gsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO3FCQUMxQztvQkFDRCxTQUFTLEdBQUcsYUFBYSxHQUFHLFNBQVMsQ0FBQztvQkFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7aUJBQ25DO3FCQUFNO29CQUNMLHVCQUF1QjtvQkFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN2QjtnQkFDRCxNQUFNO2FBQ1A7U0FDRjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLGVBQWUsRUFBRSxTQUFTO1lBQzFCLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNoQyxXQUFXLEVBQUUsV0FBVztZQUN4QixZQUFZO1NBQ2IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVcsRUFBRSxJQUFXO1FBQ3hDLElBQUcsSUFBSSxHQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUMsQ0FBQyxFQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QyxPQUFNO1NBQ047YUFBSTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN2QztRQUNGLE1BQU8sU0FBUyxHQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDO1lBQzVILEVBQUMsSUFBSSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQztZQUNsRyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFdBQVcsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUM7WUFDekcsRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQTtRQUNqSCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssU0FBUztnQkFDWixJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFFLENBQUMsRUFBQztvQkFDL0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQU8sRUFBQyxFQUFFLENBQUEsR0FBRyxDQUFDLEtBQUssSUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hGLElBQUcsSUFBSSxJQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUM7d0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztxQkFFdkM7eUJBQUk7d0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDdEM7aUJBQ0Y7cUJBQUssSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBRSxDQUFDLEVBQUM7b0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDdEM7cUJBQUk7b0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUN2QztnQkFFRCxNQUFNO1lBQ047Z0JBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQztnQkFDWixNQUFNO1NBRVg7SUFFSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN6QixLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7aUJBRXZDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDdEM7Z0JBQ0QsTUFBTTthQUNQO1lBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFFWixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUV2QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ3RDO2dCQUNILE1BQU07YUFDUDtZQUNELEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBRWhCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUM7b0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztpQkFFdkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUN0QztnQkFDSCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7d0dBbFNZLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJSQ1YvQiw0ckpBNERNOzs0RkRsRE8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWU7c0dBTWhCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFTSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRGb290ZXJDb25maWcgfSBmcm9tICcuLi8uLi91aS1raXQvZGFzaGJvYXJkLWZvb3Rlci9kYXNoYm9hcmQtZm9vdGVyLWNvbmZpZyc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkNoYW5nZXMge1xyXG4gIGFuaW1hdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2F2ZWRGcmVxdWVuY3lUYWI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBtb250aGx5RGF0ZSA9IDE7XHJcbiAgcXVhcnRlcmx5RGF0ZSA9IDE7XHJcbiAgQElucHV0KCkgc2F2ZWRGcmVxdWVuY2llczogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogYW55O1xyXG4gIGZyZXF1ZW5jeVRhYiA9ICd3ZWVrbHknO1xyXG4gIHNob3dGcmVxdWVuY3kgPSB0cnVlO1xyXG4gIGRheU5hbWVzID0gWydNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5JywgJ1N1bmRheSddO1xyXG4gIG1vbnRoTmFtZXMgPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBxdWFydGVycyA9IFsnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLCAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlciddO1xyXG4gIHNlbGVjdGVkRGF5czogYW55W10gPSBbMF07XHJcbiAgc2VsZWN0ZWRNb250aHM6IGFueVtdID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV07XHJcbiAgc2VsZWN0ZWRRdWFydGVyID0gMDtcclxuICBAT3V0cHV0KCkgY2xvc2VGcmVxdWVuY3lQb3B1cCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlRnJlcXVlbmN5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZm9vdGVyRGV0YWlsczogRGFzaGJvYXJkRm9vdGVyQ29uZmlnID0ge1xyXG4gICAgc2VsZWN0ZWREYXRhOiBbXSxcclxuICAgIG5vblJlbW92YWJsZUxpc3Q6W10sXHJcbiAgICBkaXNwbGF5RWxlbWVudEtleTogJycsXHJcbiAgICBlbGVtZW50SWQ6ICcnLFxyXG4gICAgc2luZ3VsYXJUZXh0OiAnJyxcclxuICAgIHBsdXJhbFRleHQ6ICcnLFxyXG4gICAgc2hvd0ZyZXF1ZW5jeTogdHJ1ZSxcclxuICAgIGZyZXF1ZW5jeVRleHQ6ICdZb3UgaGF2ZSBzZWxlY3RlZCBhIDxzdHJvbmc+JyArIHRoaXMuZnJlcXVlbmN5VGFiICsgJzwvc3Ryb25nPiBmcmVxdWVuY3kuJyxcclxuICAgIGlzRGlzYWJsZWQ6IGZhbHNlXHJcblxyXG4gIH07XHJcbiAgc2hvd1JhZGlvID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrQmFyOlNuYWNrQmFyU2VydmljZSkgeyB9XHJcbiAgbmdPbkNoYW5nZXMoKXtcclxuICAgIHRoaXMuc2F2ZWRGcmVxdWVuY2llcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2F2ZWRGcmVxdWVuY2llcyldXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMzAwKTtcclxuICAgIGlmICh0aGlzLnNhdmVkRnJlcXVlbmN5VGFiKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlVGFiKHRoaXMuc2F2ZWRGcmVxdWVuY3lUYWIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5zYXZlZEZyZXF1ZW5jeVRhYikge1xyXG4gICAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzID0gWy4uLm5ldyBTZXQodGhpcy5zYXZlZEZyZXF1ZW5jaWVzKV1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21vbnRobHknOlxyXG4gICAgICAgICB0aGlzLm1vbnRobHlEYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aHMgPSBbLi4ubmV3IFNldCh0aGlzLnNhdmVkRnJlcXVlbmNpZXMpXVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XHJcbiAgICAgICAgICB0aGlzLnNob3dSYWRpbyA9IGZhbHNlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1JhZGlvID0gdHJ1ZVxyXG4gICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIHRoaXMucXVhcnRlcmx5RGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUXVhcnRlciA9IHRoaXMuc2F2ZWRGcmVxdWVuY2llcztcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGNsb3NlRnJlcXVlbmN5KCkge1xyXG4gICAgdGhpcy5jbG9zZUZyZXF1ZW5jeVBvcHVwLmVtaXQoKTtcclxuICB9XHJcbiAgZGF5U2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkgeyAvL2NoZWNrYm94IHdhcyBzZWxlY3RlZFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF5cy5wdXNoKGluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB1bnNlbGVjdGVkRWxlbWVudEluZGV4ID0gdGhpcy5zZWxlY3RlZERheXMuaW5kZXhPZihpbmRleCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXlzLnNwbGljZSh1bnNlbGVjdGVkRWxlbWVudEluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tGcmVxdWVuY3lWYWxpZGl0eSgpO1xyXG4gIH1cclxuICBtb250aFNlbGVjdGlvbkNoYW5nZShldmVudDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRocy5wdXNoKGluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB1bnNlbGVjdGVkRWxlbWVudEluZGV4ID0gdGhpcy5zZWxlY3RlZE1vbnRocy5pbmRleE9mKGluZGV4KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRocy5zcGxpY2UodW5zZWxlY3RlZEVsZW1lbnRJbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrRGF0ZVZhbGlkaXR5KHRoaXMubW9udGhseURhdGUsJ21vbnRobHknKVxyXG4gICAgdGhpcy5jaGVja0ZyZXF1ZW5jeVZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBxdWFydGVyU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWFydGVyID0gaW5kZXg7XHJcbiAgICB0aGlzLmNoZWNrRGF0ZVZhbGlkaXR5KHRoaXMucXVhcnRlcmx5RGF0ZSwncXVhcnRlcmx5Jyk7XHJcbiAgICB0aGlzLmNoZWNrRnJlcXVlbmN5VmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRhYih0YWJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9IHRhYlZhbHVlO1xyXG4gICAgdGhpcy5mb290ZXJEZXRhaWxzLmZyZXF1ZW5jeVRleHQgPSAnWW91IGhhdmUgc2VsZWN0ZWQgYSA8c3Ryb25nPicgKyB0aGlzLmZyZXF1ZW5jeVRhYiArICc8L3N0cm9uZz4gZnJlcXVlbmN5Lic7XHJcbiAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRUb0RlZmF1bHRWYWx1ZXMoKVxyXG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5VGFiID09PSB0aGlzLnNhdmVkRnJlcXVlbmN5VGFiKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5mcmVxdWVuY3lUYWIpIHtcclxuICAgICAgICBjYXNlICd3ZWVrbHknOiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5cyA9IFsuLi50aGlzLnNhdmVkRnJlcXVlbmNpZXNdO1xyXG4gICAgICAgICAgdGhpcy5tb250aGx5RGF0ZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLnF1YXJ0ZXJseURhdGUgPSAxO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ21vbnRobHknOiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGhzID0gWy4uLnRoaXMuc2F2ZWRGcmVxdWVuY2llc107XHJcbiAgICAgICAgICB0aGlzLm1vbnRobHlEYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICAgICAgICB0aGlzLnF1YXJ0ZXJseURhdGUgPSAxO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0RhdGVWYWxpZGl0eSh0aGlzLm1vbnRobHlEYXRlLCdtb250aGx5JylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdxdWFydGVybHknOiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUXVhcnRlciA9IHRoaXMuc2F2ZWRGcmVxdWVuY2llcztcclxuICAgICAgICAgIHRoaXMucXVhcnRlcmx5RGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xyXG4gICAgICAgICAgdGhpcy5tb250aGx5RGF0ZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrRGF0ZVZhbGlkaXR5KHRoaXMucXVhcnRlcmx5RGF0ZSwncXVhcnRlcmx5JylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VG9EZWZhdWx0VmFsdWVzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERheXMgPSBbMF07XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9udGhzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV07XHJcbiAgICB0aGlzLnNlbGVjdGVkUXVhcnRlciA9IDA7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGcmVxdWVuY3koKSB7XHJcbiAgICBsZXQgc3RyaW5nVmFsID0gXCJFdmVyeSBcIjtcclxuICAgIGxldCBmcmVxdWVuY2llcztcclxuICAgIGxldCBzZWxlY3RlZERhdGUgPSAxO1xyXG4gICAgc3dpdGNoICh0aGlzLmZyZXF1ZW5jeVRhYikge1xyXG4gICAgICBjYXNlICd3ZWVrbHknOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzLnNvcnQoKTtcclxuICAgICAgICAgIGZyZXF1ZW5jaWVzID0gdGhpcy5zZWxlY3RlZERheXM7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5cy5mb3JFYWNoKChkYXlJbmRleCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgc3RyaW5nVmFsICs9IGluZGV4ID09PSAwID8gdGhpcy5kYXlOYW1lc1tkYXlJbmRleF0gOiAnLCAnICsgdGhpcy5kYXlOYW1lc1tkYXlJbmRleF07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBub3RoaW5nIHdhcyBzZWxlY3RlZFxyXG4gICAgICAgICAgdGhpcy5jbG9zZUZyZXF1ZW5jeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtb250aGx5Jzoge1xyXG4gICAgICAgIHN0cmluZ1ZhbCA9IFwiIG9mIGV2ZXJ5IFwiO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTW9udGhzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZyZXF1ZW5jaWVzID0gdGhpcy5zZWxlY3RlZE1vbnRocztcclxuICAgICAgICAgIHRoaXMubW9udGhOYW1lcy5mb3JFYWNoKChtb250aE5hbWVzOiBzdHJpbmcsIG1vbnRoSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRocy5pbmNsdWRlcyhtb250aEluZGV4KSkge1xyXG4gICAgICAgICAgICAgIHN0cmluZ1ZhbCArPSBtb250aEluZGV4ICA9PT0gMCA/IG1vbnRoTmFtZXMgOiAnLCAnICsgbW9udGhOYW1lcztcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsZXQgbW9udGhEYXRlTmFtZTtcclxuICAgICAgICAgIGlmICh0aGlzLm1vbnRobHlEYXRlID09IDEpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcxc3QnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLm1vbnRobHlEYXRlID09IDIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLm1vbnRobHlEYXRlID09IDMpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICczcmQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9IHRoaXMubW9udGhseURhdGUgKyAndGgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdHJpbmdWYWwgPSBtb250aERhdGVOYW1lICsgc3RyaW5nVmFsO1xyXG4gICAgICAgICAgc2VsZWN0ZWREYXRlID0gdGhpcy5tb250aGx5RGF0ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbm90aGluZyB3YXMgc2VsZWN0ZWRcclxuICAgICAgICAgIHRoaXMuY2xvc2VGcmVxdWVuY3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAncXVhcnRlcmx5Jzoge1xyXG4gICAgICAgIHN0cmluZ1ZhbCA9IFwiIG9mIGV2ZXJ5IFwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFF1YXJ0ZXIgPj0gMCkge1xyXG4gICAgICAgICAgZnJlcXVlbmNpZXMgPSB0aGlzLnNlbGVjdGVkUXVhcnRlcjtcclxuICAgICAgICAgIHN0cmluZ1ZhbCArPSB0aGlzLnF1YXJ0ZXJzW3RoaXMuc2VsZWN0ZWRRdWFydGVyXTtcclxuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHRoaXMucXVhcnRlcmx5RGF0ZTtcclxuICAgICAgICAgIGxldCBtb250aERhdGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRoaXMucXVhcnRlcmx5RGF0ZSA9PSAxKSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMXN0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5xdWFydGVybHlEYXRlID09IDIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLnF1YXJ0ZXJseURhdGUgPT0gMykge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5xdWFydGVybHlEYXRlICsgJ3RoJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3RyaW5nVmFsID0gbW9udGhEYXRlTmFtZSArIHN0cmluZ1ZhbDtcclxuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHRoaXMucXVhcnRlcmx5RGF0ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gbm90aGluZyB3YXMgc2VsZWN0ZWRcclxuICAgICAgICAgIHRoaXMuY2xvc2VGcmVxdWVuY3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2F2ZUZyZXF1ZW5jeS5lbWl0KHtcclxuICAgICAgZnJlcXVlbmN5U3RyaW5nOiBzdHJpbmdWYWwsXHJcbiAgICAgIGZyZXF1ZW5jeVR5cGU6IHRoaXMuZnJlcXVlbmN5VGFiLFxyXG4gICAgICBmcmVxdWVuY2llczogZnJlcXVlbmNpZXMsXHJcbiAgICAgIHNlbGVjdGVkRGF0ZVxyXG4gICAgfSlcclxuICB9XHJcbiAgXHJcbiAgY2hlY2tEYXRlVmFsaWRpdHkoZGF0ZTpudW1iZXIsIHR5cGU6c3RyaW5nKXtcclxuICAgIGlmKGRhdGU+MzEgfHwgZGF0ZTwxKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdTZWxlY3QgdmFsaWQgZGF0ZS4nLCdhbGVydCcpO1xyXG4gICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgcmV0dXJuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgY29uc3QgIG1vbnRoTGlzdD1be25hbWU6J0phbnVhcnknLG1heERheXM6MzEsdmFsdWU6MH0se25hbWU6J0ZlYnJ1YXJ5JyxtYXhEYXlzOjI4LHZhbHVlOjF9LHtuYW1lOidNYXJjaCcsbWF4RGF5czozMSx2YWx1ZToyfSxcclxuICAge25hbWU6J0FwcmlsJyxtYXhEYXlzOjMwLHZhbHVlOjN9LHtuYW1lOidNYXknLG1heERheXM6MzEsdmFsdWU6NH0se25hbWU6J0p1bmUnLG1heERheXM6MzAsdmFsdWU6NX0sXHJcbiAgIHtuYW1lOidKdWx5JyxtYXhEYXlzOjMxLHZhbHVlOjZ9LHtuYW1lOidBdWd1c3QnLG1heERheXM6MzEsdmFsdWU6N30se25hbWU6J1NlcHRlbWJlcicsbWF4RGF5czozMCx2YWx1ZTo4fSxcclxuICAge25hbWU6J09jdG9iZXInLG1heERheXM6MzEsdmFsdWU6OX0se25hbWU6J05vdmVtYmVyJyxtYXhEYXlzOjMwLHZhbHVlOjEwfSx7bmFtZTonRGVjZW1iZXInLG1heERheXM6MzEsdmFsdWU6MTF9XVxyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnbW9udGhseSc6XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRNb250aHMubGVuZ3RoPT0xKXtcclxuICAgICAgICBjb25zdCBpbmRleCA9IG1vbnRoTGlzdC5maW5kSW5kZXgoKGVsZTphbnkpPT5lbGUudmFsdWU9PXRoaXMuc2VsZWN0ZWRNb250aHNbMF0pO1xyXG4gICAgICAgIGlmKGRhdGU8PW1vbnRoTGlzdFtpbmRleF0ubWF4RGF5cyl7XHJcbiAgICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdTZWxlY3QgdmFsaWQgZGF0ZS4nLCdhbGVydCcpO1xyXG4gICAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSB0cnVlOyBcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ZWRNb250aHMubGVuZ3RoPT0wKXtcclxuICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IHRydWU7IFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmZvb3RlckRldGFpbHMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5jaGVja0ZyZXF1ZW5jeVZhbGlkaXR5KCl7XHJcbiAgc3dpdGNoICh0aGlzLmZyZXF1ZW5jeVRhYikge1xyXG4gICAgY2FzZSAnd2Vla2x5Jzoge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERheXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgJ21vbnRobHknOiB7XHJcbiAgIFxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTW9udGhzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9vdGVyRGV0YWlscy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSAncXVhcnRlcmx5Jzoge1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRRdWFydGVyID49IDApe1xyXG4gICAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb290ZXJEZXRhaWxzLmlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfSBcclxufVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeVwiIFtjbGFzcy5hbmltYXRlLXNsaWRlSW5SaWdodF09XCJhbmltYXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGUtZnJlcXVlbmN5LWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00IHZ4LW1iLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBhIEZyZXF1ZW5jeTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWZyZXF1ZW5jeS1ib2R5IHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdGUtZnJlcXVlbmN5LWJvZHktaW5uZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktdGFiXCIgW25nU3dpdGNoXT1cImZyZXF1ZW5jeVRhYlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktdGFiLWhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VGFiID09ICd3ZWVrbHknXCIgKGNsaWNrKT1cImNoYW5nZVRhYignd2Vla2x5JylcIj5XZWVrbHk8L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbiBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVRhYiA9PSAnbW9udGhseSdcIiAoY2xpY2spPVwiY2hhbmdlVGFiKCdtb250aGx5JylcIj5Nb250aGx5PC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxidXR0b24gW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUYWIgPT0gJ3F1YXJ0ZXJseSdcIiAoY2xpY2spPVwiY2hhbmdlVGFiKCdxdWFydGVybHknKVwiPlF1YXJ0ZXJseTwvYnV0dG9uPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktdGFiLWJvZHkgdngtcGwtNCB2eC1wci00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5FbWFpbCBSZW1pbmRlciBGcmVxdWVuY3k6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWxpc3RcIiAqbmdTd2l0Y2hDYXNlPVwiJ3dlZWtseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1jaGVja2JveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94LWl0ZW0gdngtcC0zIHZ4LXByLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5TmFtZXM7IGxldCBkYXlJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCAobmdWYWx1ZUNoYW5nZSk9XCJkYXlTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50LCBkYXlJbmRleClcIiBbbmdWYWx1ZV09XCJzZWxlY3RlZERheXMuaW5jbHVkZXMoZGF5SW5kZXgpXCI+e3tkYXl9fTwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1saXN0IG1vbnRoXCIgKm5nU3dpdGNoQ2FzZT1cIidtb250aGx5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXRvcCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPkRheTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiAoZm9jdXNvdXQpPVwiY2hlY2tEYXRlVmFsaWRpdHkobW9udGhseURhdGUsJ21vbnRobHknKVwiIFsobmdNb2RlbCldPVwibW9udGhseURhdGVcIiBjbGFzcz1cImNvdW50TnVtXCIgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiIG1pbj1cIjFcIiBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPm9mPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWNoZWNrYm94LWl0ZW0gdngtcC0zIHZ4LXByLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aE5hbWVzOyBsZXQgbW9udGhJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCAobmdWYWx1ZUNoYW5nZSk9XCJtb250aFNlbGVjdGlvbkNoYW5nZSgkZXZlbnQsIG1vbnRoSW5kZXgpXCIgW25nVmFsdWVdPVwic2VsZWN0ZWRNb250aHMuaW5jbHVkZXMobW9udGhJbmRleClcIj57e21vbnRofX08L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtbGlzdFwiICpuZ1N3aXRjaENhc2U9XCIncXVhcnRlcmx5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1JhZGlvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXRvcCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIj5EYXk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChmb2N1c291dCk9XCJjaGVja0RhdGVWYWxpZGl0eShxdWFydGVybHlEYXRlLCdxdWFydGVybHknKVwiIFsobmdNb2RlbCldPVwicXVhcnRlcmx5RGF0ZVwiIGNsYXNzPVwiY291bnROdW1cIiBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMVwiIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPm9mPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY2hlY2tib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktY2hlY2tib3gtaXRlbSB2eC1wLTMgdngtcHItNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXctMTAwXCIgKm5nRm9yPVwibGV0IHF1YXJ0ZXIgb2YgcXVhcnRlcnMsIGxldCBxdWFydGVySW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIChjaGVja2VkRXZlbnQpPVwicXVhcnRlclNlbGVjdGlvbkNoYW5nZSgkZXZlbnQsIHF1YXJ0ZXJJbmRleClcIiBbY2hlY2tlZF09XCJzZWxlY3RlZFF1YXJ0ZXIgPT09IHF1YXJ0ZXJJbmRleFwiPnt7cXVhcnRlcn19PC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1mcmVxdWVuY3ktZm9vdGVyXCI+XHJcbiAgICAgICAgPGFwcC1kYXNoYm9hcmQtZm9vdGVyIFxyXG4gICAgICAgIFtmb290ZXJEZXRhaWxzXT1cImZvb3RlckRldGFpbHNcIlxyXG4gICAgICAgIChjYW5jZWxFdmVudCk9XCJjbG9zZUZyZXF1ZW5jeVBvcHVwLmVtaXQoKVwiXHJcbiAgICAgICAgKHN1Ym1pdEV2ZW50KT1cInN1Ym1pdEZyZXF1ZW5jeSgpXCJcclxuICAgICAgICA+PC9hcHAtZGFzaGJvYXJkLWZvb3Rlcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|