@datarailsshared/datarailsshared 1.6.361 → 1.6.365

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/datarailsshared-datarailsshared-1.6.365.tgz +0 -0
  2. package/esm2022/lib/dr-cron-field/dr-cron-field.component.mjs +548 -0
  3. package/esm2022/lib/dr-cron-field/dr-cron-field.editor.mjs +303 -0
  4. package/esm2022/lib/dr-cron-field/public-api.mjs +3 -0
  5. package/esm2022/lib/dr-dialog/dialog.module.mjs +2 -1
  6. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +8 -1
  7. package/esm2022/lib/dr-inputs/button/button.component.mjs +7 -4
  8. package/esm2022/lib/dr-modal/components/dr-confirm-modal/dr-confirm-modal.component.mjs +210 -0
  9. package/esm2022/lib/dr-modal/components/dr-modal/dr-modal.component.mjs +73 -0
  10. package/esm2022/lib/dr-modal/components/dr-modal-container/dr-modal-container.component.mjs +72 -0
  11. package/esm2022/lib/dr-modal/directives/dr-modal-close.directive.mjs +39 -0
  12. package/esm2022/lib/dr-modal/dr-modal-config.mjs +3 -0
  13. package/esm2022/lib/dr-modal/dr-modal-config.provider.mjs +14 -0
  14. package/esm2022/lib/dr-modal/dr-modal-form.types.mjs +2 -0
  15. package/esm2022/lib/dr-modal/dr-modal-form.utils.mjs +18 -0
  16. package/esm2022/lib/dr-modal/dr-modal-ref.mjs +42 -0
  17. package/esm2022/lib/dr-modal/dr-modal.mjs +9 -0
  18. package/esm2022/lib/dr-modal/dr-modal.module.mjs +34 -0
  19. package/esm2022/lib/dr-modal/dr-modal.service.mjs +89 -0
  20. package/esm2022/lib/dr-modal/dr-modal.slots.mjs +91 -0
  21. package/esm2022/lib/dr-modal/dr-modal.types.mjs +2 -0
  22. package/esm2022/lib/dr-modal/public-api.mjs +15 -0
  23. package/esm2022/lib/utils/async-utils.mjs +32 -0
  24. package/esm2022/local-api.mjs +4 -1
  25. package/fesm2022/datarailsshared-datarailsshared.mjs +2271 -760
  26. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
  27. package/lib/dr-cron-field/dr-cron-field.component.d.ts +72 -0
  28. package/lib/dr-cron-field/dr-cron-field.editor.d.ts +82 -0
  29. package/lib/dr-cron-field/public-api.d.ts +2 -0
  30. package/lib/dr-dialog/dialog.module.d.ts +1 -0
  31. package/lib/dr-dialog/services/dialog.service.d.ts +7 -0
  32. package/lib/dr-inputs/button/button.component.d.ts +2 -1
  33. package/lib/dr-modal/components/dr-confirm-modal/dr-confirm-modal.component.d.ts +19 -0
  34. package/lib/dr-modal/components/dr-modal/dr-modal.component.d.ts +14 -0
  35. package/lib/dr-modal/components/dr-modal-container/dr-modal-container.component.d.ts +23 -0
  36. package/lib/dr-modal/directives/dr-modal-close.directive.d.ts +17 -0
  37. package/lib/dr-modal/dr-modal-config.d.ts +17 -0
  38. package/lib/dr-modal/dr-modal-config.provider.d.ts +3 -0
  39. package/lib/dr-modal/dr-modal-form.types.d.ts +42 -0
  40. package/lib/dr-modal/dr-modal-form.utils.d.ts +9 -0
  41. package/lib/dr-modal/dr-modal-ref.d.ts +19 -0
  42. package/lib/dr-modal/dr-modal.d.ts +5 -0
  43. package/lib/dr-modal/dr-modal.module.d.ts +9 -0
  44. package/lib/dr-modal/dr-modal.service.d.ts +20 -0
  45. package/lib/dr-modal/dr-modal.slots.d.ts +25 -0
  46. package/lib/dr-modal/dr-modal.types.d.ts +63 -0
  47. package/lib/dr-modal/public-api.d.ts +14 -0
  48. package/lib/utils/async-utils.d.ts +18 -0
  49. package/local-api.d.ts +3 -0
  50. package/package.json +1 -1
  51. package/datarailsshared-datarailsshared-1.6.361.tgz +0 -0
@@ -0,0 +1,548 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DrInputsModule, GMT_OFFSETS, LOCAL_TIME_ZONE_OFFSET, TimePickerComponent, } from '../dr-inputs';
4
+ import { ALLOWED_PERIODS, CronEditor, CronEditorDefaultConfigByPeriod, CronEditorPeriod, CronTimePeriod, DAY_OF_MONTH_ARRAY, DAY_OF_WEEK_ARRAY, getCronTypeAsPeriodLabel, HOURS_DIVISIBLE_INTO_DAY, MONTH_OF_QUARTER_ARRAY, MONTH_OF_YEAR_ARRAY, } from './dr-cron-field.editor';
5
+ import { capitalize } from 'lodash';
6
+ import { DrTooltipModule } from '../dr-tooltip/dr-tooltip.module';
7
+ import { DrPopoverModule } from '../dr-popover/dr-popover.module';
8
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "../dr-inputs/button/button.component";
13
+ import * as i4 from "../dr-inputs/radio-button/radio-button.component";
14
+ import * as i5 from "../dr-inputs/radio-button/radio-group.component";
15
+ import * as i6 from "../dr-inputs/dr-input/dr-input.component";
16
+ import * as i7 from "../dr-inputs/dr-select/dr-select.component";
17
+ import * as i8 from "../dr-popover/dr-popover.directive";
18
+ function DrCronFieldComponent_dr_input_0_Template(rf, ctx) { if (rf & 1) {
19
+ const _r6 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "dr-input", 3);
21
+ i0.ɵɵlistener("click", function DrCronFieldComponent_dr_input_0_Template_dr_input_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(!ctx_r5.disabled ? ctx_r5.openPopover() : null); })("ngModelChange", function DrCronFieldComponent_dr_input_0_Template_dr_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.visibleString = $event); });
22
+ i0.ɵɵelement(1, "i", 4)(2, "i", 5);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const ctx_r0 = i0.ɵɵnextContext();
26
+ const _r1 = i0.ɵɵreference(2);
27
+ i0.ɵɵproperty("id", ctx_r0.id)("ngModel", ctx_r0.visibleString)("drPopover", !ctx_r0.disabled ? _r1 : null)("drPopoverPosition", ctx_r0.popoverPosition)("disabled", ctx_r0.disabled)("readonly", true);
28
+ } }
29
+ function DrCronFieldComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
30
+ const _r10 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "div", 6)(1, "div", 7);
32
+ i0.ɵɵelementContainer(2, 8);
33
+ i0.ɵɵelementEnd();
34
+ i0.ɵɵelementStart(3, "div", 9)(4, "dr-button", 10);
35
+ i0.ɵɵlistener("click", function DrCronFieldComponent_ng_template_1_Template_dr_button_click_4_listener() { const restoredCtx = i0.ɵɵrestoreView(_r10); const closePopover_r8 = restoredCtx.closePopover; return i0.ɵɵresetView(closePopover_r8()); });
36
+ i0.ɵɵtext(5, "Cancel");
37
+ i0.ɵɵelementEnd();
38
+ i0.ɵɵelementStart(6, "dr-button", 11);
39
+ i0.ɵɵlistener("click", function DrCronFieldComponent_ng_template_1_Template_dr_button_click_6_listener() { const restoredCtx = i0.ɵɵrestoreView(_r10); const closePopover_r8 = restoredCtx.closePopover; const ctx_r11 = i0.ɵɵnextContext(); ctx_r11.update(); return i0.ɵɵresetView(closePopover_r8()); });
40
+ i0.ɵɵtext(7, "Save");
41
+ i0.ɵɵelementEnd()()();
42
+ } if (rf & 2) {
43
+ i0.ɵɵnextContext();
44
+ const _r3 = i0.ɵɵreference(4);
45
+ i0.ɵɵadvance(2);
46
+ i0.ɵɵproperty("ngTemplateOutlet", _r3);
47
+ } }
48
+ function DrCronFieldComponent_ng_template_3_ng_template_0_Template(rf, ctx) { if (rf & 1) {
49
+ const _r27 = i0.ɵɵgetCurrentView();
50
+ i0.ɵɵelementStart(0, "span");
51
+ i0.ɵɵtext(1, "Repeat every quarter on");
52
+ i0.ɵɵelementEnd();
53
+ i0.ɵɵelementStart(2, "dr-select", 21);
54
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onSelectionChange()); });
55
+ i0.ɵɵelementEnd();
56
+ i0.ɵɵelementStart(3, "span");
57
+ i0.ɵɵtext(4, "month of the quarter");
58
+ i0.ɵɵelementEnd();
59
+ } if (rf & 2) {
60
+ const ctx_r13 = i0.ɵɵnextContext(2);
61
+ i0.ɵɵadvance(2);
62
+ i0.ɵɵproperty("ngModel", ctx_r13.cronModel.month)("items", ctx_r13.MONTH_OF_QUARTER_ARRAY);
63
+ } }
64
+ function DrCronFieldComponent_ng_template_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
65
+ const _r30 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "span");
67
+ i0.ɵɵtext(1, "Repeat every");
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(2, "dr-select", 22);
70
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.cronModel.everyXHours = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r31 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r31.onSelectionChange()); });
71
+ i0.ɵɵelementEnd();
72
+ i0.ɵɵelementStart(3, "span");
73
+ i0.ɵɵtext(4, "hour(s)");
74
+ i0.ɵɵelementEnd();
75
+ } if (rf & 2) {
76
+ const ctx_r15 = i0.ɵɵnextContext(2);
77
+ i0.ɵɵadvance(2);
78
+ i0.ɵɵproperty("ngModel", ctx_r15.cronModel.everyXHours)("items", ctx_r15.HOURS_DIVISIBLE_INTO_DAY);
79
+ } }
80
+ function DrCronFieldComponent_ng_template_3_ng_template_4_Template(rf, ctx) { if (rf & 1) {
81
+ const _r33 = i0.ɵɵgetCurrentView();
82
+ i0.ɵɵelementStart(0, "span");
83
+ i0.ɵɵtext(1, "Repeat every");
84
+ i0.ɵɵelementEnd();
85
+ i0.ɵɵelementStart(2, "dr-select", 23);
86
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.cronModel.dayOfWeek = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r34.onSelectionChange()); });
87
+ i0.ɵɵelementEnd();
88
+ } if (rf & 2) {
89
+ const ctx_r17 = i0.ɵɵnextContext(2);
90
+ i0.ɵɵadvance(2);
91
+ i0.ɵɵproperty("ngModel", ctx_r17.cronModel.dayOfWeek)("items", ctx_r17.DAY_OF_WEEK_ARRAY);
92
+ } }
93
+ function DrCronFieldComponent_ng_template_3_ng_template_6_Template(rf, ctx) { if (rf & 1) {
94
+ const _r36 = i0.ɵɵgetCurrentView();
95
+ i0.ɵɵelementStart(0, "dr-select", 24);
96
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r35.cronModel.dayOfMonth = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r37.onSelectionChange()); });
97
+ i0.ɵɵelementEnd();
98
+ } if (rf & 2) {
99
+ const ctx_r19 = i0.ɵɵnextContext(2);
100
+ i0.ɵɵproperty("ngModel", ctx_r19.cronModel.dayOfMonth)("items", ctx_r19.DAY_OF_MONTH_ARRAY)("searchable", true);
101
+ } }
102
+ function DrCronFieldComponent_ng_template_3_ng_template_8_Template(rf, ctx) { if (rf & 1) {
103
+ const _r39 = i0.ɵɵgetCurrentView();
104
+ i0.ɵɵelementStart(0, "span");
105
+ i0.ɵɵtext(1, "Repeat every");
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementStart(2, "dr-select", 25);
108
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r38.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r39); const ctx_r40 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r40.onSelectionChange()); });
109
+ i0.ɵɵelementEnd();
110
+ } if (rf & 2) {
111
+ const ctx_r21 = i0.ɵɵnextContext(2);
112
+ i0.ɵɵadvance(2);
113
+ i0.ɵɵproperty("ngModel", ctx_r21.cronModel.month)("items", ctx_r21.MONTH_OF_YEAR_ARRAY);
114
+ } }
115
+ function DrCronFieldComponent_ng_template_3_dr_radio_group_11_dr_radio_button_1_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "dr-radio-button", 28);
117
+ i0.ɵɵtext(1);
118
+ i0.ɵɵelementEnd();
119
+ } if (rf & 2) {
120
+ const option_r42 = ctx.$implicit;
121
+ i0.ɵɵproperty("value", option_r42.value);
122
+ i0.ɵɵattribute("data-analytics", "dr-cron-field_radio-button-" + option_r42.value);
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵtextInterpolate1(" ", option_r42.label, " ");
125
+ } }
126
+ function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template(rf, ctx) { if (rf & 1) {
127
+ const _r44 = i0.ɵɵgetCurrentView();
128
+ i0.ɵɵelementStart(0, "dr-radio-group", 26);
129
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template_dr_radio_group_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r43.cronModel.every = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template_dr_radio_group_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r45 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r45.onEveryChange($event)); });
130
+ i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_dr_radio_group_11_dr_radio_button_1_Template, 2, 3, "dr-radio-button", 27);
131
+ i0.ɵɵelementEnd();
132
+ } if (rf & 2) {
133
+ const ctx_r22 = i0.ɵɵnextContext(2);
134
+ i0.ɵɵproperty("ngModel", ctx_r22.cronModel.every);
135
+ i0.ɵɵadvance(1);
136
+ i0.ɵɵproperty("ngForOf", ctx_r22.cronEditorPeriodArray);
137
+ } }
138
+ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_2_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelementContainer(0, 8);
140
+ } if (rf & 2) {
141
+ i0.ɵɵnextContext(2);
142
+ const _r12 = i0.ɵɵreference(1);
143
+ i0.ɵɵproperty("ngTemplateOutlet", _r12);
144
+ } }
145
+ function DrCronFieldComponent_ng_template_3_ng_container_12_span_3_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵelementStart(0, "span");
147
+ i0.ɵɵtext(1, "Repeat every day");
148
+ i0.ɵɵelementEnd();
149
+ } }
150
+ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_4_Template(rf, ctx) { if (rf & 1) {
151
+ i0.ɵɵelementContainer(0, 8);
152
+ } if (rf & 2) {
153
+ i0.ɵɵnextContext(2);
154
+ const _r14 = i0.ɵɵreference(3);
155
+ i0.ɵɵproperty("ngTemplateOutlet", _r14);
156
+ } }
157
+ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_5_Template(rf, ctx) { if (rf & 1) {
158
+ i0.ɵɵelementContainer(0, 8);
159
+ } if (rf & 2) {
160
+ i0.ɵɵnextContext(2);
161
+ const _r16 = i0.ɵɵreference(5);
162
+ i0.ɵɵproperty("ngTemplateOutlet", _r16);
163
+ } }
164
+ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵelementContainerStart(0);
166
+ i0.ɵɵelementContainer(1, 8)(2, 8);
167
+ i0.ɵɵelementContainerEnd();
168
+ } if (rf & 2) {
169
+ i0.ɵɵnextContext(2);
170
+ const _r20 = i0.ɵɵreference(9);
171
+ const _r18 = i0.ɵɵreference(7);
172
+ i0.ɵɵadvance(1);
173
+ i0.ɵɵproperty("ngTemplateOutlet", _r20);
174
+ i0.ɵɵadvance(1);
175
+ i0.ɵɵproperty("ngTemplateOutlet", _r18);
176
+ } }
177
+ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_7_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵelementContainerStart(0);
179
+ i0.ɵɵelementStart(1, "span");
180
+ i0.ɵɵtext(2, "Repeat on");
181
+ i0.ɵɵelementEnd();
182
+ i0.ɵɵelementContainer(3, 8);
183
+ i0.ɵɵelementStart(4, "span");
184
+ i0.ɵɵtext(5, "day of every month");
185
+ i0.ɵɵelementEnd();
186
+ i0.ɵɵelementContainerEnd();
187
+ } if (rf & 2) {
188
+ i0.ɵɵnextContext(2);
189
+ const _r18 = i0.ɵɵreference(7);
190
+ i0.ɵɵadvance(3);
191
+ i0.ɵɵproperty("ngTemplateOutlet", _r18);
192
+ } }
193
+ function DrCronFieldComponent_ng_template_3_ng_container_12_div_8_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelementStart(0, "div", 29)(1, "span");
195
+ i0.ɵɵtext(2, "on");
196
+ i0.ɵɵelementEnd();
197
+ i0.ɵɵelementContainer(3, 8);
198
+ i0.ɵɵelementStart(4, "span");
199
+ i0.ɵɵtext(5, "day of the month");
200
+ i0.ɵɵelementEnd()();
201
+ } if (rf & 2) {
202
+ i0.ɵɵnextContext(2);
203
+ const _r18 = i0.ɵɵreference(7);
204
+ i0.ɵɵadvance(3);
205
+ i0.ɵɵproperty("ngTemplateOutlet", _r18);
206
+ } }
207
+ function DrCronFieldComponent_ng_template_3_ng_container_12_Template(rf, ctx) { if (rf & 1) {
208
+ const _r54 = i0.ɵɵgetCurrentView();
209
+ i0.ɵɵelementContainerStart(0);
210
+ i0.ɵɵelementStart(1, "div", 29);
211
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_2_Template, 1, 1, "ng-container", 30);
212
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_container_12_span_3_Template, 2, 0, "span", 31);
213
+ i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_4_Template, 1, 1, "ng-container", 30);
214
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_5_Template, 1, 1, "ng-container", 30);
215
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_6_Template, 3, 2, "ng-container", 31);
216
+ i0.ɵɵtemplate(7, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_7_Template, 6, 1, "ng-container", 31);
217
+ i0.ɵɵelementEnd();
218
+ i0.ɵɵtemplate(8, DrCronFieldComponent_ng_template_3_ng_container_12_div_8_Template, 6, 1, "div", 32);
219
+ i0.ɵɵelementStart(9, "div", 33)(10, "span", 34);
220
+ i0.ɵɵtext(11, "at");
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵelementStart(12, "dr-time-picker", 35);
223
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_12_Template_dr_time_picker_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r53.onTimePickerChange($event)); });
224
+ i0.ɵɵelementEnd()();
225
+ i0.ɵɵelementContainerEnd();
226
+ } if (rf & 2) {
227
+ const ctx_r23 = i0.ɵɵnextContext(2);
228
+ i0.ɵɵadvance(2);
229
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.QUARTER);
230
+ i0.ɵɵadvance(1);
231
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.DAY);
232
+ i0.ɵɵadvance(1);
233
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.HOUR);
234
+ i0.ɵɵadvance(1);
235
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.WEEK);
236
+ i0.ɵɵadvance(1);
237
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.YEAR);
238
+ i0.ɵɵadvance(1);
239
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.MONTH);
240
+ i0.ɵɵadvance(1);
241
+ i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.QUARTER);
242
+ i0.ɵɵadvance(4);
243
+ i0.ɵɵproperty("ngModel", ctx_r23.cronModel);
244
+ } }
245
+ function DrCronFieldComponent_ng_template_3_ng_template_13_div_0_Template(rf, ctx) { if (rf & 1) {
246
+ i0.ɵɵelementStart(0, "div", 37);
247
+ i0.ɵɵelementContainer(1, 8);
248
+ i0.ɵɵelementEnd();
249
+ } if (rf & 2) {
250
+ i0.ɵɵnextContext(2);
251
+ const _r12 = i0.ɵɵreference(1);
252
+ i0.ɵɵadvance(1);
253
+ i0.ɵɵproperty("ngTemplateOutlet", _r12);
254
+ } }
255
+ function DrCronFieldComponent_ng_template_3_ng_template_13_span_2_Template(rf, ctx) { if (rf & 1) {
256
+ i0.ɵɵelementStart(0, "span");
257
+ i0.ɵɵtext(1, " Repeat every day ");
258
+ i0.ɵɵelementEnd();
259
+ } }
260
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_3_Template(rf, ctx) { if (rf & 1) {
261
+ i0.ɵɵelementContainer(0, 8);
262
+ } if (rf & 2) {
263
+ i0.ɵɵnextContext(2);
264
+ const _r14 = i0.ɵɵreference(3);
265
+ i0.ɵɵproperty("ngTemplateOutlet", _r14);
266
+ } }
267
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_4_Template(rf, ctx) { if (rf & 1) {
268
+ i0.ɵɵelementContainer(0, 8);
269
+ } if (rf & 2) {
270
+ i0.ɵɵnextContext(2);
271
+ const _r16 = i0.ɵɵreference(5);
272
+ i0.ɵɵproperty("ngTemplateOutlet", _r16);
273
+ } }
274
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_1_Template(rf, ctx) { if (rf & 1) {
275
+ i0.ɵɵelementStart(0, "span");
276
+ i0.ɵɵtext(1, "Repeat on ");
277
+ i0.ɵɵelementEnd();
278
+ } }
279
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_2_Template(rf, ctx) { if (rf & 1) {
280
+ i0.ɵɵelementStart(0, "span");
281
+ i0.ɵɵtext(1, "on ");
282
+ i0.ɵɵelementEnd();
283
+ } }
284
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
285
+ i0.ɵɵelementContainer(0, 8);
286
+ } if (rf & 2) {
287
+ i0.ɵɵnextContext(3);
288
+ const _r20 = i0.ɵɵreference(9);
289
+ i0.ɵɵproperty("ngTemplateOutlet", _r20);
290
+ } }
291
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_5_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "span");
293
+ i0.ɵɵtext(1, "day of every month ");
294
+ i0.ɵɵelementEnd();
295
+ } }
296
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_6_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "span");
298
+ i0.ɵɵtext(1, "day of the month ");
299
+ i0.ɵɵelementEnd();
300
+ } }
301
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_Template(rf, ctx) { if (rf & 1) {
302
+ i0.ɵɵelementContainerStart(0);
303
+ i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_1_Template, 2, 0, "span", 31);
304
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_2_Template, 2, 0, "span", 31);
305
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_ng_container_3_Template, 1, 1, "ng-container", 30);
306
+ i0.ɵɵelementContainer(4, 8);
307
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_5_Template, 2, 0, "span", 31);
308
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_6_Template, 2, 0, "span", 31);
309
+ i0.ɵɵelementContainerEnd();
310
+ } if (rf & 2) {
311
+ i0.ɵɵnextContext(2);
312
+ const _r18 = i0.ɵɵreference(7);
313
+ const ctx_r59 = i0.ɵɵnextContext();
314
+ i0.ɵɵadvance(1);
315
+ i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.MONTH);
316
+ i0.ɵɵadvance(1);
317
+ i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.QUARTER);
318
+ i0.ɵɵadvance(1);
319
+ i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.YEAR);
320
+ i0.ɵɵadvance(1);
321
+ i0.ɵɵproperty("ngTemplateOutlet", _r18);
322
+ i0.ɵɵadvance(1);
323
+ i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.MONTH);
324
+ i0.ɵɵadvance(1);
325
+ i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.QUARTER);
326
+ } }
327
+ function DrCronFieldComponent_ng_template_3_ng_template_13_ng_template_14_Template(rf, ctx) { if (rf & 1) {
328
+ i0.ɵɵtext(0);
329
+ } if (rf & 2) {
330
+ const item_r67 = ctx.item;
331
+ const ctx_r61 = i0.ɵɵnextContext(3);
332
+ i0.ɵɵtextInterpolate1(" ", ctx_r61.LOCAL_TIME_ZONE_OFFSET !== ctx_r61.cronModel.timeZone ? item_r67.label : "Local Time", " ");
333
+ } }
334
+ function DrCronFieldComponent_ng_template_3_ng_template_13_Template(rf, ctx) { if (rf & 1) {
335
+ const _r69 = i0.ɵɵgetCurrentView();
336
+ i0.ɵɵtemplate(0, DrCronFieldComponent_ng_template_3_ng_template_13_div_0_Template, 2, 1, "div", 36);
337
+ i0.ɵɵelementStart(1, "div", 37);
338
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_template_13_span_2_Template, 2, 0, "span", 31);
339
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_3_Template, 1, 1, "ng-container", 30);
340
+ i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_4_Template, 1, 1, "ng-container", 30);
341
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_Template, 7, 6, "ng-container", 31);
342
+ i0.ɵɵelementStart(6, "span", 34);
343
+ i0.ɵɵtext(7, "at");
344
+ i0.ɵɵelementEnd();
345
+ i0.ɵɵelementStart(8, "dr-input", 38);
346
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r68.cronModel.hour = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_8_listener() { i0.ɵɵrestoreView(_r69); const ctx_r70 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r70.onSelectionChange()); });
347
+ i0.ɵɵelementEnd();
348
+ i0.ɵɵelementStart(9, "span", 39);
349
+ i0.ɵɵtext(10, ":");
350
+ i0.ɵɵelementEnd();
351
+ i0.ɵɵelementStart(11, "dr-input", 40);
352
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r71 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r71.cronModel.minute = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_11_listener() { i0.ɵɵrestoreView(_r69); const ctx_r72 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r72.onSelectionChange()); });
353
+ i0.ɵɵelementEnd();
354
+ i0.ɵɵelementStart(12, "dr-select", 41);
355
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r73 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r73.cronModel.timePeriod = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r74 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r74.onSelectionChange()); });
356
+ i0.ɵɵelementEnd();
357
+ i0.ɵɵelementStart(13, "dr-select", 42);
358
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r75 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r75.cronModel.timeZone = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_13_listener() { i0.ɵɵrestoreView(_r69); const ctx_r76 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r76.onSelectionChange()); });
359
+ i0.ɵɵtemplate(14, DrCronFieldComponent_ng_template_3_ng_template_13_ng_template_14_Template, 1, 1, "ng-template", null, 43, i0.ɵɵtemplateRefExtractor);
360
+ i0.ɵɵelementEnd()();
361
+ } if (rf & 2) {
362
+ const ctx_r25 = i0.ɵɵnextContext(2);
363
+ i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.QUARTER);
364
+ i0.ɵɵadvance(2);
365
+ i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.DAY);
366
+ i0.ɵɵadvance(1);
367
+ i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.HOUR);
368
+ i0.ɵɵadvance(1);
369
+ i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.WEEK);
370
+ i0.ɵɵadvance(1);
371
+ i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.WEEK && ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.HOUR && ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.DAY);
372
+ i0.ɵɵadvance(3);
373
+ i0.ɵɵproperty("ngModel", ctx_r25.cronModel.hour)("mask", "00")("min", 1)("max", 12);
374
+ i0.ɵɵadvance(3);
375
+ i0.ɵɵproperty("ngModel", ctx_r25.cronModel.minute)("mask", "00")("min", 0)("max", 59);
376
+ i0.ɵɵadvance(1);
377
+ i0.ɵɵproperty("ngModel", ctx_r25.cronModel.timePeriod)("items", ctx_r25.CRON_TIME_PERIOD_ARRAY);
378
+ i0.ɵɵadvance(1);
379
+ i0.ɵɵproperty("ngModel", ctx_r25.cronModel.timeZone)("items", ctx_r25.GMT_OFFSETS)("textView", true);
380
+ } }
381
+ function DrCronFieldComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
382
+ i0.ɵɵtemplate(0, DrCronFieldComponent_ng_template_3_ng_template_0_Template, 5, 2, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
383
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_template_2_Template, 5, 2, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
384
+ i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_template_4_Template, 3, 2, "ng-template", null, 14, i0.ɵɵtemplateRefExtractor);
385
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_template_6_Template, 1, 3, "ng-template", null, 15, i0.ɵɵtemplateRefExtractor);
386
+ i0.ɵɵtemplate(8, DrCronFieldComponent_ng_template_3_ng_template_8_Template, 3, 2, "ng-template", null, 16, i0.ɵɵtemplateRefExtractor);
387
+ i0.ɵɵelementStart(10, "div", 17);
388
+ i0.ɵɵtemplate(11, DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template, 2, 2, "dr-radio-group", 18);
389
+ i0.ɵɵtemplate(12, DrCronFieldComponent_ng_template_3_ng_container_12_Template, 13, 8, "ng-container", 19);
390
+ i0.ɵɵtemplate(13, DrCronFieldComponent_ng_template_3_ng_template_13_Template, 16, 18, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
391
+ i0.ɵɵelementEnd();
392
+ } if (rf & 2) {
393
+ const _r24 = i0.ɵɵreference(14);
394
+ const ctx_r4 = i0.ɵɵnextContext();
395
+ i0.ɵɵadvance(10);
396
+ i0.ɵɵclassProp("cron-configuration--multi-row", ctx_r4.multiRowMode);
397
+ i0.ɵɵadvance(1);
398
+ i0.ɵɵproperty("ngIf", !ctx_r4.hidePeriodSelector);
399
+ i0.ɵɵadvance(1);
400
+ i0.ɵɵproperty("ngIf", ctx_r4.multiRowMode)("ngIfElse", _r24);
401
+ } }
402
+ export class DrCronFieldComponent {
403
+ set value(value) {
404
+ if (!value) {
405
+ this.visibleString = '';
406
+ this.cdr.markForCheck();
407
+ return;
408
+ }
409
+ this.valueObject.value = value;
410
+ this.visibleString = this.valueObject.getReadableString();
411
+ if (this.flatMode && !this.cronModel) {
412
+ this.cronModel = this.valueObject.valueObject;
413
+ }
414
+ this.cdr.markForCheck();
415
+ }
416
+ get value() {
417
+ return this.valueObject.value;
418
+ }
419
+ constructor(cdr) {
420
+ this.cdr = cdr;
421
+ this.hostId = null;
422
+ this.disabled = false;
423
+ this.allowedPeriods = ALLOWED_PERIODS;
424
+ this.fiscalYearStart = 1;
425
+ this.popoverPosition = 'bottom-left';
426
+ this.hidePeriodSelector = false;
427
+ this.flatMode = false;
428
+ this.multiRowMode = false;
429
+ this.DAY_OF_MONTH_ARRAY = DAY_OF_MONTH_ARRAY;
430
+ this.MONTH_OF_QUARTER_ARRAY = MONTH_OF_QUARTER_ARRAY;
431
+ this.MONTH_OF_YEAR_ARRAY = MONTH_OF_YEAR_ARRAY;
432
+ this.DAY_OF_WEEK_ARRAY = DAY_OF_WEEK_ARRAY;
433
+ this.HOURS_DIVISIBLE_INTO_DAY = HOURS_DIVISIBLE_INTO_DAY;
434
+ this.CRON_TIME_PERIOD_ARRAY = [CronTimePeriod.AM, CronTimePeriod.PM];
435
+ this.LOCAL_TIME_ZONE_OFFSET = LOCAL_TIME_ZONE_OFFSET;
436
+ this.GMT_OFFSETS = GMT_OFFSETS;
437
+ this.cronEditorPeriod = CronEditorPeriod;
438
+ this.onChange = () => { };
439
+ this.onTouched = () => { };
440
+ }
441
+ ngOnInit() {
442
+ this.valueObject = new CronEditor(null, this.fiscalYearStart);
443
+ this.valueObject.every = this.allowedPeriods[this.allowedPeriods.length - 1] ?? CronEditorPeriod.YEAR;
444
+ this.cronModel = this.valueObject.valueObject;
445
+ this.cronEditorPeriodArray = this.allowedPeriods.map((period) => ({
446
+ value: period,
447
+ label: capitalize(getCronTypeAsPeriodLabel(period)),
448
+ }));
449
+ }
450
+ registerOnChange(fn) {
451
+ this.onChange = fn;
452
+ }
453
+ registerOnTouched(fn) {
454
+ this.onTouched = fn;
455
+ }
456
+ writeValue(value) {
457
+ this.value = value;
458
+ if (this.flatMode && value) {
459
+ this.cronModel = this.valueObject.valueObject;
460
+ this.visibleString = this.valueObject.getReadableString();
461
+ }
462
+ }
463
+ setDisabledState(isDisabled) {
464
+ this.disabled = isDisabled;
465
+ this.cdr.markForCheck();
466
+ }
467
+ update() {
468
+ this.valueObject.valueObject = this.cronModel;
469
+ this.visibleString = this.valueObject.getReadableString();
470
+ this.cdr.markForCheck();
471
+ this.onTouched();
472
+ this.onChange(this.valueObject.value);
473
+ }
474
+ openPopover() {
475
+ this.cronModel = this.valueObject.valueObject;
476
+ }
477
+ onEveryChange($event) {
478
+ const tempValueObject = new CronEditor(CronEditorDefaultConfigByPeriod[$event](this.fiscalYearStart), this.fiscalYearStart);
479
+ this.cronModel = tempValueObject.valueObject;
480
+ this.onSelectionChange();
481
+ }
482
+ onTimePickerChange(time) {
483
+ this.cronModel.hour = time.hour;
484
+ this.cronModel.minute = time.minute;
485
+ this.cronModel.timePeriod = time.timePeriod;
486
+ this.cronModel.timeZone = time.timeZone;
487
+ this.onSelectionChange();
488
+ }
489
+ onSelectionChange() {
490
+ if (this.flatMode) {
491
+ this.update();
492
+ }
493
+ }
494
+ /** @nocollapse */ static { this.ɵfac = function DrCronFieldComponent_Factory(t) { return new (t || DrCronFieldComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
495
+ /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DrCronFieldComponent, selectors: [["dr-cron-field"]], hostVars: 3, hostBindings: function DrCronFieldComponent_HostBindings(rf, ctx) { if (rf & 2) {
496
+ i0.ɵɵattribute("id", ctx.hostId);
497
+ i0.ɵɵclassProp("disabled", ctx.disabled);
498
+ } }, inputs: { id: "id", disabled: "disabled", allowedPeriods: "allowedPeriods", fiscalYearStart: "fiscalYearStart", popoverPosition: "popoverPosition", hidePeriodSelector: ["hidePeriodSelector", "hidePeriodSelector", booleanAttribute], flatMode: ["flatMode", "flatMode", booleanAttribute], multiRowMode: ["multiRowMode", "multiRowMode", booleanAttribute] }, standalone: true, features: [i0.ɵɵProvidersFeature([
499
+ {
500
+ provide: NG_VALUE_ACCESSOR,
501
+ useExisting: forwardRef((() => DrCronFieldComponent)),
502
+ multi: true,
503
+ },
504
+ ]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange", 4, "ngIf", "ngIfElse"], ["recurrencePopover", ""], ["cronConfiguration", ""], ["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange"], ["prefixIcon", "", 1, "dr-icon-date"], ["suffixIcon", "", 1, "dr-icon-arrow-down"], [1, "recurrence-popup"], [1, "recurrence-popup__body"], [3, "ngTemplateOutlet"], [1, "recurrence-popup__footer"], ["data-analytics", "dr-cron-field_button-cancel", "theme", "secondary", 3, "click"], ["data-analytics", "dr-cron-field_button-save", 3, "click"], ["quarterConfig", ""], ["hourConfig", ""], ["weekConfig", ""], ["dayOfMonthSelector", ""], ["yearMonthSelector", ""], [1, "cron-configuration"], ["data-analytics", "dr-cron-field_radio-group-period", "class", "cron-configuration__every", "name", "every", 3, "ngModel", "ngModelChange", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["singleRowMode", ""], ["data-analytics", "dr-cron-field_select-quarter-month", "aria-label", "Quarter month", "bindLabel", "label", "bindValue", "value", 1, "month-of-quarter", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-every-x-hours", "aria-label", "Hour interval", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-week", "aria-label", "Day of week", "bindLabel", "label", "bindValue", "value", 1, "day-of-week", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-month", "aria-label", "Day of month", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "searchable", "ngModelChange"], ["data-analytics", "dr-cron-field_select-month", "aria-label", "Month", "bindLabel", "label", "bindValue", "value", 1, "month-of-year", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-group-period", "name", "every", 1, "cron-configuration__every", 3, "ngModel", "ngModelChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "cron-configuration__section", "cron-configuration__row"], [3, "ngTemplateOutlet", 4, "ngIf"], [4, "ngIf"], ["class", "cron-configuration__section cron-configuration__row", 4, "ngIf"], [1, "cron-configuration__section", "cron-configuration__row", "cron-configuration__row--time"], [1, "time-prefix"], [3, "ngModel", "ngModelChange"], ["class", "cron-configuration__section", 4, "ngIf"], [1, "cron-configuration__section"], ["data-analytics", "dr-cron-field_input-hour", "aria-label", "Hour", "type", "number", 1, "hours-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], [1, "time-dots"], ["data-analytics", "dr-cron-field_input-minute", "aria-label", "Minute", "type", "number", 1, "minutes-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], ["data-analytics", "dr-cron-field_select-time-period", "aria-label", "Time period", 1, "time-period-selector", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-timezone", "aria-label", "Time zone", "bindLabel", "label", "bindValue", "value", 1, "gmt-offsets", 3, "ngModel", "items", "textView", "ngModelChange"], ["labelTemplate", ""]], template: function DrCronFieldComponent_Template(rf, ctx) { if (rf & 1) {
505
+ i0.ɵɵtemplate(0, DrCronFieldComponent_dr_input_0_Template, 3, 6, "dr-input", 0);
506
+ i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_1_Template, 8, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
507
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_Template, 15, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
508
+ } if (rf & 2) {
509
+ const _r3 = i0.ɵɵreference(4);
510
+ i0.ɵɵproperty("ngIf", !ctx.flatMode)("ngIfElse", _r3);
511
+ } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, FormsModule, i2.NgControlStatus, i2.NgModel, DrTooltipModule, DrInputsModule, i3.DrButtonComponent, i4.RadioButtonComponent, i5.RadioGroupComponent, i6.DrInputComponent, i7.DrSelectComponent, DrPopoverModule, i8.DrPopoverDirective, TimePickerComponent], styles: ["[_nghost-%COMP%] dr-input[_ngcontent-%COMP%] , [_nghost-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer[_ngcontent-%COMP%] dr-button[_ngcontent-%COMP%]{margin-left:12px}.cron-configuration[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .month-of-quarter[_ngcontent-%COMP%]{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-week[_ngcontent-%COMP%]{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-year[_ngcontent-%COMP%]{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-month[_ngcontent-%COMP%]{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .hours-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .minutes-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .time-period-selector[_ngcontent-%COMP%]{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:4px}.cron-configuration[_ngcontent-%COMP%] .time-dots[_ngcontent-%COMP%]{margin:0 4px}.cron-configuration[_ngcontent-%COMP%] .gmt-offsets[_ngcontent-%COMP%]{margin-left:16px}.cron-configuration--multi-row[_ngcontent-%COMP%]{width:auto}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row--time[_ngcontent-%COMP%]{margin-top:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:0}"], changeDetection: 0 }); }
512
+ }
513
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrCronFieldComponent, [{
514
+ type: Component,
515
+ args: [{ selector: 'dr-cron-field', standalone: true, providers: [
516
+ {
517
+ provide: NG_VALUE_ACCESSOR,
518
+ useExisting: forwardRef((() => DrCronFieldComponent)),
519
+ multi: true,
520
+ },
521
+ ], imports: [CommonModule, FormsModule, DrTooltipModule, DrInputsModule, DrPopoverModule, TimePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-input\n [id]=\"id\"\n data-analytics=\"dr-cron-field_input-main\"\n aria-label=\"Schedule\"\n *ngIf=\"!flatMode; else cronConfiguration\"\n placeholder=\"Select...\"\n (click)=\"!disabled ? openPopover() : null\"\n [(ngModel)]=\"visibleString\"\n [drPopover]=\"!disabled ? recurrencePopover : null\"\n [drPopoverPosition]=\"popoverPosition\"\n [disabled]=\"disabled\"\n [readonly]=\"true\">\n <i class=\"dr-icon-date\" prefixIcon></i>\n <i class=\"dr-icon-arrow-down\" suffixIcon></i>\n</dr-input>\n\n<ng-template #recurrencePopover let-closePopover=\"closePopover\">\n <div class=\"recurrence-popup\">\n <div class=\"recurrence-popup__body\">\n <ng-container [ngTemplateOutlet]=\"cronConfiguration\"></ng-container>\n </div>\n <div class=\"recurrence-popup__footer\">\n <dr-button data-analytics=\"dr-cron-field_button-cancel\" theme=\"secondary\" (click)=\"closePopover()\">Cancel</dr-button>\n <dr-button data-analytics=\"dr-cron-field_button-save\" (click)=\"update(); closePopover()\">Save</dr-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cronConfiguration>\n <ng-template #quarterConfig>\n <span>Repeat every quarter on</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-quarter-month\"\n aria-label=\"Quarter month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_QUARTER_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-quarter\"></dr-select>\n <span>month of the quarter</span>\n </ng-template>\n\n <ng-template #hourConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-every-x-hours\"\n aria-label=\"Hour interval\"\n [(ngModel)]=\"cronModel.everyXHours\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"HOURS_DIVISIBLE_INTO_DAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n <span>hour(s)</span>\n </ng-template>\n\n <ng-template #weekConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-week\"\n aria-label=\"Day of week\"\n [(ngModel)]=\"cronModel.dayOfWeek\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_WEEK_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-week\">\n </dr-select>\n </ng-template>\n\n <ng-template #dayOfMonthSelector>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-month\"\n aria-label=\"Day of month\"\n [(ngModel)]=\"cronModel.dayOfMonth\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_MONTH_ARRAY\"\n [searchable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n </ng-template>\n\n <ng-template #yearMonthSelector>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-month\"\n aria-label=\"Month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_YEAR_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-year\">\n </dr-select>\n </ng-template>\n\n <div class=\"cron-configuration\" [class.cron-configuration--multi-row]=\"multiRowMode\">\n <dr-radio-group\n data-analytics=\"dr-cron-field_radio-group-period\"\n *ngIf=\"!hidePeriodSelector\"\n class=\"cron-configuration__every\"\n [(ngModel)]=\"cronModel.every\"\n (ngModelChange)=\"onEveryChange($event)\"\n name=\"every\">\n <dr-radio-button\n *ngFor=\"let option of cronEditorPeriodArray\"\n [value]=\"option.value\"\n [attr.data-analytics]=\"'dr-cron-field_radio-button-' + option.value\">\n {{ option.label }}\n </dr-radio-button>\n </dr-radio-group>\n\n <ng-container *ngIf=\"multiRowMode; else singleRowMode\">\n <div class=\"cron-configuration__section cron-configuration__row\">\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\"\n [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\">Repeat every day</span>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\" [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\" [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\">\n <ng-container [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">\n <span>Repeat on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of every month</span>\n </ng-container>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row\" *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">\n <span>on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of the month</span>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row cron-configuration__row--time\">\n <span class=\"time-prefix\">at</span>\n <dr-time-picker [ngModel]=\"cronModel\" (ngModelChange)=\"onTimePickerChange($event)\"> </dr-time-picker>\n </div>\n </ng-container>\n\n <ng-template #singleRowMode>\n <div *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\" class=\"cron-configuration__section\">\n <ng-container [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n </div>\n <div class=\"cron-configuration__section\">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\"> Repeat every day </span>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\" [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\" [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n\n <ng-container\n *ngIf=\"\n cronModel.every !== cronEditorPeriod.WEEK &&\n cronModel.every !== cronEditorPeriod.HOUR &&\n cronModel.every !== cronEditorPeriod.DAY\n \">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">Repeat on </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">on </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\"\n [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">day of every month </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">day of the month </span>\n </ng-container>\n <span class=\"time-prefix\">at</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-hour\"\n aria-label=\"Hour\"\n [(ngModel)]=\"cronModel.hour\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"1\"\n [max]=\"12\"\n type=\"number\"\n class=\"hours-input\">\n </dr-input>\n <span class=\"time-dots\">:</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-minute\"\n aria-label=\"Minute\"\n [(ngModel)]=\"cronModel.minute\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"59\"\n type=\"number\"\n class=\"minutes-input\">\n </dr-input>\n <dr-select\n data-analytics=\"dr-cron-field_select-time-period\"\n aria-label=\"Time period\"\n [(ngModel)]=\"cronModel.timePeriod\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"CRON_TIME_PERIOD_ARRAY\"\n class=\"time-period-selector\"></dr-select>\n <dr-select\n data-analytics=\"dr-cron-field_select-timezone\"\n aria-label=\"Time zone\"\n [(ngModel)]=\"cronModel.timeZone\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"GMT_OFFSETS\"\n [textView]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"gmt-offsets\">\n <ng-template #labelTemplate let-item=\"item\">\n {{ LOCAL_TIME_ZONE_OFFSET !== cronModel.timeZone ? item.label : 'Local Time' }}\n </ng-template>\n </dr-select>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host dr-input::ng-deep,:host dr-input::ng-deep input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer dr-button{margin-left:12px}.cron-configuration{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section span{flex-shrink:0}.cron-configuration .month-of-quarter{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration .day-of-week{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-year{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration .day-of-month{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration .hours-input{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration .minutes-input{width:62px;flex-shrink:0}.cron-configuration .time-period-selector{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration .time-prefix{margin-left:4px}.cron-configuration .time-dots{margin:0 4px}.cron-configuration .gmt-offsets{margin-left:16px}.cron-configuration--multi-row{width:auto}.cron-configuration--multi-row .cron-configuration__row{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row .cron-configuration__row--time{margin-top:8px}.cron-configuration--multi-row .time-prefix{margin-left:0}\n"] }]
522
+ }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { id: [{
523
+ type: Input
524
+ }], hostId: [{
525
+ type: HostBinding,
526
+ args: ['attr.id']
527
+ }], disabled: [{
528
+ type: Input
529
+ }, {
530
+ type: HostBinding,
531
+ args: ['class.disabled']
532
+ }], allowedPeriods: [{
533
+ type: Input
534
+ }], fiscalYearStart: [{
535
+ type: Input
536
+ }], popoverPosition: [{
537
+ type: Input
538
+ }], hidePeriodSelector: [{
539
+ type: Input,
540
+ args: [{ transform: booleanAttribute }]
541
+ }], flatMode: [{
542
+ type: Input,
543
+ args: [{ transform: booleanAttribute }]
544
+ }], multiRowMode: [{
545
+ type: Input,
546
+ args: [{ transform: booleanAttribute }]
547
+ }] }); })();
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY3Jvbi1maWVsZC9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixtQkFBbUIsR0FFdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBQ1YsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBRXhCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDM0J0RixtQ0FXc0I7SUFMbEIsd0tBQVMsa0NB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b0hBQUUsZUFBZSx5QkFBRSxtQkFBbUI7O3VGQUtqRyxvQkFBb0I7Y0FmaEMsU0FBUzsyQkFDSSxlQUFlLGNBQ2IsSUFBSSxhQUNMO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHFCQUFxQixFQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDZDtpQkFDSixXQUNRLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDMUYsdUJBQXVCLENBQUMsTUFBTTtvRUFLdEMsRUFBRTtrQkFBVixLQUFLO1lBQ2tCLE1BQU07a0JBQTdCLFdBQVc7bUJBQUMsU0FBUztZQUlmLFFBQVE7a0JBRmQsS0FBSzs7a0JBQ0wsV0FBVzttQkFBQyxnQkFBZ0I7WUFHcEIsY0FBYztrQkFBdEIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ2tDLGtCQUFrQjtrQkFBekQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLFFBQVE7a0JBQS9DLEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFDRSxZQUFZO2tCQUFuRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBEcklucHV0c01vZHVsZSxcbiAgICBHTVRfT0ZGU0VUUyxcbiAgICBMT0NBTF9USU1FX1pPTkVfT0ZGU0VULFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgVGltZXBpY2tlck1vZGVsLFxufSBmcm9tICcuLi9kci1pbnB1dHMnO1xuaW1wb3J0IHtcbiAgICBBTExPV0VEX1BFUklPRFMsXG4gICAgQ3JvbkVkaXRvcixcbiAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kLFxuICAgIENyb25FZGl0b3JQZXJpb2QsXG4gICAgQ3JvblRpbWVQZXJpb2QsXG4gICAgREFZX09GX01PTlRIX0FSUkFZLFxuICAgIERBWV9PRl9XRUVLX0FSUkFZLFxuICAgIGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCxcbiAgICBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVksXG4gICAgSUNyb25FZGl0b3IsXG4gICAgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSxcbiAgICBNT05USF9PRl9ZRUFSX0FSUkFZLFxufSBmcm9tICcuL2RyLWNyb24tZmllbGQuZWRpdG9yJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bvc2l0aW9uJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vZHItdG9vbHRpcC9kci10b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBEclBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY3Jvbi1maWVsZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEckNyb25GaWVsZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEclRvb2x0aXBNb2R1bGUsIERySW5wdXRzTW9kdWxlLCBEclBvcG92ZXJNb2R1bGUsIFRpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyQ3JvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaG9zdElkID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhbGxvd2VkUGVyaW9kczogQ3JvbkVkaXRvclBlcmlvZFtdID0gQUxMT1dFRF9QRVJJT0RTO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKSBwb3BvdmVyUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbS1sZWZ0JztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGlkZVBlcmlvZFNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZsYXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG11bHRpUm93TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IERBWV9PRl9NT05USF9BUlJBWSA9IERBWV9PRl9NT05USF9BUlJBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSA9IE1PTlRIX09GX1FVQVJURVJfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IE1PTlRIX09GX1lFQVJfQVJSQVkgPSBNT05USF9PRl9ZRUFSX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBEQVlfT0ZfV0VFS19BUlJBWSA9IERBWV9PRl9XRUVLX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVkgPSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IENST05fVElNRV9QRVJJT0RfQVJSQVkgPSBbQ3JvblRpbWVQZXJpb2QuQU0sIENyb25UaW1lUGVyaW9kLlBNXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTE9DQUxfVElNRV9aT05FX09GRlNFVCA9IExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQ7XG4gICAgcHVibGljIHJlYWRvbmx5IEdNVF9PRkZTRVRTID0gR01UX09GRlNFVFM7XG4gICAgcHVibGljIHJlYWRvbmx5IGNyb25FZGl0b3JQZXJpb2QgPSBDcm9uRWRpdG9yUGVyaW9kO1xuXG4gICAgcHVibGljIGNyb25FZGl0b3JQZXJpb2RBcnJheTogeyB2YWx1ZTogQ3JvbkVkaXRvclBlcmlvZDsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgcHVibGljIHZpc2libGVTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgdmFsdWVPYmplY3Q6IENyb25FZGl0b3I7XG4gICAgcHVibGljIGNyb25Nb2RlbDogSUNyb25FZGl0b3I7XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy52YWx1ZU9iamVjdC5nZXRSZWFkYWJsZVN0cmluZygpO1xuICAgICAgICBpZiAodGhpcy5mbGF0TW9kZSAmJiAhdGhpcy5jcm9uTW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPYmplY3QudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QgPSBuZXcgQ3JvbkVkaXRvcihudWxsLCB0aGlzLmZpc2NhbFllYXJTdGFydCk7XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QuZXZlcnkgPSB0aGlzLmFsbG93ZWRQZXJpb2RzW3RoaXMuYWxsb3dlZFBlcmlvZHMubGVuZ3RoIC0gMV0gPz8gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgICAgIHRoaXMuY3JvbkVkaXRvclBlcmlvZEFycmF5ID0gdGhpcy5hbGxvd2VkUGVyaW9kcy5tYXAoKHBlcmlvZCkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGVyaW9kLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBjYXBpdGFsaXplKGdldENyb25UeXBlQXNQZXJpb2RMYWJlbChwZXJpb2QpKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5mbGF0TW9kZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy52YWx1ZU9iamVjdC5nZXRSZWFkYWJsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKCkge1xuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0ID0gdGhpcy5jcm9uTW9kZWw7XG4gICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZU9iamVjdC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXZlcnlDaGFuZ2UoJGV2ZW50OiBDcm9uRWRpdG9yUGVyaW9kKSB7XG4gICAgICAgIGNvbnN0IHRlbXBWYWx1ZU9iamVjdCA9IG5ldyBDcm9uRWRpdG9yKFxuICAgICAgICAgICAgQ3JvbkVkaXRvckRlZmF1bHRDb25maWdCeVBlcmlvZFskZXZlbnRdKHRoaXMuZmlzY2FsWWVhclN0YXJ0KSxcbiAgICAgICAgICAgIHRoaXMuZmlzY2FsWWVhclN0YXJ0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRlbXBWYWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRpbWVQaWNrZXJDaGFuZ2UodGltZTogVGltZXBpY2tlck1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLmhvdXIgPSB0aW1lLmhvdXI7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLm1pbnV0ZSA9IHRpbWUubWludXRlO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lUGVyaW9kID0gdGltZS50aW1lUGVyaW9kIGFzIENyb25UaW1lUGVyaW9kO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lWm9uZSA9IHRpbWUudGltZVpvbmU7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRyLWlucHV0XG4gICAgW2lkXT1cImlkXCJcbiAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtbWFpblwiXG4gICAgYXJpYS1sYWJlbD1cIlNjaGVkdWxlXCJcbiAgICAqbmdJZj1cIiFmbGF0TW9kZTsgZWxzZSBjcm9uQ29uZmlndXJhdGlvblwiXG4gICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QuLi5cIlxuICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuUG9wb3ZlcigpIDogbnVsbFwiXG4gICAgWyhuZ01vZGVsKV09XCJ2aXNpYmxlU3RyaW5nXCJcbiAgICBbZHJQb3BvdmVyXT1cIiFkaXNhYmxlZCA/IHJlY3VycmVuY2VQb3BvdmVyIDogbnVsbFwiXG4gICAgW2RyUG9wb3ZlclBvc2l0aW9uXT1cInBvcG92ZXJQb3NpdGlvblwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwidHJ1ZVwiPlxuICAgIDxpIGNsYXNzPVwiZHItaWNvbi1kYXRlXCIgcHJlZml4SWNvbj48L2k+XG4gICAgPGkgY2xhc3M9XCJkci1pY29uLWFycm93LWRvd25cIiBzdWZmaXhJY29uPjwvaT5cbjwvZHItaW5wdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjcmVjdXJyZW5jZVBvcG92ZXIgbGV0LWNsb3NlUG9wb3Zlcj1cImNsb3NlUG9wb3ZlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwX19ib2R5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyb25Db25maWd1cmF0aW9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cF9fZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZHItYnV0dG9uIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9idXR0b24tY2FuY2VsXCIgdGhlbWU9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VQb3BvdmVyKClcIj5DYW5jZWw8L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkci1idXR0b24gZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2J1dHRvbi1zYXZlXCIgKGNsaWNrKT1cInVwZGF0ZSgpOyBjbG9zZVBvcG92ZXIoKVwiPlNhdmU8L2RyLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Nyb25Db25maWd1cmF0aW9uPlxuICAgIDxuZy10ZW1wbGF0ZSAjcXVhcnRlckNvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5IHF1YXJ0ZXIgb248L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtcXVhcnRlci1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUXVhcnRlciBtb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9RVUFSVEVSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YtcXVhcnRlclwiPjwvZHItc2VsZWN0PlxuICAgICAgICA8c3Bhbj5tb250aCBvZiB0aGUgcXVhcnRlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNob3VyQ29uZmlnPlxuICAgICAgICA8c3Bhbj5SZXBlYXQgZXZlcnk8L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZXZlcnkteC1ob3Vyc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91ciBpbnRlcnZhbFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ldmVyeVhIb3Vyc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJIT1VSU19ESVZJU0lCTEVfSU5UT19EQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2YtbW9udGhcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgICAgIDxzcGFuPmhvdXIocyk8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjd2Vla0NvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWRheS1vZi13ZWVrXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2Ygd2Vla1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5kYXlPZldlZWtcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiREFZX09GX1dFRUtfQVJSQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2Ytd2Vla1wiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkYXlPZk1vbnRoU2VsZWN0b3I+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZGF5LW9mLW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2YgbW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJEQVlfT0ZfTU9OVEhfQVJSQVlcIlxuICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImRheS1vZi1tb250aFwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN5ZWFyTW9udGhTZWxlY3Rvcj5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9ZRUFSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YteWVhclwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvblwiIFtjbGFzcy5jcm9uLWNvbmZpZ3VyYXRpb24tLW11bHRpLXJvd109XCJtdWx0aVJvd01vZGVcIj5cbiAgICAgICAgPGRyLXJhZGlvLWdyb3VwXG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfcmFkaW8tZ3JvdXAtcGVyaW9kXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVQZXJpb2RTZWxlY3RvclwiXG4gICAgICAgICAgICBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fZXZlcnlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZXZlcnlcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FdmVyeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJldmVyeVwiPlxuICAgICAgICAgICAgPGRyLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3JvbkVkaXRvclBlcmlvZEFycmF5XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWFuYWx5dGljc109XCInZHItY3Jvbi1maWVsZF9yYWRpby1idXR0b24tJyArIG9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kci1yYWRpby1idXR0b24+XG4gICAgICAgIDwvZHItcmFkaW8tZ3JvdXA+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpUm93TW9kZTsgZWxzZSBzaW5nbGVSb3dNb2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicXVhcnRlckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVwiPlJlcGVhdCBldmVyeSBkYXk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG91ckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndlZWtDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ5ZWFyTW9udGhTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheU9mTW9udGhTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5SZXBlYXQgb248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmRheSBvZiBldmVyeSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPm9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4+ZGF5IG9mIHRoZSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93IGNyb24tY29uZmlndXJhdGlvbl9fcm93LS10aW1lXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXByZWZpeFwiPmF0PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkci10aW1lLXBpY2tlciBbbmdNb2RlbF09XCJjcm9uTW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblRpbWVQaWNrZXJDaGFuZ2UoJGV2ZW50KVwiPiA8L2RyLXRpbWUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlUm93TW9kZT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJxdWFydGVyQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5EQVlcIj4gUmVwZWF0IGV2ZXJ5IGRheSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG91ckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndlZWtDb25maWdcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyb25Nb2RlbC5ldmVyeSAhPT0gY3JvbkVkaXRvclBlcmlvZC5XRUVLICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm9uTW9kZWwuZXZlcnkgIT09IGNyb25FZGl0b3JQZXJpb2QuSE9VUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY3Jvbk1vZGVsLmV2ZXJ5ICE9PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVxuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuTU9OVEhcIj5SZXBlYXQgb24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCI+b24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5ZRUFSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPmRheSBvZiBldmVyeSBtb250aCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5kYXkgb2YgdGhlIG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcHJlZml4XCI+YXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvdXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXNrXT1cIicwMCdcIlxuICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG91cnMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8L2RyLWlucHV0PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1kb3RzXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2lucHV0LW1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNaW51dGVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW21hc2tdPVwiJzAwJ1wiXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW51dGVzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZS1wZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiVGltZSBwZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lUGVyaW9kXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJDUk9OX1RJTUVfUEVSSU9EX0FSUkFZXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lLXBlcmlvZC1zZWxlY3RvclwiPjwvZHItc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC10aW1lem9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaW1lIHpvbmVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lWm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiR01UX09GRlNFVFNcIlxuICAgICAgICAgICAgICAgICAgICBbdGV4dFZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdtdC1vZmZzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgIT09IGNyb25Nb2RlbC50aW1lWm9uZSA/IGl0ZW0ubGFiZWwgOiAnTG9jYWwgVGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==