@reusa/ngx-reusa-app-lib 0.0.1307 → 0.0.1308

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.
@@ -13,132 +13,177 @@ import * as i9 from "primeng/dropdown";
13
13
  import * as i10 from "../overlay-info/overlay-info.component";
14
14
  const _c0 = ["uploadFileFormDirective"];
15
15
  const _c1 = ["fileInput"];
16
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_2_div_5_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "div", 11);
18
- i0.ɵɵelement(1, "app-overlay-info", 12);
16
+ function ProofOfDocumentUploadComponent_form_0_section_2_div_2_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelement(0, "div");
18
+ } }
19
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_ng_template_0_div_5_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "div", 14);
21
+ i0.ɵɵelement(1, "app-overlay-info", 15);
19
22
  i0.ɵɵelementEnd();
20
23
  } if (rf & 2) {
21
- const ctx_r7 = i0.ɵɵnextContext(4);
24
+ const ctx_r12 = i0.ɵɵnextContext(5);
22
25
  i0.ɵɵadvance(1);
23
- i0.ɵɵproperty("overlayText", ctx_r7.iconInfo);
26
+ i0.ɵɵproperty("overlayText", ctx_r12.iconInfo);
24
27
  } }
25
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
28
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_ng_template_0_Template(rf, ctx) { if (rf & 1) {
26
29
  i0.ɵɵelementStart(0, "tr")(1, "th");
27
30
  i0.ɵɵtext(2, "Document Name");
28
31
  i0.ɵɵelementEnd();
29
- i0.ɵɵelementStart(3, "th", 9);
32
+ i0.ɵɵelementStart(3, "th", 12);
30
33
  i0.ɵɵtext(4, " Document Type ");
31
- i0.ɵɵtemplate(5, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_2_div_5_Template, 2, 1, "div", 10);
34
+ i0.ɵɵtemplate(5, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_ng_template_0_div_5_Template, 2, 1, "div", 13);
32
35
  i0.ɵɵelementEnd();
33
36
  i0.ɵɵelement(6, "th");
34
37
  i0.ɵɵelementEnd();
35
38
  } if (rf & 2) {
36
- const ctx_r4 = i0.ɵɵnextContext(3);
39
+ const ctx_r11 = i0.ɵɵnextContext(4);
37
40
  i0.ɵɵadvance(5);
38
- i0.ɵɵproperty("ngIf", ctx_r4.proofOfAnything);
41
+ i0.ɵɵproperty("ngIf", ctx_r11.proofOfAnything);
42
+ } }
43
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_ng_template_0_Template, 7, 1, "ng-template", 11);
45
+ } }
46
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelementStart(0, "div", 14);
48
+ i0.ɵɵelement(1, "app-overlay-info", 16);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const ctx_r14 = i0.ɵɵnextContext(5);
52
+ i0.ɵɵadvance(1);
53
+ i0.ɵɵproperty("overlayText", ctx_r14.iconInfo);
54
+ } }
55
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_ng_template_0_Template(rf, ctx) { if (rf & 1) {
56
+ i0.ɵɵelementStart(0, "tr")(1, "th", 12);
57
+ i0.ɵɵtext(2, " Document Name ");
58
+ i0.ɵɵtemplate(3, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_ng_template_0_div_3_Template, 2, 1, "div", 13);
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelement(4, "th")(5, "th");
61
+ i0.ɵɵelementEnd();
62
+ } if (rf & 2) {
63
+ const ctx_r13 = i0.ɵɵnextContext(4);
64
+ i0.ɵɵadvance(3);
65
+ i0.ɵɵproperty("ngIf", ctx_r13.proofOfAnything);
66
+ } }
67
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_ng_template_0_Template, 6, 1, "ng-template", 11);
39
69
  } }
40
70
  const _c2 = () => ({ "width": "90%" });
41
71
  const _c3 = a0 => ({ "ng-invalid": a0 });
42
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template(rf, ctx) { if (rf & 1) {
43
- const _r11 = i0.ɵɵgetCurrentView();
44
- i0.ɵɵelementContainerStart(0, 13);
45
- i0.ɵɵelementStart(1, "tr", 14)(2, "td");
72
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_td_4_Template(rf, ctx) { if (rf & 1) {
73
+ const _r20 = i0.ɵɵgetCurrentView();
74
+ i0.ɵɵelementStart(0, "td")(1, "p-dropdown", 22);
75
+ i0.ɵɵlistener("ngModelChange", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_td_4_Template_p_dropdown_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r20); const fileObjectQueue_r15 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(fileObjectQueue_r15.selectedDocumentType = $event); })("onChange", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_td_4_Template_p_dropdown_onChange_1_listener($event) { i0.ɵɵrestoreView(_r20); const fileObjectQueue_r15 = i0.ɵɵnextContext().$implicit; const ctx_r21 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r21.changeDocType(fileObjectQueue_r15, $event)); })("onClear", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_td_4_Template_p_dropdown_onClear_1_listener() { i0.ɵɵrestoreView(_r20); const fileObjectQueue_r15 = i0.ɵɵnextContext().$implicit; const ctx_r23 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r23.clearDocType(fileObjectQueue_r15)); });
76
+ i0.ɵɵelementEnd()();
77
+ } if (rf & 2) {
78
+ const ctx_r25 = i0.ɵɵnextContext();
79
+ const fileObjectQueue_r15 = ctx_r25.$implicit;
80
+ const rowIndex_r16 = ctx_r25.rowIndex;
81
+ const ctx_r17 = i0.ɵɵnextContext(3);
82
+ let tmp_4_0;
83
+ i0.ɵɵadvance(1);
84
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(6, _c2));
85
+ i0.ɵɵproperty("options", ctx_r17.docTypeDropdown)("ngModel", fileObjectQueue_r15.selectedDocumentType)("showClear", true)("ngClass", i0.ɵɵpureFunction1(7, _c3, (tmp_4_0 = ctx_r17.tableRows.controls[rowIndex_r16].get("docType")) == null ? null : tmp_4_0.invalid));
86
+ } }
87
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_Template(rf, ctx) { if (rf & 1) {
88
+ const _r27 = i0.ɵɵgetCurrentView();
89
+ i0.ɵɵelementContainerStart(0, 17);
90
+ i0.ɵɵelementStart(1, "tr", 18)(2, "td");
46
91
  i0.ɵɵtext(3);
47
92
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(4, "td")(5, "p-dropdown", 15);
49
- i0.ɵɵlistener("ngModelChange", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template_p_dropdown_ngModelChange_5_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r11); const fileObjectQueue_r8 = restoredCtx.$implicit; return i0.ɵɵresetView(fileObjectQueue_r8.selectedDocumentType = $event); })("onChange", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template_p_dropdown_onChange_5_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r11); const fileObjectQueue_r8 = restoredCtx.$implicit; const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.changeDocType(fileObjectQueue_r8, $event)); })("onClear", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template_p_dropdown_onClear_5_listener() { const restoredCtx = i0.ɵɵrestoreView(_r11); const fileObjectQueue_r8 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.clearDocType(fileObjectQueue_r8)); });
50
- i0.ɵɵelementEnd()();
51
- i0.ɵɵelementStart(6, "td", 16)(7, "ion-button", 17);
52
- i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template_ion_button_click_7_listener() { const restoredCtx = i0.ɵɵrestoreView(_r11); const fileObjectQueue_r8 = restoredCtx.$implicit; const ctx_r14 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r14.removeFromQueue(fileObjectQueue_r8)); });
53
- i0.ɵɵelement(8, "ion-icon", 18);
93
+ i0.ɵɵtemplate(4, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_td_4_Template, 2, 9, "td", 4);
94
+ i0.ɵɵelementStart(5, "td", 19)(6, "ion-button", 20);
95
+ i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_Template_ion_button_click_6_listener() { const restoredCtx = i0.ɵɵrestoreView(_r27); const fileObjectQueue_r15 = restoredCtx.$implicit; const ctx_r26 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r26.removeFromQueue(fileObjectQueue_r15)); });
96
+ i0.ɵɵelement(7, "ion-icon", 21);
54
97
  i0.ɵɵelementEnd()()();
55
98
  i0.ɵɵelementContainerEnd();
56
99
  } if (rf & 2) {
57
- const fileObjectQueue_r8 = ctx.$implicit;
58
- const rowIndex_r9 = ctx.rowIndex;
59
- const ctx_r5 = i0.ɵɵnextContext(3);
60
- let tmp_6_0;
100
+ const fileObjectQueue_r15 = ctx.$implicit;
101
+ const rowIndex_r16 = ctx.rowIndex;
102
+ const ctx_r9 = i0.ɵɵnextContext(3);
61
103
  i0.ɵɵadvance(1);
62
- i0.ɵɵproperty("formGroupName", rowIndex_r9);
104
+ i0.ɵɵproperty("formGroupName", rowIndex_r16);
63
105
  i0.ɵɵadvance(2);
64
- i0.ɵɵtextInterpolate(fileObjectQueue_r8 == null ? null : fileObjectQueue_r8.fileName);
65
- i0.ɵɵadvance(2);
66
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(8, _c2));
67
- i0.ɵɵproperty("options", ctx_r5.docTypeDropdown)("ngModel", fileObjectQueue_r8.selectedDocumentType)("showClear", true)("ngClass", i0.ɵɵpureFunction1(9, _c3, (tmp_6_0 = ctx_r5.tableRows.controls[rowIndex_r9].get("docType")) == null ? null : tmp_6_0.invalid));
106
+ i0.ɵɵtextInterpolate(fileObjectQueue_r15 == null ? null : fileObjectQueue_r15.fileName);
107
+ i0.ɵɵadvance(1);
108
+ i0.ɵɵproperty("ngIf", ctx_r9.docType.length > 0);
68
109
  } }
69
110
  const _c4 = () => ["fal", "plus"];
70
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_1_Template(rf, ctx) { if (rf & 1) {
71
- const _r20 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "td", 20)(1, "div", 21)(2, "b");
111
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_1_Template(rf, ctx) { if (rf & 1) {
112
+ const _r33 = i0.ɵɵgetCurrentView();
113
+ i0.ɵɵelementStart(0, "td", 24)(1, "div", 25)(2, "b");
73
114
  i0.ɵɵtext(3, "+ Add");
74
115
  i0.ɵɵelementEnd();
75
116
  i0.ɵɵtext(4, " document");
76
117
  i0.ɵɵelementEnd();
77
- i0.ɵɵelementStart(5, "input", 22, 23);
78
- i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r19.addToQueue($event)); });
118
+ i0.ɵɵelementStart(5, "input", 26, 27);
119
+ i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r32.addToQueue($event)); });
79
120
  i0.ɵɵelementEnd();
80
- i0.ɵɵelementStart(7, "ion-button", 24);
81
- i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_1_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const _r18 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r18.click()); });
82
- i0.ɵɵelement(8, "fa-icon", 25);
121
+ i0.ɵɵelementStart(7, "ion-button", 28);
122
+ i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_1_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r33); const _r31 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r31.click()); });
123
+ i0.ɵɵelement(8, "fa-icon", 29);
83
124
  i0.ɵɵelementEnd()();
84
125
  } if (rf & 2) {
85
- const ctx_r16 = i0.ɵɵnextContext(5);
126
+ const ctx_r29 = i0.ɵɵnextContext(5);
86
127
  i0.ɵɵadvance(5);
87
- i0.ɵɵproperty("accept", ctx_r16.allowedFileType);
128
+ i0.ɵɵproperty("accept", ctx_r29.allowedFileType);
88
129
  i0.ɵɵadvance(3);
89
130
  i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(2, _c4));
90
131
  } }
91
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_2_Template(rf, ctx) { if (rf & 1) {
92
- const _r24 = i0.ɵɵgetCurrentView();
93
- i0.ɵɵelementStart(0, "td", 20)(1, "div", 21)(2, "b");
132
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_2_Template(rf, ctx) { if (rf & 1) {
133
+ const _r37 = i0.ɵɵgetCurrentView();
134
+ i0.ɵɵelementStart(0, "td", 24)(1, "div", 25)(2, "b");
94
135
  i0.ɵɵtext(3, "+ Add");
95
136
  i0.ɵɵelementEnd();
96
137
  i0.ɵɵtext(4, " any other document");
97
138
  i0.ɵɵelementEnd();
98
- i0.ɵɵelementStart(5, "input", 22, 23);
99
- i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_2_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r23.addToQueue($event)); });
139
+ i0.ɵɵelementStart(5, "input", 26, 27);
140
+ i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_2_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r36.addToQueue($event)); });
100
141
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(7, "ion-button", 24);
102
- i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_2_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r24); const _r22 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r22.click()); });
103
- i0.ɵɵelement(8, "fa-icon", 25);
142
+ i0.ɵɵelementStart(7, "ion-button", 28);
143
+ i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_2_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r37); const _r35 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r35.click()); });
144
+ i0.ɵɵelement(8, "fa-icon", 29);
104
145
  i0.ɵɵelementEnd()();
105
146
  } if (rf & 2) {
106
- const ctx_r17 = i0.ɵɵnextContext(5);
147
+ const ctx_r30 = i0.ɵɵnextContext(5);
107
148
  i0.ɵɵadvance(5);
108
- i0.ɵɵproperty("accept", ctx_r17.allowedFileType);
149
+ i0.ɵɵproperty("accept", ctx_r30.allowedFileType);
109
150
  i0.ɵɵadvance(3);
110
151
  i0.ɵɵproperty("icon", i0.ɵɵpureFunction0(2, _c4));
111
152
  } }
112
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_Template(rf, ctx) { if (rf & 1) {
153
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_Template(rf, ctx) { if (rf & 1) {
113
154
  i0.ɵɵelementStart(0, "tr");
114
- i0.ɵɵtemplate(1, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_1_Template, 9, 3, "td", 19)(2, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_td_2_Template, 9, 3, "td", 19);
155
+ i0.ɵɵtemplate(1, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_1_Template, 9, 3, "td", 23)(2, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_td_2_Template, 9, 3, "td", 23);
115
156
  i0.ɵɵelement(3, "td")(4, "td");
116
157
  i0.ɵɵelementEnd();
117
158
  } if (rf & 2) {
118
- const ctx_r15 = i0.ɵɵnextContext(4);
159
+ const ctx_r28 = i0.ɵɵnextContext(4);
119
160
  i0.ɵɵadvance(1);
120
- i0.ɵɵproperty("ngIf", ctx_r15.fileObjectQueue.length == 0);
161
+ i0.ɵɵproperty("ngIf", ctx_r28.fileObjectQueue.length == 0);
121
162
  i0.ɵɵadvance(1);
122
- i0.ɵɵproperty("ngIf", ctx_r15.fileObjectQueue.length > 0);
163
+ i0.ɵɵproperty("ngIf", ctx_r28.fileObjectQueue.length > 0);
123
164
  } }
124
- function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_tr_0_Template, 5, 2, "tr", 4);
165
+ function ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_Template(rf, ctx) { if (rf & 1) {
166
+ i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_tr_0_Template, 5, 2, "tr", 4);
126
167
  } if (rf & 2) {
127
- const ctx_r6 = i0.ɵɵnextContext(3);
128
- i0.ɵɵproperty("ngIf", ctx_r6.proofOfAnything);
168
+ const ctx_r10 = i0.ɵɵnextContext(3);
169
+ i0.ɵɵproperty("ngIf", ctx_r10.proofOfAnything);
129
170
  } }
130
171
  function ProofOfDocumentUploadComponent_form_0_section_2_Template(rf, ctx) { if (rf & 1) {
131
172
  i0.ɵɵelementStart(0, "section")(1, "p-table", 5);
132
- i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_2_Template, 7, 1, "ng-template", 6)(3, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template, 9, 11, "ng-template", 7)(4, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_4_Template, 1, 1, "ng-template", 8);
173
+ i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_form_0_section_2_div_2_Template, 1, 0, "div", 6)(3, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_3_Template, 1, 0, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor)(5, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_5_Template, 1, 0, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor)(7, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_7_Template, 8, 3, "ng-template", 9)(8, ProofOfDocumentUploadComponent_form_0_section_2_ng_template_8_Template, 1, 1, "ng-template", 10);
133
174
  i0.ɵɵelementEnd()();
134
175
  } if (rf & 2) {
176
+ const _r6 = i0.ɵɵreference(4);
177
+ const _r8 = i0.ɵɵreference(6);
135
178
  const ctx_r3 = i0.ɵɵnextContext(2);
136
179
  i0.ɵɵadvance(1);
137
180
  i0.ɵɵproperty("value", ctx_r3.fileObjectQueue)("loading", ctx_r3.showProgress);
181
+ i0.ɵɵadvance(1);
182
+ i0.ɵɵproperty("ngIf", ctx_r3.docType.length > 0)("ngIfThen", _r6)("ngIfElse", _r8);
138
183
  } }
139
184
  function ProofOfDocumentUploadComponent_form_0_Template(rf, ctx) { if (rf & 1) {
140
185
  i0.ɵɵelementStart(0, "form", 2, 3);
141
- i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_form_0_section_2_Template, 5, 2, "section", 4);
186
+ i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_form_0_section_2_Template, 9, 5, "section", 4);
142
187
  i0.ɵɵelementEnd();
143
188
  } if (rf & 2) {
144
189
  const ctx_r0 = i0.ɵɵnextContext();
@@ -147,65 +192,65 @@ function ProofOfDocumentUploadComponent_form_0_Template(rf, ctx) { if (rf & 1) {
147
192
  i0.ɵɵproperty("ngIf", ctx_r0.context != "signature" && ctx_r0.context != "uploadZipCodes");
148
193
  } }
149
194
  function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
150
- const _r40 = i0.ɵɵgetCurrentView();
151
- i0.ɵɵelementStart(0, "div", 35);
152
- i0.ɵɵelement(1, "i", 36);
153
- i0.ɵɵelementStart(2, "input", 37, 23);
154
- i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r40); const employer_r27 = i0.ɵɵnextContext(2).$implicit; const ctx_r38 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r38.addFileToEmployerData($event, employer_r27)); });
195
+ const _r53 = i0.ɵɵgetCurrentView();
196
+ i0.ɵɵelementStart(0, "div", 39);
197
+ i0.ɵɵelement(1, "i", 40);
198
+ i0.ɵɵelementStart(2, "input", 41, 27);
199
+ i0.ɵɵlistener("change", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r53); const employer_r40 = i0.ɵɵnextContext(2).$implicit; const ctx_r51 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r51.addFileToEmployerData($event, employer_r40)); });
155
200
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(4, "ion-button", 38);
157
- i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template_ion_button_click_4_listener() { i0.ɵɵrestoreView(_r40); const _r37 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r37.click()); });
201
+ i0.ɵɵelementStart(4, "ion-button", 42);
202
+ i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template_ion_button_click_4_listener() { i0.ɵɵrestoreView(_r53); const _r50 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r50.click()); });
158
203
  i0.ɵɵtext(5, " Upload ");
159
204
  i0.ɵɵelementEnd()();
160
205
  } if (rf & 2) {
161
- const ctx_r35 = i0.ɵɵnextContext(4);
206
+ const ctx_r48 = i0.ɵɵnextContext(4);
162
207
  i0.ɵɵadvance(2);
163
- i0.ɵɵproperty("accept", ctx_r35.allowedFileType);
208
+ i0.ɵɵproperty("accept", ctx_r48.allowedFileType);
164
209
  } }
165
210
  function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template(rf, ctx) { if (rf & 1) {
166
- const _r44 = i0.ɵɵgetCurrentView();
167
- i0.ɵɵelementStart(0, "div")(1, "div", 39)(2, "div", 40)(3, "span");
168
- i0.ɵɵelement(4, "i", 41);
211
+ const _r57 = i0.ɵɵgetCurrentView();
212
+ i0.ɵɵelementStart(0, "div")(1, "div", 43)(2, "div", 44)(3, "span");
213
+ i0.ɵɵelement(4, "i", 45);
169
214
  i0.ɵɵtext(5);
170
215
  i0.ɵɵelementEnd();
171
- i0.ɵɵelementStart(6, "ion-button", 42);
172
- i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r44); const employer_r27 = i0.ɵɵnextContext(2).$implicit; const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r42.removeFileFromEmployerData(employer_r27)); });
173
- i0.ɵɵelement(7, "ion-icon", 18);
216
+ i0.ɵɵelementStart(6, "ion-button", 46);
217
+ i0.ɵɵlistener("click", function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r57); const employer_r40 = i0.ɵɵnextContext(2).$implicit; const ctx_r55 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r55.removeFileFromEmployerData(employer_r40)); });
218
+ i0.ɵɵelement(7, "ion-icon", 21);
174
219
  i0.ɵɵelementEnd()()()();
175
220
  } if (rf & 2) {
176
- const employer_r27 = i0.ɵɵnextContext(2).$implicit;
221
+ const employer_r40 = i0.ɵɵnextContext(2).$implicit;
177
222
  i0.ɵɵadvance(5);
178
- i0.ɵɵtextInterpolate1("", employer_r27.file.fileName, " ");
223
+ i0.ɵɵtextInterpolate1("", employer_r40.file.fileName, " ");
179
224
  } }
180
225
  function ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 31)(2, "h4", 32);
226
+ i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 35)(2, "h4", 36);
182
227
  i0.ɵɵtext(3);
183
228
  i0.ɵɵelementEnd();
184
- i0.ɵɵelement(4, "app-overlay-info", 12);
229
+ i0.ɵɵelement(4, "app-overlay-info", 15);
185
230
  i0.ɵɵelementEnd()();
186
- i0.ɵɵelementStart(5, "div", 33);
187
- i0.ɵɵtemplate(6, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template, 6, 1, "div", 34)(7, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template, 8, 1, "div", 4);
231
+ i0.ɵɵelementStart(5, "div", 37);
232
+ i0.ɵɵtemplate(6, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_6_Template, 6, 1, "div", 38)(7, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_div_7_Template, 8, 1, "div", 4);
188
233
  i0.ɵɵelementEnd();
189
234
  } if (rf & 2) {
190
- const employer_r27 = i0.ɵɵnextContext().$implicit;
191
- const ctx_r29 = i0.ɵɵnextContext(2);
235
+ const employer_r40 = i0.ɵɵnextContext().$implicit;
236
+ const ctx_r42 = i0.ɵɵnextContext(2);
192
237
  i0.ɵɵadvance(3);
193
- i0.ɵɵtextInterpolate(employer_r27.employerName);
238
+ i0.ɵɵtextInterpolate(employer_r40.employerName);
194
239
  i0.ɵɵadvance(1);
195
- i0.ɵɵproperty("overlayText", ctx_r29.iconInfo);
240
+ i0.ɵɵproperty("overlayText", ctx_r42.iconInfo);
196
241
  i0.ɵɵadvance(2);
197
- i0.ɵɵproperty("ngIf", !employer_r27.file);
242
+ i0.ɵɵproperty("ngIf", !employer_r40.file);
198
243
  i0.ɵɵadvance(1);
199
- i0.ɵɵproperty("ngIf", employer_r27.file);
244
+ i0.ɵɵproperty("ngIf", employer_r40.file);
200
245
  } }
201
246
  function ProofOfDocumentUploadComponent_ul_1_li_1_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelementStart(0, "li", 28)(1, "p-card", 29);
203
- i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template, 8, 4, "ng-template", 30);
247
+ i0.ɵɵelementStart(0, "li", 32)(1, "p-card", 33);
248
+ i0.ɵɵtemplate(2, ProofOfDocumentUploadComponent_ul_1_li_1_ng_template_2_Template, 8, 4, "ng-template", 34);
204
249
  i0.ɵɵelementEnd()();
205
250
  } }
206
251
  function ProofOfDocumentUploadComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
207
- i0.ɵɵelementStart(0, "ul", 26);
208
- i0.ɵɵtemplate(1, ProofOfDocumentUploadComponent_ul_1_li_1_Template, 3, 0, "li", 27);
252
+ i0.ɵɵelementStart(0, "ul", 30);
253
+ i0.ɵɵtemplate(1, ProofOfDocumentUploadComponent_ul_1_li_1_Template, 3, 0, "li", 31);
209
254
  i0.ɵɵelementEnd();
210
255
  } if (rf & 2) {
211
256
  const ctx_r1 = i0.ɵɵnextContext();
@@ -241,11 +286,13 @@ export class ProofOfDocumentUploadComponent {
241
286
  tableRowArray: this.formBuilder.array([])
242
287
  });
243
288
  this.docForm.emit(this.formArray);
244
- this.docTypeDropdown = this.docType.map((i) => ({
245
- label: i.docDescription,
246
- value: i,
247
- disabled: false
248
- }));
289
+ if (this.docType.length > 0) {
290
+ this.docTypeDropdown = this.docType.map((i) => ({
291
+ label: i.docDescription,
292
+ value: i,
293
+ disabled: false
294
+ }));
295
+ }
249
296
  this.fileTypes = this.allowedFileType.split(',');
250
297
  }
251
298
  writeValue() {
@@ -302,9 +349,12 @@ export class ProofOfDocumentUploadComponent {
302
349
  encoded = await toBase64(file);
303
350
  }
304
351
  const fileObject = new FileObject(this.selectedDocumentType?.docType, this.selectedDocumentType?.docDescription, file.name, file.type, encoded);
305
- var uploadFileForm = this.formBuilder.group({
306
- 'docType': [null, Validators.required]
307
- });
352
+ var uploadFileForm = this.formBuilder.group({});
353
+ if (this.docType.length > 0) {
354
+ uploadFileForm = this.formBuilder.group({
355
+ 'docType': [null, Validators.required]
356
+ });
357
+ }
308
358
  this.tableRows.push(uploadFileForm);
309
359
  this.fileObjectQueue.push(fileObject);
310
360
  this.upload.emit(this.fileObjectQueue);
@@ -439,7 +489,7 @@ export class ProofOfDocumentUploadComponent {
439
489
  provide: NG_VALUE_ACCESSOR,
440
490
  useExisting: ProofOfDocumentUploadComponent,
441
491
  multi: true
442
- }]), i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[3, "formGroup", 4, "ngIf"], ["class", "no-bullets gap-3", 4, "ngIf"], [3, "formGroup"], ["uploadFileFormDirective", "ngForm"], [4, "ngIf"], ["dataKey", "fileName", "responsiveLayout", "scroll", 3, "value", "loading"], ["pTemplate", "header"], ["pTemplate", "body"], ["pTemplate", "footer"], [1, "flex", "flex-row", "align-items-center"], ["class", "pl-1", 4, "ngIf"], [1, "pl-1"], [2, "margin-top", "2px", "margin-left", "6px", 3, "overlayText"], ["formArrayName", "tableRowArray"], [3, "formGroupName"], ["formControlName", "docType", "optionLabel", "label", "optionValue", "value", "placeholder", "Select a Document Type", "appendTo", "body", 1, "ng-invalid", "ng-dirty", 3, "options", "ngModel", "showClear", "ngClass", "ngModelChange", "onChange", "onClear"], [1, "ion-text-right", 2, "padding-right", "unset"], ["shape", "round", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 3, "click"], ["name", "trash-outline"], ["class", "file-input-container flex flex-row align-items-center", 4, "ngIf"], [1, "file-input-container", "flex", "flex-row", "align-items-center"], [1, "pr-1"], ["type", "file", 3, "accept", "change"], ["fileInput", ""], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 3, "click"], [1, "action-icon", 3, "icon"], [1, "no-bullets", "gap-3"], ["class", "pb-3", 4, "ngFor", "ngForOf"], [1, "pb-3"], [1, "pb-2", "gap-3"], ["class", "p-3", "pTemplate", "content"], [1, "flex", "flex-row", "align-items-center", "gap-1"], ["stlye", "margin: 0", 1, "m-0"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "border-2", "border-dashed", "border-400", "rounded-sm", "p-2"], ["class", "flex align-items-center justify-content-center flex-column", 4, "ngIf"], [1, "flex", "align-items-center", "justify-content-center", "flex-column"], [1, "pi", "pi-upload", "border-2", "border-circle", "p-2", "m-2", "text-xl", "text-400"], ["id", "employerWorkSearchFileInput", "type", "file", 2, "display", "none", 3, "accept", "change"], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 2, "float", "inline-end", 3, "click"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "p-0", "sm:p-2", "gap-5"], [1, "card", "m-0", "px-6", "flex", "align-items-center", "justify-content-center", "flex-column", "gap-2"], [1, "pi", "pi-file", 2, "color", "#4478AA"], ["aria-label", "Remove Files", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 2, "float", "inline-end", 3, "click"]], template: function ProofOfDocumentUploadComponent_Template(rf, ctx) { if (rf & 1) {
492
+ }]), i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[3, "formGroup", 4, "ngIf"], ["class", "no-bullets gap-3", 4, "ngIf"], [3, "formGroup"], ["uploadFileFormDirective", "ngForm"], [4, "ngIf"], ["dataKey", "fileName", "responsiveLayout", "scroll", 3, "value", "loading"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["showDocTypeHeading", ""], ["removeDocTypeHeading", ""], ["pTemplate", "body"], ["pTemplate", "footer"], ["pTemplate", "header"], [1, "flex", "flex-row", "align-items-center"], ["class", "pl-1", 4, "ngIf"], [1, "pl-1"], [2, "margin-top", "2px", "margin-left", "6px", 3, "overlayText"], [3, "overlayText"], ["formArrayName", "tableRowArray"], [3, "formGroupName"], [1, "ion-text-right", 2, "padding-right", "unset"], ["shape", "round", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 3, "click"], ["name", "trash-outline"], ["formControlName", "docType", "optionLabel", "label", "optionValue", "value", "placeholder", "Select a Document Type", "appendTo", "body", 1, "ng-invalid", "ng-dirty", 3, "options", "ngModel", "showClear", "ngClass", "ngModelChange", "onChange", "onClear"], ["class", "file-input-container flex flex-row align-items-center", 4, "ngIf"], [1, "file-input-container", "flex", "flex-row", "align-items-center"], [1, "pr-1"], ["type", "file", 3, "accept", "change"], ["fileInput", ""], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 3, "click"], [1, "action-icon", 3, "icon"], [1, "no-bullets", "gap-3"], ["class", "pb-3", 4, "ngFor", "ngForOf"], [1, "pb-3"], [1, "pb-2", "gap-3"], ["class", "p-3", "pTemplate", "content"], [1, "flex", "flex-row", "align-items-center", "gap-1"], ["stlye", "margin: 0", 1, "m-0"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "border-2", "border-dashed", "border-400", "rounded-sm", "p-2"], ["class", "flex align-items-center justify-content-center flex-column", 4, "ngIf"], [1, "flex", "align-items-center", "justify-content-center", "flex-column"], [1, "pi", "pi-upload", "border-2", "border-circle", "p-2", "m-2", "text-xl", "text-400"], ["id", "employerWorkSearchFileInput", "type", "file", 2, "display", "none", 3, "accept", "change"], ["aria-label", "Add Files", "fill", "outline", "size", "small", 1, "action-button", 2, "float", "inline-end", 3, "click"], [1, "flex", "align-items-center", "justify-content-center", "flex-column", "p-0", "sm:p-2", "gap-5"], [1, "card", "m-0", "px-6", "flex", "align-items-center", "justify-content-center", "flex-column", "gap-2"], [1, "pi", "pi-file", 2, "color", "#4478AA"], ["aria-label", "Remove Files", "fill", "outline", "size", "small", "pTooltip", "Remove", "tooltipPosition", "bottom", 1, "ion-padding-left", 2, "float", "inline-end", 3, "click"]], template: function ProofOfDocumentUploadComponent_Template(rf, ctx) { if (rf & 1) {
443
493
  i0.ɵɵtemplate(0, ProofOfDocumentUploadComponent_form_0_Template, 3, 2, "form", 0)(1, ProofOfDocumentUploadComponent_ul_1_Template, 2, 1, "ul", 1);
444
494
  } if (rf & 2) {
445
495
  i0.ɵɵproperty("ngIf", !ctx.employerDataModel);
@@ -453,7 +503,7 @@ export class ProofOfDocumentUploadComponent {
453
503
  provide: NG_VALUE_ACCESSOR,
454
504
  useExisting: ProofOfDocumentUploadComponent,
455
505
  multi: true
456
- }], template: "<form [formGroup]=\"formArray\" #uploadFileFormDirective=\"ngForm\" *ngIf=\"!employerDataModel\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table dataKey=\"fileName\" [value]=\"fileObjectQueue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Document Name</th>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Type\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\"\r\n style=\"margin-top: 2px; margin-left: 6px; \"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-fileObjectQueue let-rowIndex=\"rowIndex\">\r\n <ng-container formArrayName=\"tableRowArray\">\r\n <tr [formGroupName]=\"rowIndex\">\r\n <td>{{ fileObjectQueue?.fileName }}</td>\r\n <td>\r\n <p-dropdown [options]=\"docTypeDropdown\" formControlName=\"docType\" [(ngModel)]=\"fileObjectQueue.selectedDocumentType\" \r\n (onChange)=\"changeDocType(fileObjectQueue,$event)\" \r\n optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select a Document Type\" appendTo=body\r\n [style]=\"{'width':'90%'}\"\r\n class=\"ng-invalid ng-dirty\"\r\n [showClear]=\"true\"\r\n (onClear)=\"clearDocType(fileObjectQueue)\"\r\n [ngClass]=\"{'ng-invalid':tableRows.controls[rowIndex].get('docType')?.invalid}\"/>\r\n </td>\r\n <td class=\"ion-text-right\" style=\"padding-right: unset\">\r\n <ion-button shape=\"round\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(fileObjectQueue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"fileObjectQueue.length == 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td *ngIf=\"fileObjectQueue.length > 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> any other document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td></td>\r\n <td >\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n </form>\r\n <ul *ngIf=\"employerDataModel\" class=\"no-bullets gap-3\">\r\n <li class=\"pb-3\" *ngFor=\"let employer of employerDataModel; let i = index\">\r\n <p-card class=\"pb-2 gap-3\">\r\n <ng-template class=\"p-3\" pTemplate=\"content\" let-files let-uploadedFiles=\"uploadedFiles\" let-removeFileCallback=\"removeFileCallback\" let-removeUploadedFileCallback=\"removeUploadedFileCallback\" let-chooseCallback=\"chooseCallback\">\r\n \r\n <ion-row>\r\n <ion-col class=\"flex flex-row align-items-center gap-1\">\r\n <h4 class=\"m-0\" stlye=\"margin: 0\">{{employer.employerName}}</h4>\r\n <app-overlay-info [overlayText]=\"iconInfo\"\r\n style=\"margin-top: 2px; margin-left: 6px;\"></app-overlay-info>\r\n </ion-col>\r\n </ion-row>\r\n <div class=\"flex align-items-center justify-content-center flex-column border-2 border-dashed border-400 rounded-sm p-2\">\r\n <div *ngIf=\"!employer.file\" class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-upload border-2 border-circle p-2 m-2 text-xl text-400\"></i>\r\n <input id=\"employerWorkSearchFileInput\" type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addFileToEmployerData($event,employer)\" style=\"display: none\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\" style=\"float:inline-end\">\r\n Upload\r\n </ion-button>\r\n </div>\r\n <div *ngIf=\"employer.file\">\r\n\r\n <div class=\"flex align-items-center justify-content-center flex-column p-0 sm:p-2 gap-5\">\r\n <div\r\n class=\"card m-0 px-6 flex align-items-center justify-content-center flex-column gap-2\"\r\n > \r\n <span>\r\n <i class=\"pi pi-file\" style=\"color: #4478AA\"></i>{{ employer.file.fileName }}\r\n </span>\r\n <ion-button aria-label=\"Remove Files\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFileFromEmployerData(employer)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\" style=\"float: inline-end\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n \r\n </ng-template>\r\n </p-card>\r\n </li>\r\n </ul>", styles: [".file-input-container{text-align:right}.file-input-container input[type=file]{display:none}.file-input-container label{border:1px solid #ccc;padding:6px 12px;cursor:pointer}.upload-input-container input[type=file]{display:none}.upload-input-container label{border:1px solid #ccc;cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background:#fff!important;background-color:#fff!important}ol,ul{list-style:none}ul{list-style-type:square}li{color:var(--ion-color-grey)}.ng-invalid{border-color:#f44336}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}.no-bullets{list-style-type:none;padding-left:0}:host ::ng-deep .remove-header .p-fileupload-buttonbar{display:none}:host ::ng-deep .remove-header .p-fileupload-content{border-top-right-radius:4px;border-top-left-radius:4px;padding:1rem}:host ::ng-deep .p-card .p-card-body .p-card-content{padding:1rem!important}.border-400{border-color:#4478aa!important;border-radius:6px}\n"] }]
506
+ }], template: "<form [formGroup]=\"formArray\" #uploadFileFormDirective=\"ngForm\" *ngIf=\"!employerDataModel\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table dataKey=\"fileName\" [value]=\"fileObjectQueue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <div *ngIf = \"docType.length > 0; then showDocTypeHeading; else removeDocTypeHeading\" ></div>\r\n <ng-template #showDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Document Name</th>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Type\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\" style=\"margin-top: 2px; margin-left: 6px; \"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #removeDocTypeHeading>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th class=\"flex flex-row align-items-center\">\r\n Document Name\r\n <div *ngIf=\"proofOfAnything\" class=\"pl-1\">\r\n <app-overlay-info [overlayText]=\"iconInfo\"></app-overlay-info>\r\n </div>\r\n </th>\r\n <th></th>\r\n <th></th>\r\n </tr>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-fileObjectQueue let-rowIndex=\"rowIndex\">\r\n <ng-container formArrayName=\"tableRowArray\">\r\n <tr [formGroupName]=\"rowIndex\">\r\n <td>{{ fileObjectQueue?.fileName }}</td>\r\n <td *ngIf=\"docType.length > 0\">\r\n <p-dropdown [options]=\"docTypeDropdown\" formControlName=\"docType\" [(ngModel)]=\"fileObjectQueue.selectedDocumentType\" \r\n (onChange)=\"changeDocType(fileObjectQueue,$event)\" \r\n optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select a Document Type\" appendTo=body\r\n [style]=\"{'width':'90%'}\"\r\n class=\"ng-invalid ng-dirty\"\r\n [showClear]=\"true\"\r\n (onClear)=\"clearDocType(fileObjectQueue)\"\r\n [ngClass]=\"{'ng-invalid':tableRows.controls[rowIndex].get('docType')?.invalid}\"/>\r\n </td>\r\n <td class=\"ion-text-right\" style=\"padding-right: unset\">\r\n <ion-button shape=\"round\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(fileObjectQueue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"fileObjectQueue.length == 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td *ngIf=\"fileObjectQueue.length > 0\" class=\"file-input-container flex flex-row align-items-center\">\r\n <div class=\"pr-1\"><b>+ Add</b> any other document</div >\r\n <input type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n <td></td>\r\n <td >\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n </form>\r\n <ul *ngIf=\"employerDataModel\" class=\"no-bullets gap-3\">\r\n <li class=\"pb-3\" *ngFor=\"let employer of employerDataModel; let i = index\">\r\n <p-card class=\"pb-2 gap-3\">\r\n <ng-template class=\"p-3\" pTemplate=\"content\" let-files let-uploadedFiles=\"uploadedFiles\" let-removeFileCallback=\"removeFileCallback\" let-removeUploadedFileCallback=\"removeUploadedFileCallback\" let-chooseCallback=\"chooseCallback\">\r\n \r\n <ion-row>\r\n <ion-col class=\"flex flex-row align-items-center gap-1\">\r\n <h4 class=\"m-0\" stlye=\"margin: 0\">{{employer.employerName}}</h4>\r\n <app-overlay-info [overlayText]=\"iconInfo\"\r\n style=\"margin-top: 2px; margin-left: 6px;\"></app-overlay-info>\r\n </ion-col>\r\n </ion-row>\r\n <div class=\"flex align-items-center justify-content-center flex-column border-2 border-dashed border-400 rounded-sm p-2\">\r\n <div *ngIf=\"!employer.file\" class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-upload border-2 border-circle p-2 m-2 text-xl text-400\"></i>\r\n <input id=\"employerWorkSearchFileInput\" type=\"file\" #fileInput [accept]=\"allowedFileType\"\r\n (change)=\"addFileToEmployerData($event,employer)\" style=\"display: none\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\" style=\"float:inline-end\">\r\n Upload\r\n </ion-button>\r\n </div>\r\n <div *ngIf=\"employer.file\">\r\n\r\n <div class=\"flex align-items-center justify-content-center flex-column p-0 sm:p-2 gap-5\">\r\n <div\r\n class=\"card m-0 px-6 flex align-items-center justify-content-center flex-column gap-2\"\r\n > \r\n <span>\r\n <i class=\"pi pi-file\" style=\"color: #4478AA\"></i>{{ employer.file.fileName }}\r\n </span>\r\n <ion-button aria-label=\"Remove Files\" fill=\"outline\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFileFromEmployerData(employer)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\" style=\"float: inline-end\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n \r\n </ng-template>\r\n </p-card>\r\n </li>\r\n </ul>", styles: [".file-input-container{text-align:right}.file-input-container input[type=file]{display:none}.file-input-container label{border:1px solid #ccc;padding:6px 12px;cursor:pointer}.upload-input-container input[type=file]{display:none}.upload-input-container label{border:1px solid #ccc;cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background:#fff!important;background-color:#fff!important}ol,ul{list-style:none}ul{list-style-type:square}li{color:var(--ion-color-grey)}.ng-invalid{border-color:#f44336}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}.no-bullets{list-style-type:none;padding-left:0}:host ::ng-deep .remove-header .p-fileupload-buttonbar{display:none}:host ::ng-deep .remove-header .p-fileupload-content{border-top-right-radius:4px;border-top-left-radius:4px;padding:1rem}:host ::ng-deep .p-card .p-card-body .p-card-content{padding:1rem!important}.border-400{border-color:#4478aa!important;border-radius:6px}\n"] }]
457
507
  }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.ToastController }], { uploadFileFormDirective: [{
458
508
  type: ViewChild,
459
509
  args: ['uploadFileFormDirective', { static: false }]
@@ -507,4 +557,4 @@ export class FileObject {
507
557
  this.employerName = employerName;
508
558
  }
509
559
  }
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0ksT0FBTyxFQUFpRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDT2xILCtCQUEwQztJQUN4Qyx1Q0FDNkQ7SUFDL0QsaUJBQU07OztJQUZjLGVBQXdCO0lBQXhCLDZDQUF3Qjs7O0lBTGhELDBCQUFJLFNBQUE7SUFDRSw2QkFBYTtJQUFBLGlCQUFLO0lBQ3RCLDZCQUE2QztJQUMzQywrQkFDQTtJQUFBLCtHQUdNO0lBQ1IsaUJBQUs7SUFDTCxxQkFBUztJQUNYLGlCQUFLOzs7SUFOSyxlQUFxQjtJQUFyQiw2Q0FBcUI7Ozs7OztJQVMvQixpQ0FBNEM7SUFDMUMsOEJBQStCLFNBQUE7SUFDekIsWUFBK0I7SUFBQSxpQkFBSztJQUN4QywwQkFBSSxxQkFBQTtJQUNnRSxrUUFBYSxnRUFDekYsSUFEOEgsZ1JBQ3hHLGVBQUEsaURBQXFDLENBQUEsSUFEbUUsd1FBTXpHLGVBQUEsd0NBQTZCLENBQUEsSUFONEU7SUFBcEgs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TUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQzFCLENBQUMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFVckIsWUFBWSxPQUFlLEVBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsV0FBbUIsRUFBRSxhQUFxQixFQUFFLFFBQWdCLEVBQUUsWUFBb0I7UUFDNUksSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGRyZW4sIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLFVudHlwZWRGb3JtQXJyYXksIE5nRm9ybSwgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXB0Y2hhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhcHRjaGEvY2FwdGNoYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtc2VydmljZS9jbGFpbWFudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBEb2NUeXBlVXBsb2FkLCBEb2NVcGxvYWRNb2RlbCwgRG9jVHlwZURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGV1cGxvYWQvRG9jVXBsb2FkTW9kZWwnO1xyXG5pbXBvcnQgeyBFbXBsb3llckRhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9maWxldXBsb2FkL0VtcGxveWVyRGF0YU1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXByb29mLW9mLWRvY3VtZW50LXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb29mLW9mLWRvY3VtZW50LXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb29mLW9mLWRvY3VtZW50LXVwbG9hZC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogUHJvb2ZPZkRvY3VtZW50VXBsb2FkQ29tcG9uZW50LFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvb2ZPZkRvY3VtZW50VXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICBwdWJsaWMgc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHVwbG9hZEZpbGVGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHVwbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbGVzOiBFdmVudEVtaXR0ZXI8TWFwPEZpbGUsIHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB1cGxvYWRFbXBsb3llckZpbGU6IEV2ZW50RW1pdHRlcjxFbXBsb3llckRhdGFNb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIFxyXG4gIGRvY0Zvcm06IEV2ZW50RW1pdHRlcjxVbnR5cGVkRm9ybUdyb3VwPiA9IG5ldyBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignZmlsZUlucHV0JykgZmlsZUlucHV0O1xyXG4gIFxyXG4gIHF1ZXVlOiBGaWxlW10gPSBbXTtcclxuXHJcbiAgZmlsZU9iamVjdFF1ZXVlOiBGaWxlT2JqZWN0W10gPSBbXTtcclxuXHJcbiAgbWFwT2ZGaWxlczogTWFwPEZpbGUsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dlZEZpbGVUeXBlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9vZk9mQW55dGhpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjb250ZXh0OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd1NlcGFyYXRlQXR0YWNoQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZG9jVXBsb2FkTW9kZWw6IERvY1VwbG9hZE1vZGVsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RlZERvY3VtZW50VHlwZTogRG9jVHlwZVVwbG9hZCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZG9jVHlwZTpEb2NUeXBlVXBsb2FkW10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbkluZm86c3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBlbXBsb3llckRhdGFNb2RlbCA6IEVtcGxveWVyRGF0YU1vZGVsW107XHJcbiAgZG9jVHlwZURyb3Bkb3duOiBEb2NUeXBlRHJvcGRvd25PcHRpb25bXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIHVwbG9hZEZpbGVGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGZvcm1BcnJheTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBpbWFnZUh0bWw6IHN0cmluZztcclxuICBkb2N1bWVudFR5cGVzOiBEb2NUeXBlVXBsb2FkW10gfCB1bmRlZmluZWQ7XHJcbiAgZmlsZVR5cGVzOiBzdHJpbmdbXTtcclxuICBleHBhbmRlZFJvd3M6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBcclxuICAgIHB1YmxpYyB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcikge1xyXG4gICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0IHVwbG9hZEZpbGVDdHJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUZvcm0uY29udHJvbHNbJ3VwbG9hZEZpbGVDdHJsJ107XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICB0YWJsZVJvd0FycmF5OiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtcclxuICAgICAgXSlcclxuICAgIH0pXHJcbiAgICB0aGlzLmRvY0Zvcm0uZW1pdCh0aGlzLmZvcm1BcnJheSk7XHJcbiAgICB0aGlzLmRvY1R5cGVEcm9wZG93biA9IHRoaXMuZG9jVHlwZS5tYXAoKGkpPT4oe1xyXG4gICAgICBsYWJlbDogaS5kb2NEZXNjcmlwdGlvbixcclxuICAgICAgdmFsdWU6IGksXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuZmlsZVR5cGVzID0gdGhpcy5hbGxvd2VkRmlsZVR5cGUuc3BsaXQoJywnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG5cclxuICB9O1xyXG4gIHdyaXRlVmFsdWUoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIGdldCB0YWJsZVJvd3MoKTogVW50eXBlZEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuZ2V0KCd0YWJsZVJvd0FycmF5JykgYXMgVW50eXBlZEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZTpGaWxlLCBhcHByb3ZlZEZpbGVUeXBlOnN0cmluZ1tdKTpib29sZWFue1xyXG4gICAgZm9yKGxldCB0eXBlIG9mIGFwcHJvdmVkRmlsZVR5cGUpe1xyXG4gICAgICBpZihmaWxlLnR5cGU9PT10eXBlKXtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBhc3luYyBhZGRUb1F1ZXVlKGV2ZW50KSB7XHJcbiAgICBsZXQgY3VyVXBsZEZpbGVMZW46IG51bWJlciA9IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7XHJcbiAgICBsZXQgcHJlVXBsZEZpbGVMZW46IG51bWJlciA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDtcclxuICAgIGNvbnNvbGUubG9nKCdjdXJVcGxkRmlsZUxlbiA9ICcsIGN1clVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCdwcmVVcGxkRmlsZUxlbiA9ICcsIHByZVVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyA9PSAnLCB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyk7XHJcbiAgICBpZiAodGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MhPT1udWxsICYmKGN1clVwbGRGaWxlTGVuICsgcHJlVXBsZEZpbGVMZW4pID4gdGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MpIHtcclxuICAgICAgdGhpcy5lcnJvcihcIllvdSBjYW4gbm90IHVwbG9hZCBtb3JlIHRoYW4gXCIgKyB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyArIFwiIGZpbGUocykuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgbGV0IGVuY29kZWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdzaXplID0gJywgdGhpcy5nZXRTaXplSW5NQihmaWxlPy5zaXplKSlcclxuICAgICAgaWYodGhpcy5maWxlT2JqZWN0UXVldWUuc29tZShlPT5lLmZpbGVOYW1lPT09IGZpbGUubmFtZSkpe1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0RvY3VtZW50IHdpdGggdGhlIHNhbWUgZmlsZSBuYW1lIGFscmVhZHkgZXhpc3RzLicpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUhPT1udWxsICYmIHRoaXMuZ2V0U2l6ZUluTUIoZmlsZT8uc2l6ZSkgPiB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUpIHtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHNpemUgY2FuIG5vdCBiZSBtb3JlIHRoYW4gJyArIHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSArICcgTUIuJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlLHRoaXMuZmlsZVR5cGVzKSl7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSB0eXBlIG5vdCBhbGxvd2VkJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBlbmNvZGVkID0gYXdhaXQgdG9CYXNlNjQoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IG5ldyBGaWxlT2JqZWN0KHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY1R5cGUsdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jRGVzY3JpcHRpb24sIGZpbGUubmFtZSwgZmlsZS50eXBlLCBlbmNvZGVkKTtcclxuICAgICAgdmFyIHVwbG9hZEZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgJ2RvY1R5cGUnOltudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YWJsZVJvd3MucHVzaCh1cGxvYWRGaWxlRm9ybSlcclxuICAgICAgdGhpcy5maWxlT2JqZWN0UXVldWUucHVzaChmaWxlT2JqZWN0KTtcclxuICAgICBcclxuICAgICAgdGhpcy51cGxvYWQuZW1pdCh0aGlzLmZpbGVPYmplY3RRdWV1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkRmlsZVRvRW1wbG95ZXJEYXRhKGV2ZW50LGVtcGxveWVyKXtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbaV07XHJcbiAgICAgIGxldCBlbmNvZGVkO1xyXG4gICAgICBpZiAodGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplIT09bnVsbCAmJiB0aGlzLmdldFNpemVJbk1CKGZpbGU/LnNpemUpID4gdGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSBzaXplIGNhbiBub3QgYmUgbW9yZSB0aGFuICcgKyB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUgKyAnIE1CLicpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKCF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSx0aGlzLmZpbGVUeXBlcykpe1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0ZpbGUgdHlwZSBub3QgYWxsb3dlZCcpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgZW5jb2RlZCA9IGF3YWl0IHRvQmFzZTY0KGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBuZXcgRmlsZU9iamVjdCh0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlPy5kb2NUeXBlLHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY0Rlc2NyaXB0aW9uLCBmaWxlLm5hbWUsIGZpbGUudHlwZSwgZW5jb2RlZCxlbXBsb3llci5yZWNvcmRJZCwgZW1wbG95ZXIuZW1wbG95ZXJOYW1lKTsgICAgICBcclxuICAgICAgZW1wbG95ZXIuZmlsZSA9IGZpbGVPYmplY3RcclxuICAgICAgdGhpcy51cGxvYWRFbXBsb3llckZpbGUuZW1pdCh0aGlzLmVtcGxveWVyRGF0YU1vZGVsKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgcmVtb3ZlRmlsZUZyb21FbXBsb3llckRhdGEoZW1wbG95ZXIpe1xyXG4gICAgZW1wbG95ZXIuZmlsZSA9IG51bGxcclxuICAgIHRoaXMudXBsb2FkRW1wbG95ZXJGaWxlLmVtaXQodGhpcy5lbXBsb3llckRhdGFNb2RlbCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tUXVldWUoZmlsZVRvUmVtb3ZlKSB7XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVPYmplY3RRdWV1ZVtpXS5maWxlTmFtZSA9PT0gZmlsZVRvUmVtb3ZlLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmRvY1R5cGVEcm9wZG93bi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgIGlmKHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLnZhbHVlLmRvY1R5cGU9PT1maWxlVG9SZW1vdmUuZG9jVHlwZSl7XHJcbiAgICAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMudGFibGVSb3dzLnJlbW92ZUF0KGluZGV4KTtcclxuICAgIHRoaXMubWFwT2ZGaWxlcy5kZWxldGUoZmlsZVRvUmVtb3ZlKTtcclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICB0aGlzLnVwbG9hZC5lbWl0KEFycmF5LmZyb20odGhpcy5tYXBPZkZpbGVzLnZhbHVlcygpKSk7XHJcbiAgICB0aGlzLmZpbGVzLmVtaXQodGhpcy5tYXBPZkZpbGVzKTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VEb2NUeXBlKGZpbGUsZXZlbnQpe1xyXG5cdFx0ICBjb25zb2xlLmxvZyhcIjE2NiBjaGFuZ2VEb2NUeXBlXCIpO1xyXG4gICAgaWYoZXZlbnQudmFsdWUgPT09IG51bGwpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBsZXQgcHJldlNlbGVjdGVkRG9jIDogc3RyaW5nO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgcHJldlNlbGVjdGVkRG9jID0gdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLmRvY1R5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlID0gZXZlbnQudmFsdWUuZG9jVHlwZTtcclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5uYW1lID0gZXZlbnQudmFsdWUuZG9jRGVzY3JpcHRpb247XHJcblxyXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuZG9jVHlwZURyb3Bkb3duLmxlbmd0aDsgaSsrKXtcclxuICAgICAgaWYoZXZlbnQudmFsdWUuZG9jVHlwZT09PXRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLnZhbHVlLmRvY1R5cGUpe1xyXG4gICAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfWVsc2UgaWYodGhpcy5kb2NUeXBlRHJvcGRvd25baV0udmFsdWUuZG9jVHlwZT09PXByZXZTZWxlY3RlZERvYyl7XHJcbiAgICAgICAgdGhpcy5kb2NUeXBlRHJvcGRvd25baV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG4gIGNsZWFyRG9jVHlwZShmaWxlKXtcclxuICAgIGxldCBpbmRleDtcclxuICAgIGxldCBwcmV2U2VsZWN0ZWREb2MgOiBzdHJpbmc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVPYmplY3RRdWV1ZVtpXS5maWxlTmFtZSA9PT0gZmlsZS5maWxlTmFtZSkge1xyXG4gICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgICBwcmV2U2VsZWN0ZWREb2MgPSB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0uZG9jVHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLmRvY1R5cGUgPW51bGw7XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0ubmFtZSA9IG51bGw7XHJcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5kb2NUeXBlRHJvcGRvd24ubGVuZ3RoOyBpKyspe1xyXG4gICAgIGlmKHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLnZhbHVlLmRvY1R5cGU9PT1wcmV2U2VsZWN0ZWREb2Mpe1xyXG4gICAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlUXVldWVXaXRoVHlwZShmaWxlT2JqZWN0KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIjE2NiB1cGRhdGVRdWV1ZVdpdGhUeXBlXCIpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGVPYmplY3QuZmlsZU5hbWUpIHtcclxuICAgICAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpXS5kb2NUeXBlID0gdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZS5kb2NUeXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXNlbnRUb2FzdChtc2csIGNvbG9yKSB7XHJcbiAgICBjb25zdCB0b2FzdCA9IGF3YWl0IHRoaXMudG9hc3RDb250cm9sbGVyLmNyZWF0ZSh7XHJcbiAgICAgIG1lc3NhZ2U6IG1zZyxcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICAgIGNvbG9yOiBjb2xvcixcclxuICAgICAgcG9zaXRpb246ICdib3R0b20nXHJcbiAgICB9KTtcclxuICAgIHRvYXN0LnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gIHN1Y2Nlc3MobXNnKSB7XHJcbiAgICB0aGlzLnByZXNlbnRUb2FzdChtc2csICdwcmltYXJ5Jyk7XHJcbiAgfVxyXG5cclxuICBlcnJvcihtc2cpIHtcclxuICAgIHRoaXMucHJlc2VudFRvYXN0KG1zZywgJ2RhbmdlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2l6ZUluTUIobnVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBudW0gLyAxMDI0IC8gMTAyNFxyXG4gIH1cclxuICBcclxufVxyXG5cclxuY29uc3QgdG9CYXNlNjQgPSBmaWxlID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xyXG4gIHJlYWRlci5vbmVycm9yID0gcmVqZWN0O1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVPYmplY3Qge1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgZG9jVHlwZTogc3RyaW5nO1xyXG4gIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgY29udGVudFR5cGU6IHN0cmluZztcclxuICBmaWxlSW5CYXNlZDY0OiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG5cdHJlY29yZElkPzogc3RyaW5nO1xyXG4gIGVtcGxveWVyTmFtZT86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoZG9jVHlwZTogc3RyaW5nLG5hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZywgZmlsZUluQmFzZWQ2NDogc3RyaW5nLCByZWNvcmRJZD86c3RyaW5nLCBlbXBsb3llck5hbWU/OnN0cmluZykge1xyXG4gICAgdGhpcy5kb2NUeXBlID0gZG9jVHlwZTtcclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7XHJcbiAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGU7XHJcbiAgICB0aGlzLmZpbGVJbkJhc2VkNjQgPSBmaWxlSW5CYXNlZDY0O1xyXG4gICAgdGhpcy5yZWNvcmRJZCA9IHJlY29yZElkO1xyXG4gICAgdGhpcy5lbXBsb3llck5hbWUgPSBlbXBsb3llck5hbWU7IFxyXG4gIH1cclxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUFycmF5XCIgI3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgKm5nSWY9XCIhZW1wbG95ZXJEYXRhTW9kZWxcIj5cclxuICAgIDxzZWN0aW9uICpuZ0lmPVwidGhpcy5jb250ZXh0ICE9ICdzaWduYXR1cmUnICYmIHRoaXMuY29udGV4dCAhPSd1cGxvYWRaaXBDb2RlcydcIj5cclxuICAgIDxwLXRhYmxlIGRhdGFLZXk9XCJmaWxlTmFtZVwiIFt2YWx1ZV09XCJmaWxlT2JqZWN0UXVldWVcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW2xvYWRpbmddPVwic2hvd1Byb2dyZXNzXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGg+RG9jdW1lbnQgTmFtZTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudCBUeXBlXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9vZk9mQW55dGhpbmdcIiBjbGFzcz1cInBsLTFcIj5cclxuICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiaWNvbkluZm9cIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDJweDsgbWFyZ2luLWxlZnQ6IDZweDsgXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1maWxlT2JqZWN0UXVldWUgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJ0YWJsZVJvd0FycmF5XCI+XHJcbiAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgPHRkPnt7IGZpbGVPYmplY3RRdWV1ZT8uZmlsZU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZG9jVHlwZURyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9jVHlwZVwiIFsobmdNb2RlbCldPVwiZmlsZU9iamVjdFF1ZXVlLnNlbGVjdGVkRG9jdW1lbnRUeXBlXCIgXHJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImNoYW5nZURvY1R5cGUoZmlsZU9iamVjdFF1ZXVlLCRldmVudClcIiBcclxuICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgRG9jdW1lbnQgVHlwZVwiIGFwcGVuZFRvPWJvZHlcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6JzkwJSd9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5nLWludmFsaWQgbmctZGlydHlcIlxyXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xlYXIpPVwiY2xlYXJEb2NUeXBlKGZpbGVPYmplY3RRdWV1ZSlcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbmctaW52YWxpZCc6dGFibGVSb3dzLmNvbnRyb2xzW3Jvd0luZGV4XS5nZXQoJ2RvY1R5cGUnKT8uaW52YWxpZH1cIi8+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiB1bnNldFwiPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZyb21RdWV1ZShmaWxlT2JqZWN0UXVldWUpXCJcclxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+IFxyXG4gICAgICAgIDx0ciAqbmdJZj1cInByb29mT2ZBbnl0aGluZ1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0lmPVwiZmlsZU9iamVjdFF1ZXVlLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHItMVwiPjxiPisgQWRkPC9iPiBkb2N1bWVudDwvZGl2ID5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFkZFRvUXVldWUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gYXJpYS1sYWJlbD1cIkFkZCBGaWxlc1wiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsICdwbHVzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJmaWxlT2JqZWN0UXVldWUubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmlsZS1pbnB1dC1jb250YWluZXIgZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByLTFcIj48Yj4rIEFkZDwvYj4gYW55IG90aGVyIGRvY3VtZW50PC9kaXYgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQWRkIEZpbGVzXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ3BsdXMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgPHRkID5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuICA8L3NlY3Rpb24+XHJcbiAgPC9mb3JtPlxyXG4gIDx1bCAqbmdJZj1cImVtcGxveWVyRGF0YU1vZGVsXCIgY2xhc3M9XCJuby1idWxsZXRzIGdhcC0zXCI+XHJcbiAgICA8bGkgY2xhc3M9XCJwYi0zXCIgKm5nRm9yPVwibGV0IGVtcGxveWVyIG9mIGVtcGxveWVyRGF0YU1vZGVsOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxwLWNhcmQgY2xhc3M9XCJwYi0yIGdhcC0zXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBjbGFzcz1cInAtM1wiIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZmlsZXMgbGV0LXVwbG9hZGVkRmlsZXM9XCJ1cGxvYWRlZEZpbGVzXCIgbGV0LXJlbW92ZUZpbGVDYWxsYmFjaz1cInJlbW92ZUZpbGVDYWxsYmFja1wiIGxldC1yZW1vdmVVcGxvYWRlZEZpbGVDYWxsYmFjaz1cInJlbW92ZVVwbG9hZGVkRmlsZUNhbGxiYWNrXCIgbGV0LWNob29zZUNhbGxiYWNrPVwiY2hvb3NlQ2FsbGJhY2tcIj5cclxuICAgICAgICBcclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibS0wXCIgc3RseWU9XCJtYXJnaW46IDBcIj57e2VtcGxveWVyLmVtcGxveWVyTmFtZX19PC9oND5cclxuICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiaWNvbkluZm9cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMnB4OyBtYXJnaW4tbGVmdDogNnB4O1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItNDAwIHJvdW5kZWQtc20gcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZW1wbG95ZXIuZmlsZVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXVwbG9hZCBib3JkZXItMiBib3JkZXItY2lyY2xlIHAtMiBtLTIgdGV4dC14bCB0ZXh0LTQwMFwiPjwvaT5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwiZW1wbG95ZXJXb3JrU2VhcmNoRmlsZUlucHV0XCIgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRGaWxlVG9FbXBsb3llckRhdGEoJGV2ZW50LGVtcGxveWVyKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJBZGQgRmlsZXNcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIHN0eWxlPVwiZmxvYXQ6aW5saW5lLWVuZFwiPlxyXG4gICAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbXBsb3llci5maWxlXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBwLTAgc206cC0yIGdhcC01XCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIG0tMCBweC02IGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gZ2FwLTJcIlxyXG4gICAgICAgICAgICAgID4gXHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1maWxlXCIgc3R5bGU9XCJjb2xvcjogIzQ0NzhBQVwiPjwvaT57eyBlbXBsb3llci5maWxlLmZpbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUmVtb3ZlIEZpbGVzXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBwVG9vbHRpcD1cIlJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVGaWxlRnJvbUVtcGxveWVyRGF0YShlbXBsb3llcilcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCIgc3R5bGU9XCJmbG9hdDogaW5saW5lLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG5cclxuICAgICAgXHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvcC1jYXJkPlxyXG4gICAgPC9saT5cclxuICA8L3VsPiJdfQ==
560
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQvcHJvb2Ytb2YtZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDL0ksT0FBTyxFQUFpRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDRXhILHNCQUE2Rjs7O0lBT3JGLCtCQUEwQztJQUN4Qyx1Q0FBMEc7SUFDNUcsaUJBQU07OztJQURjLGVBQXdCO0lBQXhCLDhDQUF3Qjs7O0lBTGhELDBCQUFJLFNBQUE7SUFDRSw2QkFBYTtJQUFBLGlCQUFLO0lBQ3RCLDhCQUE2QztJQUMzQywrQkFDQTtJQUFBLDZIQUVNO0lBQ1IsaUJBQUs7SUFDTCxxQkFBUztJQUNYLGlCQUFLOzs7SUFMSyxlQUFxQjtJQUFyQiw4Q0FBcUI7OztJQUxqQywrSEFXYzs7O0lBT1IsK0JBQTBDO0lBQ3hDLHVDQUE4RDtJQUNoRSxpQkFBTTs7O0lBRGMsZUFBd0I7SUFBeEIsOENBQXdCOzs7SUFKaEQsMEJBQUksYUFBQTtJQUVBLCtCQUNBO0lBQUEsNkhBRU07SUFDUixpQkFBSztJQUNMLHFCQUFTLFNBQUE7SUFFWCxp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QUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkcmVuLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCxVbnR5cGVkRm9ybUFycmF5LCBOZ0Zvcm0sIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXB0Y2hhL2NhcHRjaGEuc2VydmljZSc7XHJcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgRG9jVHlwZVVwbG9hZCwgRG9jVXBsb2FkTW9kZWwsIERvY1R5cGVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9maWxldXBsb2FkL0RvY1VwbG9hZE1vZGVsJztcclxuaW1wb3J0IHsgRW1wbG95ZXJEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZXVwbG9hZC9FbXBsb3llckRhdGFNb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcm9vZi1vZi1kb2N1bWVudC11cGxvYWQuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IFByb29mT2ZEb2N1bWVudFVwbG9hZENvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb29mT2ZEb2N1bWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbiAgcHVibGljIHNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCd1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyB1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB1cGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWxlczogRXZlbnRFbWl0dGVyPE1hcDxGaWxlLCBzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXBsb2FkRW1wbG95ZXJGaWxlOiBFdmVudEVtaXR0ZXI8RW1wbG95ZXJEYXRhTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBcclxuICBkb2NGb3JtOiBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyPFVudHlwZWRGb3JtR3JvdXA+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDtcclxuICBcclxuICBxdWV1ZTogRmlsZVtdID0gW107XHJcblxyXG4gIGZpbGVPYmplY3RRdWV1ZTogRmlsZU9iamVjdFtdID0gW107XHJcblxyXG4gIG1hcE9mRmlsZXM6IE1hcDxGaWxlLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFsbG93ZWRGaWxlVHlwZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvb2ZPZkFueXRoaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29udGV4dDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dTZXBhcmF0ZUF0dGFjaEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRvY1VwbG9hZE1vZGVsOiBEb2NVcGxvYWRNb2RlbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWREb2N1bWVudFR5cGU6IERvY1R5cGVVcGxvYWQgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRvY1R5cGU6RG9jVHlwZVVwbG9hZFtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGljb25JbmZvOnN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZW1wbG95ZXJEYXRhTW9kZWwgOiBFbXBsb3llckRhdGFNb2RlbFtdO1xyXG4gIGRvY1R5cGVEcm9wZG93bjogRG9jVHlwZURyb3Bkb3duT3B0aW9uW10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRGaWxlRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBmb3JtQXJyYXk6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgaW1hZ2VIdG1sOiBzdHJpbmc7XHJcbiAgZG9jdW1lbnRUeXBlczogRG9jVHlwZVVwbG9hZFtdIHwgdW5kZWZpbmVkO1xyXG4gIGZpbGVUeXBlczogc3RyaW5nW107XHJcbiAgZXhwYW5kZWRSb3dzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgXHJcbiAgICBwdWJsaWMgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIpIHtcclxuICAgICBcclxuICB9XHJcblxyXG4gIGdldCB1cGxvYWRGaWxlQ3RybCgpIHtcclxuICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVGb3JtLmNvbnRyb2xzWyd1cGxvYWRGaWxlQ3RybCddO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdGFibGVSb3dBcnJheTogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXHJcbiAgICAgIF0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5kb2NGb3JtLmVtaXQodGhpcy5mb3JtQXJyYXkpO1xyXG4gICAgaWYgKHRoaXMuZG9jVHlwZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duID0gdGhpcy5kb2NUeXBlLm1hcCgoaSkgPT4gKHtcclxuICAgICAgICBsYWJlbDogaS5kb2NEZXNjcmlwdGlvbixcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZVR5cGVzID0gdGhpcy5hbGxvd2VkRmlsZVR5cGUuc3BsaXQoJywnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge1xyXG5cclxuICB9O1xyXG4gIHdyaXRlVmFsdWUoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIGdldCB0YWJsZVJvd3MoKTogVW50eXBlZEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuZ2V0KCd0YWJsZVJvd0FycmF5JykgYXMgVW50eXBlZEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZTpGaWxlLCBhcHByb3ZlZEZpbGVUeXBlOnN0cmluZ1tdKTpib29sZWFue1xyXG4gICAgZm9yKGxldCB0eXBlIG9mIGFwcHJvdmVkRmlsZVR5cGUpe1xyXG4gICAgICBpZihmaWxlLnR5cGU9PT10eXBlKXtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBhc3luYyBhZGRUb1F1ZXVlKGV2ZW50KSB7XHJcbiAgICBsZXQgY3VyVXBsZEZpbGVMZW46IG51bWJlciA9IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7XHJcbiAgICBsZXQgcHJlVXBsZEZpbGVMZW46IG51bWJlciA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlLmxlbmd0aDtcclxuICAgIGNvbnNvbGUubG9nKCdjdXJVcGxkRmlsZUxlbiA9ICcsIGN1clVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCdwcmVVcGxkRmlsZUxlbiA9ICcsIHByZVVwbGRGaWxlTGVuKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyA9PSAnLCB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyk7XHJcbiAgICBpZiAodGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MhPT1udWxsICYmKGN1clVwbGRGaWxlTGVuICsgcHJlVXBsZEZpbGVMZW4pID4gdGhpcy5kb2NVcGxvYWRNb2RlbC50b3RhbERvY3MpIHtcclxuICAgICAgdGhpcy5lcnJvcihcIllvdSBjYW4gbm90IHVwbG9hZCBtb3JlIHRoYW4gXCIgKyB0aGlzLmRvY1VwbG9hZE1vZGVsLnRvdGFsRG9jcyArIFwiIGZpbGUocykuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1tpXTtcclxuICAgICAgbGV0IGVuY29kZWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdzaXplID0gJywgdGhpcy5nZXRTaXplSW5NQihmaWxlPy5zaXplKSlcclxuICAgICAgaWYodGhpcy5maWxlT2JqZWN0UXVldWUuc29tZShlPT5lLmZpbGVOYW1lPT09IGZpbGUubmFtZSkpe1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0RvY3VtZW50IHdpdGggdGhlIHNhbWUgZmlsZSBuYW1lIGFscmVhZHkgZXhpc3RzLicpO1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUhPT1udWxsICYmIHRoaXMuZ2V0U2l6ZUluTUIoZmlsZT8uc2l6ZSkgPiB0aGlzLmRvY1VwbG9hZE1vZGVsLnNpemUpIHtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHNpemUgY2FuIG5vdCBiZSBtb3JlIHRoYW4gJyArIHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSArICcgTUIuJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlLHRoaXMuZmlsZVR5cGVzKSl7XHJcbiAgICAgICAgdGhpcy5lcnJvcignRmlsZSB0eXBlIG5vdCBhbGxvd2VkJyk7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBlbmNvZGVkID0gYXdhaXQgdG9CYXNlNjQoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IG5ldyBGaWxlT2JqZWN0KHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGU/LmRvY1R5cGUsdGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jRGVzY3JpcHRpb24sIGZpbGUubmFtZSwgZmlsZS50eXBlLCBlbmNvZGVkKTtcclxuICAgICAgdmFyIHVwbG9hZEZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgIGlmICh0aGlzLmRvY1R5cGUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHVwbG9hZEZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAnZG9jVHlwZSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9ICAgXHJcbiAgICAgIHRoaXMudGFibGVSb3dzLnB1c2godXBsb2FkRmlsZUZvcm0pXHJcbiAgICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlLnB1c2goZmlsZU9iamVjdCk7XHJcbiAgICAgXHJcbiAgICAgIHRoaXMudXBsb2FkLmVtaXQodGhpcy5maWxlT2JqZWN0UXVldWUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZEZpbGVUb0VtcGxveWVyRGF0YShldmVudCxlbXBsb3llcil7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzW2ldO1xyXG4gICAgICBsZXQgZW5jb2RlZDtcclxuICAgICAgaWYgKHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSE9PW51bGwgJiYgdGhpcy5nZXRTaXplSW5NQihmaWxlPy5zaXplKSA+IHRoaXMuZG9jVXBsb2FkTW9kZWwuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuZXJyb3IoJ0ZpbGUgc2l6ZSBjYW4gbm90IGJlIG1vcmUgdGhhbiAnICsgdGhpcy5kb2NVcGxvYWRNb2RlbC5zaXplICsgJyBNQi4nKTtcclxuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZighdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUsdGhpcy5maWxlVHlwZXMpKXtcclxuICAgICAgICB0aGlzLmVycm9yKCdGaWxlIHR5cGUgbm90IGFsbG93ZWQnKTtcclxuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgIGVuY29kZWQgPSBhd2FpdCB0b0Jhc2U2NChmaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmaWxlT2JqZWN0ID0gbmV3IEZpbGVPYmplY3QodGhpcy5zZWxlY3RlZERvY3VtZW50VHlwZT8uZG9jVHlwZSx0aGlzLnNlbGVjdGVkRG9jdW1lbnRUeXBlPy5kb2NEZXNjcmlwdGlvbiwgZmlsZS5uYW1lLCBmaWxlLnR5cGUsIGVuY29kZWQsZW1wbG95ZXIucmVjb3JkSWQsIGVtcGxveWVyLmVtcGxveWVyTmFtZSk7ICAgICAgXHJcbiAgICAgIGVtcGxveWVyLmZpbGUgPSBmaWxlT2JqZWN0XHJcbiAgICAgIHRoaXMudXBsb2FkRW1wbG95ZXJGaWxlLmVtaXQodGhpcy5lbXBsb3llckRhdGFNb2RlbCk7XHJcbiAgICB9XHJcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgfVxyXG4gIFxyXG4gIHJlbW92ZUZpbGVGcm9tRW1wbG95ZXJEYXRhKGVtcGxveWVyKXtcclxuICAgIGVtcGxveWVyLmZpbGUgPSBudWxsXHJcbiAgICB0aGlzLnVwbG9hZEVtcGxveWVyRmlsZS5lbWl0KHRoaXMuZW1wbG95ZXJEYXRhTW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRnJvbVF1ZXVlKGZpbGVUb1JlbW92ZSkge1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGVUb1JlbW92ZS5maWxlTmFtZSkge1xyXG4gICAgICAgIGluZGV4ID0gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5kb2NUeXBlRHJvcGRvd24ubGVuZ3RoOyBpKyspe1xyXG4gICAgICBpZih0aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlPT09ZmlsZVRvUmVtb3ZlLmRvY1R5cGUpe1xyXG4gICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgfVxyXG4gICAgIH1cclxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnRhYmxlUm93cy5yZW1vdmVBdChpbmRleCk7XHJcbiAgICB0aGlzLm1hcE9mRmlsZXMuZGVsZXRlKGZpbGVUb1JlbW92ZSk7XHJcbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgdGhpcy51cGxvYWQuZW1pdChBcnJheS5mcm9tKHRoaXMubWFwT2ZGaWxlcy52YWx1ZXMoKSkpO1xyXG4gICAgdGhpcy5maWxlcy5lbWl0KHRoaXMubWFwT2ZGaWxlcyk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRG9jVHlwZShmaWxlLGV2ZW50KXtcclxuXHRcdCAgY29uc29sZS5sb2coXCIxNjYgY2hhbmdlRG9jVHlwZVwiKTtcclxuICAgIGlmKGV2ZW50LnZhbHVlID09PSBudWxsKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgbGV0IHByZXZTZWxlY3RlZERvYyA6IHN0cmluZztcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlLmZpbGVOYW1lKSB7XHJcbiAgICAgICAgaW5kZXggPSBpO1xyXG4gICAgICAgIHByZXZTZWxlY3RlZERvYyA9IHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0uZG9jVHlwZSA9IGV2ZW50LnZhbHVlLmRvY1R5cGU7XHJcbiAgICB0aGlzLmZpbGVPYmplY3RRdWV1ZVtpbmRleF0ubmFtZSA9IGV2ZW50LnZhbHVlLmRvY0Rlc2NyaXB0aW9uO1xyXG5cclxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmRvY1R5cGVEcm9wZG93bi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgIGlmKGV2ZW50LnZhbHVlLmRvY1R5cGU9PT10aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlKXtcclxuICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLnZhbHVlLmRvY1R5cGU9PT1wcmV2U2VsZWN0ZWREb2Mpe1xyXG4gICAgICAgIHRoaXMuZG9jVHlwZURyb3Bkb3duW2ldLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICBjbGVhckRvY1R5cGUoZmlsZSl7XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBsZXQgcHJldlNlbGVjdGVkRG9jIDogc3RyaW5nO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbGVPYmplY3RRdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZmlsZU5hbWUgPT09IGZpbGUuZmlsZU5hbWUpIHtcclxuICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgcHJldlNlbGVjdGVkRG9jID0gdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLmRvY1R5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZmlsZU9iamVjdFF1ZXVlW2luZGV4XS5kb2NUeXBlID1udWxsO1xyXG4gICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaW5kZXhdLm5hbWUgPSBudWxsO1xyXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuZG9jVHlwZURyb3Bkb3duLmxlbmd0aDsgaSsrKXtcclxuICAgICBpZih0aGlzLmRvY1R5cGVEcm9wZG93bltpXS52YWx1ZS5kb2NUeXBlPT09cHJldlNlbGVjdGVkRG9jKXtcclxuICAgICAgICB0aGlzLmRvY1R5cGVEcm9wZG93bltpXS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZVF1ZXVlV2l0aFR5cGUoZmlsZU9iamVjdCkge1xyXG4gICAgY29uc29sZS5sb2coXCIxNjYgdXBkYXRlUXVldWVXaXRoVHlwZVwiKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlT2JqZWN0UXVldWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZmlsZU9iamVjdFF1ZXVlW2ldLmZpbGVOYW1lID09PSBmaWxlT2JqZWN0LmZpbGVOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5maWxlT2JqZWN0UXVldWVbaV0uZG9jVHlwZSA9IHRoaXMuc2VsZWN0ZWREb2N1bWVudFR5cGUuZG9jVHlwZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50VG9hc3QobXNnLCBjb2xvcikge1xyXG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0Q29udHJvbGxlci5jcmVhdGUoe1xyXG4gICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxyXG4gICAgICBjb2xvcjogY29sb3IsXHJcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJ1xyXG4gICAgfSk7XHJcbiAgICB0b2FzdC5wcmVzZW50KCk7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKG1zZykge1xyXG4gICAgdGhpcy5wcmVzZW50VG9hc3QobXNnLCAncHJpbWFyeScpO1xyXG4gIH1cclxuXHJcbiAgZXJyb3IobXNnKSB7XHJcbiAgICB0aGlzLnByZXNlbnRUb2FzdChtc2csICdkYW5nZXInKTtcclxuICB9XHJcblxyXG4gIGdldFNpemVJbk1CKG51bTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbnVtIC8gMTAyNCAvIDEwMjRcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbmNvbnN0IHRvQmFzZTY0ID0gZmlsZSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlT2JqZWN0IHtcclxuICBmaWxlOiBGaWxlO1xyXG4gIGRvY1R5cGU6IHN0cmluZztcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XHJcbiAgZmlsZUluQmFzZWQ2NDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuXHRyZWNvcmRJZD86IHN0cmluZztcclxuICBlbXBsb3llck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRvY1R5cGU6IHN0cmluZyxuYW1lOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcsIGNvbnRlbnRUeXBlOiBzdHJpbmcsIGZpbGVJbkJhc2VkNjQ6IHN0cmluZywgcmVjb3JkSWQ/OnN0cmluZywgZW1wbG95ZXJOYW1lPzpzdHJpbmcpIHtcclxuICAgIHRoaXMuZG9jVHlwZSA9IGRvY1R5cGU7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xyXG4gICAgdGhpcy5maWxlSW5CYXNlZDY0ID0gZmlsZUluQmFzZWQ2NDtcclxuICAgIHRoaXMucmVjb3JkSWQgPSByZWNvcmRJZDtcclxuICAgIHRoaXMuZW1wbG95ZXJOYW1lID0gZW1wbG95ZXJOYW1lOyBcclxuICB9XHJcbn1cclxuXHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUFycmF5XCIgI3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgKm5nSWY9XCIhZW1wbG95ZXJEYXRhTW9kZWxcIj5cclxuICAgIDxzZWN0aW9uICpuZ0lmPVwidGhpcy5jb250ZXh0ICE9ICdzaWduYXR1cmUnICYmIHRoaXMuY29udGV4dCAhPSd1cGxvYWRaaXBDb2RlcydcIj5cclxuICAgIDxwLXRhYmxlIGRhdGFLZXk9XCJmaWxlTmFtZVwiIFt2YWx1ZV09XCJmaWxlT2JqZWN0UXVldWVcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW2xvYWRpbmddPVwic2hvd1Byb2dyZXNzXCI+XHJcbiAgICAgIDxkaXYgKm5nSWYgPSBcImRvY1R5cGUubGVuZ3RoID4gMDsgdGhlbiBzaG93RG9jVHlwZUhlYWRpbmc7IGVsc2UgcmVtb3ZlRG9jVHlwZUhlYWRpbmdcIiA+PC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0RvY1R5cGVIZWFkaW5nPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoPkRvY3VtZW50IE5hbWU8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIERvY3VtZW50IFR5cGVcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCIgY2xhc3M9XCJwbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiaWNvbkluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJweDsgbWFyZ2luLWxlZnQ6IDZweDsgXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNyZW1vdmVEb2NUeXBlSGVhZGluZz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgRG9jdW1lbnQgTmFtZVxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9vZk9mQW55dGhpbmdcIiBjbGFzcz1cInBsLTFcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJpY29uSW5mb1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1maWxlT2JqZWN0UXVldWUgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJ0YWJsZVJvd0FycmF5XCI+XHJcbiAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgPHRkPnt7IGZpbGVPYmplY3RRdWV1ZT8uZmlsZU5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJkb2NUeXBlLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJkb2NUeXBlRHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJkb2NUeXBlXCIgWyhuZ01vZGVsKV09XCJmaWxlT2JqZWN0UXVldWUuc2VsZWN0ZWREb2N1bWVudFR5cGVcIiBcclxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY2hhbmdlRG9jVHlwZShmaWxlT2JqZWN0UXVldWUsJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBEb2N1bWVudCBUeXBlXCIgYXBwZW5kVG89Ym9keVxyXG4gICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzonOTAlJ31cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmctaW52YWxpZCBuZy1kaXJ0eVwiXHJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAob25DbGVhcik9XCJjbGVhckRvY1R5cGUoZmlsZU9iamVjdFF1ZXVlKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzp0YWJsZVJvd3MuY29udHJvbHNbcm93SW5kZXhdLmdldCgnZG9jVHlwZScpPy5pbnZhbGlkfVwiLz5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IHVuc2V0XCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgcFRvb2x0aXA9XCJSZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlRnJvbVF1ZXVlKGZpbGVPYmplY3RRdWV1ZSlcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgXHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj4gXHJcbiAgICAgICAgPHRyICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCJmaWxlT2JqZWN0UXVldWUubGVuZ3RoID09IDBcIiBjbGFzcz1cImZpbGUtaW5wdXQtY29udGFpbmVyIGZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwci0xXCI+PGI+KyBBZGQ8L2I+IGRvY3VtZW50PC9kaXYgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQWRkIEZpbGVzXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ3BsdXMnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZCAqbmdJZj1cImZpbGVPYmplY3RRdWV1ZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHItMVwiPjxiPisgQWRkPC9iPiBhbnkgb3RoZXIgZG9jdW1lbnQ8L2RpdiA+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJBZGQgRmlsZXNcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYWwnLCAncGx1cyddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICA8dGQgPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG4gIDwvc2VjdGlvbj5cclxuICA8L2Zvcm0+XHJcbiAgPHVsICpuZ0lmPVwiZW1wbG95ZXJEYXRhTW9kZWxcIiBjbGFzcz1cIm5vLWJ1bGxldHMgZ2FwLTNcIj5cclxuICAgIDxsaSBjbGFzcz1cInBiLTNcIiAqbmdGb3I9XCJsZXQgZW1wbG95ZXIgb2YgZW1wbG95ZXJEYXRhTW9kZWw7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPHAtY2FyZCBjbGFzcz1cInBiLTIgZ2FwLTNcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIGNsYXNzPVwicC0zXCIgcFRlbXBsYXRlPVwiY29udGVudFwiIGxldC1maWxlcyBsZXQtdXBsb2FkZWRGaWxlcz1cInVwbG9hZGVkRmlsZXNcIiBsZXQtcmVtb3ZlRmlsZUNhbGxiYWNrPVwicmVtb3ZlRmlsZUNhbGxiYWNrXCIgbGV0LXJlbW92ZVVwbG9hZGVkRmlsZUNhbGxiYWNrPVwicmVtb3ZlVXBsb2FkZWRGaWxlQ2FsbGJhY2tcIiBsZXQtY2hvb3NlQ2FsbGJhY2s9XCJjaG9vc2VDYWxsYmFja1wiPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtLTBcIiBzdGx5ZT1cIm1hcmdpbjogMFwiPnt7ZW1wbG95ZXIuZW1wbG95ZXJOYW1lfX08L2g0PlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJpY29uSW5mb1wiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAycHg7IG1hcmdpbi1sZWZ0OiA2cHg7XCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBib3JkZXItMiBib3JkZXItZGFzaGVkIGJvcmRlci00MDAgcm91bmRlZC1zbSBwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFlbXBsb3llci5maWxlXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXBsb2FkIGJvcmRlci0yIGJvcmRlci1jaXJjbGUgcC0yIG0tMiB0ZXh0LXhsIHRleHQtNDAwXCI+PC9pPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbXBsb3llcldvcmtTZWFyY2hGaWxlSW5wdXRcIiB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cImFkZEZpbGVUb0VtcGxveWVyRGF0YSgkZXZlbnQsZW1wbG95ZXIpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gYXJpYS1sYWJlbD1cIkFkZCBGaWxlc1wiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgc3R5bGU9XCJmbG9hdDppbmxpbmUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgVXBsb2FkXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVtcGxveWVyLmZpbGVcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIHAtMCBzbTpwLTIgZ2FwLTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgbS0wIHB4LTYgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImNvbG9yOiAjNDQ3OEFBXCI+PC9pPnt7IGVtcGxveWVyLmZpbGUuZmlsZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZW1vdmUgRmlsZXNcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZpbGVGcm9tRW1wbG95ZXJEYXRhKGVtcGxveWVyKVwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cImlvbi1wYWRkaW5nLWxlZnRcIiBzdHlsZT1cImZsb2F0OiBpbmxpbmUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICBcclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWNhcmQ+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+Il19