mis-crystal-design-system 14.0.55 → 14.0.56-test
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/dropdown/dropdown.component.d.ts +2 -1
- package/dynamic-form/dynamic-form.component.d.ts +10 -2
- package/esm2020/async-search-dropdown/async-dropdown.component.mjs +1 -1
- package/esm2020/dropdown/dropdown.component.mjs +79 -50
- package/esm2020/dynamic-form/dynamic-form.component.mjs +471 -213
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2015/mis-crystal-design-system-dropdown.mjs +87 -49
- package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +524 -212
- package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2020/mis-crystal-design-system-dropdown.mjs +78 -49
- package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2020/mis-crystal-design-system-dynamic-form.mjs +470 -212
- package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
|
|
2
2
|
import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
|
|
3
3
|
import moment from "moment-timezone";
|
|
4
4
|
import "moment-timezone";
|
|
@@ -9,7 +9,15 @@ import * as i3 from "mis-crystal-design-system/dropdown";
|
|
|
9
9
|
import * as i4 from "mis-crystal-design-system/switch";
|
|
10
10
|
import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
|
|
11
11
|
import * as i6 from "mis-crystal-design-system/datepicker_v2";
|
|
12
|
-
const _c0 =
|
|
12
|
+
const _c0 = ["customInputTextNumber"];
|
|
13
|
+
const _c1 = ["customInputTextarea"];
|
|
14
|
+
const _c2 = ["customInputDate"];
|
|
15
|
+
const _c3 = ["customBooleanToggle"];
|
|
16
|
+
const _c4 = ["customSingleSelectDropdown"];
|
|
17
|
+
const _c5 = ["customSingleSelectRadio"];
|
|
18
|
+
const _c6 = ["customMultiSelectCheckbox"];
|
|
19
|
+
const _c7 = ["customMultiSelectDropdown"];
|
|
20
|
+
const _c8 = function (a0, a1) { return { $implicit: a0, control: a1 }; };
|
|
13
21
|
function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
14
22
|
i0.ɵɵelementContainerStart(0);
|
|
15
23
|
i0.ɵɵelementContainer(1, 6);
|
|
@@ -23,7 +31,7 @@ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, c
|
|
|
23
31
|
const ctx_r8 = i0.ɵɵnextContext();
|
|
24
32
|
const _r1 = i0.ɵɵreference(4);
|
|
25
33
|
i0.ɵɵadvance(1);
|
|
26
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2,
|
|
34
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c8, ctx_r8.findSelectedSubFieldConfig(ctx_r8.formFields[i_r6] == null ? null : ctx_r8.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value, j_r10), subFieldControl_r9));
|
|
27
35
|
} }
|
|
28
36
|
function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
29
37
|
i0.ɵɵelementStart(0, "div", 8);
|
|
@@ -34,7 +42,7 @@ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf &
|
|
|
34
42
|
i0.ɵɵadvance(1);
|
|
35
43
|
i0.ɵɵproperty("ngForOf", fieldControl_r5.controls.subFields.controls);
|
|
36
44
|
} }
|
|
37
|
-
const
|
|
45
|
+
const _c9 = function (a0, a1, a2) { return { $implicit: a0, formGroup: a1, control: a2 }; };
|
|
38
46
|
function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
39
47
|
i0.ɵɵelementContainerStart(0, 5);
|
|
40
48
|
i0.ɵɵelementContainer(1, 6);
|
|
@@ -47,137 +55,202 @@ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
47
55
|
const _r1 = i0.ɵɵreference(4);
|
|
48
56
|
i0.ɵɵproperty("formGroupName", i_r6);
|
|
49
57
|
i0.ɵɵadvance(1);
|
|
50
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4,
|
|
58
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c9, ctx_r0.formFields[i_r6], fieldControl_r5, fieldControl_r5.controls.value));
|
|
51
59
|
i0.ɵɵadvance(1);
|
|
52
60
|
i0.ɵɵproperty("ngIf", fieldControl_r5.value && (!!(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields) && (ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields == null ? null : ctx_r0.formFields[i_r6].subFields.length) > 0 && ctx_r0.matchParentConfig(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value)));
|
|
53
61
|
} }
|
|
54
|
-
function
|
|
62
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
63
|
+
const _c10 = function (a0, a1, a2) { return { field: a0, control: a1, formgroup: a2 }; };
|
|
64
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
i0.ɵɵelementContainerStart(0);
|
|
66
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
67
|
+
i0.ɵɵelementContainerEnd();
|
|
68
|
+
} if (rf & 2) {
|
|
69
|
+
const ctx_r28 = i0.ɵɵnextContext(2);
|
|
70
|
+
const field_r13 = ctx_r28.$implicit;
|
|
71
|
+
const control_r14 = ctx_r28.control;
|
|
72
|
+
const formgroup_r15 = ctx_r28.formGroup;
|
|
73
|
+
const ctx_r24 = i0.ɵɵnextContext();
|
|
74
|
+
i0.ɵɵadvance(1);
|
|
75
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r24.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
76
|
+
} }
|
|
77
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
55
78
|
i0.ɵɵelementStart(0, "span");
|
|
56
79
|
i0.ɵɵtext(1, " *");
|
|
57
80
|
i0.ɵɵelementEnd();
|
|
58
81
|
} }
|
|
59
|
-
const
|
|
60
|
-
function
|
|
82
|
+
const _c11 = function (a0) { return { $implicit: a0 }; };
|
|
83
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
61
84
|
i0.ɵɵelementContainer(0, 6);
|
|
62
85
|
} if (rf & 2) {
|
|
63
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
86
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
64
87
|
i0.ɵɵnextContext();
|
|
65
88
|
const _r3 = i0.ɵɵreference(6);
|
|
66
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
89
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
67
90
|
} }
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
function
|
|
71
|
-
const
|
|
72
|
-
i0.ɵɵelementStart(0, "div",
|
|
91
|
+
const _c12 = function (a0) { return { "border-bottom": a0 }; };
|
|
92
|
+
const _c13 = function (a0) { return { "border": a0 }; };
|
|
93
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
95
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
|
|
73
96
|
i0.ɵɵtext(2);
|
|
74
|
-
i0.ɵɵtemplate(3,
|
|
97
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
75
98
|
i0.ɵɵelementEnd();
|
|
76
99
|
i0.ɵɵelement(4, "div", 15);
|
|
77
100
|
i0.ɵɵelementStart(5, "input", 16);
|
|
78
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
101
|
+
i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); const field_r13 = ctx_r33.$implicit; const formgroup_r15 = ctx_r33.formGroup; const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
|
|
79
102
|
i0.ɵɵelementEnd();
|
|
80
|
-
i0.ɵɵtemplate(6,
|
|
103
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
|
|
81
104
|
i0.ɵɵelementEnd();
|
|
82
105
|
} if (rf & 2) {
|
|
83
|
-
const
|
|
84
|
-
const formgroup_r15 =
|
|
85
|
-
const field_r13 =
|
|
86
|
-
const control_r14 =
|
|
87
|
-
const
|
|
88
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9,
|
|
106
|
+
const ctx_r35 = i0.ɵɵnextContext(2);
|
|
107
|
+
const formgroup_r15 = ctx_r35.formGroup;
|
|
108
|
+
const field_r13 = ctx_r35.$implicit;
|
|
109
|
+
const control_r14 = ctx_r35.control;
|
|
110
|
+
const ctx_r26 = i0.ɵɵnextContext();
|
|
111
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r26.removeSepratorForSubFields ? "none" : ""));
|
|
89
112
|
i0.ɵɵadvance(2);
|
|
90
|
-
i0.ɵɵtextInterpolate1(" ", field_r13.title, " ");
|
|
113
|
+
i0.ɵɵtextInterpolate1(" ", field_r13 == null ? null : field_r13.title, " ");
|
|
91
114
|
i0.ɵɵadvance(1);
|
|
92
115
|
i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
|
|
93
116
|
i0.ɵɵadvance(2);
|
|
94
|
-
i0.ɵɵproperty("type", field_r13.fieldInputType)("formControl", control_r14)("ngStyle", i0.ɵɵpureFunction1(11,
|
|
117
|
+
i0.ɵɵproperty("type", field_r13.fieldInputType)("formControl", control_r14)("ngStyle", i0.ɵɵpureFunction1(11, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("min", field_r13.fieldInputType === "number" ? 0 : "");
|
|
95
118
|
i0.ɵɵadvance(1);
|
|
96
119
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
97
120
|
} }
|
|
98
|
-
function
|
|
121
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
+
i0.ɵɵelementContainerStart(0);
|
|
123
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
124
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
|
|
125
|
+
i0.ɵɵelementContainerEnd();
|
|
126
|
+
} if (rf & 2) {
|
|
127
|
+
const _r25 = i0.ɵɵreference(3);
|
|
128
|
+
const ctx_r16 = i0.ɵɵnextContext(2);
|
|
129
|
+
i0.ɵɵadvance(1);
|
|
130
|
+
i0.ɵɵproperty("ngIf", ctx_r16.customInputTextNumber)("ngIfElse", _r25);
|
|
131
|
+
} }
|
|
132
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
133
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
+
i0.ɵɵelementContainerStart(0);
|
|
135
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
136
|
+
i0.ɵɵelementContainerEnd();
|
|
137
|
+
} if (rf & 2) {
|
|
138
|
+
const ctx_r40 = i0.ɵɵnextContext(2);
|
|
139
|
+
const field_r13 = ctx_r40.$implicit;
|
|
140
|
+
const control_r14 = ctx_r40.control;
|
|
141
|
+
const formgroup_r15 = ctx_r40.formGroup;
|
|
142
|
+
const ctx_r36 = i0.ɵɵnextContext();
|
|
143
|
+
i0.ɵɵadvance(1);
|
|
144
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r36.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
145
|
+
} }
|
|
146
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
99
147
|
i0.ɵɵelementStart(0, "span");
|
|
100
148
|
i0.ɵɵtext(1, " *");
|
|
101
149
|
i0.ɵɵelementEnd();
|
|
102
150
|
} }
|
|
103
|
-
function
|
|
151
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
104
152
|
i0.ɵɵelementContainer(0, 6);
|
|
105
153
|
} if (rf & 2) {
|
|
106
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
154
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
107
155
|
i0.ɵɵnextContext();
|
|
108
156
|
const _r3 = i0.ɵɵreference(6);
|
|
109
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
157
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
110
158
|
} }
|
|
111
|
-
function
|
|
112
|
-
const
|
|
113
|
-
i0.ɵɵelementStart(0, "div",
|
|
159
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
160
|
+
const _r46 = i0.ɵɵgetCurrentView();
|
|
161
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
|
|
114
162
|
i0.ɵɵtext(2);
|
|
115
|
-
i0.ɵɵtemplate(3,
|
|
163
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
116
164
|
i0.ɵɵelementEnd();
|
|
117
165
|
i0.ɵɵelement(4, "div", 15);
|
|
118
|
-
i0.ɵɵelementStart(5, "textarea",
|
|
119
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
166
|
+
i0.ɵɵelementStart(5, "textarea", 19);
|
|
167
|
+
i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); const field_r13 = ctx_r45.$implicit; const formgroup_r15 = ctx_r45.formGroup; const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
|
|
120
168
|
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵtemplate(6,
|
|
169
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
|
|
122
170
|
i0.ɵɵelementEnd();
|
|
123
171
|
} if (rf & 2) {
|
|
124
|
-
const
|
|
125
|
-
const formgroup_r15 =
|
|
126
|
-
const field_r13 =
|
|
127
|
-
const control_r14 =
|
|
128
|
-
const
|
|
129
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7,
|
|
172
|
+
const ctx_r47 = i0.ɵɵnextContext(2);
|
|
173
|
+
const formgroup_r15 = ctx_r47.formGroup;
|
|
174
|
+
const field_r13 = ctx_r47.$implicit;
|
|
175
|
+
const control_r14 = ctx_r47.control;
|
|
176
|
+
const ctx_r38 = i0.ɵɵnextContext();
|
|
177
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r38.removeSepratorForSubFields ? "none" : ""));
|
|
130
178
|
i0.ɵɵadvance(2);
|
|
131
179
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
132
180
|
i0.ɵɵadvance(1);
|
|
133
181
|
i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
|
|
134
182
|
i0.ɵɵadvance(2);
|
|
135
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9,
|
|
183
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("formControl", control_r14);
|
|
136
184
|
i0.ɵɵadvance(1);
|
|
137
185
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
138
186
|
} }
|
|
139
|
-
function
|
|
187
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
+
i0.ɵɵelementContainerStart(0);
|
|
189
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
190
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 18, i0.ɵɵtemplateRefExtractor);
|
|
191
|
+
i0.ɵɵelementContainerEnd();
|
|
192
|
+
} if (rf & 2) {
|
|
193
|
+
const _r37 = i0.ɵɵreference(3);
|
|
194
|
+
const ctx_r17 = i0.ɵɵnextContext(2);
|
|
195
|
+
i0.ɵɵadvance(1);
|
|
196
|
+
i0.ɵɵproperty("ngIf", ctx_r17.customInputTextarea)("ngIfElse", _r37);
|
|
197
|
+
} }
|
|
198
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
199
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
i0.ɵɵelementContainerStart(0);
|
|
201
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
202
|
+
i0.ɵɵelementContainerEnd();
|
|
203
|
+
} if (rf & 2) {
|
|
204
|
+
const ctx_r52 = i0.ɵɵnextContext(2);
|
|
205
|
+
const field_r13 = ctx_r52.$implicit;
|
|
206
|
+
const control_r14 = ctx_r52.control;
|
|
207
|
+
const formgroup_r15 = ctx_r52.formGroup;
|
|
208
|
+
const ctx_r48 = i0.ɵɵnextContext();
|
|
209
|
+
i0.ɵɵadvance(1);
|
|
210
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r48.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
211
|
+
} }
|
|
212
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
140
213
|
i0.ɵɵelementStart(0, "span");
|
|
141
214
|
i0.ɵɵtext(1, " *");
|
|
142
215
|
i0.ɵɵelementEnd();
|
|
143
216
|
} }
|
|
144
|
-
function
|
|
145
|
-
const
|
|
146
|
-
i0.ɵɵelementStart(0, "img",
|
|
147
|
-
i0.ɵɵlistener("click", function
|
|
217
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
+
const _r59 = i0.ɵɵgetCurrentView();
|
|
219
|
+
i0.ɵɵelementStart(0, "img", 28);
|
|
220
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r59); i0.ɵɵnextContext(); const _r55 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r55.click()); });
|
|
148
221
|
i0.ɵɵelementEnd();
|
|
149
222
|
} if (rf & 2) {
|
|
150
|
-
const
|
|
151
|
-
i0.ɵɵproperty("src",
|
|
223
|
+
const ctx_r56 = i0.ɵɵnextContext(5);
|
|
224
|
+
i0.ɵɵproperty("src", ctx_r56.calendarIconUrl, i0.ɵɵsanitizeUrl);
|
|
152
225
|
} }
|
|
153
|
-
function
|
|
226
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
154
227
|
i0.ɵɵelementContainer(0, 6);
|
|
155
228
|
} if (rf & 2) {
|
|
156
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
229
|
+
const control_r14 = i0.ɵɵnextContext(4).control;
|
|
157
230
|
i0.ɵɵnextContext();
|
|
158
231
|
const _r3 = i0.ɵɵreference(6);
|
|
159
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
232
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
160
233
|
} }
|
|
161
|
-
function
|
|
162
|
-
const
|
|
163
|
-
i0.ɵɵelementStart(0, "div",
|
|
234
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
235
|
+
const _r63 = i0.ɵɵgetCurrentView();
|
|
236
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
|
|
164
237
|
i0.ɵɵtext(2);
|
|
165
|
-
i0.ɵɵtemplate(3,
|
|
238
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 10);
|
|
166
239
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵelementStart(4, "div",
|
|
168
|
-
i0.ɵɵlistener("dateChange", function
|
|
240
|
+
i0.ɵɵelementStart(4, "div", 24)(5, "input", 25, 26);
|
|
241
|
+
i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r63); const control_r14 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r14.setValue($event)); });
|
|
169
242
|
i0.ɵɵelementEnd();
|
|
170
|
-
i0.ɵɵtemplate(7,
|
|
243
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 27);
|
|
171
244
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵtemplate(8,
|
|
245
|
+
i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 17);
|
|
173
246
|
i0.ɵɵelementEnd();
|
|
174
247
|
} if (rf & 2) {
|
|
175
|
-
const
|
|
176
|
-
const formgroup_r15 =
|
|
177
|
-
const field_r13 =
|
|
178
|
-
const control_r14 =
|
|
179
|
-
const
|
|
180
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9,
|
|
248
|
+
const ctx_r64 = i0.ɵɵnextContext(3);
|
|
249
|
+
const formgroup_r15 = ctx_r64.formGroup;
|
|
250
|
+
const field_r13 = ctx_r64.$implicit;
|
|
251
|
+
const control_r14 = ctx_r64.control;
|
|
252
|
+
const ctx_r53 = i0.ɵɵnextContext();
|
|
253
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r53.removeSepratorForSubFields ? "none" : ""));
|
|
181
254
|
i0.ɵɵadvance(2);
|
|
182
255
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, " ");
|
|
183
256
|
i0.ɵɵadvance(1);
|
|
@@ -185,41 +258,72 @@ function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1
|
|
|
185
258
|
i0.ɵɵadvance(2);
|
|
186
259
|
i0.ɵɵproperty("dpConfig", field_r13.fieldConfig)("selectedDate", control_r14.value)("offsetY", 0)("value", control_r14.value);
|
|
187
260
|
i0.ɵɵadvance(2);
|
|
188
|
-
i0.ɵɵproperty("ngIf",
|
|
261
|
+
i0.ɵɵproperty("ngIf", ctx_r53.calendarIconUrl);
|
|
189
262
|
i0.ɵɵadvance(1);
|
|
190
263
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
191
264
|
} }
|
|
192
|
-
function
|
|
265
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 21);
|
|
267
|
+
} if (rf & 2) {
|
|
268
|
+
const field_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
269
|
+
i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && field_r13.fieldInputType === "date");
|
|
270
|
+
} }
|
|
271
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
272
|
+
i0.ɵɵelementContainerStart(0);
|
|
273
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
274
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
|
|
275
|
+
i0.ɵɵelementContainerEnd();
|
|
276
|
+
} if (rf & 2) {
|
|
277
|
+
const _r49 = i0.ɵɵreference(3);
|
|
278
|
+
const ctx_r18 = i0.ɵɵnextContext(2);
|
|
279
|
+
i0.ɵɵadvance(1);
|
|
280
|
+
i0.ɵɵproperty("ngIf", ctx_r18.customInputDate)("ngIfElse", _r49);
|
|
281
|
+
} }
|
|
282
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
283
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
284
|
+
i0.ɵɵelementContainerStart(0);
|
|
285
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
286
|
+
i0.ɵɵelementContainerEnd();
|
|
287
|
+
} if (rf & 2) {
|
|
288
|
+
const ctx_r70 = i0.ɵɵnextContext(2);
|
|
289
|
+
const field_r13 = ctx_r70.$implicit;
|
|
290
|
+
const control_r14 = ctx_r70.control;
|
|
291
|
+
const formgroup_r15 = ctx_r70.formGroup;
|
|
292
|
+
const ctx_r66 = i0.ɵɵnextContext();
|
|
293
|
+
i0.ɵɵadvance(1);
|
|
294
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r66.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
295
|
+
} }
|
|
296
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
193
297
|
i0.ɵɵelementStart(0, "span");
|
|
194
298
|
i0.ɵɵtext(1, " *");
|
|
195
299
|
i0.ɵɵelementEnd();
|
|
196
300
|
} }
|
|
197
|
-
function
|
|
301
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
198
302
|
i0.ɵɵelementContainer(0, 6);
|
|
199
303
|
} if (rf & 2) {
|
|
200
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
304
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
201
305
|
i0.ɵɵnextContext();
|
|
202
306
|
const _r3 = i0.ɵɵreference(6);
|
|
203
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
307
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
204
308
|
} }
|
|
205
|
-
function
|
|
206
|
-
const
|
|
207
|
-
i0.ɵɵelementStart(0, "div",
|
|
309
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
+
const _r76 = i0.ɵɵgetCurrentView();
|
|
311
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
|
|
208
312
|
i0.ɵɵtext(2);
|
|
209
|
-
i0.ɵɵtemplate(3,
|
|
313
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
210
314
|
i0.ɵɵelementEnd();
|
|
211
|
-
i0.ɵɵelementStart(4, "mis-switch",
|
|
212
|
-
i0.ɵɵlistener("valueChanged", function
|
|
315
|
+
i0.ɵɵelementStart(4, "mis-switch", 30);
|
|
316
|
+
i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r76); const ctx_r75 = i0.ɵɵnextContext(2); const field_r13 = ctx_r75.$implicit; const formgroup_r15 = ctx_r75.formGroup; const ctx_r74 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r74.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
|
|
213
317
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵtemplate(5,
|
|
318
|
+
i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
|
|
215
319
|
i0.ɵɵelementEnd();
|
|
216
320
|
} if (rf & 2) {
|
|
217
|
-
const
|
|
218
|
-
const formgroup_r15 =
|
|
219
|
-
const field_r13 =
|
|
220
|
-
const control_r14 =
|
|
221
|
-
const
|
|
222
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5,
|
|
321
|
+
const ctx_r77 = i0.ɵɵnextContext(2);
|
|
322
|
+
const formgroup_r15 = ctx_r77.formGroup;
|
|
323
|
+
const field_r13 = ctx_r77.$implicit;
|
|
324
|
+
const control_r14 = ctx_r77.control;
|
|
325
|
+
const ctx_r68 = i0.ɵɵnextContext();
|
|
326
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r68.removeSepratorForSubFields ? "none" : ""));
|
|
223
327
|
i0.ɵɵadvance(2);
|
|
224
328
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
225
329
|
i0.ɵɵadvance(1);
|
|
@@ -229,118 +333,168 @@ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1
|
|
|
229
333
|
i0.ɵɵadvance(1);
|
|
230
334
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
231
335
|
} }
|
|
232
|
-
function
|
|
336
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
337
|
+
i0.ɵɵelementContainerStart(0);
|
|
338
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
339
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 29, i0.ɵɵtemplateRefExtractor);
|
|
340
|
+
i0.ɵɵelementContainerEnd();
|
|
341
|
+
} if (rf & 2) {
|
|
342
|
+
const _r67 = i0.ɵɵreference(3);
|
|
343
|
+
const ctx_r19 = i0.ɵɵnextContext(2);
|
|
344
|
+
i0.ɵɵadvance(1);
|
|
345
|
+
i0.ɵɵproperty("ngIf", ctx_r19.customBooleanToggle)("ngIfElse", _r67);
|
|
346
|
+
} }
|
|
347
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
348
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementContainerStart(0);
|
|
350
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
351
|
+
i0.ɵɵelementContainerEnd();
|
|
352
|
+
} if (rf & 2) {
|
|
353
|
+
const ctx_r82 = i0.ɵɵnextContext(2);
|
|
354
|
+
const field_r13 = ctx_r82.$implicit;
|
|
355
|
+
const control_r14 = ctx_r82.control;
|
|
356
|
+
const formgroup_r15 = ctx_r82.formGroup;
|
|
357
|
+
const ctx_r78 = i0.ɵɵnextContext();
|
|
358
|
+
i0.ɵɵadvance(1);
|
|
359
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r78.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
360
|
+
} }
|
|
361
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
233
362
|
i0.ɵɵelementStart(0, "span");
|
|
234
363
|
i0.ɵɵtext(1, " *");
|
|
235
364
|
i0.ɵɵelementEnd();
|
|
236
365
|
} }
|
|
237
|
-
function
|
|
238
|
-
const
|
|
239
|
-
i0.ɵɵelementStart(0, "img",
|
|
240
|
-
i0.ɵɵlistener("click", function
|
|
366
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
|
|
367
|
+
const _r88 = i0.ɵɵgetCurrentView();
|
|
368
|
+
i0.ɵɵelementStart(0, "img", 35);
|
|
369
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r88); const field_r13 = i0.ɵɵnextContext(3).$implicit; const ctx_r86 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r86.fieldRemoved.emit(field_r13)); });
|
|
241
370
|
i0.ɵɵelementEnd();
|
|
242
371
|
} if (rf & 2) {
|
|
243
|
-
const
|
|
244
|
-
i0.ɵɵproperty("src",
|
|
372
|
+
const ctx_r84 = i0.ɵɵnextContext(4);
|
|
373
|
+
i0.ɵɵproperty("src", ctx_r84.removeIconUrl, i0.ɵɵsanitizeUrl);
|
|
245
374
|
} }
|
|
246
|
-
function
|
|
375
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
247
376
|
i0.ɵɵelementContainer(0, 6);
|
|
248
377
|
} if (rf & 2) {
|
|
249
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
378
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
250
379
|
i0.ɵɵnextContext();
|
|
251
380
|
const _r3 = i0.ɵɵreference(6);
|
|
252
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
381
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
253
382
|
} }
|
|
254
|
-
const
|
|
255
|
-
function
|
|
256
|
-
const
|
|
257
|
-
i0.ɵɵelementStart(0, "div",
|
|
383
|
+
const _c14 = function (a0) { return { "removeable-container": a0 }; };
|
|
384
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
385
|
+
const _r92 = i0.ɵɵgetCurrentView();
|
|
386
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
|
|
258
387
|
i0.ɵɵtext(2);
|
|
259
|
-
i0.ɵɵtemplate(3,
|
|
388
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
260
389
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵelementStart(4, "div",
|
|
262
|
-
i0.ɵɵlistener("onChange", function
|
|
390
|
+
i0.ɵɵelementStart(4, "div", 32)(5, "mis-dropdown", 33);
|
|
391
|
+
i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r92); const ctx_r91 = i0.ɵɵnextContext(2); const field_r13 = ctx_r91.$implicit; const control_r14 = ctx_r91.control; const formgroup_r15 = ctx_r91.formGroup; const ctx_r90 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r90.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, $event)); });
|
|
263
392
|
i0.ɵɵelementEnd();
|
|
264
|
-
i0.ɵɵtemplate(6,
|
|
393
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 34);
|
|
265
394
|
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵtemplate(7,
|
|
395
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
|
|
267
396
|
i0.ɵɵelementEnd();
|
|
268
397
|
} if (rf & 2) {
|
|
269
|
-
const
|
|
270
|
-
const formgroup_r15 =
|
|
271
|
-
const field_r13 =
|
|
272
|
-
const control_r14 =
|
|
273
|
-
const
|
|
274
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10,
|
|
398
|
+
const ctx_r93 = i0.ɵɵnextContext(2);
|
|
399
|
+
const formgroup_r15 = ctx_r93.formGroup;
|
|
400
|
+
const field_r13 = ctx_r93.$implicit;
|
|
401
|
+
const control_r14 = ctx_r93.control;
|
|
402
|
+
const ctx_r80 = i0.ɵɵnextContext();
|
|
403
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r80.removeSepratorForSubFields ? "none" : ""));
|
|
275
404
|
i0.ɵɵadvance(2);
|
|
276
405
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
277
406
|
i0.ɵɵadvance(1);
|
|
278
407
|
i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
|
|
279
408
|
i0.ɵɵadvance(1);
|
|
280
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12,
|
|
409
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r13 == null ? null : field_r13.isRemoveable));
|
|
281
410
|
i0.ɵɵadvance(1);
|
|
282
411
|
i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r13.itemsList)("selectedItem", control_r14.value);
|
|
283
412
|
i0.ɵɵadvance(1);
|
|
284
|
-
i0.ɵɵproperty("ngIf", field_r13.isRemoveable &&
|
|
413
|
+
i0.ɵɵproperty("ngIf", field_r13.isRemoveable && ctx_r80.removeIconUrl);
|
|
285
414
|
i0.ɵɵadvance(1);
|
|
286
415
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
287
416
|
} }
|
|
288
|
-
function
|
|
417
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementContainerStart(0);
|
|
419
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
420
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
|
|
421
|
+
i0.ɵɵelementContainerEnd();
|
|
422
|
+
} if (rf & 2) {
|
|
423
|
+
const _r79 = i0.ɵɵreference(3);
|
|
424
|
+
const ctx_r20 = i0.ɵɵnextContext(2);
|
|
425
|
+
i0.ɵɵadvance(1);
|
|
426
|
+
i0.ɵɵproperty("ngIf", ctx_r20.customSingleSelectDropdown)("ngIfElse", _r79);
|
|
427
|
+
} }
|
|
428
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
429
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
+
i0.ɵɵelementContainerStart(0);
|
|
431
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
432
|
+
i0.ɵɵelementContainerEnd();
|
|
433
|
+
} if (rf & 2) {
|
|
434
|
+
const ctx_r98 = i0.ɵɵnextContext(2);
|
|
435
|
+
const field_r13 = ctx_r98.$implicit;
|
|
436
|
+
const control_r14 = ctx_r98.control;
|
|
437
|
+
const formgroup_r15 = ctx_r98.formGroup;
|
|
438
|
+
const ctx_r94 = i0.ɵɵnextContext();
|
|
439
|
+
i0.ɵɵadvance(1);
|
|
440
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r94.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
441
|
+
} }
|
|
442
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
289
443
|
i0.ɵɵelementStart(0, "span");
|
|
290
444
|
i0.ɵɵtext(1, " *");
|
|
291
445
|
i0.ɵɵelementEnd();
|
|
292
446
|
} }
|
|
293
|
-
function
|
|
294
|
-
i0.ɵɵelement(0, "img",
|
|
447
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
+
i0.ɵɵelement(0, "img", 41);
|
|
295
449
|
} if (rf & 2) {
|
|
296
|
-
const
|
|
297
|
-
i0.ɵɵproperty("src",
|
|
450
|
+
const ctx_r103 = i0.ɵɵnextContext(5);
|
|
451
|
+
i0.ɵɵproperty("src", ctx_r103.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
|
|
298
452
|
} }
|
|
299
|
-
const
|
|
300
|
-
function
|
|
301
|
-
const
|
|
302
|
-
i0.ɵɵelementStart(0, "div",
|
|
303
|
-
i0.ɵɵlistener("click", function
|
|
304
|
-
i0.ɵɵtemplate(1,
|
|
305
|
-
i0.ɵɵelementStart(2, "p",
|
|
453
|
+
const _c15 = function (a0) { return { "checkbox-active": a0 }; };
|
|
454
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
455
|
+
const _r106 = i0.ɵɵgetCurrentView();
|
|
456
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
457
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r106); const item_r102 = restoredCtx.$implicit; const ctx_r105 = i0.ɵɵnextContext(3); const field_r13 = ctx_r105.$implicit; const control_r14 = ctx_r105.control; const formgroup_r15 = ctx_r105.formGroup; const ctx_r104 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r104.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, item_r102)); });
|
|
458
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
|
|
459
|
+
i0.ɵɵelementStart(2, "p", 23);
|
|
306
460
|
i0.ɵɵtext(3);
|
|
307
461
|
i0.ɵɵelementEnd()();
|
|
308
462
|
} if (rf & 2) {
|
|
309
|
-
const
|
|
310
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
311
|
-
const
|
|
312
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3,
|
|
463
|
+
const item_r102 = ctx.$implicit;
|
|
464
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
465
|
+
const ctx_r100 = i0.ɵɵnextContext();
|
|
466
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r102.label === (control_r14.value == null ? null : control_r14.value.label)));
|
|
313
467
|
i0.ɵɵadvance(1);
|
|
314
|
-
i0.ɵɵproperty("ngIf",
|
|
468
|
+
i0.ɵɵproperty("ngIf", item_r102.label === (control_r14.value == null ? null : control_r14.value.label) && ctx_r100.activeBtnIconUrl);
|
|
315
469
|
i0.ɵɵadvance(2);
|
|
316
|
-
i0.ɵɵtextInterpolate(
|
|
470
|
+
i0.ɵɵtextInterpolate(item_r102.label);
|
|
317
471
|
} }
|
|
318
|
-
function
|
|
472
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
319
473
|
i0.ɵɵelementContainer(0, 6);
|
|
320
474
|
} if (rf & 2) {
|
|
321
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
475
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
322
476
|
i0.ɵɵnextContext();
|
|
323
477
|
const _r3 = i0.ɵɵreference(6);
|
|
324
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
478
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
325
479
|
} }
|
|
326
|
-
function
|
|
327
|
-
i0.ɵɵelementStart(0, "div",
|
|
480
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
|
|
328
482
|
i0.ɵɵtext(2);
|
|
329
|
-
i0.ɵɵtemplate(3,
|
|
483
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
330
484
|
i0.ɵɵelementEnd();
|
|
331
485
|
i0.ɵɵelement(4, "div", 15);
|
|
332
|
-
i0.ɵɵelementStart(5, "div",
|
|
333
|
-
i0.ɵɵtemplate(6,
|
|
486
|
+
i0.ɵɵelementStart(5, "div", 37);
|
|
487
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 38);
|
|
334
488
|
i0.ɵɵelementEnd();
|
|
335
|
-
i0.ɵɵtemplate(7,
|
|
489
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
|
|
336
490
|
i0.ɵɵelementEnd();
|
|
337
491
|
} if (rf & 2) {
|
|
338
|
-
const
|
|
339
|
-
const formgroup_r15 =
|
|
340
|
-
const field_r13 =
|
|
341
|
-
const control_r14 =
|
|
342
|
-
const
|
|
343
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5,
|
|
492
|
+
const ctx_r109 = i0.ɵɵnextContext(2);
|
|
493
|
+
const formgroup_r15 = ctx_r109.formGroup;
|
|
494
|
+
const field_r13 = ctx_r109.$implicit;
|
|
495
|
+
const control_r14 = ctx_r109.control;
|
|
496
|
+
const ctx_r96 = i0.ɵɵnextContext();
|
|
497
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r96.removeSepratorForSubFields ? "none" : ""));
|
|
344
498
|
i0.ɵɵadvance(2);
|
|
345
499
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
346
500
|
i0.ɵɵadvance(1);
|
|
@@ -350,61 +504,86 @@ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1
|
|
|
350
504
|
i0.ɵɵadvance(1);
|
|
351
505
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
352
506
|
} }
|
|
353
|
-
function
|
|
507
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
508
|
+
i0.ɵɵelementContainerStart(0);
|
|
509
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
510
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 36, i0.ɵɵtemplateRefExtractor);
|
|
511
|
+
i0.ɵɵelementContainerEnd();
|
|
512
|
+
} if (rf & 2) {
|
|
513
|
+
const _r95 = i0.ɵɵreference(3);
|
|
514
|
+
const ctx_r21 = i0.ɵɵnextContext(2);
|
|
515
|
+
i0.ɵɵadvance(1);
|
|
516
|
+
i0.ɵɵproperty("ngIf", ctx_r21.customSingleSelectRadio)("ngIfElse", _r95);
|
|
517
|
+
} }
|
|
518
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
519
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
+
i0.ɵɵelementContainerStart(0);
|
|
521
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
522
|
+
i0.ɵɵelementContainerEnd();
|
|
523
|
+
} if (rf & 2) {
|
|
524
|
+
const ctx_r114 = i0.ɵɵnextContext(2);
|
|
525
|
+
const field_r13 = ctx_r114.$implicit;
|
|
526
|
+
const control_r14 = ctx_r114.control;
|
|
527
|
+
const formgroup_r15 = ctx_r114.formGroup;
|
|
528
|
+
const ctx_r110 = i0.ɵɵnextContext();
|
|
529
|
+
i0.ɵɵadvance(1);
|
|
530
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r110.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
531
|
+
} }
|
|
532
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
354
533
|
i0.ɵɵelementStart(0, "span");
|
|
355
534
|
i0.ɵɵtext(1, " *");
|
|
356
535
|
i0.ɵɵelementEnd();
|
|
357
536
|
} }
|
|
358
|
-
function
|
|
359
|
-
i0.ɵɵelement(0, "img",
|
|
537
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
|
|
538
|
+
i0.ɵɵelement(0, "img", 41);
|
|
360
539
|
} if (rf & 2) {
|
|
361
|
-
const
|
|
362
|
-
i0.ɵɵproperty("src",
|
|
540
|
+
const ctx_r119 = i0.ɵɵnextContext(5);
|
|
541
|
+
i0.ɵɵproperty("src", ctx_r119.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
|
|
363
542
|
} }
|
|
364
|
-
function
|
|
365
|
-
const
|
|
366
|
-
i0.ɵɵelementStart(0, "div",
|
|
367
|
-
i0.ɵɵlistener("click", function
|
|
368
|
-
i0.ɵɵtemplate(1,
|
|
369
|
-
i0.ɵɵelementStart(2, "p",
|
|
543
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
544
|
+
const _r122 = i0.ɵɵgetCurrentView();
|
|
545
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
546
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r122); const item_r118 = restoredCtx.$implicit; const ctx_r121 = i0.ɵɵnextContext(3); const field_r13 = ctx_r121.$implicit; const control_r14 = ctx_r121.control; const formgroup_r15 = ctx_r121.formGroup; const ctx_r120 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r120.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, [item_r118])); });
|
|
547
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
|
|
548
|
+
i0.ɵɵelementStart(2, "p", 23);
|
|
370
549
|
i0.ɵɵtext(3);
|
|
371
550
|
i0.ɵɵelementEnd()();
|
|
372
551
|
} if (rf & 2) {
|
|
373
|
-
const
|
|
374
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
375
|
-
const
|
|
376
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3,
|
|
552
|
+
const item_r118 = ctx.$implicit;
|
|
553
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
554
|
+
const ctx_r116 = i0.ɵɵnextContext();
|
|
555
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value)));
|
|
377
556
|
i0.ɵɵadvance(1);
|
|
378
|
-
i0.ɵɵproperty("ngIf",
|
|
557
|
+
i0.ɵɵproperty("ngIf", ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value) && ctx_r116.activeBtnIconUrl);
|
|
379
558
|
i0.ɵɵadvance(2);
|
|
380
|
-
i0.ɵɵtextInterpolate(
|
|
559
|
+
i0.ɵɵtextInterpolate(item_r118.label);
|
|
381
560
|
} }
|
|
382
|
-
function
|
|
561
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
383
562
|
i0.ɵɵelementContainer(0, 6);
|
|
384
563
|
} if (rf & 2) {
|
|
385
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
564
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
386
565
|
i0.ɵɵnextContext();
|
|
387
566
|
const _r3 = i0.ɵɵreference(6);
|
|
388
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
567
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
389
568
|
} }
|
|
390
|
-
function
|
|
391
|
-
i0.ɵɵelementStart(0, "div",
|
|
569
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
570
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
|
|
392
571
|
i0.ɵɵtext(2);
|
|
393
|
-
i0.ɵɵtemplate(3,
|
|
572
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
394
573
|
i0.ɵɵelementEnd();
|
|
395
574
|
i0.ɵɵelement(4, "div", 15);
|
|
396
|
-
i0.ɵɵelementStart(5, "div",
|
|
397
|
-
i0.ɵɵtemplate(6,
|
|
575
|
+
i0.ɵɵelementStart(5, "div", 37);
|
|
576
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 38);
|
|
398
577
|
i0.ɵɵelementEnd();
|
|
399
|
-
i0.ɵɵtemplate(7,
|
|
578
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
|
|
400
579
|
i0.ɵɵelementEnd();
|
|
401
580
|
} if (rf & 2) {
|
|
402
|
-
const
|
|
403
|
-
const formgroup_r15 =
|
|
404
|
-
const field_r13 =
|
|
405
|
-
const control_r14 =
|
|
406
|
-
const
|
|
407
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5,
|
|
581
|
+
const ctx_r125 = i0.ɵɵnextContext(2);
|
|
582
|
+
const formgroup_r15 = ctx_r125.formGroup;
|
|
583
|
+
const field_r13 = ctx_r125.$implicit;
|
|
584
|
+
const control_r14 = ctx_r125.control;
|
|
585
|
+
const ctx_r112 = i0.ɵɵnextContext();
|
|
586
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r112.removeSepratorForSubFields ? "none" : ""));
|
|
408
587
|
i0.ɵɵadvance(2);
|
|
409
588
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
410
589
|
i0.ɵɵadvance(1);
|
|
@@ -414,37 +593,62 @@ function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1
|
|
|
414
593
|
i0.ɵɵadvance(1);
|
|
415
594
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
416
595
|
} }
|
|
417
|
-
function
|
|
596
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
597
|
+
i0.ɵɵelementContainerStart(0);
|
|
598
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
599
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 42, i0.ɵɵtemplateRefExtractor);
|
|
600
|
+
i0.ɵɵelementContainerEnd();
|
|
601
|
+
} if (rf & 2) {
|
|
602
|
+
const _r111 = i0.ɵɵreference(3);
|
|
603
|
+
const ctx_r22 = i0.ɵɵnextContext(2);
|
|
604
|
+
i0.ɵɵadvance(1);
|
|
605
|
+
i0.ɵɵproperty("ngIf", ctx_r22.customMultiSelectCheckbox)("ngIfElse", _r111);
|
|
606
|
+
} }
|
|
607
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
608
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
609
|
+
i0.ɵɵelementContainerStart(0);
|
|
610
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
|
|
611
|
+
i0.ɵɵelementContainerEnd();
|
|
612
|
+
} if (rf & 2) {
|
|
613
|
+
const ctx_r130 = i0.ɵɵnextContext(2);
|
|
614
|
+
const field_r13 = ctx_r130.$implicit;
|
|
615
|
+
const control_r14 = ctx_r130.control;
|
|
616
|
+
const formgroup_r15 = ctx_r130.formGroup;
|
|
617
|
+
const ctx_r126 = i0.ɵɵnextContext();
|
|
618
|
+
i0.ɵɵadvance(1);
|
|
619
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r126.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
|
|
620
|
+
} }
|
|
621
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
418
622
|
i0.ɵɵelementStart(0, "span");
|
|
419
623
|
i0.ɵɵtext(1, " *");
|
|
420
624
|
i0.ɵɵelementEnd();
|
|
421
625
|
} }
|
|
422
|
-
function
|
|
626
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
423
627
|
i0.ɵɵelementContainer(0, 6);
|
|
424
628
|
} if (rf & 2) {
|
|
425
|
-
const control_r14 = i0.ɵɵnextContext(
|
|
629
|
+
const control_r14 = i0.ɵɵnextContext(3).control;
|
|
426
630
|
i0.ɵɵnextContext();
|
|
427
631
|
const _r3 = i0.ɵɵreference(6);
|
|
428
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2,
|
|
632
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
|
|
429
633
|
} }
|
|
430
|
-
function
|
|
431
|
-
const
|
|
432
|
-
i0.ɵɵelementStart(0, "div",
|
|
634
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
635
|
+
const _r136 = i0.ɵɵgetCurrentView();
|
|
636
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
|
|
433
637
|
i0.ɵɵtext(2);
|
|
434
|
-
i0.ɵɵtemplate(3,
|
|
638
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 10);
|
|
435
639
|
i0.ɵɵelementEnd();
|
|
436
|
-
i0.ɵɵelementStart(4, "mis-multi-select-dropdown",
|
|
437
|
-
i0.ɵɵlistener("onChange", function
|
|
640
|
+
i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
|
|
641
|
+
i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r136); const ctx_r135 = i0.ɵɵnextContext(2); const field_r13 = ctx_r135.$implicit; const control_r14 = ctx_r135.control; const formgroup_r15 = ctx_r135.formGroup; const ctx_r134 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r134.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, $event)); });
|
|
438
642
|
i0.ɵɵelementEnd();
|
|
439
|
-
i0.ɵɵtemplate(5,
|
|
643
|
+
i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
|
|
440
644
|
i0.ɵɵelementEnd();
|
|
441
645
|
} if (rf & 2) {
|
|
442
|
-
const
|
|
443
|
-
const formgroup_r15 =
|
|
444
|
-
const field_r13 =
|
|
445
|
-
const control_r14 =
|
|
446
|
-
const
|
|
447
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11,
|
|
646
|
+
const ctx_r137 = i0.ɵɵnextContext(2);
|
|
647
|
+
const formgroup_r15 = ctx_r137.formGroup;
|
|
648
|
+
const field_r13 = ctx_r137.$implicit;
|
|
649
|
+
const control_r14 = ctx_r137.control;
|
|
650
|
+
const ctx_r128 = i0.ɵɵnextContext();
|
|
651
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r128.removeSepratorForSubFields ? "none" : ""));
|
|
448
652
|
i0.ɵɵadvance(2);
|
|
449
653
|
i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
|
|
450
654
|
i0.ɵɵadvance(1);
|
|
@@ -454,15 +658,26 @@ function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1
|
|
|
454
658
|
i0.ɵɵadvance(1);
|
|
455
659
|
i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
|
|
456
660
|
} }
|
|
661
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
662
|
+
i0.ɵɵelementContainerStart(0);
|
|
663
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 11);
|
|
664
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 43, i0.ɵɵtemplateRefExtractor);
|
|
665
|
+
i0.ɵɵelementContainerEnd();
|
|
666
|
+
} if (rf & 2) {
|
|
667
|
+
const _r127 = i0.ɵɵreference(3);
|
|
668
|
+
const ctx_r23 = i0.ɵɵnextContext(2);
|
|
669
|
+
i0.ɵɵadvance(1);
|
|
670
|
+
i0.ɵɵproperty("ngIf", ctx_r23.customMultiSelectDropdown)("ngIfElse", _r127);
|
|
671
|
+
} }
|
|
457
672
|
function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
458
|
-
i0.ɵɵtemplate(0,
|
|
459
|
-
i0.ɵɵtemplate(1,
|
|
460
|
-
i0.ɵɵtemplate(2,
|
|
461
|
-
i0.ɵɵtemplate(3,
|
|
462
|
-
i0.ɵɵtemplate(4,
|
|
463
|
-
i0.ɵɵtemplate(5,
|
|
464
|
-
i0.ɵɵtemplate(6,
|
|
465
|
-
i0.ɵɵtemplate(7,
|
|
673
|
+
i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 10);
|
|
674
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 10);
|
|
675
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 10);
|
|
676
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 10);
|
|
677
|
+
i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 10);
|
|
678
|
+
i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 10);
|
|
679
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 10);
|
|
680
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 10);
|
|
466
681
|
} if (rf & 2) {
|
|
467
682
|
const field_r13 = ctx.$implicit;
|
|
468
683
|
i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && (field_r13.fieldInputType === "text" || field_r13.fieldInputType === "number"));
|
|
@@ -483,25 +698,25 @@ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
483
698
|
} }
|
|
484
699
|
function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
485
700
|
i0.ɵɵelementContainerStart(0);
|
|
486
|
-
i0.ɵɵelementStart(1, "p",
|
|
701
|
+
i0.ɵɵelementStart(1, "p", 46);
|
|
487
702
|
i0.ɵɵtext(2);
|
|
488
703
|
i0.ɵɵelementEnd();
|
|
489
|
-
i0.ɵɵelement(3, "div",
|
|
704
|
+
i0.ɵɵelement(3, "div", 47);
|
|
490
705
|
i0.ɵɵelementContainerEnd();
|
|
491
706
|
} if (rf & 2) {
|
|
492
|
-
const
|
|
707
|
+
const error_r140 = ctx.$implicit;
|
|
493
708
|
i0.ɵɵadvance(2);
|
|
494
|
-
i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" +
|
|
709
|
+
i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r140.value, " ");
|
|
495
710
|
} }
|
|
496
711
|
function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
497
|
-
i0.ɵɵelementStart(0, "div",
|
|
712
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
498
713
|
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 1, "ng-container", 9);
|
|
499
714
|
i0.ɵɵpipe(2, "keyvalue");
|
|
500
715
|
i0.ɵɵelementEnd();
|
|
501
716
|
} if (rf & 2) {
|
|
502
|
-
const
|
|
717
|
+
const errors_r138 = ctx.$implicit;
|
|
503
718
|
i0.ɵɵadvance(1);
|
|
504
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1,
|
|
719
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r138));
|
|
505
720
|
} }
|
|
506
721
|
export class DynamicFormComponent {
|
|
507
722
|
constructor() {
|
|
@@ -745,7 +960,26 @@ export class DynamicFormComponent {
|
|
|
745
960
|
}
|
|
746
961
|
}
|
|
747
962
|
DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); };
|
|
748
|
-
DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]],
|
|
963
|
+
DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
964
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
965
|
+
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
966
|
+
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
|
967
|
+
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
|
968
|
+
i0.ɵɵcontentQuery(dirIndex, _c4, 5);
|
|
969
|
+
i0.ɵɵcontentQuery(dirIndex, _c5, 5);
|
|
970
|
+
i0.ɵɵcontentQuery(dirIndex, _c6, 5);
|
|
971
|
+
i0.ɵɵcontentQuery(dirIndex, _c7, 5);
|
|
972
|
+
} if (rf & 2) {
|
|
973
|
+
let _t;
|
|
974
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
|
|
975
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
|
|
976
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
|
|
977
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
|
|
978
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
|
|
979
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
|
|
980
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
|
|
981
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
|
|
982
|
+
} }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], ["defaultInputTextNumber", ""], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["defaultInputTextarea", ""], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], ["defaultInputDate", ""], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], ["defaultBooleanToggle", ""], [3, "control", "valueChanged"], ["defaultSingleSelectDropdown", ""], [3, "ngClass"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "src", "click"], ["defaultSingleSelectRadio", ""], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
749
983
|
i0.ɵɵelementStart(0, "form", 0);
|
|
750
984
|
i0.ɵɵelementContainerStart(1, 1);
|
|
751
985
|
i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 2);
|
|
@@ -760,7 +994,7 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
|
|
|
760
994
|
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] });
|
|
761
995
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
|
|
762
996
|
type: Component,
|
|
763
|
-
args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 \" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
|
|
997
|
+
args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 \" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
|
|
764
998
|
}], function () { return []; }, { formFields: [{
|
|
765
999
|
type: Input
|
|
766
1000
|
}], formValues: [{
|
|
@@ -781,6 +1015,30 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
|
|
|
781
1015
|
type: Output
|
|
782
1016
|
}], fieldRemoved: [{
|
|
783
1017
|
type: Output
|
|
1018
|
+
}], customInputTextNumber: [{
|
|
1019
|
+
type: ContentChild,
|
|
1020
|
+
args: ["customInputTextNumber", { static: false }]
|
|
1021
|
+
}], customInputTextarea: [{
|
|
1022
|
+
type: ContentChild,
|
|
1023
|
+
args: ["customInputTextarea", { static: false }]
|
|
1024
|
+
}], customInputDate: [{
|
|
1025
|
+
type: ContentChild,
|
|
1026
|
+
args: ["customInputDate", { static: false }]
|
|
1027
|
+
}], customBooleanToggle: [{
|
|
1028
|
+
type: ContentChild,
|
|
1029
|
+
args: ["customBooleanToggle", { static: false }]
|
|
1030
|
+
}], customSingleSelectDropdown: [{
|
|
1031
|
+
type: ContentChild,
|
|
1032
|
+
args: ["customSingleSelectDropdown", { static: false }]
|
|
1033
|
+
}], customSingleSelectRadio: [{
|
|
1034
|
+
type: ContentChild,
|
|
1035
|
+
args: ["customSingleSelectRadio", { static: false }]
|
|
1036
|
+
}], customMultiSelectCheckbox: [{
|
|
1037
|
+
type: ContentChild,
|
|
1038
|
+
args: ["customMultiSelectCheckbox", { static: false }]
|
|
1039
|
+
}], customMultiSelectDropdown: [{
|
|
1040
|
+
type: ContentChild,
|
|
1041
|
+
args: ["customMultiSelectDropdown", { static: false }]
|
|
784
1042
|
}] }); })();
|
|
785
1043
|
export const dynamicFieldValidator = (validators) => {
|
|
786
1044
|
return (control) => {
|
|
@@ -832,4 +1090,4 @@ export const dynamicFieldValidator = (validators) => {
|
|
|
832
1090
|
return errors;
|
|
833
1091
|
};
|
|
834
1092
|
};
|
|
835
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7O0lBdUJyTSw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7O0lBUTNGLDJCQUllOzs7OztJQUhiLHNDQUF1QywyRUFBQTs7Ozs7O0lBYjNDLCtCQUVnSCxZQUFBO0lBRTVHLFlBQWtCO0lBQUEsNEZBQXVFO0lBQzNGLGlCQUFJO0lBQ0osMEJBQW9DO0lBQ3BDLGlDQUl1RDtJQUhy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QUFDLENBQUE7b0JBQ25DLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtZHluYW1pYy1mb3JtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBmb3JtRmllbGRzOiAgRHluYW1pYyBmaWVsZHMgcmVjaWV2ZWQgZnJvbSB0aGUgQVBJIG1ldGFkYXRhIHRvIGJ1aWxkIGEgZHluYW1pYyBmb3JtXG4gICAqIGZvcm1WYWx1ZXM6ICBIb2xkcyB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZm9ybSB3aXRoIFwia2V5XCIgYmVpbmcgZHluYW1pYyBmaWVsZCBcInRpdGxlXCJcbiAgICogICAgICAgICAgICAgIGFuZCB2YWx1ZSBiZWluZyB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4gPSBbXTtcbiAgQElucHV0KCkgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAvLyBOZWVkIHRvIGRlcHJlY2F0ZSB0aGVzZSBpbnB1dHMgYW5kIHVzZSBjb25zdGFudHMuXG4gIEBJbnB1dCgpIGFjdGl2ZUJ0bkljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSBjYWxlbmRhckljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSByZW1vdmVJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZFJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4oKTtcblxuICBkeW5hbWljRm9ybUFQSTogTnNEeW5hbWljRm9ybS5JRHluYW1pY0Zvcm1BUEk7XG4gIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGRpbmcgdGhlIGZvcm1cbiAgICB0aGlzLmR5bmFtaWNGb3JtID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGb3JtKHRoaXMuZm9ybUZpZWxkcywgdGhpcy5mb3JtVmFsdWVzKTtcblxuICAgIC8vIFN1YnNjcmliaW5nIHRvIGZvcm0gY2hhbmdlcyBhbmQgZW1pdGluZyB2YWx1ZXMuXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kID0gdGhpcy5keW5hbWljRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uRm9ybVZhbHVlQ2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgLy9hcGkgdG8gZXhwb3NlIGZ1bmN0aW9uc1xuICAgIHRoaXMuZHluYW1pY0Zvcm1BUEkgPSB7XG4gICAgICBkZWZhdWx0Rm9ybVZhbHVlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtQVBJKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoZm9ybVZhbHVlcyk7XG4gICAgY29uc29sZS5sb2coZm9ybVZhbHVlcylcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdChmb3JtVmFsdWVzOiBBcnJheTxhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IGR5bmFtaWNGaWVsZHNWYWx1ZSA9IHt9O1xuICAgIGZvcm1WYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUodGhpcy5mb3JtRmllbGRzW2luZGV4XSwgZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZS5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlcyA9IHt9XG4gICAgICAgIGxldCBzdWJGaWVsZCA9IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uc3ViRmllbGRzXG4gICAgICAgIGlmKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyB8fCB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0Jykge1xuICAgICAgICAgIHN1YkZpZWxkID0gc3ViRmllbGQuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09IGZpZWxkVmFsdWUudmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkVmFsdWUuc3ViRmllbGRzLmZvckVhY2goKHN1YkZpZWxkVmFsdWUsIHN1YkluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHN1YkZvcm1GaWVsZCA9IHN1YkZpZWxkW3N1YkluZGV4XVxuICAgICAgICAgIGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1tzdWJGb3JtRmllbGQuY29uZmlnTmFtZV0gPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHN1YkZvcm1GaWVsZCwgc3ViRmllbGRWYWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSB7XG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgIHN1YkZpZWxkczogZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkeW5hbWljRmllbGRzVmFsdWU7XG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRm9ybShcbiAgICBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+LFxuICAgIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKVxuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdPy52YWx1ZSA/IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0udmFsdWUgOiBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdXG4gICAgICBsZXQgZmllbGRDb250cm9sID0gdGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmaWVsZCwgZmllbGRWYWx1ZSk7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhmb3JtVmFsdWVzLCBmaWVsZCwgZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgICAgdmFsdWU6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgc3ViRmllbGRzOiBzdWJGaWVsZHNDb250cm9sc1xuICAgICAgfSkpXG4gICAgfSAgXG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGR5bmFtaWNGaWVsZHM6IGZvcm1BcnJheVxuICAgIH0pXG4gIH1cbiAgXG4gIGdldER5bmFtaWNGaWVsZHNDb250cm9scygpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoXCJkeW5hbWljRmllbGRzXCIpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cbiAgdXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChmaWVsZC5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKHRoaXMuZm9ybVZhbHVlcywgZmllbGQsIHZhbHVlKTtcbiAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzdWJGaWVsZHMnKVxuICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ3N1YkZpZWxkcycsIHN1YkZpZWxkc0NvbnRyb2xzKVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChjb250cm9sLnZhbHVlPy52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZSk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZXM6IEFycmF5PGFueT5cbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBjb250cm9sLnZhbHVlO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgbGV0IGl0ZW1JbmRleCA9IHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlLmxhYmVsKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi52YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlcyk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgaXNDaGVja0JveFNlbGVjdGVkKHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUpID4gLTE7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhzdWJmaWVsZHMsIHZhbHVlLCBzdWJGaWVsZEluZGV4KSB7XG4gICAgdHJ5e1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTdWJGaWVsZENvbmZpZyA9IHN1YmZpZWxkcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhcmVudENvbmZpZ1ZhbHVlID09PSB2YWx1ZSlbc3ViRmllbGRJbmRleF07XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJGaWVsZENvbmZpZztcbiAgICB9XG4gICAgY2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YmZpZWxkIGluZGV4IG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZmluZFNlbGVjdGVkU3ViRmllbGRDb25maWcoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUsaiksXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIChmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHQnIHx8IGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJylcIj5cbiAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRhcmVhXCIgdHlwZT1cInRleHRcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ2RhdGUnIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgI2RwIC8+XG4gICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J3JlbW92ZWFibGUtY29udGFpbmVyJyA6IGZpZWxkPy5pc1JlbW92ZWFibGV9XCI+XG4gICAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgPGltZyAqbmdJZj1cImZpZWxkLmlzUmVtb3ZlYWJsZSAmJiByZW1vdmVJY29uVXJsXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIFtzcmNdPVwicmVtb3ZlSWNvblVybFwiIChjbGljayk9XCJmaWVsZFJlbW92ZWQuZW1pdChmaWVsZClcIj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAncmFkaW8nXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSB9XCJcbiAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBbaXRlbV0pXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiXG4gICAgICAgICAgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cImNvbnRyb2wudmFsdWVcIiAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJTsgaGVpZ2h0OiAwXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
1093
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7Ozs7SUFvQnpOLDZCQUF5RTtJQUN2RSxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQTBDO0lBQTFDLGdFQUEwQywrRkFBQTs7O0lBUXJCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFRNUYsMkJBSWU7Ozs7O0lBSGIsc0NBQXVDLDRFQUFBOzs7Ozs7SUFaM0MsK0JBQytILFlBQUE7SUFFM0gsWUFBbUI7SUFBQSxtSEFBdUU7SUFDNUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsaUNBSXVEO0lBSHJELGdWQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFEcEUsaUJBSXVEO0lBQ3ZELG1JQUllO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBZkosaVZBQTRIO0lBRTFILGVBQW1CO0lBQW5CLDJFQUFtQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUc5QyxlQUE2QjtJQUE3QiwrQ0FBNkIsNEJBQUEsK0dBQUEscUZBQUEsdURBQUE7SUFLakQsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFuQjVELDZCQUE0SDtJQUMxSCxxSEFLZTtJQUNmLHFKQWtCYztJQUNoQiwwQkFBZTs7OztJQXpCRSxlQUE2QjtJQUE3QixvREFBNkIsa0JBQUE7Ozs7SUE2QjVDLDZCQUFxRTtJQUNuRSxpSUFHYTtJQUNmLDBCQUFlOzs7Ozs7O0lBSGIsZUFBd0M7SUFBeEMsOERBQXdDLCtGQUFBOzs7SUFRbkIsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBTXhGLDJCQUVlOzs7OztJQUZ5QyxzQ0FBdUMsNEVBQUE7Ozs7SUFUbkcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsb0NBRTBLO0lBQW5FLG1WQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFBQyxpQkFBVztJQUNuTCxtSUFFZTtJQUNuQixpQkFBTTs7Ozs7OztJQVhOLGlWQUE0SDtJQUV4SCxlQUFpQjtJQUFqQiwrQ0FBaUI7SUFBTyxlQUFxRDtJQUFyRCw4RUFBcUQ7SUFJN0UsZUFBbUY7SUFBbkYsMkhBQW1GLHFGQUFBLDRCQUFBO0lBRXBFLGVBQXVDO0lBQXZDLGdFQUF1Qzs7O0lBakI5RCw2QkFBeUY7SUFDdkYscUhBS2U7SUFDZixxSkFjYztJQUNoQiwwQkFBZTs7OztJQXJCRSxlQUEyQjtJQUEzQixrREFBMkIsa0JBQUE7Ozs7SUF5QjFDLDZCQUE2RDtJQUMzRCxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQW9DO0lBQXBDLDBEQUFvQywrRkFBQTs7O0lBU2hCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFNekYsK0JBQ3lCO0lBQXZCLGlPQUFTLGVBQUEsWUFBVSxDQUFBLElBQUM7SUFEdEIsaUJBQ3lCOzs7SUFEK0MsK0RBQXVCOzs7SUFHakcsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1Qyw0RUFBQTs7OztJQWJqRywrQkFFeUUsWUFBQTtJQUVyRSxZQUFrQjtJQUFBLHlIQUF1RTtJQUMzRixpQkFBSTtJQUNKLCtCQUFtQyxvQkFBQTtJQUUvQiwwT0FBYyxlQUFBLDRCQUF3QixDQUFBLElBQUM7SUFEekMsaUJBRWdDO0lBQ2hDLHVIQUN5QjtJQUMzQixpQkFBTTtJQUNOLHlJQUVlO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBZk4saVZBQTRIO0lBR3hILGVBQWtCO0lBQWxCLGdEQUFrQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUdsQyxlQUE4QjtJQUE5QixnREFBOEIsbUNBQUEsY0FBQSw0QkFBQTtJQUdsRCxlQUFxQjtJQUFyQiw4Q0FBcUI7SUFHaEMsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFieEQsa0hBZ0JNOzs7SUFkSCw2RkFBb0U7OztJQVYzRSw2QkFBcUY7SUFDbkYscUhBS2U7SUFDZixvSkFrQmM7SUFDaEIsMEJBQWU7Ozs7SUF6QkUsZUFBdUI7SUFBdkIsOENBQXVCLGtCQUFBOzs7O0lBNkJ0Qyw2QkFBcUU7SUFDbkUsaUlBR2U7SUFDakIsMEJBQWU7Ozs7Ozs7SUFIWCxlQUF3QztJQUF4Qyw4REFBd0MsK0ZBQUE7OztJQVFyQiw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7SUFHMUYsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1Qyw0RUFBQTs7OztJQU5qRywrQkFDNkgsWUFBQTtJQUV6SCxZQUFpQjtJQUFBLG1IQUF1RTtJQUMxRixpQkFBSTtJQUNKLHNDQUFrRztJQUFsRSxtVkFBZ0IsZUFBQSxnRUFBZ0QsQ0FBQSxJQUFDO0lBQUMsaUJBQWE7SUFDL0csbUlBRWU7SUFDakIsaUJBQU07Ozs7Ozs7SUFSTixpVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBRW5FLGVBQW1CO0lBQW5CLHFDQUFtQjtJQUNoQixlQUF1QztJQUF2QyxnRUFBdUM7OztJQWQ1RCw2QkFBeUY7SUFDdkYscUhBS2U7SUFDZixvSkFXYztJQUNoQiwwQkFBZTs7OztJQWxCRSxlQUEyQjtJQUEzQixrREFBMkIsa0JBQUE7Ozs7SUFzQjFDLDZCQUFtRjtJQUNqRixpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQStDO0lBQS9DLHFFQUErQywrRkFBQTs7O0lBUTVCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFNeEYsK0JBQThIO0lBQW5DLDRQQUFTLGVBQUEsb0NBQXdCLENBQUEsSUFBQztJQUE3SCxpQkFBOEg7OztJQUF6RCw2REFBcUI7OztJQUU1RiwyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7OztJQVhqRywrQkFDK0gsWUFBQTtJQUUzSCxZQUFpQjtJQUFBLG1IQUF1RTtJQUMxRixpQkFBSTtJQUNKLCtCQUFnRSx1QkFBQTtJQUU5RCxrWEFBWSxlQUFBLHlGQUFxRSxDQUFBLElBQUU7SUFDbkYsaUJBQWU7SUFDZixpSEFBOEg7SUFDaEksaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWJKLGtWQUE0SDtJQUUxSCxlQUFpQjtJQUFqQiwrQ0FBaUI7SUFBTyxlQUFxRDtJQUFyRCw4RUFBcUQ7SUFFMUUsZUFBMEQ7SUFBMUQseUdBQTBEO0lBQy9DLGVBQXVCO0lBQXZCLHFDQUF1QixrQkFBQSw2QkFBQSxtQ0FBQTtJQUcvQixlQUF5QztJQUF6QyxzRUFBeUM7SUFFbEMsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFuQjVELDZCQUFnRztJQUM5RixxSEFLZTtJQUNmLHFKQWdCYztJQUNoQiwwQkFBZ0I7Ozs7SUF2QkMsZUFBa0M7SUFBbEMseURBQWtDLGtCQUFBOzs7O0lBNEJqRCw2QkFBNkU7SUFDM0UsaUlBR2U7SUFDakIsMEJBQWU7Ozs7Ozs7SUFIWCxlQUE0QztJQUE1QyxrRUFBNEMsK0ZBQUE7OztJQVF6Qiw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7SUFPdEYsMEJBQXlHOzs7SUFBbEMsaUVBQXdCOzs7OztJQUhqRywrQkFFaUY7SUFBL0Usc2FBQVMsZUFBQSw2RkFBbUUsQ0FBQSxJQUFFO0lBQzlFLHVIQUF5RztJQUN6Ryw2QkFBYztJQUFBLFlBQWdCO0lBQUEsaUJBQUksRUFBQTs7Ozs7SUFIbEMsdUlBQXNFO0lBRWhFLGVBQStEO0lBQS9ELG9JQUErRDtJQUN2RCxlQUFnQjtJQUFoQixxQ0FBZ0I7OztJQUdsQywyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7SUFkakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsK0JBQStCO0lBQzdCLGlIQUtNO0lBQ1IsaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWhCTixpVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBSXpCLGVBQWtCO0lBQWxCLDZDQUFrQjtJQU96RCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQXRCNUQsNkJBQTZGO0lBQzNGLHFIQUtlO0lBQ2Ysb0pBbUJjO0lBQ2hCLDBCQUFlOzs7O0lBMUJFLGVBQStCO0lBQS9CLHNEQUErQixrQkFBQTs7OztJQStCOUMsNkJBQWlGO0lBQy9FLGlJQUdlO0lBQ2pCLDBCQUFlOzs7Ozs7O0lBSFgsZUFBOEM7SUFBOUMscUVBQThDLCtGQUFBOzs7SUFRM0IsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBT3RGLDBCQUNXOzs7SUFEb0UsaUVBQXdCOzs7O0lBSHpHLCtCQUVpRjtJQUEvRSxzYUFBUyxlQUFBLDhGQUFvRSxDQUFBLElBQUM7SUFDOUUsdUhBQ1c7SUFDWCw2QkFBYztJQUFBLFlBQWdCO0lBQUEsaUJBQUksRUFBQTs7Ozs7SUFKbEMsc0hBQWdGO0lBRTFFLGVBQXVFO0lBQXZFLG1IQUF1RTtJQUUvRCxlQUFnQjtJQUFoQixxQ0FBZ0I7OztJQUdsQywyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7SUFmakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsK0JBQStCO0lBQzdCLGlIQU1NO0lBQ1IsaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWpCTixrVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBSXpCLGVBQWtCO0lBQWxCLDZDQUFrQjtJQVF6RCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQXZCNUQsNkJBQStGO0lBQzdGLHFIQUtlO0lBQ2Ysb0pBb0JjO0lBQ2hCLDBCQUFlOzs7O0lBM0JFLGVBQWlDO0lBQWpDLHdEQUFpQyxtQkFBQTs7OztJQWdDaEQsNkJBQWlGO0lBQy9FLGlJQUdlO0lBQ2pCLDBCQUFlOzs7Ozs7O0lBSFgsZUFBOEM7SUFBOUMscUVBQThDLCtGQUFBOzs7SUFRM0IsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBSzFGLDJCQUVlOzs7OztJQUZ5QyxzQ0FBdUMsNEVBQUE7Ozs7SUFSakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSixxREFFcUg7SUFBbkYscVlBQVksZUFBQSx5RkFBb0UsQ0FBQSxJQUFFO0lBQUMsaUJBQTRCO0lBQ2pKLG1JQUVlO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBVk4sbVZBQTRIO0lBRXhILGVBQWlCO0lBQWpCLCtDQUFpQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUVwRCxlQUFpQjtJQUFqQiwrQkFBaUIsMkJBQUEsOEJBQUEsd0JBQUEseUJBQUEsNkJBQUEsb0NBQUE7SUFHN0IsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFoQjVELDZCQUErRjtJQUM3RixxSEFLZTtJQUNmLHFKQWFjO0lBQ2hCLDBCQUFlOzs7O0lBcEJFLGVBQWlDO0lBQWpDLHdEQUFpQyxtQkFBQTs7O0lBck1sRCxzR0EwQmU7SUFHZixzR0FzQmU7SUFHZixzR0EwQmU7SUFHZixzR0FtQmU7SUFHZixzR0F3QmdCO0lBSWhCLHNHQTJCZTtJQUlmLHNHQTRCZTtJQUlmLHNHQXFCZTs7O0lBek5BLHdJQUEyRztJQTZCM0csZUFBd0U7SUFBeEUsaUdBQXdFO0lBeUJ4RSxlQUFvRTtJQUFwRSw2RkFBb0U7SUE2QnBFLGVBQXdFO0lBQXhFLGlHQUF3RTtJQXNCeEUsZUFBK0U7SUFBL0Usd0dBQStFO0lBNEIvRSxlQUE0RTtJQUE1RSxxR0FBNEU7SUErQjVFLGVBQThFO0lBQTlFLHVHQUE4RTtJQWdDOUUsZUFBOEU7SUFBOUUsdUdBQThFOzs7SUEyQjNGLDZCQUFzRDtJQUNwRCw2QkFBYztJQUNaLFlBQ0Y7SUFBQSxpQkFBSTtJQUNKLDBCQUErQztJQUNqRCwwQkFBZTs7O0lBSFgsZUFDRjtJQURFLG9FQUNGOzs7SUFKSiwrQkFBbUM7SUFDakMscUdBS2U7O0lBQ2pCLGlCQUFNOzs7SUFONEIsZUFBb0I7SUFBcEIsMkRBQW9COztBRGpQeEQsTUFBTSxPQUFPLG9CQUFvQjtJQTJEL0I7UUExREE7Ozs7V0FJRztRQUNNLGVBQVUsR0FBdUMsRUFBRSxDQUFDO1FBQ3BELGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQ2pELG9EQUFvRDtRQUMzQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBTTVDOztXQUVHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUNuRTs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xEOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7SUE2QjFELENBQUM7SUFFaEIsUUFBUTtRQUNOLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RSxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckYsQ0FBQztTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUNELGdDQUFnQyxDQUFDLFVBQXNCO1FBQ3JELElBQUksa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVGLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLHdCQUF3QixHQUFHLEVBQUUsQ0FBQTtnQkFDakMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUE7Z0JBQy9DLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEtBQUssY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxLQUFLLGFBQWEsRUFBRTtvQkFDNUcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNqRztnQkFDRCxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUNyQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQTtnQkFDL0csQ0FBQyxDQUFDLENBQUE7Z0JBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDdEQsS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLFNBQVMsRUFBRSx3QkFBd0I7aUJBQ3BDLENBQUE7YUFDRjtpQkFDSTtnQkFDSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsbUJBQW1CLENBQ2pCLFVBQThDLEVBQzlDLFVBQWtDO1FBRWxDLElBQUksU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFeEMsS0FBSyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUU7WUFDNUIsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3hILElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0YsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDO2dCQUNsQyxLQUFLLEVBQUUsWUFBWTtnQkFDbkIsU0FBUyxFQUFFLGlCQUFpQjthQUM3QixDQUFDLENBQUMsQ0FBQTtTQUNKO1FBQ0QsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQzFCLGFBQWEsRUFBRSxTQUFTO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQXFCLENBQUM7SUFDbkUsQ0FBQztJQUNELHNCQUFzQixDQUNwQixLQUFrQyxFQUNsQyxTQUEyQixFQUMzQixLQUFVO1FBRVYsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckYsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNwQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3JEO0lBQ0gsQ0FBQztJQUNELGtDQUFrQyxDQUNoQyxLQUFrQyxFQUNsQyxPQUEyQixFQUMzQixTQUEyQixFQUMzQixLQUFVO1FBRVYsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O1lBQ0ksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELGlDQUFpQyxDQUMvQixLQUFrQyxFQUNsQyxPQUEyQixFQUMzQixTQUEyQixFQUMzQixNQUFrQjtRQUVsQixJQUFJLGNBQWMsR0FBeUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6RSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsY0FBdUQ7UUFDdkYsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhO1FBQ3hELElBQUc7WUFDRCxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekcsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUNELE9BQU0sQ0FBQyxFQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLO1FBQ2hDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsd0JBQXdCLENBQ3RCLFVBQWUsRUFDZixXQUF3QyxFQUN4QyxXQUEySDtRQUUzSCxJQUFJLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7UUFDckMsSUFBSSxlQUFlLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDdkgsSUFBRyxDQUFDLFNBQVM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMvQixJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1lBQzVDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEtBQXVDLFdBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsSTthQUNJLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxhQUFhLEVBQUU7WUFDaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQW9ELFdBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hILFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLEtBQUssSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDNUY7U0FDRjtRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxTQUFzQyxFQUFFLFNBQWM7UUFDNUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ3pGLElBQUksT0FBTyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXZELElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzVILElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2RixJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssTUFBTSxFQUFFO2dCQUM1QyxJQUFJLFNBQVMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7b0JBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzdHO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDcEc7YUFDRjtTQUNGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRTtZQUNqRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFBO2dCQUMzRSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUE7WUFDRCxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsU0FBUztvQkFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7b0JBQ3BELE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO2FBQzNDO2lCQUNJLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7Z0JBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFO1lBQ2hELElBQUksU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7b0JBQzNCLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztvQkFDeEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO3dCQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RTtnQkFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEI7U0FDRjthQUFNLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7O1lBQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0QsdUJBQXVCLENBQUMsU0FBc0MsRUFBRSxTQUFjO1FBQzVFLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxTQUFTLENBQUM7aUJBQ2hHLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQzdELElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQUU7Z0JBQzVDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNyRztTQUNGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRTtZQUNqRCxPQUFPLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1NBQy9CO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGFBQWEsRUFBRTtZQUNoRCxPQUFPLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQzVDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCOztZQUFNLE9BQU8sU0FBUyxDQUFDO0lBQzFCLENBQUM7O3dGQXhSVSxvQkFBb0I7dUVBQXBCLG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUNiakMsK0JBQWdDO1FBQzlCLGdDQUE0QztRQUMxQyx1RkFxQmU7UUFDakIsMEJBQWU7UUFDakIsaUJBQU87UUFHUCxzSEE4TmM7UUFFZCxzSEFTYzs7UUFyUVIsMkNBQXlCO1FBRWdDLGVBQXdDO1FBQXhDLGlFQUF3Qzs7dUZEVzFGLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLGtCQUFrQjtzQ0FVbkIsVUFBVTtrQkFBbEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQVNJLFdBQVc7a0JBQXBCLE1BQU07WUFJRyxTQUFTO2tCQUFsQixNQUFNO1lBSUcsZUFBZTtrQkFBeEIsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU07WUFHUCxxQkFBcUI7a0JBRHBCLFlBQVk7bUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSXhELG1CQUFtQjtrQkFEbEIsWUFBWTttQkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJdEQsZUFBZTtrQkFEZCxZQUFZO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUlsRCxtQkFBbUI7a0JBRGxCLFlBQVk7bUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSXRELDBCQUEwQjtrQkFEekIsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJN0QsdUJBQXVCO2tCQUR0QixZQUFZO21CQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUkxRCx5QkFBeUI7a0JBRHhCLFlBQVk7bUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSTVELHlCQUF5QjtrQkFEeEIsWUFBWTttQkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBc085RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQXVELEVBQWUsRUFBRTtJQUM1RyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO2FBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDbEMsS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUN4QztRQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQTtRQUVqQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFBO1lBQ2hCLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7WUFDL0IsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUN0QixLQUFLLFVBQVU7b0JBQ2IsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3BDLElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLENBQUE7b0JBQ3JDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN2RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtvQkFDbEUsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtvQkFDeEMsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2QsS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3ZELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUE7b0JBQ3RELElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUE7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUNqQyxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN6RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtZQUNELElBQUksS0FBSztnQkFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOc0R5bmFtaWNGb3JtIH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLm5hbWVzcGFjZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dE51bWJlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0TnVtYmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHRhcmVhXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHRhcmVhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXREYXRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dERhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21Cb29sZWFuVG9nZ2xlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21Cb29sZWFuVG9nZ2xlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZSh0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLCBmaWVsZFZhbHVlLnZhbHVlKTtcbiAgICAgIGlmIChmaWVsZFZhbHVlLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzID0ge31cbiAgICAgICAgbGV0IHN1YkZpZWxkID0gdGhpcy5mb3JtRmllbGRzW2luZGV4XS5zdWJGaWVsZHNcbiAgICAgICAgaWYodGhpcy5mb3JtRmllbGRzW2luZGV4XS5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnIHx8IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICAgICAgc3ViRmllbGQgPSBzdWJGaWVsZC5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gZmllbGRWYWx1ZS52YWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRWYWx1ZS5zdWJGaWVsZHMuZm9yRWFjaCgoc3ViRmllbGRWYWx1ZSwgc3ViSW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc3ViRm9ybUZpZWxkID0gc3ViRmllbGRbc3ViSW5kZXhdXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKHN1YmZpZWxkcywgdmFsdWUsIHN1YkZpZWxkSW5kZXgpIHtcbiAgICB0cnl7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnID0gc3ViZmllbGRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKVtzdWJGaWVsZEluZGV4XTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnO1xuICAgIH1cbiAgICBjYXRjaChlKXtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3ViZmllbGQgaW5kZXggbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KGZvcm1WYWx1ZSkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICBjb25zdCBmaW5kU2VsZWN0ZWRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBmb3JtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF06IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRyb3Bkb3duXCIpIHtcbiAgICAgICAgaWYgKCFmb3JtVmFsdWUpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybUZpZWxkLml0ZW1zTGlzdFswXSk7XG4gICAgICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJtdWx0aVNlbGVjdFwiKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi5mb3JtRmllbGQuaXRlbXNMaXN0W2luZGV4XSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoISFmb3JtVmFsdWUpO1xuICAgIH0gZWxzZSBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG4gIG1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKGZvcm1GaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLCBmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIHJldHVybiBmb3JtVmFsdWU7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIHJldHVybiArZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICByZXR1cm4gbW9tZW50LnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbC52YWx1ZSAmJiAoISFmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMgJiYgZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzPy5sZW5ndGggPiAwICYmIG1hdGNoUGFyZW50Q29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViRmllbGRDb250cm9sIG9mIGZpZWxkQ29udHJvbC5jb250cm9scy5zdWJGaWVsZHMuY29udHJvbHM7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSxqKSxcbiAgICAgICAgICAgICAgY29udHJvbDogc3ViRmllbGRDb250cm9sXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkIGxldC1maWVsZCBsZXQtY29udHJvbD1cImNvbnRyb2xcIiBsZXQtZm9ybWdyb3VwPVwiZm9ybUdyb3VwXCI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIChmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHQnIHx8IGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJylcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyOyBlbHNlIGRlZmF1bHRJbnB1dFRleHROdW1iZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dFRleHROdW1iZXJcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRUZXh0TnVtYmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZD8udGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRcIiBbdHlwZV09XCJmaWVsZC5maWVsZElucHV0VHlwZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIiBcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFxuICAgICAgICAgIFttaW5dPVwiZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInID8gMCA6ICcnIFwiLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCIgXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0YXJlYScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0ZXh0YXJlYSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXRUZXh0YXJlYTsgZWxzZSBkZWZhdWx0SW5wdXRUZXh0YXJlYVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dFRleHRhcmVhXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRUZXh0YXJlYT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRhcmVhXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L3RleHRhcmVhPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAnZGF0ZScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dERhdGU7IGVsc2UgZGVmYXVsdElucHV0RGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0RGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dERhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19IDxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZGF0ZS1waWNrZXJcIiByZWFkb25seSBtaXNUekRwIFtkcENvbmZpZ109XCJmaWVsZC5maWVsZENvbmZpZ1wiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjb250cm9sLnNldFZhbHVlKCRldmVudClcIiBbc2VsZWN0ZWREYXRlXT1cImNvbnRyb2wudmFsdWVcIiBbb2Zmc2V0WV09XCIwXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgI2RwIC8+XG4gICAgICAgICAgPGltZyBhbHQ9XCJkYXRhLXBpY2tlclwiICpuZ0lmPVwiY2FsZW5kYXJJY29uVXJsXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1pY29uXCIgW3NyY109XCJjYWxlbmRhckljb25VcmxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRwLmNsaWNrKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdib29sZWFuJyBmaWVsZElucHV0VHlwZTogJ3RvZ2dsZScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQm9vbGVhblRvZ2dsZTsgZWxzZSBkZWZhdWx0Qm9vbGVhblRvZ2dsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUJvb2xlYW5Ub2dnbGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Qm9vbGVhblRvZ2dsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWlzLXN3aXRjaCBbY29udHJvbF09XCJjb250cm9sXCIgKHZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L21pcy1zd2l0Y2g+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PiAgICBcbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOyBlbHNlIGRlZmF1bHRTaW5nbGVTZWxlY3REcm9wZG93blwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNpbmdsZVNlbGVjdERyb3Bkb3duPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3JlbW92ZWFibGUtY29udGFpbmVyJyA6IGZpZWxkPy5pc1JlbW92ZWFibGV9XCI+XG4gICAgICAgICAgPG1pcy1kcm9wZG93biBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCInMTQwcHgnXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCIgW3NlbGVjdGVkSXRlbV09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPlxuICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5pc1JlbW92ZWFibGUgJiYgcmVtb3ZlSWNvblVybFwiIGNsYXNzPVwicmVtb3ZlLWljb25cIiBbc3JjXT1cInJlbW92ZUljb25VcmxcIiAoY2xpY2spPVwiZmllbGRSZW1vdmVkLmVtaXQoZmllbGQpXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lciA+XG4gIFxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ3JhZGlvJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdyYWRpbydcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW87IGVsc2UgZGVmYXVsdFNpbmdsZVNlbGVjdFJhZGlvXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlU2VsZWN0UmFkaW8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgaXRlbSk7XCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnY2hlY2tib3gnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3g7IGVsc2UgZGVmYXVsdE11bHRpU2VsZWN0Q2hlY2tib3hcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpU2VsZWN0Q2hlY2tib3g+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgW2l0ZW1dKVwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duOyBlbHNlIGRlZmF1bHRNdWx0aVNlbGVjdERyb3Bkb3duXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93blwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNdWx0aVNlbGVjdERyb3Bkb3duPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIFt3aWR0aF09XCInMTQwcHgnXCIgW3Nob3dTZWxlY3RlZENvdW50XT1cInRydWVcIiBbZHJvcGRvd25MaXN0V2lkdGhdPVwiJzI1NnB4J1wiXG4gICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbaGlkZUFwcGx5QnV0dG9uXT1cInRydWVcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cImNvbnRyb2wudmFsdWVcIiAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGRFcnJvcnMgbGV0LWVycm9ycz5cbiAgPGRpdiBpZD1cImVycm9yLW1lc3NhZ2VzLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9ycyB8IGtleXZhbHVlXCI+XG4gICAgICA8cCBjbGFzcz1cImg4XCI+XG4gICAgICAgIHt7XCIg4oCiICZuYnNwO1wiICsgZXJyb3IudmFsdWV9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCU7IGhlaWdodDogMFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|