ax-common-ui-lib 1.0.1-beta.34-testing3 → 1.0.1-beta.34-testing4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/form-object/form-object-list/form-object-list.component.mjs +123 -142
- package/esm2020/lib/form-object/form-object-view/form-object-widgets/image-widget-view/image-map-view/image-map-view.component.mjs +3 -3
- package/esm2020/lib/form-object/form-object-view/form-object-widgets/image-widget-view/image-widget-lightbox-view/image-widget-lightbox-view.component.mjs +3 -3
- package/fesm2015/ax-common-ui-lib.mjs +126 -147
- package/fesm2015/ax-common-ui-lib.mjs.map +1 -1
- package/fesm2020/ax-common-ui-lib.mjs +126 -145
- package/fesm2020/ax-common-ui-lib.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -37,221 +37,205 @@ function FormObjectListComponent_ng_container_0_ng_container_1_Template(rf, ctx)
|
|
|
37
37
|
i0.ɵɵadvance(1);
|
|
38
38
|
i0.ɵɵproperty("elementType", ctx_r1.GhostLoaderType.PaginationViewLoader);
|
|
39
39
|
} }
|
|
40
|
-
function FormObjectListComponent_ng_container_0_ng_container_2_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "div", 13);
|
|
43
|
-
i0.ɵɵelementStart(1, "div", 14);
|
|
44
|
-
i0.ɵɵtext(2, "Trial expired");
|
|
45
|
-
i0.ɵɵelementEnd();
|
|
46
|
-
i0.ɵɵelementStart(3, "div", 14);
|
|
47
|
-
i0.ɵɵtext(4, "To continue viewing data please subscribe to a plan first.");
|
|
48
|
-
i0.ɵɵelementEnd();
|
|
49
|
-
i0.ɵɵelement(5, "br");
|
|
50
|
-
i0.ɵɵelementStart(6, "button", 15);
|
|
51
|
-
i0.ɵɵlistener("click", function FormObjectListComponent_ng_container_0_ng_container_2_div_4_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(3); return ctx_r7.navigateToBilling(); });
|
|
52
|
-
i0.ɵɵtext(7, "Upgrade");
|
|
53
|
-
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementEnd();
|
|
55
|
-
} }
|
|
56
40
|
const _c0 = function (a0) { return { "arrow-active": a0 }; };
|
|
57
|
-
function
|
|
58
|
-
i0.ɵɵelementStart(0, "div",
|
|
59
|
-
i0.ɵɵelementStart(1, "span",
|
|
41
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
43
|
+
i0.ɵɵelementStart(1, "span", 22);
|
|
60
44
|
i0.ɵɵtext(2);
|
|
61
45
|
i0.ɵɵelementEnd();
|
|
62
|
-
i0.ɵɵelementStart(3, "div",
|
|
63
|
-
i0.ɵɵelementStart(4, "div",
|
|
46
|
+
i0.ɵɵelementStart(3, "div", 23);
|
|
47
|
+
i0.ɵɵelementStart(4, "div", 24);
|
|
64
48
|
i0.ɵɵtext(5, "\u25B2");
|
|
65
49
|
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵelementStart(6, "div",
|
|
50
|
+
i0.ɵɵelementStart(6, "div", 25);
|
|
67
51
|
i0.ɵɵtext(7, "\u25BC");
|
|
68
52
|
i0.ɵɵelementEnd();
|
|
69
53
|
i0.ɵɵelementEnd();
|
|
70
54
|
i0.ɵɵelementEnd();
|
|
71
55
|
} if (rf & 2) {
|
|
72
|
-
const
|
|
73
|
-
const
|
|
56
|
+
const column_r8 = i0.ɵɵnextContext().$implicit;
|
|
57
|
+
const ctx_r9 = i0.ɵɵnextContext(4);
|
|
74
58
|
i0.ɵɵadvance(2);
|
|
75
|
-
i0.ɵɵtextInterpolate(
|
|
59
|
+
i0.ɵɵtextInterpolate(ctx_r9.orderedArray.indexOf(column_r8.widget == null ? null : column_r8.widget.identifier) + 1);
|
|
76
60
|
i0.ɵɵadvance(2);
|
|
77
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0,
|
|
61
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r9.orderMap.get(column_r8.widget == null ? null : column_r8.widget.identifier) === ctx_r9.sortOrder.ascending));
|
|
78
62
|
i0.ɵɵadvance(2);
|
|
79
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0,
|
|
63
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0, ctx_r9.orderMap.get(column_r8.widget == null ? null : column_r8.widget.identifier) === ctx_r9.sortOrder.descending));
|
|
80
64
|
} }
|
|
81
|
-
function
|
|
82
|
-
i0.ɵɵelementStart(0, "div",
|
|
83
|
-
i0.ɵɵelementStart(1, "span",
|
|
65
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
67
|
+
i0.ɵɵelementStart(1, "span", 26);
|
|
84
68
|
i0.ɵɵtext(2);
|
|
85
69
|
i0.ɵɵelementEnd();
|
|
86
|
-
i0.ɵɵelementStart(3, "div",
|
|
87
|
-
i0.ɵɵelementStart(4, "div",
|
|
70
|
+
i0.ɵɵelementStart(3, "div", 23);
|
|
71
|
+
i0.ɵɵelementStart(4, "div", 27);
|
|
88
72
|
i0.ɵɵtext(5, "\u25B2");
|
|
89
73
|
i0.ɵɵelementEnd();
|
|
90
|
-
i0.ɵɵelementStart(6, "div",
|
|
74
|
+
i0.ɵɵelementStart(6, "div", 28);
|
|
91
75
|
i0.ɵɵtext(7, "\u25BC");
|
|
92
76
|
i0.ɵɵelementEnd();
|
|
93
77
|
i0.ɵɵelementEnd();
|
|
94
78
|
i0.ɵɵelementEnd();
|
|
95
79
|
} if (rf & 2) {
|
|
96
|
-
const
|
|
97
|
-
const
|
|
80
|
+
const column_r8 = i0.ɵɵnextContext().$implicit;
|
|
81
|
+
const ctx_r11 = i0.ɵɵnextContext(4);
|
|
98
82
|
i0.ɵɵadvance(2);
|
|
99
|
-
i0.ɵɵtextInterpolate(
|
|
83
|
+
i0.ɵɵtextInterpolate(ctx_r11.orderedArray.indexOf(column_r8.widget == null ? null : column_r8.widget.identifier) + 1);
|
|
100
84
|
} }
|
|
101
|
-
function
|
|
102
|
-
const
|
|
103
|
-
i0.ɵɵelementStart(0, "th",
|
|
104
|
-
i0.ɵɵlistener("click", function
|
|
105
|
-
i0.ɵɵelementStart(1, "span",
|
|
85
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
87
|
+
i0.ɵɵelementStart(0, "th", 17);
|
|
88
|
+
i0.ɵɵlistener("click", function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_Template_th_click_0_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r15); const column_r8 = restoredCtx.$implicit; const ctx_r14 = i0.ɵɵnextContext(4); return ctx_r14.sort($event, column_r8.widget); });
|
|
89
|
+
i0.ɵɵelementStart(1, "span", 18);
|
|
106
90
|
i0.ɵɵtext(2);
|
|
107
|
-
i0.ɵɵtemplate(3,
|
|
108
|
-
i0.ɵɵtemplate(4,
|
|
91
|
+
i0.ɵɵtemplate(3, FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_div_3_Template, 8, 7, "div", 19);
|
|
92
|
+
i0.ɵɵtemplate(4, FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_ng_template_4_Template, 8, 1, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
|
|
109
93
|
i0.ɵɵelementEnd();
|
|
110
94
|
i0.ɵɵelementEnd();
|
|
111
95
|
} if (rf & 2) {
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
96
|
+
const column_r8 = ctx.$implicit;
|
|
97
|
+
const _r10 = i0.ɵɵreference(5);
|
|
98
|
+
const ctx_r6 = i0.ɵɵnextContext(4);
|
|
115
99
|
i0.ɵɵadvance(1);
|
|
116
|
-
i0.ɵɵproperty("matTooltip",
|
|
100
|
+
i0.ɵɵproperty("matTooltip", column_r8.widget == null ? null : column_r8.widget.prompt);
|
|
117
101
|
i0.ɵɵadvance(1);
|
|
118
|
-
i0.ɵɵtextInterpolate1("",
|
|
102
|
+
i0.ɵɵtextInterpolate1("", column_r8.widget == null ? null : column_r8.widget.prompt, " ");
|
|
119
103
|
i0.ɵɵadvance(1);
|
|
120
|
-
i0.ɵɵproperty("ngIf",
|
|
104
|
+
i0.ɵɵproperty("ngIf", ctx_r6.orderMap.get(column_r8.widget == null ? null : column_r8.widget.identifier))("ngIfElse", _r10);
|
|
121
105
|
} }
|
|
122
|
-
function
|
|
123
|
-
i0.ɵɵelementStart(0, "th",
|
|
106
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_6_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "th", 29);
|
|
124
108
|
i0.ɵɵtext(1, "Status");
|
|
125
109
|
i0.ɵɵelementEnd();
|
|
126
110
|
} }
|
|
127
|
-
function
|
|
128
|
-
const
|
|
111
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
129
113
|
i0.ɵɵelementStart(0, "tr");
|
|
130
|
-
i0.ɵɵelementStart(1, "th",
|
|
131
|
-
i0.ɵɵelementStart(2, "input",
|
|
132
|
-
i0.ɵɵlistener("change", function
|
|
114
|
+
i0.ɵɵelementStart(1, "th", 12);
|
|
115
|
+
i0.ɵɵelementStart(2, "input", 13);
|
|
116
|
+
i0.ɵɵlistener("change", function FormObjectListComponent_ng_container_0_ng_container_2_tr_7_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(3); return ctx_r16.selectAllRows($event.target.checked); });
|
|
133
117
|
i0.ɵɵelementEnd();
|
|
134
118
|
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵtemplate(3,
|
|
136
|
-
i0.ɵɵelementStart(4, "th",
|
|
119
|
+
i0.ɵɵtemplate(3, FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_3_Template, 6, 4, "th", 14);
|
|
120
|
+
i0.ɵɵelementStart(4, "th", 15);
|
|
137
121
|
i0.ɵɵtext(5, "Actions");
|
|
138
122
|
i0.ɵɵelementEnd();
|
|
139
|
-
i0.ɵɵtemplate(6,
|
|
123
|
+
i0.ɵɵtemplate(6, FormObjectListComponent_ng_container_0_ng_container_2_tr_7_th_6_Template, 2, 0, "th", 16);
|
|
140
124
|
i0.ɵɵelementEnd();
|
|
141
125
|
} if (rf & 2) {
|
|
142
|
-
const
|
|
126
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
143
127
|
i0.ɵɵadvance(3);
|
|
144
|
-
i0.ɵɵproperty("ngForOf",
|
|
128
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.listView.columns);
|
|
145
129
|
i0.ɵɵadvance(3);
|
|
146
|
-
i0.ɵɵproperty("ngIf",
|
|
130
|
+
i0.ɵɵproperty("ngIf", ctx_r3.appManifest == null ? null : ctx_r3.appManifest.enable_data_validity);
|
|
147
131
|
} }
|
|
148
|
-
function
|
|
132
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
149
133
|
i0.ɵɵelementContainerStart(0);
|
|
150
|
-
i0.ɵɵelement(1, "form-object-widget-value",
|
|
134
|
+
i0.ɵɵelement(1, "form-object-widget-value", 40);
|
|
151
135
|
i0.ɵɵelementContainerEnd();
|
|
152
136
|
} if (rf & 2) {
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
const
|
|
156
|
-
const
|
|
157
|
-
const
|
|
137
|
+
const ctx_r29 = i0.ɵɵnextContext();
|
|
138
|
+
const widget_r24 = ctx_r29.$implicit;
|
|
139
|
+
const widgetIndex_r25 = ctx_r29.index;
|
|
140
|
+
const formObject_r19 = i0.ɵɵnextContext().$implicit;
|
|
141
|
+
const ctx_r26 = i0.ɵɵnextContext(4);
|
|
158
142
|
i0.ɵɵadvance(1);
|
|
159
|
-
i0.ɵɵproperty("form",
|
|
143
|
+
i0.ɵɵproperty("form", formObject_r19)("axonatorX1Url", ctx_r26.axonatorX1Url)("baseUrl", ctx_r26.baseUrl)("widget", widget_r24)("widgetProperties", ctx_r26.listView.columns[widgetIndex_r25] == null ? null : ctx_r26.listView.columns[widgetIndex_r25].widget);
|
|
160
144
|
} }
|
|
161
|
-
function
|
|
145
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
162
146
|
i0.ɵɵelementContainerStart(0);
|
|
163
|
-
i0.ɵɵelementStart(1, "span",
|
|
147
|
+
i0.ɵɵelementStart(1, "span", 41);
|
|
164
148
|
i0.ɵɵtext(2, "-");
|
|
165
149
|
i0.ɵɵelementEnd();
|
|
166
150
|
i0.ɵɵelementContainerEnd();
|
|
167
151
|
} }
|
|
168
|
-
function
|
|
169
|
-
i0.ɵɵelementStart(0, "td",
|
|
170
|
-
i0.ɵɵtemplate(1,
|
|
171
|
-
i0.ɵɵtemplate(2,
|
|
152
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
i0.ɵɵelementStart(0, "td", 39);
|
|
154
|
+
i0.ɵɵtemplate(1, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_ng_container_1_Template, 2, 5, "ng-container", 0);
|
|
155
|
+
i0.ɵɵtemplate(2, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_ng_container_2_Template, 3, 0, "ng-container", 0);
|
|
172
156
|
i0.ɵɵelementEnd();
|
|
173
157
|
} if (rf & 2) {
|
|
174
|
-
const
|
|
175
|
-
const
|
|
158
|
+
const widget_r24 = ctx.$implicit;
|
|
159
|
+
const ctx_r21 = i0.ɵɵnextContext(5);
|
|
176
160
|
i0.ɵɵadvance(1);
|
|
177
|
-
i0.ɵɵproperty("ngIf",
|
|
161
|
+
i0.ɵɵproperty("ngIf", widget_r24 == null ? null : widget_r24.value);
|
|
178
162
|
i0.ɵɵadvance(1);
|
|
179
|
-
i0.ɵɵproperty("ngIf", !(
|
|
163
|
+
i0.ɵɵproperty("ngIf", !(widget_r24 == null ? null : widget_r24.value) && (ctx_r21.column == null ? null : ctx_r21.column.widget == null ? null : ctx_r21.column.widget.type) !== ctx_r21.widgetType.staticMedia && (ctx_r21.column == null ? null : ctx_r21.column.widget == null ? null : ctx_r21.column.widget.type) !== ctx_r21.widgetType.toggle);
|
|
180
164
|
} }
|
|
181
|
-
function
|
|
182
|
-
const
|
|
165
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
183
167
|
i0.ɵɵelementContainerStart(0);
|
|
184
|
-
i0.ɵɵelementStart(1, "div",
|
|
185
|
-
i0.ɵɵlistener("click", function
|
|
168
|
+
i0.ɵɵelementStart(1, "div", 42);
|
|
169
|
+
i0.ɵɵlistener("click", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_ng_container_7_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r32); const formObject_r19 = i0.ɵɵnextContext().$implicit; const ctx_r30 = i0.ɵɵnextContext(4); return ctx_r30.editData(formObject_r19, $event); });
|
|
186
170
|
i0.ɵɵnamespaceSVG();
|
|
187
|
-
i0.ɵɵelementStart(2, "svg",
|
|
188
|
-
i0.ɵɵelement(3, "path",
|
|
171
|
+
i0.ɵɵelementStart(2, "svg", 43);
|
|
172
|
+
i0.ɵɵelement(3, "path", 44);
|
|
189
173
|
i0.ɵɵelementEnd();
|
|
190
174
|
i0.ɵɵelementEnd();
|
|
191
175
|
i0.ɵɵelementContainerEnd();
|
|
192
176
|
} }
|
|
193
|
-
function
|
|
194
|
-
const
|
|
195
|
-
i0.ɵɵelementStart(0, "td",
|
|
196
|
-
i0.ɵɵelementStart(1, "mat-slide-toggle",
|
|
197
|
-
i0.ɵɵlistener("change", function
|
|
177
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_8_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
179
|
+
i0.ɵɵelementStart(0, "td", 45);
|
|
180
|
+
i0.ɵɵelementStart(1, "mat-slide-toggle", 46);
|
|
181
|
+
i0.ɵɵlistener("change", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_8_Template_mat_slide_toggle_change_1_listener($event) { i0.ɵɵrestoreView(_r35); const formObject_r19 = i0.ɵɵnextContext().$implicit; const ctx_r33 = i0.ɵɵnextContext(4); return ctx_r33.enableToggle(formObject_r19, $event); })("click", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_8_Template_mat_slide_toggle_click_1_listener($event) { return $event.stopPropagation(); });
|
|
198
182
|
i0.ɵɵelementEnd();
|
|
199
183
|
i0.ɵɵelementEnd();
|
|
200
184
|
} if (rf & 2) {
|
|
201
|
-
const
|
|
202
|
-
const
|
|
185
|
+
const formObject_r19 = i0.ɵɵnextContext().$implicit;
|
|
186
|
+
const ctx_r23 = i0.ɵɵnextContext(4);
|
|
203
187
|
i0.ɵɵadvance(1);
|
|
204
|
-
i0.ɵɵproperty("color",
|
|
188
|
+
i0.ɵɵproperty("color", ctx_r23.primary)("checked", formObject_r19.isValid);
|
|
205
189
|
} }
|
|
206
190
|
const _c1 = function (a0) { return { data: a0 }; };
|
|
207
|
-
function
|
|
208
|
-
const
|
|
191
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
209
193
|
i0.ɵɵelementContainerStart(0);
|
|
210
|
-
i0.ɵɵelementStart(1, "tr",
|
|
211
|
-
i0.ɵɵlistener("click", function
|
|
212
|
-
i0.ɵɵelementStart(2, "td",
|
|
213
|
-
i0.ɵɵlistener("click", function
|
|
214
|
-
i0.ɵɵelementStart(3, "input",
|
|
215
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
194
|
+
i0.ɵɵelementStart(1, "tr", 32);
|
|
195
|
+
i0.ɵɵlistener("click", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template_tr_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r39); const formObject_r19 = restoredCtx.$implicit; const ctx_r38 = i0.ɵɵnextContext(4); return ctx_r38.showDetailView(formObject_r19); });
|
|
196
|
+
i0.ɵɵelementStart(2, "td", 33);
|
|
197
|
+
i0.ɵɵlistener("click", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template_td_click_2_listener($event) { return $event.stopPropagation(); });
|
|
198
|
+
i0.ɵɵelementStart(3, "input", 34);
|
|
199
|
+
i0.ɵɵlistener("ngModelChange", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template_input_ngModelChange_3_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r39); const i_r20 = restoredCtx.index; const ctx_r41 = i0.ɵɵnextContext(4); return (ctx_r41.selectedRows[i_r20] = $event); })("change", function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template_input_change_3_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r39); const i_r20 = restoredCtx.index; const ctx_r42 = i0.ɵɵnextContext(4); return ctx_r42.toggleRowSelection($event.target.checked, i_r20); });
|
|
216
200
|
i0.ɵɵelementEnd();
|
|
217
201
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵtemplate(4,
|
|
219
|
-
i0.ɵɵelementStart(5, "td",
|
|
220
|
-
i0.ɵɵelementStart(6, "div",
|
|
221
|
-
i0.ɵɵtemplate(7,
|
|
202
|
+
i0.ɵɵtemplate(4, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_4_Template, 3, 2, "td", 35);
|
|
203
|
+
i0.ɵɵelementStart(5, "td", 36);
|
|
204
|
+
i0.ɵɵelementStart(6, "div", 37);
|
|
205
|
+
i0.ɵɵtemplate(7, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_ng_container_7_Template, 4, 0, "ng-container", 0);
|
|
222
206
|
i0.ɵɵelementEnd();
|
|
223
207
|
i0.ɵɵelementEnd();
|
|
224
|
-
i0.ɵɵtemplate(8,
|
|
208
|
+
i0.ɵɵtemplate(8, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_td_8_Template, 2, 2, "td", 38);
|
|
225
209
|
i0.ɵɵelementEnd();
|
|
226
210
|
i0.ɵɵelementContainerEnd();
|
|
227
211
|
} if (rf & 2) {
|
|
228
|
-
const
|
|
229
|
-
const
|
|
230
|
-
const
|
|
212
|
+
const formObject_r19 = ctx.$implicit;
|
|
213
|
+
const i_r20 = ctx.index;
|
|
214
|
+
const ctx_r18 = i0.ɵɵnextContext(4);
|
|
231
215
|
i0.ɵɵadvance(1);
|
|
232
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c1, !(
|
|
216
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c1, !(formObject_r19 == null ? null : formObject_r19.isValid)));
|
|
233
217
|
i0.ɵɵadvance(2);
|
|
234
|
-
i0.ɵɵproperty("ngModel",
|
|
218
|
+
i0.ɵɵproperty("ngModel", ctx_r18.selectedRows[i_r20]);
|
|
235
219
|
i0.ɵɵadvance(1);
|
|
236
|
-
i0.ɵɵproperty("ngForOf",
|
|
220
|
+
i0.ɵɵproperty("ngForOf", formObject_r19.widgets);
|
|
237
221
|
i0.ɵɵadvance(3);
|
|
238
|
-
i0.ɵɵproperty("ngIf",
|
|
222
|
+
i0.ɵɵproperty("ngIf", ctx_r18.form.ft === ctx_r18.formTypes.asset && !ctx_r18.form.hideEditButton);
|
|
239
223
|
i0.ɵɵadvance(1);
|
|
240
|
-
i0.ɵɵproperty("ngIf",
|
|
224
|
+
i0.ɵɵproperty("ngIf", ctx_r18.appManifest == null ? null : ctx_r18.appManifest.enable_data_validity);
|
|
241
225
|
} }
|
|
242
|
-
function
|
|
243
|
-
i0.ɵɵelementStart(0, "tbody",
|
|
244
|
-
i0.ɵɵtemplate(1,
|
|
226
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
+
i0.ɵɵelementStart(0, "tbody", 30);
|
|
228
|
+
i0.ɵɵtemplate(1, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_ng_container_1_Template, 9, 7, "ng-container", 31);
|
|
245
229
|
i0.ɵɵelementEnd();
|
|
246
230
|
} if (rf & 2) {
|
|
247
|
-
const
|
|
231
|
+
const ctx_r4 = i0.ɵɵnextContext(3);
|
|
248
232
|
i0.ɵɵadvance(1);
|
|
249
|
-
i0.ɵɵproperty("ngForOf",
|
|
233
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.listViewData);
|
|
250
234
|
} }
|
|
251
|
-
function
|
|
252
|
-
i0.ɵɵelementStart(0, "tbody",
|
|
253
|
-
i0.ɵɵelementStart(1, "tr",
|
|
254
|
-
i0.ɵɵelementStart(2, "td",
|
|
235
|
+
function FormObjectListComponent_ng_container_0_ng_container_2_tbody_9_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
+
i0.ɵɵelementStart(0, "tbody", 47);
|
|
237
|
+
i0.ɵɵelementStart(1, "tr", 48);
|
|
238
|
+
i0.ɵɵelementStart(2, "td", 49);
|
|
255
239
|
i0.ɵɵtext(3, "No Data Found");
|
|
256
240
|
i0.ɵɵelementEnd();
|
|
257
241
|
i0.ɵɵelementEnd();
|
|
@@ -260,23 +244,22 @@ function FormObjectListComponent_ng_container_0_ng_container_2_tbody_10_Template
|
|
|
260
244
|
const _c2 = function (a0) { return { "mobile-view-height": a0 }; };
|
|
261
245
|
const _c3 = function (a0) { return { "no-data-border": a0 }; };
|
|
262
246
|
function FormObjectListComponent_ng_container_0_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
263
|
-
const
|
|
247
|
+
const _r44 = i0.ɵɵgetCurrentView();
|
|
264
248
|
i0.ɵɵelementContainerStart(0);
|
|
265
249
|
i0.ɵɵelementStart(1, "div", 1);
|
|
266
250
|
i0.ɵɵelementStart(2, "div", 2);
|
|
267
251
|
i0.ɵɵelementStart(3, "div", 3);
|
|
268
|
-
i0.ɵɵ
|
|
269
|
-
i0.ɵɵelementStart(5, "
|
|
270
|
-
i0.ɵɵelementStart(6, "
|
|
271
|
-
i0.ɵɵ
|
|
272
|
-
i0.ɵɵtemplate(8, FormObjectListComponent_ng_container_0_ng_container_2_tr_8_Template, 7, 2, "tr", 0);
|
|
252
|
+
i0.ɵɵelementStart(4, "div", 6);
|
|
253
|
+
i0.ɵɵelementStart(5, "table", 7);
|
|
254
|
+
i0.ɵɵelementStart(6, "thead", 8);
|
|
255
|
+
i0.ɵɵtemplate(7, FormObjectListComponent_ng_container_0_ng_container_2_tr_7_Template, 7, 2, "tr", 0);
|
|
273
256
|
i0.ɵɵelementEnd();
|
|
274
|
-
i0.ɵɵtemplate(
|
|
275
|
-
i0.ɵɵtemplate(
|
|
257
|
+
i0.ɵɵtemplate(8, FormObjectListComponent_ng_container_0_ng_container_2_tbody_8_Template, 2, 1, "tbody", 9);
|
|
258
|
+
i0.ɵɵtemplate(9, FormObjectListComponent_ng_container_0_ng_container_2_tbody_9_Template, 4, 0, "tbody", 10);
|
|
276
259
|
i0.ɵɵelementEnd();
|
|
277
260
|
i0.ɵɵelementEnd();
|
|
278
|
-
i0.ɵɵelementStart(
|
|
279
|
-
i0.ɵɵlistener("page", function
|
|
261
|
+
i0.ɵɵelementStart(10, "mat-paginator", 11);
|
|
262
|
+
i0.ɵɵlistener("page", function FormObjectListComponent_ng_container_0_ng_container_2_Template_mat_paginator_page_10_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(2); return ctx_r43.handlePageEvent($event); });
|
|
280
263
|
i0.ɵɵelementEnd();
|
|
281
264
|
i0.ɵɵelementEnd();
|
|
282
265
|
i0.ɵɵelementEnd();
|
|
@@ -285,11 +268,9 @@ function FormObjectListComponent_ng_container_0_ng_container_2_Template(rf, ctx)
|
|
|
285
268
|
} if (rf & 2) {
|
|
286
269
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
287
270
|
i0.ɵɵadvance(4);
|
|
288
|
-
i0.ɵɵproperty("
|
|
289
|
-
i0.ɵɵadvance(1);
|
|
290
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c2, ctx_r2.showSearch));
|
|
271
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2, ctx_r2.showSearch));
|
|
291
272
|
i0.ɵɵadvance(2);
|
|
292
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
|
273
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c3, ctx_r2.listViewData.length === 0));
|
|
293
274
|
i0.ɵɵadvance(1);
|
|
294
275
|
i0.ɵɵproperty("ngIf", (ctx_r2.listView == null ? null : ctx_r2.listView.columns == null ? null : ctx_r2.listView.columns.length) > 0);
|
|
295
276
|
i0.ɵɵadvance(1);
|
|
@@ -302,7 +283,7 @@ function FormObjectListComponent_ng_container_0_ng_container_2_Template(rf, ctx)
|
|
|
302
283
|
function FormObjectListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
303
284
|
i0.ɵɵelementContainerStart(0);
|
|
304
285
|
i0.ɵɵtemplate(1, FormObjectListComponent_ng_container_0_ng_container_1_Template, 6, 2, "ng-container", 0);
|
|
305
|
-
i0.ɵɵtemplate(2, FormObjectListComponent_ng_container_0_ng_container_2_Template,
|
|
286
|
+
i0.ɵɵtemplate(2, FormObjectListComponent_ng_container_0_ng_container_2_Template, 11, 14, "ng-container", 0);
|
|
306
287
|
i0.ɵɵelementContainerEnd();
|
|
307
288
|
} if (rf & 2) {
|
|
308
289
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -898,14 +879,14 @@ export class FormObjectListComponent {
|
|
|
898
879
|
}
|
|
899
880
|
}
|
|
900
881
|
FormObjectListComponent.ɵfac = function FormObjectListComponent_Factory(t) { return new (t || FormObjectListComponent)(i0.ɵɵdirectiveInject(i1.FormObjectViewService), i0.ɵɵdirectiveInject(i2.FormObjectListService), i0.ɵɵdirectiveInject(i3.CommonLibConfigurationService), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i5.DataViewService), i0.ɵɵdirectiveInject(i6.UserDataService)); };
|
|
901
|
-
FormObjectListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormObjectListComponent, selectors: [["form-object-list"]], inputs: { listView: "listView", screenType: "screenType", form: "form", searchText: "searchText", enbledCaching: "enbledCaching", filters: "filters", applyFilterEmitter: "applyFilterEmitter", resetFilterEmitter: "resetFilterEmitter", clearFilterEmitter: "clearFilterEmitter", refreshDataEmitter: "refreshDataEmitter", exportDataEmitter: "exportDataEmitter", appManifest: "appManifest", GlobalGhostLoaderEnabled: "GlobalGhostLoaderEnabled" }, outputs: { exportDataListEvent: "exportDataListEvent", showDataDetailView: "showDataDetailView", addNewRecordEvent: "addNewRecordEvent", editFormObjectEvent: "editFormObjectEvent", updateFormObjectStatus: "updateFormObjectStatus", ChildLoaded: "ChildLoaded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[4, "ngIf"], [1, "object-list-component-table", "w-full", "h-full", "page-background"], [1, "mx-auto", "form-object-list-container", "relative", "h-full", "sm:px-6", "px-4"], [1, "align-middle", "relative", "table-container-height"], [1, "table-container", "outline-none", 3, "elementType"], [3, "elementType"], [
|
|
882
|
+
FormObjectListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormObjectListComponent, selectors: [["form-object-list"]], inputs: { listView: "listView", screenType: "screenType", form: "form", searchText: "searchText", enbledCaching: "enbledCaching", filters: "filters", applyFilterEmitter: "applyFilterEmitter", resetFilterEmitter: "resetFilterEmitter", clearFilterEmitter: "clearFilterEmitter", refreshDataEmitter: "refreshDataEmitter", exportDataEmitter: "exportDataEmitter", appManifest: "appManifest", GlobalGhostLoaderEnabled: "GlobalGhostLoaderEnabled" }, outputs: { exportDataListEvent: "exportDataListEvent", showDataDetailView: "showDataDetailView", addNewRecordEvent: "addNewRecordEvent", editFormObjectEvent: "editFormObjectEvent", updateFormObjectStatus: "updateFormObjectStatus", ChildLoaded: "ChildLoaded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[4, "ngIf"], [1, "object-list-component-table", "w-full", "h-full", "page-background"], [1, "mx-auto", "form-object-list-container", "relative", "h-full", "sm:px-6", "px-4"], [1, "align-middle", "relative", "table-container-height"], [1, "table-container", "outline-none", 3, "elementType"], [3, "elementType"], [1, "rounded-lg", "pb-px", "table-container", "customscroll", "w-full", "relative", 3, "ngClass"], [1, "rounded-lg", "divide-y", "divide-gray-200", "data-list-table", "w-full"], [1, "sticky", "top-0", "h-12", 3, "ngClass"], ["class", "bg-white", 4, "ngIf"], ["class", "border-0 absolute no-data-body", 4, "ngIf"], ["aria-label", "Select page", 1, "absolute", "bottom-0", "right-0", 3, "length", "pageSize", "pageIndex", "pageSizeOptions", "disabled", "page"], ["scope", "col", 1, "px-3", "py-3", "text-left", "data-table-header", "cursor-pointer"], ["type", "checkbox", 3, "change"], ["scope", "col", "class", "px-3 py-3 text-left data-table-header cursor-pointer", 3, "click", 4, "ngFor", "ngForOf"], ["scope", "col", 1, "px-3", "py-3", "data-table-header", "action-column"], ["scope", "col", "class", "px-3 py-3 text-left data-table-header", 4, "ngIf"], ["scope", "col", 1, "px-3", "py-3", "text-left", "data-table-header", "cursor-pointer", 3, "click"], [1, "flex", "justify-between", "gap-4", 3, "matTooltip"], ["class", "sorting-arrow", 4, "ngIf", "ngIfElse"], ["showSortOnFilter", ""], [1, "sorting-arrow"], [1, "order-sequence", "axo-font"], [1, "flex", "flex-col"], [1, "sort-arrow-up", "cursor-pointer", 3, "ngClass"], [1, "sort-arrow-down", "cursor-pointer", 3, "ngClass"], [1, "order-sequence", "axo-font", "opacity-0", "invisible"], [1, "sort-arrow-up", "display-hover"], [1, "sort-arrow-down", "display-hover"], ["scope", "col", 1, "px-3", "py-3", "text-left", "data-table-header"], [1, "bg-white"], [4, "ngFor", "ngForOf"], [3, "ngClass", "click"], [1, "px-3", 3, "click"], ["type", "checkbox", 3, "ngModel", "ngModelChange", "change"], ["class", "px-3 h-14 line-height-14 text-left data-table-item cursor-pointer", "style", "max-width: fit-content !important;", 4, "ngFor", "ngForOf"], [1, "px-3", "h-14", "line-height-14", "data-table-item", "action-column"], [1, "flex", "items-center", "gap-3"], ["class", "px-3", 4, "ngIf"], [1, "px-3", "h-14", "line-height-14", "text-left", "data-table-item", "cursor-pointer", 2, "max-width", "fit-content !important"], [1, "flex", "items-center", "h-full", "min-h-full", 3, "form", "axonatorX1Url", "baseUrl", "widget", "widgetProperties"], [1, "flex", "justify-start", "items-center"], ["matTooltip", "Edit", 1, "icon-btn", 3, "click"], ["xmlns", "http://www.w3.org/2000/svg", "fill", "none", "viewBox", "0 0 24 24", "stroke", "currentColor", 1, "h-6", "w-4", "text-gray-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"], [1, "px-3"], [1, "p-0", 3, "color", "checked", "change", "click"], [1, "border-0", "absolute", "no-data-body"], [1, "border-0", "hover:bg-transparent", "text-xl", "no-record-found", "cursor-default"], [1, "whitespace-nowrap"]], template: function FormObjectListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
902
883
|
i0.ɵɵtemplate(0, FormObjectListComponent_ng_container_0_Template, 3, 2, "ng-container", 0);
|
|
903
884
|
} if (rf & 2) {
|
|
904
885
|
i0.ɵɵproperty("ngIf", !ctx.GlobalGhostLoaderEnabled);
|
|
905
886
|
} }, styles: ["form-object-list .data-list-header{background-color:#fcfdff}form-object-list .data-list-header .search-field mat-icon{min-width:1.2rem;min-height:1.2rem;max-width:1.2rem;max-height:1.2rem}@media screen and (max-width: 500px){form-object-list .data-list-header .search-field-border{border:1px solid #80808029;border-top-color:transparent}}form-object-list .data-list-header form-object-widget-value{min-height:fit-content}form-object-list .data-list-header form-object-widget-value formobject-textbox-value{min-width:fit-content}form-object-list .icon-container{height:1.5rem!important;min-height:1.5rem!important;width:1.5rem!important;min-width:1.5rem!important;display:flex}form-object-list .icon-container .location-btn-icon{background:#E1E7EF;padding:.3rem .2rem;margin-left:10px;cursor:pointer}form-object-list .icon-container .location-btn-icon mat-icon{height:.875rem!important;min-height:.875rem!important;width:.875rem!important;min-width:.875rem!important}form-object-list .form-object-list-container .table-container{height:calc(100% - 4.3rem);max-height:calc(100% - 4.3rem);min-height:calc(100% - 4.3rem);outline:.2px solid #7b849b45;background-color:#fff}form-object-list .object-list-component-table{background-color:#fcfdff}form-object-list .object-list-component-table .form-object-title-container{border-bottom:.5px solid #cccccc7d}form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-style:normal;font-weight:400;font-size:14px;line-height:21px;color:#10172b}@media screen and (max-width: 500px){form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-size:14px;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:14px}}form-object-list .object-list-component-table .form-object-title-container .inner-form-object-title-container{width:95.67%;min-width:95.67%;max-width:95.67%}form-object-list .object-list-component-table button.refresh-data{font-family:Roboto,sans-serif;font-style:normal;font-weight:400;font-size:12px;line-height:14px;color:#345ad6}form-object-list .object-list-component-table table th,form-object-list .object-list-component-table table td{max-width:300px;min-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}form-object-list .object-list-component-table table thead{background-color:#fcfdff}form-object-list .object-list-component-table table thead tr{outline:.2px solid #80808036}@media screen and (max-width: 500px){form-object-list .object-list-component-table table thead{top:-1px!important}}form-object-list .object-list-component-table table tbody{border-top:none}form-object-list .object-list-component-table table tbody tr{border:.2px solid #80808036;border-width:.2px!important;border-right:0;border-left:0;cursor:pointer}form-object-list .object-list-component-table table tbody tr:first-child{border-top:none}form-object-list .object-list-component-table table tbody tr:hover{background-color:#f4f4f4}form-object-list .object-list-component-table table .no-data-body{height:calc(100% - 3rem);width:100%;display:flex;justify-content:center;align-items:center}form-object-list .object-list-component-table .mat-paginator-page-size-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:12px;letter-spacing:.4px;margin:0!important}form-object-list .object-list-component-table .mat-paginator-range-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:14px;margin:0 12px 0 0!important}form-object-list .object-list-component-table .mat-paginator-container{column-gap:20px;padding:.5rem 0!important}form-object-list .object-list-component-table .mat-paginator-page-size{column-gap:20px;margin:0!important}form-object-list .object-list-component-table mat-paginator{height:70px;background-color:transparent!important}form-object-list .object-list-component-table mat-paginator button{width:2rem;max-width:2rem;height:2rem;max-height:2rem;min-height:2rem;border-radius:4px}form-object-list .object-list-component-table mat-paginator .mat-button-base:hover{background-color:#eee}form-object-list .object-list-component-table mat-paginator .mat-icon-button.mat-button-disabled.mat-button-disabled:hover{background-color:transparent!important}form-object-list .object-list-component-table .child-record .thumbnail,form-object-list .object-list-component-table .choice-list .thumbnail{width:2rem}form-object-list .object-list-component-table .imageContainer .image-container{position:relative;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center}form-object-list .object-list-component-table .imageContainer .image-container img{max-width:2rem;max-height:2rem}form-object-list .object-list-component-table .imageContainer .count-of-image{min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem;line-height:1rem;border-radius:50%;transition:.5s ease;background-color:#6554c0}form-object-list .object-list-component-table .imageContainer .count{color:#fff;font-size:8px;text-align:center;font-weight:500}form-object-list .object-list-component-table .video-container video{width:55.28px;height:35.71px}form-object-list .object-list-component-table p{margin:0!important}form-object-list .data-list-filter-wrapper{min-height:3rem}@media screen and (max-width: 600px){form-object-list .data-list-filter-wrapper{padding:1rem 0!important;row-gap:.625rem}}form-object-list .refresh-btn{display:flex;align-items:center;justify-content:center}form-object-list audio{width:140px;height:20px}form-object-list audio::-webkit-media-controls-mute-button{margin-right:0;display:none}form-object-list audio::-webkit-media-controls-play-button{position:absolute;left:0;height:9px}form-object-list audio::-webkit-media-controls-timeline-container{width:60px}form-object-list audio::-webkit-media-controls-current-time-display{font-size:10px;position:absolute;right:11px}form-object-list audio::-webkit-media-controls-time-remaining-display{display:none}form-object-list audio::-webkit-media-controls-timeline{position:relative;left:11px;width:60px}form-object-list .data-list-value{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list .imgFixed-list-class .imageList-text,form-object-list .imgFixed-list-class .reference_list-text,form-object-list .imgFixed-list-class .mat-list-item-content,form-object-list .reference-list-class .imageList-text,form-object-list .reference-list-class .reference_list-text,form-object-list .reference-list-class .mat-list-item-content,form-object-list .fixed-list-class .imageList-text,form-object-list .fixed-list-class .reference_list-text,form-object-list .fixed-list-class .mat-list-item-content{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list thead{z-index:10}.table-container-height{height:100%;min-height:100%;max-height:100%}@media screen and (min-width: 600px){.data-list-title-tooltip-custom-class{display:none!important}}.action-column{display:flex;justify-content:center}.sort-arrow-up,.sort-arrow-down{font-size:10px;line-height:8px;color:#000;opacity:.5}.sorting-arrow{white-space:nowrap;display:flex;column-gap:6px}.sorting-arrow .arrow-active{opacity:1!important}.sorting-arrow .order-sequence{border-radius:100%;background-color:#7964ed14;padding:0 6px;color:#0000007a;font-size:10px}.ghost-loader-table{height:calc(100% - 4.4rem);min-height:calc(100% - 4.4rem);max-height:calc(100% - 4.4rem)}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:1}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000bf;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:100}.loading-text{margin-top:10px;font-size:18px;color:#fff}.upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.display-hover{visibility:hidden;opacity:0}.data-table-header:hover .display-hover{visibility:visible;opacity:.5}\n"], encapsulation: 2 });
|
|
906
887
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormObjectListComponent, [{
|
|
907
888
|
type: Component,
|
|
908
|
-
args: [{ selector: 'form-object-list', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!GlobalGhostLoaderEnabled\">\n <ng-container *ngIf=\"showGhostLoader\">\n <div class=\"object-list-component-table w-full h-full page-background\">\n <div class=\"mx-auto form-object-list-container relative h-full sm:px-6 px-4\">\n <div class=\"align-middle relative table-container-height\">\n <app-ghost-loader\n class=\"table-container outline-none\"\n [elementType]=\"GhostLoaderType.ListViewLoader\"\n ></app-ghost-loader>\n <app-ghost-loader\n [elementType]=\"GhostLoaderType.PaginationViewLoader\"\n ></app-ghost-loader>\n </div>\n </div>\n </div>\n </ng-container>\n\n\n <ng-container *ngIf=\"!showGhostLoader\">\n <div class=\"object-list-component-table w-full h-full page-background\">\n\n <!-- Page header\n <div class=\"sticky top-0 data-list-header\">\n\n <div class=\"flex items-center justify-between mx-auto h-12 bg-white form-object-title-container\">\n <div class=\"mx-auto inner-form-object-title-container flex items-center justify-between\">\n <h2 class=\"leading-tight m-0 form-object-title axo-font\" [matTooltip]=\"formObjectList.formNameSingular\" matTooltipClass=\"data-list-title-tooltip-custom-class\">{{formObjectList.formNameSingular}}</h2>\n <div class=\"flex items-center gap-4\">\n <button class=\"primary-btn axo-font\" (click)=\"addNewRecord()\"> Add New Record</button>\n </div>\n </div>\n\n </div>\n\n <div class=\"mx-auto flex justify-between items-center px-6 flex-wrap md:flex-nowrap data-list-filter-wrapper\">\n <button (click)=\"getFormObjects()\" class=\"link-btn axo-font refresh-btn\">Refresh Data</button>\n </div>\n\n </div> -->\n\n <div class=\"mx-auto form-object-list-container relative h-full sm:px-6 px-4\">\n <div class=\"align-middle relative table-container-height\">\n <div *ngIf=\"!isAccountStatusActive\" class=\"loading-overlay rounded-lg\">\n <div class=\"loading-text\">Trial expired</div>\n <div class=\"loading-text\">To continue viewing data please subscribe to a plan first.</div><br>\n <button class=\"upgrade-btn btn\" (click)=\"navigateToBilling()\">Upgrade</button>\n </div>\n <div\n class=\"rounded-lg pb-px table-container customscroll w-full relative\"\n [ngClass]=\"{ 'mobile-view-height': showSearch }\"\n >\n <table class=\"rounded-lg divide-y divide-gray-200 data-list-table w-full\">\n <!--Object list table-->\n <thead class=\"sticky top-0 h-12\" [ngClass]=\"{'no-data-border': listViewData.length === 0}\">\n <!--Object list table head-->\n <tr *ngIf=\"listView?.columns?.length > 0\">\n <!--Checkbox column-->\n <th scope=\"col\" class=\"px-3 py-3 text-left data-table-header cursor-pointer\">\n <input type=\"checkbox\" (change)=\"selectAllRows($event.target.checked)\">\n </th>\n <th scope=\"col\" class=\"px-3 py-3 text-left data-table-header cursor-pointer\" (click)=\"sort($event,column.widget)\"\n *ngFor=\"let column of listView.columns;\">\n <span [matTooltip]=\"column.widget?.prompt\" class=\"flex justify-between gap-4\">{{column.widget?.prompt}}\n <div class=\"sorting-arrow\" *ngIf='orderMap.get(column.widget?.identifier); else showSortOnFilter'>\n <span class=\"order-sequence axo-font\" >{{orderedArray.indexOf(column.widget?.identifier)+1}}</span>\n <div class=\"flex flex-col\">\n <div class=\"sort-arrow-up cursor-pointer\" [ngClass]=\"{'arrow-active': orderMap.get(column.widget?.identifier)===sortOrder.ascending}\">▲</div>\n <div class=\"sort-arrow-down cursor-pointer\" [ngClass]=\"{'arrow-active': orderMap.get(column.widget?.identifier)===sortOrder.descending}\">▼</div>\n </div>\n </div>\n <ng-template #showSortOnFilter>\n <div class=\"sorting-arrow\">\n <span class=\"order-sequence axo-font opacity-0 invisible\" >{{orderedArray.indexOf(column.widget?.identifier)+1}}</span>\n <div class=\"flex flex-col\">\n <div class=\"sort-arrow-up display-hover\">▲</div>\n <div class=\"sort-arrow-down display-hover\">▼</div>\n </div>\n </div>\n </ng-template>\n </span>\n <!-- <table *ngIf=\"column.widget.type === 'subform-widget'\">\n <tr>\n <th scope=\"col\" class=\"text-sm px-3 py-3 text-left uppercase whitespace-nowrap\"\n *ngFor=\"let markup of column.widget.markup;\"> {{markup.prompt}} </th>\n </tr>\n </table> -->\n </th>\n <th scope=\"col\" class=\"px-3 py-3 data-table-header action-column\">Actions</th>\n <th *ngIf=\"appManifest?.enable_data_validity\" scope=\"col\" class=\"px-3 py-3 text-left data-table-header\">Status</th>\n\n </tr>\n\n </thead>\n <!--Object list body-->\n <tbody class=\"bg-white\" *ngIf=\"listViewData.length > 0\" >\n <ng-container *ngFor=\"let formObject of listViewData; let i= index\">\n <!-- <tr (click)=\"showDetailView(formObject)\" [ngClass]=\"{data: !formObject?.isValid}\"> -->\n <tr [ngClass]=\"{data: !formObject?.isValid}\" (click)=\"showDetailView(formObject)\">\n <!--Checkbox cell-->\n <td class=\"px-3\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"selectedRows[i]\" (change)=\"toggleRowSelection($event.target.checked, i)\">\n </td>\n <td class=\"px-3 h-14 line-height-14 text-left data-table-item cursor-pointer\"\n *ngFor=\"let widget of formObject.widgets; let widgetIndex = index\" style=\"max-width: fit-content !important;\">\n <!-- Value cell -->\n <ng-container *ngIf=\"widget?.value\">\n <form-object-widget-value [form]=\"formObject\" [axonatorX1Url]=\"axonatorX1Url\" [baseUrl]=\"baseUrl\"\n [widget]=\"widget\" [widgetProperties]=\"listView.columns[widgetIndex]?.widget\" class=\"flex items-center h-full min-h-full\">\n </form-object-widget-value>\n </ng-container>\n\n <ng-container *ngIf=\"!widget?.value &&\n column?.widget?.type !== widgetType.staticMedia &&\n column?.widget?.type !== widgetType.toggle\">\n <span class=\"flex justify-start items-center\">-</span>\n </ng-container>\n\n </td>\n\n <!-- Actions button -->\n <td class=\"px-3 h-14 line-height-14 data-table-item action-column\">\n <div class=\"flex items-center gap-3\">\n <ng-container *ngIf=\"form.ft === formTypes.asset && !form.hideEditButton\">\n <div class=\"icon-btn\" (click)=\"editData(formObject,$event)\" matTooltip=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-6 w-4 text-gray-500\" fill=\"none\"\n viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </div>\n </ng-container>\n <!-- <div class=\"icon-btn\" (click)=\"showDetailView(formObject)\" matTooltip=\"View\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-7 w-5 text-gray-500\" viewBox=\"0 0 24 24\"\n fill=\"#64748b\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </svg>\n </div> -->\n </div>\n </td>\n <td *ngIf=\"appManifest?.enable_data_validity\" class=\"px-3\">\n <mat-slide-toggle [color]=\"primary\" [checked]=\"formObject.isValid\" class=\"p-0\"\n (change)=\"enableToggle(formObject,$event)\" (click)=\"$event.stopPropagation();\">\n </mat-slide-toggle>\n </td>\n </tr>\n </ng-container>\n </tbody>\n <!-- Show no data found msg -->\n <tbody class=\"border-0 absolute no-data-body\" *ngIf=\"listViewData.length === 0 && !showLoader\">\n <tr class=\"border-0 hover:bg-transparent text-xl no-record-found cursor-default\">\n <td class=\"whitespace-nowrap\">No Data Found</td>\n </tr>\n </tbody>\n\n </table>\n </div>\n <mat-paginator\n (page)=\"handlePageEvent($event)\"\n [length]=\"totalFormObjects\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [disabled]=\"showLoader\"\n aria-label=\"Select page\"\n class=\"absolute bottom-0 right-0\"\n >\n </mat-paginator>\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: ["form-object-list .data-list-header{background-color:#fcfdff}form-object-list .data-list-header .search-field mat-icon{min-width:1.2rem;min-height:1.2rem;max-width:1.2rem;max-height:1.2rem}@media screen and (max-width: 500px){form-object-list .data-list-header .search-field-border{border:1px solid #80808029;border-top-color:transparent}}form-object-list .data-list-header form-object-widget-value{min-height:fit-content}form-object-list .data-list-header form-object-widget-value formobject-textbox-value{min-width:fit-content}form-object-list .icon-container{height:1.5rem!important;min-height:1.5rem!important;width:1.5rem!important;min-width:1.5rem!important;display:flex}form-object-list .icon-container .location-btn-icon{background:#E1E7EF;padding:.3rem .2rem;margin-left:10px;cursor:pointer}form-object-list .icon-container .location-btn-icon mat-icon{height:.875rem!important;min-height:.875rem!important;width:.875rem!important;min-width:.875rem!important}form-object-list .form-object-list-container .table-container{height:calc(100% - 4.3rem);max-height:calc(100% - 4.3rem);min-height:calc(100% - 4.3rem);outline:.2px solid #7b849b45;background-color:#fff}form-object-list .object-list-component-table{background-color:#fcfdff}form-object-list .object-list-component-table .form-object-title-container{border-bottom:.5px solid #cccccc7d}form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-style:normal;font-weight:400;font-size:14px;line-height:21px;color:#10172b}@media screen and (max-width: 500px){form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-size:14px;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:14px}}form-object-list .object-list-component-table .form-object-title-container .inner-form-object-title-container{width:95.67%;min-width:95.67%;max-width:95.67%}form-object-list .object-list-component-table button.refresh-data{font-family:Roboto,sans-serif;font-style:normal;font-weight:400;font-size:12px;line-height:14px;color:#345ad6}form-object-list .object-list-component-table table th,form-object-list .object-list-component-table table td{max-width:300px;min-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}form-object-list .object-list-component-table table thead{background-color:#fcfdff}form-object-list .object-list-component-table table thead tr{outline:.2px solid #80808036}@media screen and (max-width: 500px){form-object-list .object-list-component-table table thead{top:-1px!important}}form-object-list .object-list-component-table table tbody{border-top:none}form-object-list .object-list-component-table table tbody tr{border:.2px solid #80808036;border-width:.2px!important;border-right:0;border-left:0;cursor:pointer}form-object-list .object-list-component-table table tbody tr:first-child{border-top:none}form-object-list .object-list-component-table table tbody tr:hover{background-color:#f4f4f4}form-object-list .object-list-component-table table .no-data-body{height:calc(100% - 3rem);width:100%;display:flex;justify-content:center;align-items:center}form-object-list .object-list-component-table .mat-paginator-page-size-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:12px;letter-spacing:.4px;margin:0!important}form-object-list .object-list-component-table .mat-paginator-range-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:14px;margin:0 12px 0 0!important}form-object-list .object-list-component-table .mat-paginator-container{column-gap:20px;padding:.5rem 0!important}form-object-list .object-list-component-table .mat-paginator-page-size{column-gap:20px;margin:0!important}form-object-list .object-list-component-table mat-paginator{height:70px;background-color:transparent!important}form-object-list .object-list-component-table mat-paginator button{width:2rem;max-width:2rem;height:2rem;max-height:2rem;min-height:2rem;border-radius:4px}form-object-list .object-list-component-table mat-paginator .mat-button-base:hover{background-color:#eee}form-object-list .object-list-component-table mat-paginator .mat-icon-button.mat-button-disabled.mat-button-disabled:hover{background-color:transparent!important}form-object-list .object-list-component-table .child-record .thumbnail,form-object-list .object-list-component-table .choice-list .thumbnail{width:2rem}form-object-list .object-list-component-table .imageContainer .image-container{position:relative;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center}form-object-list .object-list-component-table .imageContainer .image-container img{max-width:2rem;max-height:2rem}form-object-list .object-list-component-table .imageContainer .count-of-image{min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem;line-height:1rem;border-radius:50%;transition:.5s ease;background-color:#6554c0}form-object-list .object-list-component-table .imageContainer .count{color:#fff;font-size:8px;text-align:center;font-weight:500}form-object-list .object-list-component-table .video-container video{width:55.28px;height:35.71px}form-object-list .object-list-component-table p{margin:0!important}form-object-list .data-list-filter-wrapper{min-height:3rem}@media screen and (max-width: 600px){form-object-list .data-list-filter-wrapper{padding:1rem 0!important;row-gap:.625rem}}form-object-list .refresh-btn{display:flex;align-items:center;justify-content:center}form-object-list audio{width:140px;height:20px}form-object-list audio::-webkit-media-controls-mute-button{margin-right:0;display:none}form-object-list audio::-webkit-media-controls-play-button{position:absolute;left:0;height:9px}form-object-list audio::-webkit-media-controls-timeline-container{width:60px}form-object-list audio::-webkit-media-controls-current-time-display{font-size:10px;position:absolute;right:11px}form-object-list audio::-webkit-media-controls-time-remaining-display{display:none}form-object-list audio::-webkit-media-controls-timeline{position:relative;left:11px;width:60px}form-object-list .data-list-value{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list .imgFixed-list-class .imageList-text,form-object-list .imgFixed-list-class .reference_list-text,form-object-list .imgFixed-list-class .mat-list-item-content,form-object-list .reference-list-class .imageList-text,form-object-list .reference-list-class .reference_list-text,form-object-list .reference-list-class .mat-list-item-content,form-object-list .fixed-list-class .imageList-text,form-object-list .fixed-list-class .reference_list-text,form-object-list .fixed-list-class .mat-list-item-content{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list thead{z-index:10}.table-container-height{height:100%;min-height:100%;max-height:100%}@media screen and (min-width: 600px){.data-list-title-tooltip-custom-class{display:none!important}}.action-column{display:flex;justify-content:center}.sort-arrow-up,.sort-arrow-down{font-size:10px;line-height:8px;color:#000;opacity:.5}.sorting-arrow{white-space:nowrap;display:flex;column-gap:6px}.sorting-arrow .arrow-active{opacity:1!important}.sorting-arrow .order-sequence{border-radius:100%;background-color:#7964ed14;padding:0 6px;color:#0000007a;font-size:10px}.ghost-loader-table{height:calc(100% - 4.4rem);min-height:calc(100% - 4.4rem);max-height:calc(100% - 4.4rem)}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:1}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000bf;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:100}.loading-text{margin-top:10px;font-size:18px;color:#fff}.upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.display-hover{visibility:hidden;opacity:0}.data-table-header:hover .display-hover{visibility:visible;opacity:.5}\n"] }]
|
|
889
|
+
args: [{ selector: 'form-object-list', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!GlobalGhostLoaderEnabled\">\n <ng-container *ngIf=\"showGhostLoader\">\n <div class=\"object-list-component-table w-full h-full page-background\">\n <div class=\"mx-auto form-object-list-container relative h-full sm:px-6 px-4\">\n <div class=\"align-middle relative table-container-height\">\n <app-ghost-loader\n class=\"table-container outline-none\"\n [elementType]=\"GhostLoaderType.ListViewLoader\"\n ></app-ghost-loader>\n <app-ghost-loader\n [elementType]=\"GhostLoaderType.PaginationViewLoader\"\n ></app-ghost-loader>\n </div>\n </div>\n </div>\n </ng-container>\n\n\n <ng-container *ngIf=\"!showGhostLoader\">\n <div class=\"object-list-component-table w-full h-full page-background\">\n\n <!-- Page header\n <div class=\"sticky top-0 data-list-header\">\n\n <div class=\"flex items-center justify-between mx-auto h-12 bg-white form-object-title-container\">\n <div class=\"mx-auto inner-form-object-title-container flex items-center justify-between\">\n <h2 class=\"leading-tight m-0 form-object-title axo-font\" [matTooltip]=\"formObjectList.formNameSingular\" matTooltipClass=\"data-list-title-tooltip-custom-class\">{{formObjectList.formNameSingular}}</h2>\n <div class=\"flex items-center gap-4\">\n <button class=\"primary-btn axo-font\" (click)=\"addNewRecord()\"> Add New Record</button>\n </div>\n </div>\n\n </div>\n\n <div class=\"mx-auto flex justify-between items-center px-6 flex-wrap md:flex-nowrap data-list-filter-wrapper\">\n <button (click)=\"getFormObjects()\" class=\"link-btn axo-font refresh-btn\">Refresh Data</button>\n </div>\n\n </div> -->\n\n <div class=\"mx-auto form-object-list-container relative h-full sm:px-6 px-4\">\n <div class=\"align-middle relative table-container-height\">\n <!-- <div *ngIf=\"!isAccountStatusActive\" class=\"loading-overlay rounded-lg\">\n <div class=\"loading-text\">Trial expired</div>\n <div class=\"loading-text\">To continue viewing data please subscribe to a plan first.</div><br>\n <button class=\"upgrade-btn btn\" (click)=\"navigateToBilling()\">Upgrade</button>\n </div> -->\n <div\n class=\"rounded-lg pb-px table-container customscroll w-full relative\"\n [ngClass]=\"{ 'mobile-view-height': showSearch }\"\n >\n <table class=\"rounded-lg divide-y divide-gray-200 data-list-table w-full\">\n <!--Object list table-->\n <thead class=\"sticky top-0 h-12\" [ngClass]=\"{'no-data-border': listViewData.length === 0}\">\n <!--Object list table head-->\n <tr *ngIf=\"listView?.columns?.length > 0\">\n <!--Checkbox column-->\n <th scope=\"col\" class=\"px-3 py-3 text-left data-table-header cursor-pointer\">\n <input type=\"checkbox\" (change)=\"selectAllRows($event.target.checked)\">\n </th>\n <th scope=\"col\" class=\"px-3 py-3 text-left data-table-header cursor-pointer\" (click)=\"sort($event,column.widget)\"\n *ngFor=\"let column of listView.columns;\">\n <span [matTooltip]=\"column.widget?.prompt\" class=\"flex justify-between gap-4\">{{column.widget?.prompt}}\n <div class=\"sorting-arrow\" *ngIf='orderMap.get(column.widget?.identifier); else showSortOnFilter'>\n <span class=\"order-sequence axo-font\" >{{orderedArray.indexOf(column.widget?.identifier)+1}}</span>\n <div class=\"flex flex-col\">\n <div class=\"sort-arrow-up cursor-pointer\" [ngClass]=\"{'arrow-active': orderMap.get(column.widget?.identifier)===sortOrder.ascending}\">▲</div>\n <div class=\"sort-arrow-down cursor-pointer\" [ngClass]=\"{'arrow-active': orderMap.get(column.widget?.identifier)===sortOrder.descending}\">▼</div>\n </div>\n </div>\n <ng-template #showSortOnFilter>\n <div class=\"sorting-arrow\">\n <span class=\"order-sequence axo-font opacity-0 invisible\" >{{orderedArray.indexOf(column.widget?.identifier)+1}}</span>\n <div class=\"flex flex-col\">\n <div class=\"sort-arrow-up display-hover\">▲</div>\n <div class=\"sort-arrow-down display-hover\">▼</div>\n </div>\n </div>\n </ng-template>\n </span>\n <!-- <table *ngIf=\"column.widget.type === 'subform-widget'\">\n <tr>\n <th scope=\"col\" class=\"text-sm px-3 py-3 text-left uppercase whitespace-nowrap\"\n *ngFor=\"let markup of column.widget.markup;\"> {{markup.prompt}} </th>\n </tr>\n </table> -->\n </th>\n <th scope=\"col\" class=\"px-3 py-3 data-table-header action-column\">Actions</th>\n <th *ngIf=\"appManifest?.enable_data_validity\" scope=\"col\" class=\"px-3 py-3 text-left data-table-header\">Status</th>\n\n </tr>\n\n </thead>\n <!--Object list body-->\n <tbody class=\"bg-white\" *ngIf=\"listViewData.length > 0\" >\n <ng-container *ngFor=\"let formObject of listViewData; let i= index\">\n <!-- <tr (click)=\"showDetailView(formObject)\" [ngClass]=\"{data: !formObject?.isValid}\"> -->\n <tr [ngClass]=\"{data: !formObject?.isValid}\" (click)=\"showDetailView(formObject)\">\n <!--Checkbox cell-->\n <td class=\"px-3\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"selectedRows[i]\" (change)=\"toggleRowSelection($event.target.checked, i)\">\n </td>\n <td class=\"px-3 h-14 line-height-14 text-left data-table-item cursor-pointer\"\n *ngFor=\"let widget of formObject.widgets; let widgetIndex = index\" style=\"max-width: fit-content !important;\">\n <!-- Value cell -->\n <ng-container *ngIf=\"widget?.value\">\n <form-object-widget-value [form]=\"formObject\" [axonatorX1Url]=\"axonatorX1Url\" [baseUrl]=\"baseUrl\"\n [widget]=\"widget\" [widgetProperties]=\"listView.columns[widgetIndex]?.widget\" class=\"flex items-center h-full min-h-full\">\n </form-object-widget-value>\n </ng-container>\n\n <ng-container *ngIf=\"!widget?.value &&\n column?.widget?.type !== widgetType.staticMedia &&\n column?.widget?.type !== widgetType.toggle\">\n <span class=\"flex justify-start items-center\">-</span>\n </ng-container>\n\n </td>\n\n <!-- Actions button -->\n <td class=\"px-3 h-14 line-height-14 data-table-item action-column\">\n <div class=\"flex items-center gap-3\">\n <ng-container *ngIf=\"form.ft === formTypes.asset && !form.hideEditButton\">\n <div class=\"icon-btn\" (click)=\"editData(formObject,$event)\" matTooltip=\"Edit\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-6 w-4 text-gray-500\" fill=\"none\"\n viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </div>\n </ng-container>\n <!-- <div class=\"icon-btn\" (click)=\"showDetailView(formObject)\" matTooltip=\"View\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-7 w-5 text-gray-500\" viewBox=\"0 0 24 24\"\n fill=\"#64748b\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </svg>\n </div> -->\n </div>\n </td>\n <td *ngIf=\"appManifest?.enable_data_validity\" class=\"px-3\">\n <mat-slide-toggle [color]=\"primary\" [checked]=\"formObject.isValid\" class=\"p-0\"\n (change)=\"enableToggle(formObject,$event)\" (click)=\"$event.stopPropagation();\">\n </mat-slide-toggle>\n </td>\n </tr>\n </ng-container>\n </tbody>\n <!-- Show no data found msg -->\n <tbody class=\"border-0 absolute no-data-body\" *ngIf=\"listViewData.length === 0 && !showLoader\">\n <tr class=\"border-0 hover:bg-transparent text-xl no-record-found cursor-default\">\n <td class=\"whitespace-nowrap\">No Data Found</td>\n </tr>\n </tbody>\n\n </table>\n </div>\n <mat-paginator\n (page)=\"handlePageEvent($event)\"\n [length]=\"totalFormObjects\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [disabled]=\"showLoader\"\n aria-label=\"Select page\"\n class=\"absolute bottom-0 right-0\"\n >\n </mat-paginator>\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: ["form-object-list .data-list-header{background-color:#fcfdff}form-object-list .data-list-header .search-field mat-icon{min-width:1.2rem;min-height:1.2rem;max-width:1.2rem;max-height:1.2rem}@media screen and (max-width: 500px){form-object-list .data-list-header .search-field-border{border:1px solid #80808029;border-top-color:transparent}}form-object-list .data-list-header form-object-widget-value{min-height:fit-content}form-object-list .data-list-header form-object-widget-value formobject-textbox-value{min-width:fit-content}form-object-list .icon-container{height:1.5rem!important;min-height:1.5rem!important;width:1.5rem!important;min-width:1.5rem!important;display:flex}form-object-list .icon-container .location-btn-icon{background:#E1E7EF;padding:.3rem .2rem;margin-left:10px;cursor:pointer}form-object-list .icon-container .location-btn-icon mat-icon{height:.875rem!important;min-height:.875rem!important;width:.875rem!important;min-width:.875rem!important}form-object-list .form-object-list-container .table-container{height:calc(100% - 4.3rem);max-height:calc(100% - 4.3rem);min-height:calc(100% - 4.3rem);outline:.2px solid #7b849b45;background-color:#fff}form-object-list .object-list-component-table{background-color:#fcfdff}form-object-list .object-list-component-table .form-object-title-container{border-bottom:.5px solid #cccccc7d}form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-style:normal;font-weight:400;font-size:14px;line-height:21px;color:#10172b}@media screen and (max-width: 500px){form-object-list .object-list-component-table .form-object-title-container .form-object-title{font-size:14px;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:14px}}form-object-list .object-list-component-table .form-object-title-container .inner-form-object-title-container{width:95.67%;min-width:95.67%;max-width:95.67%}form-object-list .object-list-component-table button.refresh-data{font-family:Roboto,sans-serif;font-style:normal;font-weight:400;font-size:12px;line-height:14px;color:#345ad6}form-object-list .object-list-component-table table th,form-object-list .object-list-component-table table td{max-width:300px;min-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}form-object-list .object-list-component-table table thead{background-color:#fcfdff}form-object-list .object-list-component-table table thead tr{outline:.2px solid #80808036}@media screen and (max-width: 500px){form-object-list .object-list-component-table table thead{top:-1px!important}}form-object-list .object-list-component-table table tbody{border-top:none}form-object-list .object-list-component-table table tbody tr{border:.2px solid #80808036;border-width:.2px!important;border-right:0;border-left:0;cursor:pointer}form-object-list .object-list-component-table table tbody tr:first-child{border-top:none}form-object-list .object-list-component-table table tbody tr:hover{background-color:#f4f4f4}form-object-list .object-list-component-table table .no-data-body{height:calc(100% - 3rem);width:100%;display:flex;justify-content:center;align-items:center}form-object-list .object-list-component-table .mat-paginator-page-size-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:12px;letter-spacing:.4px;margin:0!important}form-object-list .object-list-component-table .mat-paginator-range-label{font-family:Roboto,sans-serif;font-weight:500;color:#172b4d!important;font-size:12px;line-height:14px;margin:0 12px 0 0!important}form-object-list .object-list-component-table .mat-paginator-container{column-gap:20px;padding:.5rem 0!important}form-object-list .object-list-component-table .mat-paginator-page-size{column-gap:20px;margin:0!important}form-object-list .object-list-component-table mat-paginator{height:70px;background-color:transparent!important}form-object-list .object-list-component-table mat-paginator button{width:2rem;max-width:2rem;height:2rem;max-height:2rem;min-height:2rem;border-radius:4px}form-object-list .object-list-component-table mat-paginator .mat-button-base:hover{background-color:#eee}form-object-list .object-list-component-table mat-paginator .mat-icon-button.mat-button-disabled.mat-button-disabled:hover{background-color:transparent!important}form-object-list .object-list-component-table .child-record .thumbnail,form-object-list .object-list-component-table .choice-list .thumbnail{width:2rem}form-object-list .object-list-component-table .imageContainer .image-container{position:relative;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center}form-object-list .object-list-component-table .imageContainer .image-container img{max-width:2rem;max-height:2rem}form-object-list .object-list-component-table .imageContainer .count-of-image{min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem;line-height:1rem;border-radius:50%;transition:.5s ease;background-color:#6554c0}form-object-list .object-list-component-table .imageContainer .count{color:#fff;font-size:8px;text-align:center;font-weight:500}form-object-list .object-list-component-table .video-container video{width:55.28px;height:35.71px}form-object-list .object-list-component-table p{margin:0!important}form-object-list .data-list-filter-wrapper{min-height:3rem}@media screen and (max-width: 600px){form-object-list .data-list-filter-wrapper{padding:1rem 0!important;row-gap:.625rem}}form-object-list .refresh-btn{display:flex;align-items:center;justify-content:center}form-object-list audio{width:140px;height:20px}form-object-list audio::-webkit-media-controls-mute-button{margin-right:0;display:none}form-object-list audio::-webkit-media-controls-play-button{position:absolute;left:0;height:9px}form-object-list audio::-webkit-media-controls-timeline-container{width:60px}form-object-list audio::-webkit-media-controls-current-time-display{font-size:10px;position:absolute;right:11px}form-object-list audio::-webkit-media-controls-time-remaining-display{display:none}form-object-list audio::-webkit-media-controls-timeline{position:relative;left:11px;width:60px}form-object-list .data-list-value{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list .imgFixed-list-class .imageList-text,form-object-list .imgFixed-list-class .reference_list-text,form-object-list .imgFixed-list-class .mat-list-item-content,form-object-list .reference-list-class .imageList-text,form-object-list .reference-list-class .reference_list-text,form-object-list .reference-list-class .mat-list-item-content,form-object-list .fixed-list-class .imageList-text,form-object-list .fixed-list-class .reference_list-text,form-object-list .fixed-list-class .mat-list-item-content{max-width:11.5rem!important;min-width:calc(100% - 7.25rem)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important}form-object-list thead{z-index:10}.table-container-height{height:100%;min-height:100%;max-height:100%}@media screen and (min-width: 600px){.data-list-title-tooltip-custom-class{display:none!important}}.action-column{display:flex;justify-content:center}.sort-arrow-up,.sort-arrow-down{font-size:10px;line-height:8px;color:#000;opacity:.5}.sorting-arrow{white-space:nowrap;display:flex;column-gap:6px}.sorting-arrow .arrow-active{opacity:1!important}.sorting-arrow .order-sequence{border-radius:100%;background-color:#7964ed14;padding:0 6px;color:#0000007a;font-size:10px}.ghost-loader-table{height:calc(100% - 4.4rem);min-height:calc(100% - 4.4rem);max-height:calc(100% - 4.4rem)}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:1}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000bf;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:100}.loading-text{margin-top:10px;font-size:18px;color:#fff}.upgrade-btn{border:1px solid #7963ed;background-color:#7963ed!important;color:#fff;display:flex;align-items:center;justify-content:center;column-gap:.5rem;padding:7px 10px;border-radius:20px}.display-hover{visibility:hidden;opacity:0}.data-table-header:hover .display-hover{visibility:visible;opacity:.5}\n"] }]
|
|
909
890
|
}], function () { return [{ type: i1.FormObjectViewService }, { type: i2.FormObjectListService }, { type: i3.CommonLibConfigurationService }, { type: i4.Router }, { type: i5.DataViewService }, { type: i6.UserDataService }]; }, { listView: [{
|
|
910
891
|
type: Input
|
|
911
892
|
}], screenType: [{
|
|
@@ -945,4 +926,4 @@ FormObjectListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: For
|
|
|
945
926
|
}], ChildLoaded: [{
|
|
946
927
|
type: Output
|
|
947
928
|
}] }); })();
|
|
948
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2Zvcm0tb2JqZWN0L2Zvcm0tb2JqZWN0LWxpc3QvZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2Zvcm0tb2JqZWN0L2Zvcm0tb2JqZWN0LWxpc3QvZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJNUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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RUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckQseUJBQXlCO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBTVAsQ0FBQyxDQUFDLENBQUM7SUFFSCxDQUFDOzs4RkFocUJVLHVCQUF1QjswRUFBdkIsdUJBQXVCO1FDOUJwQywwRkE2S2U7O1FBN0tBLG9EQUErQjs7dUZEOEJqQyx1QkFBdUI7Y0FObkMsU0FBUzsyQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSTt5T0FJNUIsUUFBUTtrQkFBaEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyx3QkFBd0I7a0JBQWhDLEtBQUs7WUFLSSxtQkFBbUI7a0JBQTVCLE1BQU07WUFDRyxrQkFBa0I7a0JBQTNCLE1BQU07WUFDRyxpQkFBaUI7a0JBQTFCLE1BQU07WUFDRyxtQkFBbUI7a0JBQTVCLE1BQU07WUFDRyxzQkFBc0I7a0JBQS9CLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViRm9ybSB9IGZyb20gJy4vLi4vLi4vZm9ybXMvcGFnZS93aWRnZXRzL3N1Yi1mb3JtJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24tbGliLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBeEZpbHRlciB9IGZyb20gJy4uLy4uL2VubGlnaHRlbi1saWIvZmlsdGVycy9heC1maWx0ZXInO1xuaW1wb3J0IHsgU2NyZWVuVHlwZSB9IGZyb20gJy4uLy4uL2VubGlnaHRlbi1saWIvZmlsdGVycy9jb25kaXRpb24tdHlwZSc7XG5pbXBvcnQgeyBBeEZvcm0gfSBmcm9tICcuLi8uLi9mb3Jtcy9heC1mb3JtJztcbmltcG9ydCB7IERhdGFMaXN0IH0gZnJvbSAnLi4vLi4vZm9ybXMvcGFnZS9kYXRhLWxpc3QvZGF0YS1saXN0JztcbmltcG9ydCB7IERhdGFMaXN0Q29sdW1uIH0gZnJvbSAnLi4vLi4vZm9ybXMvcGFnZS9kYXRhLWxpc3QvZGF0YS1saXN0LWNvbHVtbic7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL3dpZGdldHMvd2lkZ2V0JztcbmltcG9ydCB7IEZvcm1UeXBlLCBTb3J0aW5nT3JkZXIsIFdpZGdldFN1YlR5cGUsIFdpZGdldFR5cGUgfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL2NvbW1vbi93aWRnZXQtZW51bXMnO1xuaW1wb3J0IHsgRm9ybU9iamVjdFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vZm9ybS1vYmplY3Qtdmlldy9mb3JtLW9iamVjdC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybU9iamVjdExpc3RTZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLW9iamVjdC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERhdGFWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGEtdmlldy1saWIvZGF0YS12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2hvc3RMb2FkZXJUeXBlIH0gZnJvbSAnLi4vLi4vZ2hvc3QtbG9hZGVyL2dob3N0LWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS91c2VyL3VzZXItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFWaWV3RmlsdGVyIH0gZnJvbSAnLi4vLi4vZGF0YS12aWV3LWxpYi9kYXRhLXZpZXcvZGF0YS12aWV3LWZpbHRlcic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1vYmplY3QtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLW9iamVjdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1PYmplY3RMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLzwtLS0tLS0tLSBJbnB1dHMgLS0tLS0tLS0tLS0tLS0tPlxuICBASW5wdXQoKSBsaXN0VmlldzogRGF0YUxpc3Q7XG4gIEBJbnB1dCgpIHNjcmVlblR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGZvcm06IEF4Rm9ybTtcbiAgQElucHV0KCkgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVuYmxlZENhY2hpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyczogQXJyYXk8QXhGaWx0ZXI+O1xuICBASW5wdXQoKSBhcHBseUZpbHRlckVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHJlc2V0RmlsdGVyRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgY2xlYXJGaWx0ZXJFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSByZWZyZXNoRGF0YUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGV4cG9ydERhdGFFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhcHBNYW5pZmVzdDogYW55O1xuICBASW5wdXQoKSBHbG9iYWxHaG9zdExvYWRlckVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbi8vICAgQElucHV0KCkgc2hvd0dob3N0TG9hZGVyOiBib29sZWFuO1xuXG5cbiAgLy88LS0tLS0tLS0gT3V0cHV0cyAtLS0tLS0tLS0tLS0tLS0+XG4gIEBPdXRwdXQoKSBleHBvcnREYXRhTGlzdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzaG93RGF0YURldGFpbFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkZE5ld1JlY29yZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlZGl0Rm9ybU9iamVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVGb3JtT2JqZWN0U3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBDaGlsZExvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vPC0tLS0tLS0tLS0tLS0tIENvbXBvbmVudCBhdHRyaWJ1dGVzIC0tLS0tLS0tLS0tLS0tLS0+XG4gIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0dob3N0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgYmFzZVVybDogc3RyaW5nO1xuICBheG9uYXRvclgxVXJsOiBzdHJpbmc7XG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICB0b3RhbEZvcm1PYmplY3RzID0gMDtcbiAgcGFnZVNpemVPcHRpb25zID0gWzEwLDI1LDUwLDEwMCwyMDBdO1xuICBvcmRlcmVkQXJyYXk9W107XG4gIGFycmF5Rm9yQXBpPVtdO1xuICB0ZW1wb3J5ZmlsdGVyczogKEF4RmlsdGVyIHwgRGF0YVZpZXdGaWx0ZXIpW10gPSBbXTtcblxuXG4gIC8vIFdlIHVzZSB0aGlzIHdpZGdldCBtYXAgZm9yIHdpZGdldCBwcm9wZXJ0aWVzIHRoaXMgbWFwIGRvbid0IGhhdmUgd2lkZ2V0IHZhbHVlLlxuICB3aWRnZXRNYXA6IE1hcDxzdHJpbmcsIFdpZGdldD4gPSBuZXcgTWFwPHN0cmluZywgV2lkZ2V0PigpO1xuICBvcmRlck1hcDogTWFwPHN0cmluZyxzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsc3RyaW5nPigpO1xuXG4gIEdob3N0TG9hZGVyVHlwZSA9IEdob3N0TG9hZGVyVHlwZTtcblxuICBsaXN0Vmlld0RhdGE6IEFycmF5PEF4Rm9ybT4gPSBbXTtcbiAgbGlzdFZpZXdEYXRhQXJyYXk6IGFueVtdID0gW107IC8vIFlvdXIgZGF0YSBhcnJheVxuICBzZWxlY3RlZFJvd3M6IGJvb2xlYW5bXSA9IFtdO1xuICBzZWxlY3RlZEZvcm1PYmplY3RJZHM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkRm9ybU9iamVjdFRpdGxlOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RBbGxSb3dzKGlzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMgPSB0aGlzLmxpc3RWaWV3RGF0YS5tYXAoZm9ybU9iamVjdCA9PiBmb3JtT2JqZWN0LmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUgPSB0aGlzLmxpc3RWaWV3RGF0YS5tYXAoZm9ybU9iamVjdCA9PiBmb3JtT2JqZWN0LnRpdGxlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5saXN0Vmlld0RhdGEubWFwKCgpID0+IGlzU2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMubGlzdFZpZXdEYXRhLm1hcCgoKSA9PiBpc1NlbGVjdGVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlID0gW107XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybU9iamVjdElkcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzKSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1PYmplY3RUaXRsZXMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlKSk7XG5cbiAgfVxuXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihpc1NlbGVjdGVkOiBib29sZWFuLCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzLnB1c2godGhpcy5saXN0Vmlld0RhdGFbaW5kZXhdLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUucHVzaCh0aGlzLmxpc3RWaWV3RGF0YVtpbmRleF0udGl0bGUpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcy5pbmRleE9mKHRoaXMubGlzdFZpZXdEYXRhW2luZGV4XS5pZCk7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpdGxlID0gdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZS5pbmRleE9mKHRoaXMubGlzdFZpZXdEYXRhW2luZGV4XS50aXRsZSk7XG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGVjdGVkVGl0bGUgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcyk7XG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1PYmplY3RJZHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcykpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtT2JqZWN0VGl0bGVzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZSkpO1xuICB9XG4gIC8vIEBJbnB1dCgpIGZvcm1PYmplY3RMaXN0OiBGb3JtT2JqZWN0TGlzdDtcbiAgLy8gQElucHV0KCkgZGF0YU1vZGVsOiBEYXRhTW9kZWw7XG4gIC8vIEBJbnB1dCgpIGF4b25hdG9yWDFVcmw6IHN0cmluZztcbiAgLy8gQElucHV0KCkgYXBwVmVyc2lvbklkOiBudW1iZXI7XG4gIC8vIEBJbnB1dCgpIGZvcm1PYmplY3RzOiBBcnJheTxBeEZvcm0+O1xuXG5cbiAgLy8gQElucHV0KCkgYXBwVmVyc2lvbklkOiBudW1iZXI7XG4gIC8vIEBJbnB1dCgpIGFwcElkOiBudW1iZXI7XG5cblxuXG5cbiAgLy8gQE91dHB1dCgpIGZpbHRlckNoYW5nZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gQE91dHB1dCgpIHJlc2V0RmlsdGVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gQE91dHB1dCgpIGFwcGx5RmlsdGVyRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBAT3V0cHV0KCkgcGFnZUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgLy8gV2lkZ2V0IG1hcCBsaXN0XG4gIC8vIGZvcm1PYmplY3RzTWFwOiBBcnJheTxNYXA8c3RyaW5nLCBhbnk+PiA9IFtdO1xuLy8gICBzaG93U2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgLy8gZm9ybUlkOiBzdHJpbmc7XG4gIHNob3dTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgd2lkZ2V0VHlwZTogYW55ID0gV2lkZ2V0VHlwZTtcbiAgcGFnZXNpemU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgaXNBY2NvdW50U3RhdHVzQWN0aXZlOiBib29sZWFuO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZm9ybU9iamVjdFZpZXdTZXJ2aWNlOiBGb3JtT2JqZWN0Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU9iamVjdExpc3RTZXJ2aWNlOiBGb3JtT2JqZWN0TGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2U6IENvbW1vbkxpYkNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX2RhdGFWaWV3U2VydmljZTogRGF0YVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3VzZXJEYXRhU2VydmljZTogVXNlckRhdGFTZXJ2aWNlLFxuICAgICkge1xuICB9XG5cbiAgZ2V0IGZvcm1UeXBlcygpOiB0eXBlb2YgRm9ybVR5cGUge1xuICAgIHJldHVybiBGb3JtVHlwZTtcbiAgfVxuICAvLyBnZXQgZm9yIHNvcnRpbmcgb3JkZXJcbiAgZ2V0IHNvcnRPcmRlcigpOiB0eXBlb2YgU29ydGluZ09yZGVyIHtcbiAgICByZXR1cm4gU29ydGluZ09yZGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NlbGVjdGVkRm9ybScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybSkpO1xuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuX2NvbW1vbkxpYkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmF4b25hdG9yWDFVcmw7XG4gICAgdGhpcy5heG9uYXRvclgxVXJsID0gdGhpcy5fY29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UuYXhvbmF0b3JYMVVybDtcbiAgICB0aGlzLnN1YnNjcmliZXJzKCk7XG4gICAgLy8gdGhpcy5fdXNlckRhdGFTZXJ2aWNlLmlzQWNjb3VudFN0YXR1c0FjdGl2ZSQuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgIC8vICAgdGhpcy5pc0FjY291bnRTdGF0dXNBY3RpdmUgPSByZXNwb25zZTtcbiAgICAvLyB9KTtcbiAgICB0aGlzLmlzQWNjb3VudFN0YXR1c0FjdGl2ZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzQWNjb3VudFN0YXR1c0FjdGl2ZScpIHx8ICdmYWxzZScpO1xuICAgIC8qKiBnZXQgd2lkdGggb2YgZmlsdGVyIGJ1dHRvbnMgd3JyYXBlciAqL1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXZpZXdoZWFkZXJ3cmFwcGVyJyk7XG4gICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudD8uY2xpZW50SGVpZ2h0KydweCc7XG4gICAgLyoqU2V0IHdpZHRoIG9mIGNzcyB2YXJpYWJsZSAqL1xuICAgIGlmKGhlaWdodCl7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICB9XG4gICAgXG4gIH1cblxuXG4gIC8qKlxuICAgKiBPbiBDaGFuZ2UgbGlmZSBjeWNsZSBob29rIEdldCBjYWxsIG9uIGlucHV0IGNoYW5nZVxuICAgKlxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5saXN0VmlldyAmJiAoY2hhbmdlcy5saXN0Vmlldy5wcmV2aW91c1ZhbHVlICE9IGNoYW5nZXMubGlzdFZpZXcuY3VycmVudFZhbHVlKSB8fCBjaGFuZ2VzLnNlYXJjaFRleHQgJiYgKGNoYW5nZXMuc2VhcmNoVGV4dC5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5zZWFyY2hUZXh0LnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgIGlmKCFjaGFuZ2VzLkdsb2JhbEdob3N0TG9hZGVyRW5hYmxlZCB8fCAhdGhpcy5HbG9iYWxHaG9zdExvYWRlckVuYWJsZWQpe1xuICAgICAgICAgICAgdGhpcy5zaG93R2hvc3RMb2FkZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdFZpZXdEYXRhID0gW107XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1PYmplY3RMaXN0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmZvcm0gJiYgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZSAmJiBjaGFuZ2VzLmZvcm0ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlLmZvcm1JZCAhPSBjaGFuZ2VzLmZvcm0ucHJldmlvdXNWYWx1ZS5mb3JtSWQgKSB7XG4gICAgICB0aGlzLnNob3dTZWFyY2ggPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5vcmRlcmVkQXJyYXkgPSBbXTtcbiAgICAgIHRoaXMuYXJyYXlGb3JBcGkgPSBbXTtcbiAgICAgIHRoaXMub3JkZXJNYXAuY2xlYXIoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICAgIGNvbnN0IGhlaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhdmlld2hlYWRlcndyYXBwZXInKT8uY2xpZW50SGVpZ2h0KydweCc7XG4gICAgICAvKipTZXQgd2lkdGggb2YgY3NzIHZhcmlhYmxlICovXG4gICAgICBpZihoZWlnaHQpe1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICAgIH1cbiAgICAgIFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpbGl6ZSBsaXN0IHZpZXdcbiAgICovXG4gIGluaXRpYWxpemVGb3JtT2JqZWN0TGlzdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgRGVmYXVsdCBQYWdlIEluZGV4IGFuZCBQYWdlIFNpemVcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xuICAgIC8vY3JlYXRlV2lkZ2V0TWFwXG4gICAgdGhpcy5jcmVhdGVXaWRnZXRNYXAodGhpcy5mb3JtLndpZGdldHMpO1xuXG4gICAgLy9nZXQgbGlzdCB2aWV3IHN0cnVjdHVyZVxuICAgIHRoaXMuZ2V0TGlzdFZpZXdEZXRhaWxzKCk7XG5cbiAgICAvLyB0aGlzLmZvcm1PYmplY3RzTWFwID0gW107XG4gICAgLy8gdGhpcy5mb3JtT2JqZWN0TGlzdC5wYWdlSW5kZXggPSAwO1xuICAgIC8vIGlmICh0aGlzLmZvcm1PYmplY3RMaXN0LmN1cnJlbnRQYWdlID09PSAxICYmIHRoaXMucGFnaW5hdG9yKSB7XG4gICAgLy8gICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xuICAgIC8vIH1cblxuICAgIC8vIENyZWF0ZWQgd2lkZ2V0IG1hcCBmb3IgZWFjaCBmb3JtT2JqZWN0XG4gICAgLy8gdGhpcy5mb3JtT2JqZWN0cy5mb3JFYWNoKChmb3JtT2JqZWN0OiBBeEZvcm0pID0+IHtcbiAgICAvLyAgIGNvbnN0IGZvcm1PYmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIC8vICAgZm9ybU9iamVjdC53aWRnZXRzLmZvckVhY2goKHdpZGdldDogYW55KSA9PiB7XG4gICAgLy8gICAgIGZvcm1PYmplY3RNYXAuc2V0KHdpZGdldC5pZGVudGlmaWVyLCB3aWRnZXQpO1xuICAgIC8vICAgfSk7XG4gICAgLy8gICB0aGlzLmZvcm1PYmplY3RzTWFwLnB1c2goZm9ybU9iamVjdE1hcCk7XG4gICAgLy8gfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IFBhZ2Ugc2l6ZSBvcHRpb25zIGJ5IGNvbHVtbnMgbGVuZ3RoXG4gICAqL1xuICBzZXRQYWdlU2l6ZU9wdGlvbnMoKTogdm9pZHtcbiAgICBpZih0aGlzLmxpc3RWaWV3LmNvbHVtbnMubGVuZ3RoID4gNTAgJiYgdGhpcy5saXN0Vmlldy5jb2x1bW5zLmxlbmd0aCA8IDEwMCl7XG4gICAgICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMuc2xpY2UoMCw0KTtcbiAgICB9ZWxzZSBpZih0aGlzLmxpc3RWaWV3LmNvbHVtbnMubGVuZ3RoID4gMTAwKXtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhZ2VTaXplT3B0aW9ucy5zbGljZSgwLDMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgc3Vic2NyaWJlciBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaGVyZS5cbiAgICovXG4gIHN1YnNjcmliZXJzKCk6IHZvaWR7XG4gICAgLyoqXG4gICAgICogVGhpcyB3aWxsIGdldCBjYWxsZWQgb24gYXBwbHkgZmlsdGVyIGJ1dHRvbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJFbWl0dGVyXG4gICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpXG4gICAgLnN1YnNjcmliZSgoKT0+e1xuICAgICAgdGhpcy5zaG93R2hvc3RMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xuICAgICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyB3aWxsIGdldCBjYWxsZWQgb24gcmVzZXQgZmlsdGVyIGJ1dHRvbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHRoaXMucmVzZXRGaWx0ZXJFbWl0dGVyXG4gICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpXG4gICAgLnN1YnNjcmliZSgoKT0+e1xuICAgICAgdGhpcy5zaG93R2hvc3RMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xuICAgICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGVhckZpbHRlckVtaXR0ZXJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcbiAgICAuc3Vic2NyaWJlKCgpPT57XG4gICAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XG4gICAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hEYXRhRW1pdHRlclxuICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgIC5zdWJzY3JpYmUoKCk9PntcbiAgICAgIHRoaXMuc2hvd0dob3N0TG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICAgIHRoaXMucGFnZVNpemUgPSAxMDtcbiAgICAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgd2lsbCBnZXQgY2FsbGVkIHdoZW4gc2VuZCBleGNlbCByZXBvcnQgYnV0dG9uIGNsaWNrZWQgb24gZGF0YSBsaXN0XG4gICAgICovXG4gICAgdGhpcy5leHBvcnREYXRhRW1pdHRlclxuICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgIC5zdWJzY3JpYmUoKHVzZXJFbWFpbDogc3RyaW5nKT0+e1xuICAgICAgY29uc3QgZXhwb3J0RmllbGRzOiBBcnJheTxhbnk+PVtdO1xuICAgICAgdGhpcy5saXN0Vmlldy5jb2x1bW5zLmZvckVhY2goKHdpZGdldCkgPT4ge1xuICAgICAgICAgIGV4cG9ydEZpZWxkcy5wdXNoKHdpZGdldC5pZGVudGlmaWVyKTtcbiAgICAgIH0pO1xuICAgICAgLy8gVGhpcyB3aWxsIGNhbGwgZXhjZWwgZXhwb3J0IGZ1bmN0aW9uXG4gICAgICB0aGlzLl9mb3JtT2JqZWN0TGlzdFNlcnZpY2UuZXhwb3J0RGF0YSh0aGlzLmZvcm0uZm9ybUlkLHRoaXMucGFnZUluZGV4LHRoaXMucGFnZVNpemUsdGhpcy5maWx0ZXJzLHRoaXMuc2VhcmNoVGV4dCxleHBvcnRGaWVsZHMsdXNlckVtYWlsKS50aGVuKChyZXNwb25zZSk9PntcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZWQgd2lkZ2V0IE1hcCB0aGF0IHdpbGwgYmUgdXNlIHRvIGdldCB3aWRnZXQgYnkgaWRlbnRpZmllci5cbiAgICovXG4gIGNyZWF0ZVdpZGdldE1hcCh3aWRnZXRzOiBBcnJheTxXaWRnZXQ+KTogdm9pZCB7XG4gICAgd2lkZ2V0cy5mb3JFYWNoKCh3aWRnZXQpID0+IHtcbiAgICAgICAgdGhpcy53aWRnZXRNYXAuc2V0KHdpZGdldC5pZGVudGlmaWVyLCB3aWRnZXQpO1xuICAgICAgICBpZih3aWRnZXQudHlwZSA9PT0gV2lkZ2V0VHlwZS5zdWJGb3JtKXtcbiAgICAgICAgICAgIGNvbnN0IHN1YkZvcm1XaWRnZXQgPSB3aWRnZXQgYXMgU3ViRm9ybTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlV2lkZ2V0TWFwKHN1YkZvcm1XaWRnZXQubWFya3VwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBMaXN0IFZpZXcgc3RydWN0dXJlXG4gICAqL1xuICBnZXRMaXN0Vmlld0RldGFpbHMoKTogdm9pZHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgIC8vIFRoaXMgY2hlY2sgYWRkZWQgZm9yIGRhdGEgbGlzdCBidWlsZGVyIElmIGxpc3QgaXMgbmV3bHkgY3JlYXRlZCAuXG4gICAgaWYgKHRoaXMubGlzdFZpZXcuaWQgIT09IDApIHtcbiAgICAgIHRoaXMuX2Zvcm1PYmplY3RMaXN0U2VydmljZS5nZXREYXRhTGlzdCh0aGlzLmxpc3RWaWV3LmlkKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBsaXN0Vmlld0RldGFpbHMgPSBuZXcgRGF0YUxpc3QocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLmxpc3RWaWV3LmNvbHVtbnMgPSB0aGlzLm1hcFdpZGVndFdpdGhDb2x1bW4obGlzdFZpZXdEZXRhaWxzLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLmxpc3RWaWV3LmRhdGFEZXRhaWwgPSBsaXN0Vmlld0RldGFpbHMuZGF0YURldGFpbDtcbiAgICAgICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAgICAgICAvL1NldCBQYWdlIHNpemUgb3B0aW9uc1xuICAgICAgICB0aGlzLnNldFBhZ2VTaXplT3B0aW9ucygpO1xuICAgICAgfSk7XG4gICAgfWVsc2V7XG4gICAgICAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgICAgICAgLy9TZXQgUGFnZSBzaXplIG9wdGlvbnNcbiAgICAgICAgdGhpcy5zZXRQYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFwIHdpZGdldCB3aXRoIGNvbHVtblxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1uc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbWFwV2lkZWd0V2l0aENvbHVtbihjb2x1bW5zOiBBcnJheTxEYXRhTGlzdENvbHVtbj4pOiBBcnJheTxEYXRhTGlzdENvbHVtbj4ge1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb2x1bW4ud2lkZ2V0ID0gdGhpcy53aWRnZXRNYXAuZ2V0KGNvbHVtbi5pZGVudGlmaWVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGRldGFpbCBWaWV3XG4gICAqXG4gICAqIEBwYXJhbSBmb3JtT2JqZWN0XG4gICAqL1xuICBzaG93RGV0YWlsVmlldyhmb3JtT2JqZWN0OiBBeEZvcm0pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhT2JqZWN0ID0geyBmb3JtT2JqZWN0OiBmb3JtT2JqZWN0LCBkYXRhRGV0YWlsSWQ6IHRoaXMubGlzdFZpZXcuZGF0YURldGFpbC5pZCB9O1xuICAgIHRoaXMuX2Zvcm1PYmplY3RWaWV3U2VydmljZS5zZXRGb3JtT2JqZWN0V2l0aERhdGFEZXRhaWxJZChmb3JtT2JqZWN0LCB0aGlzLmxpc3RWaWV3LmRhdGFEZXRhaWwuaWQpO1xuICAgIHRoaXMuc2hvd0RhdGFEZXRhaWxWaWV3LmVtaXQoZGF0YU9iamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEZvcm0gT2JqZWN0XG4gICAqL1xuICBnZXRGb3JtT2JqZWN0cygpOiB2b2lke1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1JZCcsIGZvcm1JZC50b1N0cmluZygpKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtSWQpO1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5fZm9ybU9iamVjdExpc3RTZXJ2aWNlLmdldEZvcm1PYmplY3RMaXN0KHRoaXMuZm9ybS5mb3JtSWQsdGhpcy5wYWdlSW5kZXgsdGhpcy5wYWdlU2l6ZSx0aGlzLmZpbHRlcnMsdGhpcy5zZWFyY2hUZXh0LHRoaXMuYXJyYXlGb3JBcGkpLnRoZW4oKHJlc3BvbnNlKT0+e1xuICAgICAgdGhpcy50b3RhbEZvcm1PYmplY3RzID0gcmVzcG9uc2UudG90YWxGb3JtT2JqZWN0cztcbiAgICAgIHRoaXMuYnVpbGRMaXN0Vmlld0RhdGEocmVzcG9uc2UuZm9ybU9iamVjdHMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIExpc3QgdmlldyBkYXRhIGFjY29yZGluZ2x5IHRvIGNvbHVtbiBvcmRlclxuICAgKlxuICAgKiBAcGFyYW0gZm9ybU9iamVjdHNcbiAgICovXG4gIGJ1aWxkTGlzdFZpZXdEYXRhKGZvcm1PYmplY3RzOiBBcnJheTxBeEZvcm0+KTogdm9pZHtcbiAgICB0aGlzLmxpc3RWaWV3RGF0YSA9IFtdO1xuICAgIGZvcm1PYmplY3RzLmZvckVhY2goKGZvcm1PYmplY3QpID0+e1xuICAgICAgY29uc3QgX2Zvcm1PYmplY3QgPSBuZXcgQXhGb3JtKGZvcm1PYmplY3QpO1xuICAgICAgX2Zvcm1PYmplY3Qud2lkZ2V0cyA9IFtdO1xuICAgICAgdGhpcy5saXN0Vmlldy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT57XG4gICAgICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy5nZXREYXRhV2lkZ2V0KGNvbHVtbi5pZGVudGlmaWVyLGZvcm1PYmplY3QpO1xuICAgICAgIF9mb3JtT2JqZWN0LndpZGdldHMucHVzaCh3aWRnZXQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxpc3RWaWV3RGF0YS5wdXNoKF9mb3JtT2JqZWN0KTtcbiAgICB9KTtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IGZhbHNlO1xuXG5cblxuICAgIGlmKHRoaXMuR2xvYmFsR2hvc3RMb2FkZXJFbmFibGVkKXtcbiAgICAgICAgdGhpcy5DaGlsZExvYWRlZC5lbWl0KCk7XG4gICAgfVxuXG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLyoqIGdldCB3aWR0aCBvZiBmaWx0ZXIgYnV0dG9ucyB3cnJhcGVyICovXG4gICAgICAgIGxldCBoZWlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YXZpZXdoZWFkZXJ3cmFwcGVyJyk/LmNsaWVudEhlaWdodCtcInB4XCI7XG4gICAgICAgIC8qKlNldCB3aWR0aCBvZiBjc3MgdmFyaWFibGUgKi9cbiAgICAgICAgaWYoaGVpZ2h0KXtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICAgICAgfSAgIFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBmaW5kIGFuZCByZXR1cm4gd2lkZ2V0IGJ5IGlkZW50aWZpZXIuaWYgd2lkZ2V0IG5vdCBmb3VuZCByZXR1cm4gbnVsbFxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKiBAcGFyYW0gZm9ybU9iamVjdFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RGF0YVdpZGdldChpZGVudGlmaWVyOiBzdHJpbmcsZm9ybU9iamVjdDogQXhGb3JtKTogV2lkZ2V0e1xuICAgIHJldHVybiBmb3JtT2JqZWN0LndpZGdldHMuZmluZCh3aWRnZXQgPT4gd2lkZ2V0LmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcik7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlZCBQYWdpbmF0aW9uIGV2ZW50c1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIGhhbmRsZVBhZ2VFdmVudChldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93R2hvc3RMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcbiAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gICAgLy8gY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAvLyBjb25zdCBmb19pbmZvID0geyAnYWZpZCc6IHRoaXMuZm9ybS5mb3JtSWQsICdjdXJyZW50UGFnZSc6IGV2ZW50LnBhZ2VJbmRleCArIDEsICdwYWdlc2l6ZSc6IGV2ZW50LnBhZ2VTaXplLCAna2V5d29yZCc6ICcnLCAnc2VsZWN0ZWRfYWZvaWQnOiBudWxsLCAnZnJvbV9kYXRlJzogJycsICd0b19kYXRlJzogJycgfTtcbiAgICAvLyBmb3JtRGF0YS5hcHBlbmQoJ2ZvX2luZm8nLCBKU09OLnN0cmluZ2lmeShmb19pbmZvKSk7XG4gICAgLy8gZm9ybURhdGEuYXBwZW5kKCdhcHBWZXJzaW9uSWQnLCB0aGlzLmFwcFZlcnNpb25JZC50b1N0cmluZygpKTtcbiAgICAvLyB0aGlzLl9mb3JtT2JqZWN0Vmlld1NlcnZpY2Uuc2V0Rm9ybURhdGFGb3JQYWdpbmF0b3IoZm9ybURhdGEpO1xuICAgIC8vIHRoaXMuZm9ybU9iamVjdExpc3QuY3VycmVudFBhZ2UgPSBldmVudC5wYWdlSW5kZXggKyAxO1xuICAgIC8vIHRoaXMuZm9ybU9iamVjdExpc3QucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgICAvLyB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IERhdGEgTGlzdFxuICAgKi9cbiAgZXhwb3J0RGF0YUxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5leHBvcnREYXRhTGlzdEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIC8vIHNob3dTZWFyY2hCb3goKTogdm9pZCB7XG4gIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkLXNlYXJjaCcpLmZvY3VzKCk7XG4gIC8vICAgdGhpcy5zaG93U2VhcmNoID0gIXRoaXMuc2hvd1NlYXJjaDtcbiAgLy8gfVxuXG4gIC8vIGNsZWFyKCk6IHZvaWQge1xuICAvLyAgIGlmIChfLmlzRW1wdHkodGhpcy5zZWFyY2hUZXh0KSkge1xuICAvLyAgICAgdGhpcy5zaG93U2VhcmNoID0gIXRoaXMuc2hvd1NlYXJjaDtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gIC8vICAgdGhpcy5nZXREYXRhTGlzdCgpO1xuICAvLyB9XG5cbiAgLy8gZ2V0RGF0YUxpc3QoKTogdm9pZCB7XG4gIC8vICAgdGhpcy5wYWdlQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnNlYXJjaFRleHQpO1xuICAvLyB9XG5cbiAgLy8gYWRkTmV3UmVjb3JkKCk6IHZvaWQge1xuICAvLyAgIHRoaXMuYWRkTmV3UmVjb3JkRXZlbnQuZW1pdCgpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZWQgYW5kXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtT2JqZWN0XG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgZW5hYmxlVG9nZ2xlKGZvcm1PYmplY3Q6IEF4Rm9ybSwgZXZlbnQ6IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlKTogdm9pZCB7XG4gICAgZm9ybU9iamVjdC5pc1ZhbGlkID0gZXZlbnQuY2hlY2tlZDtcbiAgICB0aGlzLnVwZGF0ZUZvcm1PYmplY3RTdGF0dXMuZW1pdChmb3JtT2JqZWN0KTtcbiAgfVxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHdpZGdldCBmcm9tIGZvcm1PYmplY3RzTWFwIGJ5IHdpZGdldCBpZGVudGlmaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHBhcmFtIGNvbHVtblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgLy8gZ2V0V2lkZ2V0KGluZGV4OiBudW1iZXIsIGNvbHVtbjogYW55KTogYW55IHtcbiAgLy8gICBjb25zdCBmb3JtT2JqZWN0TWFwID0gdGhpcy5mb3JtT2JqZWN0c01hcFtpbmRleF07XG4gIC8vICAgY29uc3Qgd2lkZ2V0ID0gZm9ybU9iamVjdE1hcD8uZ2V0KGNvbHVtbi53aWRnZXQuaWRlbnRpZmllcik7XG4gIC8vICAgY29uc3Qgd2lkZ2V0VmFsdWUgPSB3aWRnZXQ/LnZhbHVlO1xuICAvLyAgIGNvbHVtbi53aWRnZXQudmFsdWVzID0gd2lkZ2V0Py52YWx1ZXM7XG4gIC8vICAgaWYgKHdpZGdldCAmJiB3aWRnZXRWYWx1ZSkge1xuICAvLyAgICAgY29sdW1uLndpZGdldC52YWx1ZSA9IHdpZGdldFZhbHVlO1xuICAvLyAgIH1cbiAgLy8gICBlbHNlIHtcbiAgLy8gICAgIGNvbHVtbi53aWRnZXQudmFsdWUgPSBudWxsO1xuXG4gIC8vICAgfTtcbiAgLy8gICByZXR1cm4gY29sdW1uLndpZGdldDtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2lkZ2V0IGZyb20gZm9ybU9iamVjdHNNYXAgYnkgd2lkZ2V0IGlkZW50aWZpZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gY29sdW1uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICAvLyBnZXRXaWRnZXRWYWx1ZShpbmRleDogbnVtYmVyLCBjb2x1bW46IGFueSk6IGJvb2xlYW4ge1xuICAvLyAgIGNvbnN0IGNvbHVtbldpZGdldCA9IHRoaXMuZ2V0V2lkZ2V0KGluZGV4LCBjb2x1bW4pO1xuICAvLyAgIHJldHVybiBjb2x1bW5XaWRnZXQudmFsdWUgIT0gbnVsbCA/IHRydWUgOiBmYWxzZTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBjaGVja3Mgd2hldGhlciB0aGUgd2lkZ2V0IGV4aXN0c1xuICAgKiBhbmQgdGhhbiBjaGVja3Mgd2hldGhlciB2YWx1ZSBleGlzdHMgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHBhcmFtIGNvbHVtblxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgLy8gY2hlY2tXaWRnZXRBbmRXaWRnZXRWYWx1ZShpbmRleDogbnVtYmVyLCBjb2x1bW46IGFueSk6Ym9vbGVhbntcbiAgLy8gICBpZih0aGlzLmdldFdpZGdldChpbmRleCxjb2x1bW4pICYmIHRoaXMuZ2V0V2lkZ2V0VmFsdWUoaW5kZXgsY29sdW1uKSB8fCB0aGlzLmdldFdpZGdldFZhbHVlKGluZGV4LGNvbHVtbik9PWZhbHNlKXtcbiAgLy8gICAgIGNvbnN0IGNvbHVtbldpZGdldCA9IHRoaXMuZ2V0V2lkZ2V0KGluZGV4LCBjb2x1bW4pO1xuICAvLyAgICAgaWYoY29sdW1uV2lkZ2V0LnR5cGU9PVwieWVzX25vLXdpZGdldFwiIHx8IChjb2x1bW5XaWRnZXQudmFsdWUhPW51bGwgJiYgY29sdW1uV2lkZ2V0LnZhbHVlICE9IFwiXCIgKSl7XG4gIC8vICAgICAgIHJldHVybiB0cnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBFZGl0IGZvcm0gb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBBeEZvcm1cbiAgICogQHBhcmFtIE1vdXNlRXZlbnRcbiAgICovXG4gIGVkaXREYXRhKGZvcm1PYmplY3Q6IEF4Rm9ybSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmVkaXRGb3JtT2JqZWN0RXZlbnQuZW1pdChmb3JtT2JqZWN0KTtcblxuICB9XG5cbiAgLyoqXG4gICAqICB1bnN1YnNjcmliZSBhbGwgc3Vic2N0aWJlciBvbiBkZXN0cm95IGxpZmUgY3ljbGUgaG9va1xuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xuICB9XG5cblxuICAvLyBmaWx0ZXJDaGFuZ2VkRXZlbnQoKTogdm9pZCB7XG4gIC8vICAgdGhpcy5maWx0ZXJDaGFuZ2VFbWl0LmVtaXQoKTtcbiAgLy8gfVxuXG4gIC8qXG4gIEVtaXRzIHRoZSByZXNldEZpbHRlciBldmVudCBmb3IgcmVzZXR0aW5nIHRoZSBmaWx0ZXIgb24gUmVzZXQgYnV0dG9uXG4gICovXG4gIC8vIHJlc2V0RmlsdGVyKGZpbHRlcjogRGF0YUxpc3RGaWx0ZXJEdG8pOiB2b2lkIHtcbiAgLy8gICAvLyB0aGlzLnJlc2V0RmlsdGVyRXZlbnQuZW1pdCgpO1xuICAvLyAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgLy8gfVxuXG4gIC8qXG4gIEVtaXRzIHRoZSBldmVudCBmb3IgQXBwbHlpbmcgZmlsdGVycyBvbiBBcHBseSBidXR0b25cbiAgKi9cbiAgLy8gYXBwbHlGaWx0ZXJFdmVudCgpOiB2b2lkIHtcbiAgLy8gICB0aGlzLmFwcGx5RmlsdGVyRW1pdC5lbWl0KCk7XG4gIC8vIH1cblxuICAvKipcbiAgICogdGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgd2hlbiBjbGlja2VkIG9uIGNvbHVtbiBoZWFkZXJcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSB3aWRnZXRcbiAgICovXG4gIHNvcnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHdpZGdldDogV2lkZ2V0KTogdm9pZCB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHdpZGdldC5pZGVudGlmaWVyO1xuICAgIHRoaXMudXBkYXRlU29ydGluZ09yZGVyKGlkZW50aWZpZXIpO1xuICAgIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHRoaXMubXVsdGlwbGVTb3J0aW5nKGlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2luZ2xlQ29sdW1uU29ydGluZyhpZGVudGlmaWVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3JkZXJNYXAuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICB0aGlzLmFycmF5Rm9yQXBpLnB1c2godGhpcy5nZXRGb3JtYXR0ZWRTdHJpbmcoaWRlbnRpZmllciwgd2lkZ2V0LnN1YlR5cGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gIH1cbiAgZ2V0Rm9ybWF0dGVkU3RyaW5nKGlkZW50aWZpZXI6IHN0cmluZywgc3ViVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3ViVHlwZSA9PT0gV2lkZ2V0U3ViVHlwZS5yZWZlcmVuY2VMaXN0KSB7XG4gICAgICByZXR1cm4gJ2ZpZWxkKCcgKyB0aGlzLmZvcm0uZm9ybUlkICsgJ18nICsgaWRlbnRpZmllciArICdfbmFtZSkgJyArIHRoaXMub3JkZXJNYXAuZ2V0KGlkZW50aWZpZXIpO1xuXG4gICAgfVxuICAgIHJldHVybiAnZmllbGQoJyArIHRoaXMuZm9ybS5mb3JtSWQgKyAnXycgKyBpZGVudGlmaWVyICsgJykgJyArIHRoaXMub3JkZXJNYXAuZ2V0KGlkZW50aWZpZXIpO1xuXG4gIH1cbiAgLyoqXG4gICAqIHRvIEFkZCBtdWx0aXBsZSBjb2x1bW4gaWRlbnRpZmllcnMgaW4gc29ydGluZyBhcnJheVxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKi9cbiAgbXVsdGlwbGVTb3J0aW5nKGlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9yZGVyZWRBcnJheS5pbmNsdWRlcyhpZGVudGlmaWVyKSkge1xuICAgICAgdGhpcy5vcmRlcmVkQXJyYXkuc3BsaWNlKHRoaXMub3JkZXJlZEFycmF5LmluZGV4T2YoaWRlbnRpZmllciksIDEpO1xuICAgICAgdGhpcy5hcnJheUZvckFwaS5zcGxpY2UodGhpcy5vcmRlcmVkQXJyYXkuaW5kZXhPZihpZGVudGlmaWVyKSwgMSk7XG4gICAgfVxuICAgIHRoaXMub3JkZXJlZEFycmF5LnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICAvKipcbiAgICogdG8gc29ydCBzaW5nbGUgY29sdW1uXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyXG4gICAqL1xuICBzaW5nbGVDb2x1bW5Tb3J0aW5nKGlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIFsuLi50aGlzLm9yZGVyTWFwLmtleXMoKV0uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSBpZGVudGlmaWVyKSB7XG4gICAgICAgIHRoaXMub3JkZXJNYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vcmRlcmVkQXJyYXkgPSBbXTtcbiAgICB0aGlzLmFycmF5Rm9yQXBpID0gW107XG4gICAgdGhpcy5vcmRlcmVkQXJyYXkucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byB1cGRhdGUgc29ydCBvcmRlciBhY2NvcmRpbmcgbGFzdCBzb3J0aWcgb3JkZXJcbiAgICpcbiAgICogQHBhcmFtIGlkZW50aWZpZXJcbiAgICovXG4gIHVwZGF0ZVNvcnRpbmdPcmRlcihpZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLm9yZGVyTWFwLmdldChpZGVudGlmaWVyKSA9PT0gU29ydGluZ09yZGVyLmFzY2VuZGluZykge1xuICAgICAgdGhpcy5vcmRlck1hcC5zZXQoaWRlbnRpZmllciwgU29ydGluZ09yZGVyLmRlc2NlbmRpbmcpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLm9yZGVyTWFwLmdldChpZGVudGlmaWVyKSA9PT0gU29ydGluZ09yZGVyLmRlc2NlbmRpbmcpIHtcbiAgICAgIHRoaXMub3JkZXJlZEFycmF5LnNwbGljZSh0aGlzLm9yZGVyZWRBcnJheS5pbmRleE9mKGlkZW50aWZpZXIpLCAxKTtcbiAgICAgIHRoaXMub3JkZXJNYXAuZGVsZXRlKGlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMub3JkZXJNYXAuc2V0KGlkZW50aWZpZXIsIFNvcnRpbmdPcmRlci5hc2NlbmRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9CaWxsaW5nKCk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKHRoaXMuX2NvbW1vbkxpYkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmJ1aWxkZXJVcmwgKyAncGF5bWVudGluZm8vcHJpY2luZycsICdfYmxhbmsnKTtcblxuICAgIHRoaXMuX3VzZXJEYXRhU2VydmljZS51c2VyRGV0YWlscyQuc3Vic2NyaWJlKHVzZXJEZXRhaWxzID0+IHtcbiAgICAgIC8vIFVzZSB1c2VyRGV0YWlscyBoZXJlXG4gICAgICBjb25zb2xlLmxvZyh1c2VyRGV0YWlscyk7XG4gICAgICBjb25zdCB1c2VyID0ge1xuICAgICAgICB1bmFtZTogdXNlckRldGFpbHMudW5hbWUsIC8vIFVzZXIncyBmdWxsIG5hbWVcbiAgICAgICAgcmVjZWl2ZXJfbmFtZTogXCJBYXJvaGlcIiwgLy8gUmVjZWl2ZXIncyBmdWxsIG5hbWVcbiAgICAgICAgLy8gcmVjZWl2ZXJfZW1haWw6IFwiYWFyb2hpQGF4b25hdG9yLmNvbVwiLCAvLyBSZWNlaXZlcidzIGVtYWlsXG4gICAgICAgIC8vIHJlY2VpdmVyX2VtYWlsOiBlbnZpcm9ubWVudC5pbnRlcm5hbEFsZXJ0UmVjaXBpZW50SWRzLCAvLyBSZWNlaXZlcidzIGVtYWlsXG4gICAgICAgIHNjcmVlbjogXCJDb250YWluZXI6IERhdGEtVmlld3M6IERhdGEtTGlzdC1WaWV3XCIsXG4gICAgICAgIGFwcDogdXNlckRldGFpbHMuYWNjb3VudHNbdXNlckRldGFpbHMubGFzdHVzZWRfYWNjb3VudF0ubmFtZSwgLy8gQXBwIG5hbWVcbiAgICAgICAgdmVyc2lvbjogXCJ2XCIgKyB1c2VyRGV0YWlscy51b2JzLnByb3BlcnRpZXMuYXBwX3ZlcnNpb24sIC8vIEFwcCB2ZXJzaW9uXG4gICAgICAgIGVudjogdGhpcy5fY29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UuYXhvbmF0b3JYMVVybCxcbiAgICAgICAgb3JnX2lkOiB1c2VyRGV0YWlscy5sYXN0dXNlZF9hY2NvdW50LCAvLyBPcmdhbml6YXRpb24gSURcbiAgICAgICAgb3JnX25hbWU6IHVzZXJEZXRhaWxzLmFjY291bnRzW3VzZXJEZXRhaWxzLmxhc3R1c2VkX2FjY291bnRdLm5hbWUsIC8vIE9yZ2FuaXphdGlvbiBuYW1lXG4gICAgICAgIG1vZGFsX3R5cGU6IFwiQnV5IExpY2Vuc2VzXCJcbiAgICAgIH07XG4gICAgICAvLyBDYWxsIHRoZSBFbWFpbFNlcnZpY2UgbWV0aG9kIHRvIHNlbmQgdGhlIHVwZ3JhZGUgZW1haWxcbiAgICAgIHRoaXMuX3VzZXJEYXRhU2VydmljZS5zZW5kVXBncmFkZUVtYWlsKHVzZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnVXBncmFkZSBlbWFpbCBzZW50IHN1Y2Nlc3NmdWxseScpO1xuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZW5kaW5nIHVwZ3JhZGUgZW1haWw6JywgZXJyb3IpO1xuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgYXMgbmVlZGVkXG4gICAgICB9KTtcblxuXG5cblxuXG4gIH0pO1xuXG4gIH1cblxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIUdsb2JhbEdob3N0TG9hZGVyRW5hYmxlZFwiPlxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dHaG9zdExvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWxpc3QtY29tcG9uZW50LXRhYmxlIHctZnVsbCBoLWZ1bGwgcGFnZS1iYWNrZ3JvdW5kXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmb3JtLW9iamVjdC1saXN0LWNvbnRhaW5lciByZWxhdGl2ZSBoLWZ1bGwgc206cHgtNiBweC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLW1pZGRsZSByZWxhdGl2ZSB0YWJsZS1jb250YWluZXItaGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZ2hvc3QtbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRUeXBlXT1cIkdob3N0TG9hZGVyVHlwZS5MaXN0Vmlld0xvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1naG9zdC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZ2hvc3QtbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudFR5cGVdPVwiR2hvc3RMb2FkZXJUeXBlLlBhZ2luYXRpb25WaWV3TG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWdob3N0LWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93R2hvc3RMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1saXN0LWNvbXBvbmVudC10YWJsZSB3LWZ1bGwgaC1mdWxsIHBhZ2UtYmFja2dyb3VuZFwiPlxuXG4gICAgICAgICAgICA8IS0tIFBhZ2UgaGVhZGVyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5IHRvcC0wIGRhdGEtbGlzdC1oZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbXgtYXV0byBoLTEyIGJnLXdoaXRlIGZvcm0tb2JqZWN0LXRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBpbm5lci1mb3JtLW9iamVjdC10aXRsZS1jb250YWluZXIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImxlYWRpbmctdGlnaHQgbS0wIGZvcm0tb2JqZWN0LXRpdGxlIGF4by1mb250XCIgIFttYXRUb29sdGlwXT1cImZvcm1PYmplY3RMaXN0LmZvcm1OYW1lU2luZ3VsYXJcIiBtYXRUb29sdGlwQ2xhc3M9XCJkYXRhLWxpc3QtdGl0bGUtdG9vbHRpcC1jdXN0b20tY2xhc3NcIj57e2Zvcm1PYmplY3RMaXN0LmZvcm1OYW1lU2luZ3VsYXJ9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnktYnRuIGF4by1mb250XCIgKGNsaWNrKT1cImFkZE5ld1JlY29yZCgpXCI+IEFkZCBOZXcgUmVjb3JkPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB4LTYgZmxleC13cmFwIG1kOmZsZXgtbm93cmFwIGRhdGEtbGlzdC1maWx0ZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnZXRGb3JtT2JqZWN0cygpXCIgY2xhc3M9XCJsaW5rLWJ0biBheG8tZm9udCByZWZyZXNoLWJ0blwiPlJlZnJlc2ggRGF0YTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIGZvcm0tb2JqZWN0LWxpc3QtY29udGFpbmVyIHJlbGF0aXZlIGgtZnVsbCBzbTpweC02IHB4LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24tbWlkZGxlIHJlbGF0aXZlIHRhYmxlLWNvbnRhaW5lci1oZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBY2NvdW50U3RhdHVzQWN0aXZlXCIgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXkgcm91bmRlZC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy10ZXh0XCI+VHJpYWwgZXhwaXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy10ZXh0XCI+VG8gY29udGludWUgdmlld2luZyBkYXRhIHBsZWFzZSBzdWJzY3JpYmUgdG8gYSBwbGFuIGZpcnN0LjwvZGl2Pjxicj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVwZ3JhZGUtYnRuIGJ0blwiIChjbGljayk9XCJuYXZpZ2F0ZVRvQmlsbGluZygpXCI+VXBncmFkZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1sZyBwYi1weCB0YWJsZS1jb250YWluZXIgY3VzdG9tc2Nyb2xsIHctZnVsbCByZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtb2JpbGUtdmlldy1oZWlnaHQnOiBzaG93U2VhcmNoIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInJvdW5kZWQtbGcgZGl2aWRlLXkgZGl2aWRlLWdyYXktMjAwIGRhdGEtbGlzdC10YWJsZSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1PYmplY3QgbGlzdCB0YWJsZS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwic3RpY2t5IHRvcC0wIGgtMTJcIiBbbmdDbGFzc109XCJ7J25vLWRhdGEtYm9yZGVyJzogbGlzdFZpZXdEYXRhLmxlbmd0aCA9PT0gMH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU9iamVjdCBsaXN0IHRhYmxlIGhlYWQtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwibGlzdFZpZXc/LmNvbHVtbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tQ2hlY2tib3ggY29sdW1uLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMgdGV4dC1sZWZ0IGRhdGEtdGFibGUtaGVhZGVyIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKCRldmVudC50YXJnZXQuY2hlY2tlZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyBweS0zIHRleHQtbGVmdCBkYXRhLXRhYmxlLWhlYWRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0KCRldmVudCxjb2x1bW4ud2lkZ2V0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGxpc3RWaWV3LmNvbHVtbnM7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbWF0VG9vbHRpcF09XCJjb2x1bW4ud2lkZ2V0Py5wcm9tcHRcIiAgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPnt7Y29sdW1uLndpZGdldD8ucHJvbXB0fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydGluZy1hcnJvd1wiICpuZ0lmPSdvcmRlck1hcC5nZXQoY29sdW1uLndpZGdldD8uaWRlbnRpZmllcik7IGVsc2Ugc2hvd1NvcnRPbkZpbHRlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JkZXItc2VxdWVuY2UgYXhvLWZvbnRcIiA+e3tvcmRlcmVkQXJyYXkuaW5kZXhPZihjb2x1bW4ud2lkZ2V0Py5pZGVudGlmaWVyKSsxfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtYXJyb3ctdXAgY3Vyc29yLXBvaW50ZXJcIiBbbmdDbGFzc109XCJ7J2Fycm93LWFjdGl2ZSc6IG9yZGVyTWFwLmdldChjb2x1bW4ud2lkZ2V0Py5pZGVudGlmaWVyKT09PXNvcnRPcmRlci5hc2NlbmRpbmd9XCI+JiN4MjVCMjs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1hcnJvdy1kb3duIGN1cnNvci1wb2ludGVyXCIgW25nQ2xhc3NdPVwieydhcnJvdy1hY3RpdmUnOiBvcmRlck1hcC5nZXQoY29sdW1uLndpZGdldD8uaWRlbnRpZmllcik9PT1zb3J0T3JkZXIuZGVzY2VuZGluZ31cIj4mI3gyNUJDOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93U29ydE9uRmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydGluZy1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZGVyLXNlcXVlbmNlIGF4by1mb250IG9wYWNpdHktMCBpbnZpc2libGVcIiA+e3tvcmRlcmVkQXJyYXkuaW5kZXhPZihjb2x1bW4ud2lkZ2V0Py5pZGVudGlmaWVyKSsxfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3J0LWFycm93LXVwIGRpc3BsYXktaG92ZXJcIj4mI3gyNUIyOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtYXJyb3ctZG93biBkaXNwbGF5LWhvdmVyXCI+JiN4MjVCQzs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGFibGUgKm5nSWY9XCJjb2x1bW4ud2lkZ2V0LnR5cGUgPT09ICdzdWJmb3JtLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwidGV4dC1zbSBweC0zIHB5LTMgdGV4dC1sZWZ0IHVwcGVyY2FzZSB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWFya3VwIG9mIGNvbHVtbi53aWRnZXQubWFya3VwO1wiPiB7e21hcmt1cC5wcm9tcHR9fSA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMyAgZGF0YS10YWJsZS1oZWFkZXIgYWN0aW9uLWNvbHVtblwiPkFjdGlvbnM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImFwcE1hbmlmZXN0Py5lbmFibGVfZGF0YV92YWxpZGl0eVwiIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMgdGV4dC1sZWZ0IGRhdGEtdGFibGUtaGVhZGVyXCI+U3RhdHVzPC90aD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU9iamVjdCBsaXN0IGJvZHktLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImJnLXdoaXRlXCIgKm5nSWY9XCJsaXN0Vmlld0RhdGEubGVuZ3RoID4gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybU9iamVjdCBvZiBsaXN0Vmlld0RhdGE7IGxldCBpPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dHIgKGNsaWNrKT1cInNob3dEZXRhaWxWaWV3KGZvcm1PYmplY3QpXCIgW25nQ2xhc3NdPVwie2RhdGE6ICFmb3JtT2JqZWN0Py5pc1ZhbGlkfVwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtuZ0NsYXNzXT1cIntkYXRhOiAhZm9ybU9iamVjdD8uaXNWYWxpZH1cIiAoY2xpY2spPVwic2hvd0RldGFpbFZpZXcoZm9ybU9iamVjdClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tQ2hlY2tib3ggY2VsbC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJvd3NbaV1cIiAoY2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbigkZXZlbnQudGFyZ2V0LmNoZWNrZWQsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTMgaC0xNCBsaW5lLWhlaWdodC0xNCB0ZXh0LWxlZnQgZGF0YS10YWJsZS1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiBmb3JtT2JqZWN0LndpZGdldHM7IGxldCB3aWRnZXRJbmRleCA9IGluZGV4XCIgc3R5bGU9XCJtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmFsdWUgY2VsbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldD8udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybS1vYmplY3Qtd2lkZ2V0LXZhbHVlIFtmb3JtXT1cImZvcm1PYmplY3RcIiBbYXhvbmF0b3JYMVVybF09XCJheG9uYXRvclgxVXJsXCIgW2Jhc2VVcmxdPVwiYmFzZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkZ2V0XT1cIndpZGdldFwiIFt3aWRnZXRQcm9wZXJ0aWVzXT1cImxpc3RWaWV3LmNvbHVtbnNbd2lkZ2V0SW5kZXhdPy53aWRnZXRcIiAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBoLWZ1bGwgbWluLWgtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybS1vYmplY3Qtd2lkZ2V0LXZhbHVlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdpZGdldD8udmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy53aWRnZXQ/LnR5cGUgIT09IHdpZGdldFR5cGUuc3RhdGljTWVkaWEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy53aWRnZXQ/LnR5cGUgIT09IHdpZGdldFR5cGUudG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGp1c3RpZnktc3RhcnQgaXRlbXMtY2VudGVyXCI+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJweC0zIGgtMTQgbGluZS1oZWlnaHQtMTQgZGF0YS10YWJsZS1pdGVtIGFjdGlvbi1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uZnQgPT09IGZvcm1UeXBlcy5hc3NldCAmJiAhZm9ybS5oaWRlRWRpdEJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYnRuXCIgKGNsaWNrKT1cImVkaXREYXRhKGZvcm1PYmplY3QsJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImgtNiB3LTQgdGV4dC1ncmF5LTUwMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1LjIzMiA1LjIzMmwzLjUzNiAzLjUzNm0tMi4wMzYtNS4wMzZhMi41IDIuNSAwIDExMy41MzYgMy41MzZMNi41IDIxLjAzNkgzdi0zLjU3MkwxNi43MzIgMy43MzJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpY29uLWJ0blwiIChjbGljayk9XCJzaG93RGV0YWlsVmlldyhmb3JtT2JqZWN0KVwiIG1hdFRvb2x0aXA9XCJWaWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImgtNyB3LTUgdGV4dC1ncmF5LTUwMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY0NzQ4YlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNmMzLjc5IDAgNy4xNyAyLjEzIDguODIgNS41QzE5LjE3IDE0Ljg3IDE1Ljc5IDE3IDEyIDE3cy03LjE3LTIuMTMtOC44Mi01LjVDNC44MyA4LjEzIDguMjEgNiAxMiA2bTAtMkM3IDQgMi43MyA3LjExIDEgMTEuNSAyLjczIDE1Ljg5IDcgMTkgMTIgMTlzOS4yNy0zLjExIDExLTcuNUMyMS4yNyA3LjExIDE3IDQgMTIgNHptMCA1YzEuMzggMCAyLjUgMS4xMiAyLjUgMi41UzEzLjM4IDE0IDEyIDE0cy0yLjUtMS4xMi0yLjUtMi41UzEwLjYyIDkgMTIgOW0wLTJjLTIuNDggMC00LjUgMi4wMi00LjUgNC41UzkuNTIgMTYgMTIgMTZzNC41LTIuMDIgNC41LTQuNVMxNC40OCA3IDEyIDd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYXBwTWFuaWZlc3Q/LmVuYWJsZV9kYXRhX3ZhbGlkaXR5XCIgY2xhc3M9XCJweC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgW2NvbG9yXT1cInByaW1hcnlcIiBbY2hlY2tlZF09XCJmb3JtT2JqZWN0LmlzVmFsaWRcIiBjbGFzcz1cInAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImVuYWJsZVRvZ2dsZShmb3JtT2JqZWN0LCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IG5vIGRhdGEgZm91bmQgbXNnIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiYm9yZGVyLTAgYWJzb2x1dGUgbm8tZGF0YS1ib2R5XCIgKm5nSWY9XCJsaXN0Vmlld0RhdGEubGVuZ3RoID09PSAwICYmICFzaG93TG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImJvcmRlci0wIGhvdmVyOmJnLXRyYW5zcGFyZW50IHRleHQteGwgbm8tcmVjb3JkLWZvdW5kIGN1cnNvci1kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXBcIj5ObyBEYXRhIEZvdW5kPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwidG90YWxGb3JtT2JqZWN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNob3dMb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCBwYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
929
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2Zvcm0tb2JqZWN0L2Zvcm0tb2JqZWN0LWxpc3QvZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2Zvcm0tb2JqZWN0L2Zvcm0tb2JqZWN0LWxpc3QvZm9ybS1vYmplY3QtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJNUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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O3lPQUk1QixRQUFRO2tCQUFoQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLHdCQUF3QjtrQkFBaEMsS0FBSztZQUtJLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLGtCQUFrQjtrQkFBM0IsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLHNCQUFzQjtrQkFBL0IsTUFBTTtZQUNHLFdBQVc7a0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJGb3JtIH0gZnJvbSAnLi8uLi8uLi9mb3Jtcy9wYWdlL3dpZGdldHMvc3ViLWZvcm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi1saWItY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEF4RmlsdGVyIH0gZnJvbSAnLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2F4LWZpbHRlcic7XG5pbXBvcnQgeyBTY3JlZW5UeXBlIH0gZnJvbSAnLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2NvbmRpdGlvbi10eXBlJztcbmltcG9ydCB7IEF4Rm9ybSB9IGZyb20gJy4uLy4uL2Zvcm1zL2F4LWZvcm0nO1xuaW1wb3J0IHsgRGF0YUxpc3QgfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL2RhdGEtbGlzdC9kYXRhLWxpc3QnO1xuaW1wb3J0IHsgRGF0YUxpc3RDb2x1bW4gfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL2RhdGEtbGlzdC9kYXRhLWxpc3QtY29sdW1uJztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJy4uLy4uL2Zvcm1zL3BhZ2Uvd2lkZ2V0cy93aWRnZXQnO1xuaW1wb3J0IHsgRm9ybVR5cGUsIFNvcnRpbmdPcmRlciwgV2lkZ2V0U3ViVHlwZSwgV2lkZ2V0VHlwZSB9IGZyb20gJy4uLy4uL2Zvcm1zL3BhZ2UvY29tbW9uL3dpZGdldC1lbnVtcyc7XG5pbXBvcnQgeyBGb3JtT2JqZWN0Vmlld1NlcnZpY2UgfSBmcm9tICcuLi9mb3JtLW9iamVjdC12aWV3L2Zvcm0tb2JqZWN0LXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtT2JqZWN0TGlzdFNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tb2JqZWN0LWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0YVZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS12aWV3LWxpYi9kYXRhLXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBHaG9zdExvYWRlclR5cGUgfSBmcm9tICcuLi8uLi9naG9zdC1sb2FkZXIvZ2hvc3QtbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3VzZXIvdXNlci1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVZpZXdGaWx0ZXIgfSBmcm9tICcuLi8uLi9kYXRhLXZpZXctbGliL2RhdGEtdmlldy9kYXRhLXZpZXctZmlsdGVyJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLW9iamVjdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tb2JqZWN0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLW9iamVjdC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9ybU9iamVjdExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vPC0tLS0tLS0tIElucHV0cyAtLS0tLS0tLS0tLS0tLS0+XG4gIEBJbnB1dCgpIGxpc3RWaWV3OiBEYXRhTGlzdDtcbiAgQElucHV0KCkgc2NyZWVuVHlwZTogU2NyZWVuVHlwZTtcbiAgQElucHV0KCkgZm9ybTogQXhGb3JtO1xuICBASW5wdXQoKSBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZW5ibGVkQ2FjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmaWx0ZXJzOiBBcnJheTxBeEZpbHRlcj47XG4gIEBJbnB1dCgpIGFwcGx5RmlsdGVyRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgcmVzZXRGaWx0ZXJFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBjbGVhckZpbHRlckVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHJlZnJlc2hEYXRhRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgZXhwb3J0RGF0YUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFwcE1hbmlmZXN0OiBhbnk7XG4gIEBJbnB1dCgpIEdsb2JhbEdob3N0TG9hZGVyRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuLy8gICBASW5wdXQoKSBzaG93R2hvc3RMb2FkZXI6IGJvb2xlYW47XG5cblxuICAvLzwtLS0tLS0tLSBPdXRwdXRzIC0tLS0tLS0tLS0tLS0tLT5cbiAgQE91dHB1dCgpIGV4cG9ydERhdGFMaXN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNob3dEYXRhRGV0YWlsVmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWRkTmV3UmVjb3JkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVkaXRGb3JtT2JqZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUZvcm1PYmplY3RTdGF0dXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIENoaWxkTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy88LS0tLS0tLS0tLS0tLS0gQ29tcG9uZW50IGF0dHJpYnV0ZXMgLS0tLS0tLS0tLS0tLS0tLT5cbiAgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93R2hvc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGF4b25hdG9yWDFVcmw6IHN0cmluZztcbiAgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIHRvdGFsRm9ybU9iamVjdHMgPSAwO1xuICBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsMjUsNTAsMTAwLDIwMF07XG4gIG9yZGVyZWRBcnJheT1bXTtcbiAgYXJyYXlGb3JBcGk9W107XG4gIHRlbXBvcnlmaWx0ZXJzOiAoQXhGaWx0ZXIgfCBEYXRhVmlld0ZpbHRlcilbXSA9IFtdO1xuXG5cbiAgLy8gV2UgdXNlIHRoaXMgd2lkZ2V0IG1hcCBmb3Igd2lkZ2V0IHByb3BlcnRpZXMgdGhpcyBtYXAgZG9uJ3QgaGF2ZSB3aWRnZXQgdmFsdWUuXG4gIHdpZGdldE1hcDogTWFwPHN0cmluZywgV2lkZ2V0PiA9IG5ldyBNYXA8c3RyaW5nLCBXaWRnZXQ+KCk7XG4gIG9yZGVyTWFwOiBNYXA8c3RyaW5nLHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZyxzdHJpbmc+KCk7XG5cbiAgR2hvc3RMb2FkZXJUeXBlID0gR2hvc3RMb2FkZXJUeXBlO1xuXG4gIGxpc3RWaWV3RGF0YTogQXJyYXk8QXhGb3JtPiA9IFtdO1xuICBsaXN0Vmlld0RhdGFBcnJheTogYW55W10gPSBbXTsgLy8gWW91ciBkYXRhIGFycmF5XG4gIHNlbGVjdGVkUm93czogYm9vbGVhbltdID0gW107XG4gIHNlbGVjdGVkRm9ybU9iamVjdElkczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGU6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdEFsbFJvd3MoaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcyA9IHRoaXMubGlzdFZpZXdEYXRhLm1hcChmb3JtT2JqZWN0ID0+IGZvcm1PYmplY3QuaWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZSA9IHRoaXMubGlzdFZpZXdEYXRhLm1hcChmb3JtT2JqZWN0ID0+IGZvcm1PYmplY3QudGl0bGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmxpc3RWaWV3RGF0YS5tYXAoKCkgPT4gaXNTZWxlY3RlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5saXN0Vmlld0RhdGEubWFwKCgpID0+IGlzU2VsZWN0ZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUgPSBbXTtcbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtT2JqZWN0SWRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybU9iamVjdFRpdGxlcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0VGl0bGUpKTtcblxuICB9XG5cbiAgdG9nZ2xlUm93U2VsZWN0aW9uKGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RJZHMucHVzaCh0aGlzLmxpc3RWaWV3RGF0YVtpbmRleF0uaWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZS5wdXNoKHRoaXMubGlzdFZpZXdEYXRhW2luZGV4XS50aXRsZSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzLmluZGV4T2YodGhpcy5saXN0Vmlld0RhdGFbaW5kZXhdLmlkKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGl0bGUgPSB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlLmluZGV4T2YodGhpcy5saXN0Vmlld0RhdGFbaW5kZXhdLnRpdGxlKTtcbiAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcy5zcGxpY2Uoc2VsZWN0ZWRJbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZWN0ZWRUaXRsZSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZS5zcGxpY2Uoc2VsZWN0ZWRJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybU9iamVjdElkcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzKSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1PYmplY3RUaXRsZXMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlKSk7XG4gIH1cbiAgLy8gQElucHV0KCkgZm9ybU9iamVjdExpc3Q6IEZvcm1PYmplY3RMaXN0O1xuICAvLyBASW5wdXQoKSBkYXRhTW9kZWw6IERhdGFNb2RlbDtcbiAgLy8gQElucHV0KCkgYXhvbmF0b3JYMVVybDogc3RyaW5nO1xuICAvLyBASW5wdXQoKSBhcHBWZXJzaW9uSWQ6IG51bWJlcjtcbiAgLy8gQElucHV0KCkgZm9ybU9iamVjdHM6IEFycmF5PEF4Rm9ybT47XG5cblxuICAvLyBASW5wdXQoKSBhcHBWZXJzaW9uSWQ6IG51bWJlcjtcbiAgLy8gQElucHV0KCkgYXBwSWQ6IG51bWJlcjtcblxuXG5cblxuICAvLyBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBAT3V0cHV0KCkgcmVzZXRGaWx0ZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBAT3V0cHV0KCkgYXBwbHlGaWx0ZXJFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIEBPdXRwdXQoKSBwYWdlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICAvLyBXaWRnZXQgbWFwIGxpc3RcbiAgLy8gZm9ybU9iamVjdHNNYXA6IEFycmF5PE1hcDxzdHJpbmcsIGFueT4+ID0gW107XG4vLyAgIHNob3dTZWFyY2g6IHN0cmluZyA9ICcnO1xuICAvLyBmb3JtSWQ6IHN0cmluZztcbiAgc2hvd1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICB3aWRnZXRUeXBlOiBhbnkgPSBXaWRnZXRUeXBlO1xuICBwYWdlc2l6ZTogbnVtYmVyO1xuICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBpc0FjY291bnRTdGF0dXNBY3RpdmU6IGJvb2xlYW47XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mb3JtT2JqZWN0Vmlld1NlcnZpY2U6IEZvcm1PYmplY3RWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIF9mb3JtT2JqZWN0TGlzdFNlcnZpY2U6IEZvcm1PYmplY3RMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIF9jb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZTogQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfZGF0YVZpZXdTZXJ2aWNlOiBEYXRhVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdXNlckRhdGFTZXJ2aWNlOiBVc2VyRGF0YVNlcnZpY2UsXG4gICAgKSB7XG4gIH1cblxuICBnZXQgZm9ybVR5cGVzKCk6IHR5cGVvZiBGb3JtVHlwZSB7XG4gICAgcmV0dXJuIEZvcm1UeXBlO1xuICB9XG4gIC8vIGdldCBmb3Igc29ydGluZyBvcmRlclxuICBnZXQgc29ydE9yZGVyKCk6IHR5cGVvZiBTb3J0aW5nT3JkZXIge1xuICAgIHJldHVybiBTb3J0aW5nT3JkZXI7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VsZWN0ZWRGb3JtJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtKSk7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5fY29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UuYXhvbmF0b3JYMVVybDtcbiAgICB0aGlzLmF4b25hdG9yWDFVcmwgPSB0aGlzLl9jb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZS5heG9uYXRvclgxVXJsO1xuICAgIHRoaXMuc3Vic2NyaWJlcnMoKTtcbiAgICAvLyB0aGlzLl91c2VyRGF0YVNlcnZpY2UuaXNBY2NvdW50U3RhdHVzQWN0aXZlJC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgLy8gICB0aGlzLmlzQWNjb3VudFN0YXR1c0FjdGl2ZSA9IHJlc3BvbnNlO1xuICAgIC8vIH0pO1xuICAgIHRoaXMuaXNBY2NvdW50U3RhdHVzQWN0aXZlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXNBY2NvdW50U3RhdHVzQWN0aXZlJykgfHwgJ2ZhbHNlJyk7XG4gICAgLyoqIGdldCB3aWR0aCBvZiBmaWx0ZXIgYnV0dG9ucyB3cnJhcGVyICovXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhdmlld2hlYWRlcndyYXBwZXInKTtcbiAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50Py5jbGllbnRIZWlnaHQrJ3B4JztcbiAgICAvKipTZXQgd2lkdGggb2YgY3NzIHZhcmlhYmxlICovXG4gICAgaWYoaGVpZ2h0KXtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJoZWlnaHQnLCBoZWlnaHQpO1xuICAgIH1cbiAgICBcbiAgfVxuXG5cbiAgLyoqXG4gICAqIE9uIENoYW5nZSBsaWZlIGN5Y2xlIGhvb2sgR2V0IGNhbGwgb24gaW5wdXQgY2hhbmdlXG4gICAqXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmxpc3RWaWV3ICYmIChjaGFuZ2VzLmxpc3RWaWV3LnByZXZpb3VzVmFsdWUgIT0gY2hhbmdlcy5saXN0Vmlldy5jdXJyZW50VmFsdWUpIHx8IGNoYW5nZXMuc2VhcmNoVGV4dCAmJiAoY2hhbmdlcy5zZWFyY2hUZXh0LmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLnNlYXJjaFRleHQucHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgaWYoIWNoYW5nZXMuR2xvYmFsR2hvc3RMb2FkZXJFbmFibGVkIHx8ICF0aGlzLkdsb2JhbEdob3N0TG9hZGVyRW5hYmxlZCl7XG4gICAgICAgICAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0Vmlld0RhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybU9iamVjdExpc3QoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZm9ybSAmJiBjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuZm9ybS5wcmV2aW91c1ZhbHVlICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUuZm9ybUlkICE9IGNoYW5nZXMuZm9ybS5wcmV2aW91c1ZhbHVlLmZvcm1JZCApIHtcbiAgICAgIHRoaXMuc2hvd1NlYXJjaCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLm9yZGVyZWRBcnJheSA9IFtdO1xuICAgICAgdGhpcy5hcnJheUZvckFwaSA9IFtdO1xuICAgICAgdGhpcy5vcmRlck1hcC5jbGVhcigpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qKiBnZXQgd2lkdGggb2YgZmlsdGVyIGJ1dHRvbnMgd3JyYXBlciAqL1xuICAgICAgY29uc3QgaGVpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGF2aWV3aGVhZGVyd3JhcHBlcicpPy5jbGllbnRIZWlnaHQrJ3B4JztcbiAgICAgIC8qKlNldCB3aWR0aCBvZiBjc3MgdmFyaWFibGUgKi9cbiAgICAgIGlmKGhlaWdodCl7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgfVxuICAgICAgXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlsaXplIGxpc3Qgdmlld1xuICAgKi9cbiAgaW5pdGlhbGl6ZUZvcm1PYmplY3RMaXN0KCk6IHZvaWQge1xuICAgIC8vIFNldCBEZWZhdWx0IFBhZ2UgSW5kZXggYW5kIFBhZ2UgU2l6ZVxuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICB0aGlzLnBhZ2VTaXplID0gMTA7XG4gICAgLy9jcmVhdGVXaWRnZXRNYXBcbiAgICB0aGlzLmNyZWF0ZVdpZGdldE1hcCh0aGlzLmZvcm0ud2lkZ2V0cyk7XG5cbiAgICAvL2dldCBsaXN0IHZpZXcgc3RydWN0dXJlXG4gICAgdGhpcy5nZXRMaXN0Vmlld0RldGFpbHMoKTtcblxuICAgIC8vIHRoaXMuZm9ybU9iamVjdHNNYXAgPSBbXTtcbiAgICAvLyB0aGlzLmZvcm1PYmplY3RMaXN0LnBhZ2VJbmRleCA9IDA7XG4gICAgLy8gaWYgKHRoaXMuZm9ybU9iamVjdExpc3QuY3VycmVudFBhZ2UgPT09IDEgJiYgdGhpcy5wYWdpbmF0b3IpIHtcbiAgICAvLyAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XG4gICAgLy8gfVxuXG4gICAgLy8gQ3JlYXRlZCB3aWRnZXQgbWFwIGZvciBlYWNoIGZvcm1PYmplY3RcbiAgICAvLyB0aGlzLmZvcm1PYmplY3RzLmZvckVhY2goKGZvcm1PYmplY3Q6IEF4Rm9ybSkgPT4ge1xuICAgIC8vICAgY29uc3QgZm9ybU9iamVjdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgLy8gICBmb3JtT2JqZWN0LndpZGdldHMuZm9yRWFjaCgod2lkZ2V0OiBhbnkpID0+IHtcbiAgICAvLyAgICAgZm9ybU9iamVjdE1hcC5zZXQod2lkZ2V0LmlkZW50aWZpZXIsIHdpZGdldCk7XG4gICAgLy8gICB9KTtcbiAgICAvLyAgIHRoaXMuZm9ybU9iamVjdHNNYXAucHVzaChmb3JtT2JqZWN0TWFwKTtcbiAgICAvLyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgUGFnZSBzaXplIG9wdGlvbnMgYnkgY29sdW1ucyBsZW5ndGhcbiAgICovXG4gIHNldFBhZ2VTaXplT3B0aW9ucygpOiB2b2lke1xuICAgIGlmKHRoaXMubGlzdFZpZXcuY29sdW1ucy5sZW5ndGggPiA1MCAmJiB0aGlzLmxpc3RWaWV3LmNvbHVtbnMubGVuZ3RoIDwgMTAwKXtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhZ2VTaXplT3B0aW9ucy5zbGljZSgwLDQpO1xuICAgIH1lbHNlIGlmKHRoaXMubGlzdFZpZXcuY29sdW1ucy5sZW5ndGggPiAxMDApe1xuICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zLnNsaWNlKDAsMyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbCBzdWJzY3JpYmVyIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBoZXJlLlxuICAgKi9cbiAgc3Vic2NyaWJlcnMoKTogdm9pZHtcbiAgICAvKipcbiAgICAgKiBUaGlzIHdpbGwgZ2V0IGNhbGxlZCBvbiBhcHBseSBmaWx0ZXIgYnV0dG9uIGNsaWNrZWQuXG4gICAgICovXG4gICAgdGhpcy5hcHBseUZpbHRlckVtaXR0ZXJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcbiAgICAuc3Vic2NyaWJlKCgpPT57XG4gICAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XG4gICAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIHdpbGwgZ2V0IGNhbGxlZCBvbiByZXNldCBmaWx0ZXIgYnV0dG9uIGNsaWNrZWQuXG4gICAgICovXG4gICAgdGhpcy5yZXNldEZpbHRlckVtaXR0ZXJcbiAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcbiAgICAuc3Vic2NyaWJlKCgpPT57XG4gICAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XG4gICAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsZWFyRmlsdGVyRW1pdHRlclxuICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgIC5zdWJzY3JpYmUoKCk9PntcbiAgICAgIHRoaXMuc2hvd0dob3N0TG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICAgIHRoaXMucGFnZVNpemUgPSAxMDtcbiAgICAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVmcmVzaERhdGFFbWl0dGVyXG4gICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpXG4gICAgLnN1YnNjcmliZSgoKT0+e1xuICAgICAgdGhpcy5zaG93R2hvc3RMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xuICAgICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyB3aWxsIGdldCBjYWxsZWQgd2hlbiBzZW5kIGV4Y2VsIHJlcG9ydCBidXR0b24gY2xpY2tlZCBvbiBkYXRhIGxpc3RcbiAgICAgKi9cbiAgICB0aGlzLmV4cG9ydERhdGFFbWl0dGVyXG4gICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpXG4gICAgLnN1YnNjcmliZSgodXNlckVtYWlsOiBzdHJpbmcpPT57XG4gICAgICBjb25zdCBleHBvcnRGaWVsZHM6IEFycmF5PGFueT49W107XG4gICAgICB0aGlzLmxpc3RWaWV3LmNvbHVtbnMuZm9yRWFjaCgod2lkZ2V0KSA9PiB7XG4gICAgICAgICAgZXhwb3J0RmllbGRzLnB1c2god2lkZ2V0LmlkZW50aWZpZXIpO1xuICAgICAgfSk7XG4gICAgICAvLyBUaGlzIHdpbGwgY2FsbCBleGNlbCBleHBvcnQgZnVuY3Rpb25cbiAgICAgIHRoaXMuX2Zvcm1PYmplY3RMaXN0U2VydmljZS5leHBvcnREYXRhKHRoaXMuZm9ybS5mb3JtSWQsdGhpcy5wYWdlSW5kZXgsdGhpcy5wYWdlU2l6ZSx0aGlzLmZpbHRlcnMsdGhpcy5zZWFyY2hUZXh0LGV4cG9ydEZpZWxkcyx1c2VyRW1haWwpLnRoZW4oKHJlc3BvbnNlKT0+e1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlZCB3aWRnZXQgTWFwIHRoYXQgd2lsbCBiZSB1c2UgdG8gZ2V0IHdpZGdldCBieSBpZGVudGlmaWVyLlxuICAgKi9cbiAgY3JlYXRlV2lkZ2V0TWFwKHdpZGdldHM6IEFycmF5PFdpZGdldD4pOiB2b2lkIHtcbiAgICB3aWRnZXRzLmZvckVhY2goKHdpZGdldCkgPT4ge1xuICAgICAgICB0aGlzLndpZGdldE1hcC5zZXQod2lkZ2V0LmlkZW50aWZpZXIsIHdpZGdldCk7XG4gICAgICAgIGlmKHdpZGdldC50eXBlID09PSBXaWRnZXRUeXBlLnN1YkZvcm0pe1xuICAgICAgICAgICAgY29uc3Qgc3ViRm9ybVdpZGdldCA9IHdpZGdldCBhcyBTdWJGb3JtO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVXaWRnZXRNYXAoc3ViRm9ybVdpZGdldC5tYXJrdXApO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IExpc3QgVmlldyBzdHJ1Y3R1cmVcbiAgICovXG4gIGdldExpc3RWaWV3RGV0YWlscygpOiB2b2lke1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgLy8gVGhpcyBjaGVjayBhZGRlZCBmb3IgZGF0YSBsaXN0IGJ1aWxkZXIgSWYgbGlzdCBpcyBuZXdseSBjcmVhdGVkIC5cbiAgICBpZiAodGhpcy5saXN0Vmlldy5pZCAhPT0gMCkge1xuICAgICAgdGhpcy5fZm9ybU9iamVjdExpc3RTZXJ2aWNlLmdldERhdGFMaXN0KHRoaXMubGlzdFZpZXcuaWQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RWaWV3RGV0YWlscyA9IG5ldyBEYXRhTGlzdChyZXNwb25zZSk7XG4gICAgICAgIHRoaXMubGlzdFZpZXcuY29sdW1ucyA9IHRoaXMubWFwV2lkZWd0V2l0aENvbHVtbihsaXN0Vmlld0RldGFpbHMuY29sdW1ucyk7XG4gICAgICAgIHRoaXMubGlzdFZpZXcuZGF0YURldGFpbCA9IGxpc3RWaWV3RGV0YWlscy5kYXRhRGV0YWlsO1xuICAgICAgICB0aGlzLmdldEZvcm1PYmplY3RzKCk7XG4gICAgICAgIC8vU2V0IFBhZ2Ugc2l6ZSBvcHRpb25zXG4gICAgICAgIHRoaXMuc2V0UGFnZVNpemVPcHRpb25zKCk7XG4gICAgICB9KTtcbiAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAgICAgICAvL1NldCBQYWdlIHNpemUgb3B0aW9uc1xuICAgICAgICB0aGlzLnNldFBhZ2VTaXplT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgd2lkZ2V0IHdpdGggY29sdW1uXG4gICAqXG4gICAqIEBwYXJhbSBjb2x1bW5zXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtYXBXaWRlZ3RXaXRoQ29sdW1uKGNvbHVtbnM6IEFycmF5PERhdGFMaXN0Q29sdW1uPik6IEFycmF5PERhdGFMaXN0Q29sdW1uPiB7XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGNvbHVtbi53aWRnZXQgPSB0aGlzLndpZGdldE1hcC5nZXQoY29sdW1uLmlkZW50aWZpZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgZGV0YWlsIFZpZXdcbiAgICpcbiAgICogQHBhcmFtIGZvcm1PYmplY3RcbiAgICovXG4gIHNob3dEZXRhaWxWaWV3KGZvcm1PYmplY3Q6IEF4Rm9ybSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFPYmplY3QgPSB7IGZvcm1PYmplY3Q6IGZvcm1PYmplY3QsIGRhdGFEZXRhaWxJZDogdGhpcy5saXN0Vmlldy5kYXRhRGV0YWlsLmlkIH07XG4gICAgdGhpcy5fZm9ybU9iamVjdFZpZXdTZXJ2aWNlLnNldEZvcm1PYmplY3RXaXRoRGF0YURldGFpbElkKGZvcm1PYmplY3QsIHRoaXMubGlzdFZpZXcuZGF0YURldGFpbC5pZCk7XG4gICAgdGhpcy5zaG93RGF0YURldGFpbFZpZXcuZW1pdChkYXRhT2JqZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRm9ybSBPYmplY3RcbiAgICovXG4gIGdldEZvcm1PYmplY3RzKCk6IHZvaWR7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUlkJywgZm9ybUlkLnRvU3RyaW5nKCkpO1xuICAgIC8vIGNvbnNvbGUubG9nKGZvcm1JZCk7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLl9mb3JtT2JqZWN0TGlzdFNlcnZpY2UuZ2V0Rm9ybU9iamVjdExpc3QodGhpcy5mb3JtLmZvcm1JZCx0aGlzLnBhZ2VJbmRleCx0aGlzLnBhZ2VTaXplLHRoaXMuZmlsdGVycyx0aGlzLnNlYXJjaFRleHQsdGhpcy5hcnJheUZvckFwaSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICB0aGlzLnRvdGFsRm9ybU9iamVjdHMgPSByZXNwb25zZS50b3RhbEZvcm1PYmplY3RzO1xuICAgICAgdGhpcy5idWlsZExpc3RWaWV3RGF0YShyZXNwb25zZS5mb3JtT2JqZWN0cyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgTGlzdCB2aWV3IGRhdGEgYWNjb3JkaW5nbHkgdG8gY29sdW1uIG9yZGVyXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtT2JqZWN0c1xuICAgKi9cbiAgYnVpbGRMaXN0Vmlld0RhdGEoZm9ybU9iamVjdHM6IEFycmF5PEF4Rm9ybT4pOiB2b2lke1xuICAgIHRoaXMubGlzdFZpZXdEYXRhID0gW107XG4gICAgZm9ybU9iamVjdHMuZm9yRWFjaCgoZm9ybU9iamVjdCkgPT57XG4gICAgICBjb25zdCBfZm9ybU9iamVjdCA9IG5ldyBBeEZvcm0oZm9ybU9iamVjdCk7XG4gICAgICBfZm9ybU9iamVjdC53aWRnZXRzID0gW107XG4gICAgICB0aGlzLmxpc3RWaWV3LmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PntcbiAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLmdldERhdGFXaWRnZXQoY29sdW1uLmlkZW50aWZpZXIsZm9ybU9iamVjdCk7XG4gICAgICAgX2Zvcm1PYmplY3Qud2lkZ2V0cy5wdXNoKHdpZGdldCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdFZpZXdEYXRhLnB1c2goX2Zvcm1PYmplY3QpO1xuICAgIH0pO1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0dob3N0TG9hZGVyID0gZmFsc2U7XG5cblxuXG4gICAgaWYodGhpcy5HbG9iYWxHaG9zdExvYWRlckVuYWJsZWQpe1xuICAgICAgICB0aGlzLkNoaWxkTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvKiogZ2V0IHdpZHRoIG9mIGZpbHRlciBidXR0b25zIHdycmFwZXIgKi9cbiAgICAgICAgbGV0IGhlaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhdmlld2hlYWRlcndyYXBwZXInKT8uY2xpZW50SGVpZ2h0K1wicHhcIjtcbiAgICAgICAgLyoqU2V0IHdpZHRoIG9mIGNzcyB2YXJpYWJsZSAqL1xuICAgICAgICBpZihoZWlnaHQpe1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgICB9ICAgXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyB3aWxsIGZpbmQgYW5kIHJldHVybiB3aWRnZXQgYnkgaWRlbnRpZmllci5pZiB3aWRnZXQgbm90IGZvdW5kIHJldHVybiBudWxsXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSBmb3JtT2JqZWN0XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXREYXRhV2lkZ2V0KGlkZW50aWZpZXI6IHN0cmluZyxmb3JtT2JqZWN0OiBBeEZvcm0pOiBXaWRnZXR7XG4gICAgcmV0dXJuIGZvcm1PYmplY3Qud2lkZ2V0cy5maW5kKHdpZGdldCA9PiB3aWRnZXQuaWRlbnRpZmllciA9PSBpZGVudGlmaWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVkIFBhZ2luYXRpb24gZXZlbnRzXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgaGFuZGxlUGFnZUV2ZW50KGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dHaG9zdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgICAvLyBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIC8vIGNvbnN0IGZvX2luZm8gPSB7ICdhZmlkJzogdGhpcy5mb3JtLmZvcm1JZCwgJ2N1cnJlbnRQYWdlJzogZXZlbnQucGFnZUluZGV4ICsgMSwgJ3BhZ2VzaXplJzogZXZlbnQucGFnZVNpemUsICdrZXl3b3JkJzogJycsICdzZWxlY3RlZF9hZm9pZCc6IG51bGwsICdmcm9tX2RhdGUnOiAnJywgJ3RvX2RhdGUnOiAnJyB9O1xuICAgIC8vIGZvcm1EYXRhLmFwcGVuZCgnZm9faW5mbycsIEpTT04uc3RyaW5naWZ5KGZvX2luZm8pKTtcbiAgICAvLyBmb3JtRGF0YS5hcHBlbmQoJ2FwcFZlcnNpb25JZCcsIHRoaXMuYXBwVmVyc2lvbklkLnRvU3RyaW5nKCkpO1xuICAgIC8vIHRoaXMuX2Zvcm1PYmplY3RWaWV3U2VydmljZS5zZXRGb3JtRGF0YUZvclBhZ2luYXRvcihmb3JtRGF0YSk7XG4gICAgLy8gdGhpcy5mb3JtT2JqZWN0TGlzdC5jdXJyZW50UGFnZSA9IGV2ZW50LnBhZ2VJbmRleCArIDE7XG4gICAgLy8gdGhpcy5mb3JtT2JqZWN0TGlzdC5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICAgIC8vIHRoaXMucGFnZUNoYW5nZUV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgRGF0YSBMaXN0XG4gICAqL1xuICBleHBvcnREYXRhTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cG9ydERhdGFMaXN0RXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgLy8gc2hvd1NlYXJjaEJveCgpOiB2b2lkIHtcbiAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGQtc2VhcmNoJykuZm9jdXMoKTtcbiAgLy8gICB0aGlzLnNob3dTZWFyY2ggPSAhdGhpcy5zaG93U2VhcmNoO1xuICAvLyB9XG5cbiAgLy8gY2xlYXIoKTogdm9pZCB7XG4gIC8vICAgaWYgKF8uaXNFbXB0eSh0aGlzLnNlYXJjaFRleHQpKSB7XG4gIC8vICAgICB0aGlzLnNob3dTZWFyY2ggPSAhdGhpcy5zaG93U2VhcmNoO1xuICAvLyAgIH1cbiAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgLy8gICB0aGlzLmdldERhdGFMaXN0KCk7XG4gIC8vIH1cblxuICAvLyBnZXREYXRhTGlzdCgpOiB2b2lkIHtcbiAgLy8gICB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG4gIC8vIH1cblxuICAvLyBhZGROZXdSZWNvcmQoKTogdm9pZCB7XG4gIC8vICAgdGhpcy5hZGROZXdSZWNvcmRFdmVudC5lbWl0KCk7XG4gIC8vIH1cblxuICAvKipcbiAgICogRW5hYmxlZCBhbmRcbiAgICpcbiAgICogQHBhcmFtIGZvcm1PYmplY3RcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBlbmFibGVUb2dnbGUoZm9ybU9iamVjdDogQXhGb3JtLCBldmVudDogTWF0U2xpZGVUb2dnbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICBmb3JtT2JqZWN0LmlzVmFsaWQgPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMudXBkYXRlRm9ybU9iamVjdFN0YXR1cy5lbWl0KGZvcm1PYmplY3QpO1xuICB9XG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2lkZ2V0IGZyb20gZm9ybU9iamVjdHNNYXAgYnkgd2lkZ2V0IGlkZW50aWZpZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gY29sdW1uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICAvLyBnZXRXaWRnZXQoaW5kZXg6IG51bWJlciwgY29sdW1uOiBhbnkpOiBhbnkge1xuICAvLyAgIGNvbnN0IGZvcm1PYmplY3RNYXAgPSB0aGlzLmZvcm1PYmplY3RzTWFwW2luZGV4XTtcbiAgLy8gICBjb25zdCB3aWRnZXQgPSBmb3JtT2JqZWN0TWFwPy5nZXQoY29sdW1uLndpZGdldC5pZGVudGlmaWVyKTtcbiAgLy8gICBjb25zdCB3aWRnZXRWYWx1ZSA9IHdpZGdldD8udmFsdWU7XG4gIC8vICAgY29sdW1uLndpZGdldC52YWx1ZXMgPSB3aWRnZXQ/LnZhbHVlcztcbiAgLy8gICBpZiAod2lkZ2V0ICYmIHdpZGdldFZhbHVlKSB7XG4gIC8vICAgICBjb2x1bW4ud2lkZ2V0LnZhbHVlID0gd2lkZ2V0VmFsdWU7XG4gIC8vICAgfVxuICAvLyAgIGVsc2Uge1xuICAvLyAgICAgY29sdW1uLndpZGdldC52YWx1ZSA9IG51bGw7XG5cbiAgLy8gICB9O1xuICAvLyAgIHJldHVybiBjb2x1bW4ud2lkZ2V0O1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aWRnZXQgZnJvbSBmb3JtT2JqZWN0c01hcCBieSB3aWRnZXQgaWRlbnRpZmllci5cbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEBwYXJhbSBjb2x1bW5cbiAgICogQHJldHVybnNcbiAgICovXG4gIC8vIGdldFdpZGdldFZhbHVlKGluZGV4OiBudW1iZXIsIGNvbHVtbjogYW55KTogYm9vbGVhbiB7XG4gIC8vICAgY29uc3QgY29sdW1uV2lkZ2V0ID0gdGhpcy5nZXRXaWRnZXQoaW5kZXgsIGNvbHVtbik7XG4gIC8vICAgcmV0dXJuIGNvbHVtbldpZGdldC52YWx1ZSAhPSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIGNoZWNrcyB3aGV0aGVyIHRoZSB3aWRnZXQgZXhpc3RzXG4gICAqIGFuZCB0aGFuIGNoZWNrcyB3aGV0aGVyIHZhbHVlIGV4aXN0cyBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gY29sdW1uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICAvLyBjaGVja1dpZGdldEFuZFdpZGdldFZhbHVlKGluZGV4OiBudW1iZXIsIGNvbHVtbjogYW55KTpib29sZWFue1xuICAvLyAgIGlmKHRoaXMuZ2V0V2lkZ2V0KGluZGV4LGNvbHVtbikgJiYgdGhpcy5nZXRXaWRnZXRWYWx1ZShpbmRleCxjb2x1bW4pIHx8IHRoaXMuZ2V0V2lkZ2V0VmFsdWUoaW5kZXgsY29sdW1uKT09ZmFsc2Upe1xuICAvLyAgICAgY29uc3QgY29sdW1uV2lkZ2V0ID0gdGhpcy5nZXRXaWRnZXQoaW5kZXgsIGNvbHVtbik7XG4gIC8vICAgICBpZihjb2x1bW5XaWRnZXQudHlwZT09XCJ5ZXNfbm8td2lkZ2V0XCIgfHwgKGNvbHVtbldpZGdldC52YWx1ZSE9bnVsbCAmJiBjb2x1bW5XaWRnZXQudmFsdWUgIT0gXCJcIiApKXtcbiAgLy8gICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICB9XG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLyoqXG4gICAqIEVkaXQgZm9ybSBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIEF4Rm9ybVxuICAgKiBAcGFyYW0gTW91c2VFdmVudFxuICAgKi9cbiAgZWRpdERhdGEoZm9ybU9iamVjdDogQXhGb3JtLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZWRpdEZvcm1PYmplY3RFdmVudC5lbWl0KGZvcm1PYmplY3QpO1xuXG4gIH1cblxuICAvKipcbiAgICogIHVuc3Vic2NyaWJlIGFsbCBzdWJzY3RpYmVyIG9uIGRlc3Ryb3kgbGlmZSBjeWNsZSBob29rXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gIH1cblxuXG4gIC8vIGZpbHRlckNoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgLy8gICB0aGlzLmZpbHRlckNoYW5nZUVtaXQuZW1pdCgpO1xuICAvLyB9XG5cbiAgLypcbiAgRW1pdHMgdGhlIHJlc2V0RmlsdGVyIGV2ZW50IGZvciByZXNldHRpbmcgdGhlIGZpbHRlciBvbiBSZXNldCBidXR0b25cbiAgKi9cbiAgLy8gcmVzZXRGaWx0ZXIoZmlsdGVyOiBEYXRhTGlzdEZpbHRlckR0byk6IHZvaWQge1xuICAvLyAgIC8vIHRoaXMucmVzZXRGaWx0ZXJFdmVudC5lbWl0KCk7XG4gIC8vICAgdGhpcy5nZXRGb3JtT2JqZWN0cygpO1xuICAvLyB9XG5cbiAgLypcbiAgRW1pdHMgdGhlIGV2ZW50IGZvciBBcHBseWluZyBmaWx0ZXJzIG9uIEFwcGx5IGJ1dHRvblxuICAqL1xuICAvLyBhcHBseUZpbHRlckV2ZW50KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuYXBwbHlGaWx0ZXJFbWl0LmVtaXQoKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY2FsbCB3aGVuIGNsaWNrZWQgb24gY29sdW1uIGhlYWRlclxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHBhcmFtIHdpZGdldFxuICAgKi9cbiAgc29ydChldmVudDogS2V5Ym9hcmRFdmVudCwgd2lkZ2V0OiBXaWRnZXQpOiB2b2lkIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gd2lkZ2V0LmlkZW50aWZpZXI7XG4gICAgdGhpcy51cGRhdGVTb3J0aW5nT3JkZXIoaWRlbnRpZmllcik7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xuICAgICAgdGhpcy5tdWx0aXBsZVNvcnRpbmcoaWRlbnRpZmllcik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zaW5nbGVDb2x1bW5Tb3J0aW5nKGlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcmRlck1hcC5oYXMoaWRlbnRpZmllcikpIHtcbiAgICAgIHRoaXMuYXJyYXlGb3JBcGkucHVzaCh0aGlzLmdldEZvcm1hdHRlZFN0cmluZyhpZGVudGlmaWVyLCB3aWRnZXQuc3ViVHlwZSkpO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0Rm9ybU9iamVjdHMoKTtcbiAgfVxuICBnZXRGb3JtYXR0ZWRTdHJpbmcoaWRlbnRpZmllcjogc3RyaW5nLCBzdWJUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdWJUeXBlID09PSBXaWRnZXRTdWJUeXBlLnJlZmVyZW5jZUxpc3QpIHtcbiAgICAgIHJldHVybiAnZmllbGQoJyArIHRoaXMuZm9ybS5mb3JtSWQgKyAnXycgKyBpZGVudGlmaWVyICsgJ19uYW1lKSAnICsgdGhpcy5vcmRlck1hcC5nZXQoaWRlbnRpZmllcik7XG5cbiAgICB9XG4gICAgcmV0dXJuICdmaWVsZCgnICsgdGhpcy5mb3JtLmZvcm1JZCArICdfJyArIGlkZW50aWZpZXIgKyAnKSAnICsgdGhpcy5vcmRlck1hcC5nZXQoaWRlbnRpZmllcik7XG5cbiAgfVxuICAvKipcbiAgICogdG8gQWRkIG11bHRpcGxlIGNvbHVtbiBpZGVudGlmaWVycyBpbiBzb3J0aW5nIGFycmF5XG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyXG4gICAqL1xuICBtdWx0aXBsZVNvcnRpbmcoaWRlbnRpZmllcjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3JkZXJlZEFycmF5LmluY2x1ZGVzKGlkZW50aWZpZXIpKSB7XG4gICAgICB0aGlzLm9yZGVyZWRBcnJheS5zcGxpY2UodGhpcy5vcmRlcmVkQXJyYXkuaW5kZXhPZihpZGVudGlmaWVyKSwgMSk7XG4gICAgICB0aGlzLmFycmF5Rm9yQXBpLnNwbGljZSh0aGlzLm9yZGVyZWRBcnJheS5pbmRleE9mKGlkZW50aWZpZXIpLCAxKTtcbiAgICB9XG4gICAgdGhpcy5vcmRlcmVkQXJyYXkucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byBzb3J0IHNpbmdsZSBjb2x1bW5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aWZpZXJcbiAgICovXG4gIHNpbmdsZUNvbHVtblNvcnRpbmcoaWRlbnRpZmllcjogc3RyaW5nKTogdm9pZCB7XG4gICAgWy4uLnRoaXMub3JkZXJNYXAua2V5cygpXS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChrZXkgIT09IGlkZW50aWZpZXIpIHtcbiAgICAgICAgdGhpcy5vcmRlck1hcC5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9yZGVyZWRBcnJheSA9IFtdO1xuICAgIHRoaXMuYXJyYXlGb3JBcGkgPSBbXTtcbiAgICB0aGlzLm9yZGVyZWRBcnJheS5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHVwZGF0ZSBzb3J0IG9yZGVyIGFjY29yZGluZyBsYXN0IHNvcnRpZyBvcmRlclxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKi9cbiAgdXBkYXRlU29ydGluZ09yZGVyKGlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMub3JkZXJNYXAuZ2V0KGlkZW50aWZpZXIpID09PSBTb3J0aW5nT3JkZXIuYXNjZW5kaW5nKSB7XG4gICAgICB0aGlzLm9yZGVyTWFwLnNldChpZGVudGlmaWVyLCBTb3J0aW5nT3JkZXIuZGVzY2VuZGluZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMub3JkZXJNYXAuZ2V0KGlkZW50aWZpZXIpID09PSBTb3J0aW5nT3JkZXIuZGVzY2VuZGluZykge1xuICAgICAgdGhpcy5vcmRlcmVkQXJyYXkuc3BsaWNlKHRoaXMub3JkZXJlZEFycmF5LmluZGV4T2YoaWRlbnRpZmllciksIDEpO1xuICAgICAgdGhpcy5vcmRlck1hcC5kZWxldGUoaWRlbnRpZmllcik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5vcmRlck1hcC5zZXQoaWRlbnRpZmllciwgU29ydGluZ09yZGVyLmFzY2VuZGluZyk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVUb0JpbGxpbmcoKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5fY29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UuYnVpbGRlclVybCArICdwYXltZW50aW5mby9wcmljaW5nJywgJ19ibGFuaycpO1xuXG4gICAgdGhpcy5fdXNlckRhdGFTZXJ2aWNlLnVzZXJEZXRhaWxzJC5zdWJzY3JpYmUodXNlckRldGFpbHMgPT4ge1xuICAgICAgLy8gVXNlIHVzZXJEZXRhaWxzIGhlcmVcbiAgICAgIGNvbnNvbGUubG9nKHVzZXJEZXRhaWxzKTtcbiAgICAgIGNvbnN0IHVzZXIgPSB7XG4gICAgICAgIHVuYW1lOiB1c2VyRGV0YWlscy51bmFtZSwgLy8gVXNlcidzIGZ1bGwgbmFtZVxuICAgICAgICByZWNlaXZlcl9uYW1lOiBcIkFhcm9oaVwiLCAvLyBSZWNlaXZlcidzIGZ1bGwgbmFtZVxuICAgICAgICAvLyByZWNlaXZlcl9lbWFpbDogXCJhYXJvaGlAYXhvbmF0b3IuY29tXCIsIC8vIFJlY2VpdmVyJ3MgZW1haWxcbiAgICAgICAgLy8gcmVjZWl2ZXJfZW1haWw6IGVudmlyb25tZW50LmludGVybmFsQWxlcnRSZWNpcGllbnRJZHMsIC8vIFJlY2VpdmVyJ3MgZW1haWxcbiAgICAgICAgc2NyZWVuOiBcIkNvbnRhaW5lcjogRGF0YS1WaWV3czogRGF0YS1MaXN0LVZpZXdcIixcbiAgICAgICAgYXBwOiB1c2VyRGV0YWlscy5hY2NvdW50c1t1c2VyRGV0YWlscy5sYXN0dXNlZF9hY2NvdW50XS5uYW1lLCAvLyBBcHAgbmFtZVxuICAgICAgICB2ZXJzaW9uOiBcInZcIiArIHVzZXJEZXRhaWxzLnVvYnMucHJvcGVydGllcy5hcHBfdmVyc2lvbiwgLy8gQXBwIHZlcnNpb25cbiAgICAgICAgZW52OiB0aGlzLl9jb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZS5heG9uYXRvclgxVXJsLFxuICAgICAgICBvcmdfaWQ6IHVzZXJEZXRhaWxzLmxhc3R1c2VkX2FjY291bnQsIC8vIE9yZ2FuaXphdGlvbiBJRFxuICAgICAgICBvcmdfbmFtZTogdXNlckRldGFpbHMuYWNjb3VudHNbdXNlckRldGFpbHMubGFzdHVzZWRfYWNjb3VudF0ubmFtZSwgLy8gT3JnYW5pemF0aW9uIG5hbWVcbiAgICAgICAgbW9kYWxfdHlwZTogXCJCdXkgTGljZW5zZXNcIlxuICAgICAgfTtcbiAgICAgIC8vIENhbGwgdGhlIEVtYWlsU2VydmljZSBtZXRob2QgdG8gc2VuZCB0aGUgdXBncmFkZSBlbWFpbFxuICAgICAgdGhpcy5fdXNlckRhdGFTZXJ2aWNlLnNlbmRVcGdyYWRlRW1haWwodXNlcikudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGdyYWRlIGVtYWlsIHNlbnQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNlbmRpbmcgdXBncmFkZSBlbWFpbDonLCBlcnJvcik7XG4gICAgICAgIC8vIEhhbmRsZSBlcnJvciBhcyBuZWVkZWRcbiAgICAgIH0pO1xuXG5cblxuXG5cbiAgfSk7XG5cbiAgfVxuXG59XG5cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhR2xvYmFsR2hvc3RMb2FkZXJFbmFibGVkXCI+XG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0dob3N0TG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbGlzdC1jb21wb25lbnQtdGFibGUgdy1mdWxsIGgtZnVsbCBwYWdlLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIGZvcm0tb2JqZWN0LWxpc3QtY29udGFpbmVyIHJlbGF0aXZlIGgtZnVsbCBzbTpweC02IHB4LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24tbWlkZGxlIHJlbGF0aXZlIHRhYmxlLWNvbnRhaW5lci1oZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1naG9zdC1sb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29udGFpbmVyIG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudFR5cGVdPVwiR2hvc3RMb2FkZXJUeXBlLkxpc3RWaWV3TG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWdob3N0LWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1naG9zdC1sb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50VHlwZV09XCJHaG9zdExvYWRlclR5cGUuUGFnaW5hdGlvblZpZXdMb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtZ2hvc3QtbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dHaG9zdExvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWxpc3QtY29tcG9uZW50LXRhYmxlIHctZnVsbCBoLWZ1bGwgcGFnZS1iYWNrZ3JvdW5kXCI+XG5cbiAgICAgICAgICAgIDwhLS0gUGFnZSBoZWFkZXJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3kgdG9wLTAgZGF0YS1saXN0LWhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteC1hdXRvIGgtMTIgYmctd2hpdGUgZm9ybS1vYmplY3QtdGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIGlubmVyLWZvcm0tb2JqZWN0LXRpdGxlLWNvbnRhaW5lciBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwibGVhZGluZy10aWdodCBtLTAgZm9ybS1vYmplY3QtdGl0bGUgYXhvLWZvbnRcIiAgW21hdFRvb2x0aXBdPVwiZm9ybU9iamVjdExpc3QuZm9ybU5hbWVTaW5ndWxhclwiIG1hdFRvb2x0aXBDbGFzcz1cImRhdGEtbGlzdC10aXRsZS10b29sdGlwLWN1c3RvbS1jbGFzc1wiPnt7Zm9ybU9iamVjdExpc3QuZm9ybU5hbWVTaW5ndWxhcn19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeS1idG4gYXhvLWZvbnRcIiAoY2xpY2spPVwiYWRkTmV3UmVjb3JkKClcIj4gQWRkIE5ldyBSZWNvcmQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtNiBmbGV4LXdyYXAgbWQ6ZmxleC1ub3dyYXAgZGF0YS1saXN0LWZpbHRlci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdldEZvcm1PYmplY3RzKClcIiBjbGFzcz1cImxpbmstYnRuIGF4by1mb250IHJlZnJlc2gtYnRuXCI+UmVmcmVzaCBEYXRhPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZm9ybS1vYmplY3QtbGlzdC1jb250YWluZXIgcmVsYXRpdmUgaC1mdWxsIHNtOnB4LTYgcHgtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1taWRkbGUgcmVsYXRpdmUgdGFibGUtY29udGFpbmVyLWhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiIWlzQWNjb3VudFN0YXR1c0FjdGl2ZVwiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5IHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPlRyaWFsIGV4cGlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPlRvIGNvbnRpbnVlIHZpZXdpbmcgZGF0YSBwbGVhc2Ugc3Vic2NyaWJlIHRvIGEgcGxhbiBmaXJzdC48L2Rpdj48YnI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ1cGdyYWRlLWJ0biBidG5cIiAoY2xpY2spPVwibmF2aWdhdGVUb0JpbGxpbmcoKVwiPlVwZ3JhZGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWxnIHBiLXB4IHRhYmxlLWNvbnRhaW5lciBjdXN0b21zY3JvbGwgdy1mdWxsIHJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ21vYmlsZS12aWV3LWhlaWdodCc6IHNob3dTZWFyY2ggfVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicm91bmRlZC1sZyBkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDAgZGF0YS1saXN0LXRhYmxlIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU9iamVjdCBsaXN0IHRhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJzdGlja3kgdG9wLTAgaC0xMlwiIFtuZ0NsYXNzXT1cInsnbm8tZGF0YS1ib3JkZXInOiBsaXN0Vmlld0RhdGEubGVuZ3RoID09PSAwfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tT2JqZWN0IGxpc3QgdGFibGUgaGVhZC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJsaXN0Vmlldz8uY29sdW1ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1DaGVja2JveCBjb2x1bW4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMyB0ZXh0LWxlZnQgZGF0YS10YWJsZS1oZWFkZXIgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMgdGV4dC1sZWZ0IGRhdGEtdGFibGUtaGVhZGVyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnQoJGV2ZW50LGNvbHVtbi53aWRnZXQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbGlzdFZpZXcuY29sdW1ucztcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFttYXRUb29sdGlwXT1cImNvbHVtbi53aWRnZXQ/LnByb21wdFwiICBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+e3tjb2x1bW4ud2lkZ2V0Py5wcm9tcHR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3J0aW5nLWFycm93XCIgKm5nSWY9J29yZGVyTWFwLmdldChjb2x1bW4ud2lkZ2V0Py5pZGVudGlmaWVyKTsgZWxzZSBzaG93U29ydE9uRmlsdGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmRlci1zZXF1ZW5jZSBheG8tZm9udFwiID57e29yZGVyZWRBcnJheS5pbmRleE9mKGNvbHVtbi53aWRnZXQ/LmlkZW50aWZpZXIpKzF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1hcnJvdy11cCBjdXJzb3ItcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsnYXJyb3ctYWN0aXZlJzogb3JkZXJNYXAuZ2V0KGNvbHVtbi53aWRnZXQ/LmlkZW50aWZpZXIpPT09c29ydE9yZGVyLmFzY2VuZGluZ31cIj4mI3gyNUIyOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3J0LWFycm93LWRvd24gY3Vyc29yLXBvaW50ZXJcIiBbbmdDbGFzc109XCJ7J2Fycm93LWFjdGl2ZSc6IG9yZGVyTWFwLmdldChjb2x1bW4ud2lkZ2V0Py5pZGVudGlmaWVyKT09PXNvcnRPcmRlci5kZXNjZW5kaW5nfVwiPiYjeDI1QkM7PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dTb3J0T25GaWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb3J0aW5nLWFycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JkZXItc2VxdWVuY2UgYXhvLWZvbnQgb3BhY2l0eS0wIGludmlzaWJsZVwiID57e29yZGVyZWRBcnJheS5pbmRleE9mKGNvbHVtbi53aWRnZXQ/LmlkZW50aWZpZXIpKzF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtYXJyb3ctdXAgZGlzcGxheS1ob3ZlclwiPiYjeDI1QjI7PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1hcnJvdy1kb3duIGRpc3BsYXktaG92ZXJcIj4mI3gyNUJDOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0YWJsZSAqbmdJZj1cImNvbHVtbi53aWRnZXQudHlwZSA9PT0gJ3N1YmZvcm0td2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJ0ZXh0LXNtIHB4LTMgcHktMyB0ZXh0LWxlZnQgdXBwZXJjYXNlIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtYXJrdXAgb2YgY29sdW1uLndpZGdldC5tYXJrdXA7XCI+IHt7bWFya3VwLnByb21wdH19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyBweS0zICBkYXRhLXRhYmxlLWhlYWRlciBhY3Rpb24tY29sdW1uXCI+QWN0aW9uczwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiYXBwTWFuaWZlc3Q/LmVuYWJsZV9kYXRhX3ZhbGlkaXR5XCIgc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMyB0ZXh0LWxlZnQgZGF0YS10YWJsZS1oZWFkZXJcIj5TdGF0dXM8L3RoPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tT2JqZWN0IGxpc3QgYm9keS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiYmctd2hpdGVcIiAqbmdJZj1cImxpc3RWaWV3RGF0YS5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtT2JqZWN0IG9mIGxpc3RWaWV3RGF0YTsgbGV0IGk9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ciAoY2xpY2spPVwic2hvd0RldGFpbFZpZXcoZm9ybU9iamVjdClcIiBbbmdDbGFzc109XCJ7ZGF0YTogIWZvcm1PYmplY3Q/LmlzVmFsaWR9XCI+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwie2RhdGE6ICFmb3JtT2JqZWN0Py5pc1ZhbGlkfVwiIChjbGljayk9XCJzaG93RGV0YWlsVmlldyhmb3JtT2JqZWN0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1DaGVja2JveCBjZWxsLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtM1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm93c1tpXVwiIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKCRldmVudC50YXJnZXQuY2hlY2tlZCwgaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtMyBoLTE0IGxpbmUtaGVpZ2h0LTE0IHRleHQtbGVmdCBkYXRhLXRhYmxlLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIGZvcm1PYmplY3Qud2lkZ2V0czsgbGV0IHdpZGdldEluZGV4ID0gaW5kZXhcIiBzdHlsZT1cIm1heC13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWYWx1ZSBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid2lkZ2V0Py52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtLW9iamVjdC13aWRnZXQtdmFsdWUgW2Zvcm1dPVwiZm9ybU9iamVjdFwiIFtheG9uYXRvclgxVXJsXT1cImF4b25hdG9yWDFVcmxcIiBbYmFzZVVybF09XCJiYXNlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWRnZXRdPVwid2lkZ2V0XCIgW3dpZGdldFByb3BlcnRpZXNdPVwibGlzdFZpZXcuY29sdW1uc1t3aWRnZXRJbmRleF0/LndpZGdldFwiICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGgtZnVsbCBtaW4taC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtLW9iamVjdC13aWRnZXQtdmFsdWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd2lkZ2V0Py52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LndpZGdldD8udHlwZSAhPT0gd2lkZ2V0VHlwZS5zdGF0aWNNZWRpYSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LndpZGdldD8udHlwZSAhPT0gd2lkZ2V0VHlwZS50b2dnbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXJcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTMgaC0xNCBsaW5lLWhlaWdodC0xNCBkYXRhLXRhYmxlLWl0ZW0gYWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5mdCA9PT0gZm9ybVR5cGVzLmFzc2V0ICYmICFmb3JtLmhpZGVFZGl0QnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1idG5cIiAoY2xpY2spPVwiZWRpdERhdGEoZm9ybU9iamVjdCwkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC02IHctNCB0ZXh0LWdyYXktNTAwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMjMyIDUuMjMybDMuNTM2IDMuNTM2bS0yLjAzNi01LjAzNmEyLjUgMi41IDAgMTEzLjUzNiAzLjUzNkw2LjUgMjEuMDM2SDN2LTMuNTcyTDE2LjczMiAzLjczMnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImljb24tYnRuXCIgKGNsaWNrKT1cInNob3dEZXRhaWxWaWV3KGZvcm1PYmplY3QpXCIgbWF0VG9vbHRpcD1cIlZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC03IHctNSB0ZXh0LWdyYXktNTAwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjQ3NDhiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMiA2YzMuNzkgMCA3LjE3IDIuMTMgOC44MiA1LjVDMTkuMTcgMTQuODcgMTUuNzkgMTcgMTIgMTdzLTcuMTctMi4xMy04LjgyLTUuNUM0LjgzIDguMTMgOC4yMSA2IDEyIDZtMC0yQzcgNCAyLjczIDcuMTEgMSAxMS41IDIuNzMgMTUuODkgNyAxOSAxMiAxOXM5LjI3LTMuMTEgMTEtNy41QzIxLjI3IDcuMTEgMTcgNCAxMiA0em0wIDVjMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjVTMTMuMzggMTQgMTIgMTRzLTIuNS0xLjEyLTIuNS0yLjVTMTAuNjIgOSAxMiA5bTAtMmMtMi40OCAwLTQuNSAyLjAyLTQuNSA0LjVTOS41MiAxNiAxMiAxNnM0LjUtMi4wMiA0LjUtNC41UzE0LjQ4IDcgMTIgN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhcHBNYW5pZmVzdD8uZW5hYmxlX2RhdGFfdmFsaWRpdHlcIiBjbGFzcz1cInB4LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbY29sb3JdPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImZvcm1PYmplY3QuaXNWYWxpZFwiIGNsYXNzPVwicC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZW5hYmxlVG9nZ2xlKGZvcm1PYmplY3QsJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNob3cgbm8gZGF0YSBmb3VuZCBtc2cgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJib3JkZXItMCBhYnNvbHV0ZSBuby1kYXRhLWJvZHlcIiAqbmdJZj1cImxpc3RWaWV3RGF0YS5sZW5ndGggPT09IDAgJiYgIXNob3dMb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiYm9yZGVyLTAgaG92ZXI6YmctdHJhbnNwYXJlbnQgdGV4dC14bCBuby1yZWNvcmQtZm91bmQgY3Vyc29yLWRlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcFwiPk5vIERhdGEgRm91bmQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnZUV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJ0b3RhbEZvcm1PYmplY3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2hvd0xvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|