tin-spa 2.6.13 → 2.6.15
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/classes/Classes.mjs +36 -34
- package/esm2020/lib/classes/TinCore.mjs +74 -9
- package/esm2020/lib/components/form/form.component.mjs +34 -37
- package/esm2020/lib/components/select/select.component.mjs +27 -15
- package/esm2020/lib/components/select-common/select-common.component.mjs +2 -2
- package/esm2020/lib/components/select-internal/select-internal.component.mjs +27 -15
- package/esm2020/lib/components/table/detailsDialog.component.mjs +23 -21
- package/esm2020/lib/components/table/table.component.mjs +24 -19
- package/esm2020/lib/components/table-action/table-action.component.mjs +2 -2
- package/esm2020/lib/components/table-header/table-header.component.mjs +2 -2
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +23 -21
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +24 -19
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +20 -18
- package/esm2020/lib/components/table-lite/table-lite.component.mjs +24 -19
- package/esm2020/lib/components/table-row/table-row.component.mjs +3 -3
- package/esm2020/lib/pages/approvals/approvals.component.mjs +5 -3
- package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +6 -2
- package/esm2020/lib/pages/departments/departments.component.mjs +1 -3
- package/esm2020/lib/pages/employees/employees.component.mjs +1 -2
- package/esm2020/lib/pages/login/login.component.mjs +2 -1
- package/esm2020/lib/pages/positions/positions.component.mjs +2 -2
- package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +3 -2
- package/esm2020/lib/services/button.service.mjs +27 -6
- package/esm2020/lib/services/datalib.service.mjs +70 -62
- package/fesm2015/tin-spa.mjs +351 -210
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +345 -216
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/lib/classes/Classes.d.ts +138 -138
- package/lib/classes/TinCore.d.ts +6 -3
- package/lib/components/form/form.component.d.ts +5 -2
- package/lib/components/select/select.component.d.ts +4 -1
- package/lib/components/select-internal/select-internal.component.d.ts +4 -1
- package/lib/components/table/detailsDialog.component.d.ts +3 -1
- package/lib/components/table/table.component.d.ts +4 -2
- package/lib/components/table-internal/detailsDialog-internal.component.d.ts +3 -1
- package/lib/components/table-internal/table-internal.component.d.ts +4 -2
- package/lib/components/table-lite/detailsDialog-lite.component.d.ts +3 -1
- package/lib/components/table-lite/table-lite.component.d.ts +4 -2
- package/lib/services/button.service.d.ts +4 -1
- package/lib/services/datalib.service.d.ts +9 -6
- package/package.json +1 -1
|
@@ -37,11 +37,45 @@ export class DataServiceLib {
|
|
|
37
37
|
this.capApprovalsConfig = new CapItem;
|
|
38
38
|
this.tmpProfileuserName = "";
|
|
39
39
|
this.isProcessing = false;
|
|
40
|
+
//--------------------------Departmemts Form-------------------------
|
|
41
|
+
this.departmentFormConfig = {
|
|
42
|
+
security: { allow: [this.capDepartments] },
|
|
43
|
+
fields: [
|
|
44
|
+
{ name: 'name', type: 'text', required: true },
|
|
45
|
+
],
|
|
46
|
+
loadAction: { url: 'departments/id' },
|
|
47
|
+
heroField: 'departmentID'
|
|
48
|
+
};
|
|
49
|
+
this.editDepartmentButton = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
|
|
50
|
+
this.departmentDetailsConfig = {
|
|
51
|
+
formConfig: this.departmentFormConfig,
|
|
52
|
+
heroField: 'departmentID',
|
|
53
|
+
buttons: [this.editDepartmentButton],
|
|
54
|
+
};
|
|
55
|
+
//--------------------------Positions Form-------------------------
|
|
56
|
+
this.positionFormConfig = {
|
|
57
|
+
security: { allow: [this.capPositions] },
|
|
58
|
+
fields: [
|
|
59
|
+
{ name: 'name', type: 'text', required: true },
|
|
60
|
+
{ name: 'description', type: 'text', },
|
|
61
|
+
{ name: 'departmentID', alias: 'Department', type: 'select', loadAction: { url: 'departments/list/x' }, detailsConfig: this.departmentDetailsConfig },
|
|
62
|
+
],
|
|
63
|
+
loadAction: { url: 'positions/id' },
|
|
64
|
+
heroField: 'positionID'
|
|
65
|
+
};
|
|
66
|
+
this.editPositionButton = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
|
|
67
|
+
this.positionDetailsConfig = {
|
|
68
|
+
formConfig: this.positionFormConfig,
|
|
69
|
+
heroField: 'positionID',
|
|
70
|
+
buttons: [this.editPositionButton],
|
|
71
|
+
};
|
|
72
|
+
//--------------------------Employees-------------------------
|
|
40
73
|
this.genders = [
|
|
41
74
|
{ name: 'Male', value: 1 },
|
|
42
75
|
{ name: 'Female', value: 2 }
|
|
43
76
|
];
|
|
44
77
|
this.employeeFormConfig = {
|
|
78
|
+
security: { allow: [this.capEmployees] },
|
|
45
79
|
fields: [
|
|
46
80
|
{ name: 'nationalID', type: 'text', alias: 'National ID', required: true },
|
|
47
81
|
{ name: 'gender', alias: 'Gender', type: 'select', options: this.genders, required: true },
|
|
@@ -49,15 +83,17 @@ export class DataServiceLib {
|
|
|
49
83
|
{ name: 'lastName', type: 'text', required: true },
|
|
50
84
|
{ name: 'dateOfBirth', type: 'date', alias: 'Date of Birth', required: true },
|
|
51
85
|
{ name: 'employmentDate', type: 'date', alias: 'Employment Date', required: true },
|
|
52
|
-
{ name: 'departmentID', alias: 'Department', type: 'select',
|
|
53
|
-
{ name: 'positionID', alias: 'Position', type: 'select',
|
|
54
|
-
{ name: 'employmentStatus', alias: 'Employment Status', type: 'select',
|
|
55
|
-
{ name: 'activeStatus', alias: 'Active Status', type: 'select',
|
|
86
|
+
{ name: 'departmentID', alias: 'Department', type: 'select', loadAction: { url: 'departments/list/x' }, detailsConfig: this.departmentDetailsConfig },
|
|
87
|
+
{ name: 'positionID', alias: 'Position', type: 'select', loadAction: { url: 'positions/list/x' }, masterField: 'departmentID', detailsConfig: this.positionDetailsConfig },
|
|
88
|
+
{ name: 'employmentStatus', alias: 'Employment Status', type: 'select', loadAction: { url: 'employees/list/employment-status' } },
|
|
89
|
+
{ name: 'activeStatus', alias: 'Active Status', type: 'select', loadAction: { url: 'employees/list/active-status' } },
|
|
56
90
|
{ name: 'address', type: 'text', rows: 2, span: true },
|
|
57
91
|
{ name: 'phone', type: 'text' },
|
|
58
92
|
{ name: 'email', type: 'text' },
|
|
59
93
|
{ name: 'note', type: 'text', rows: 2, span: true },
|
|
60
94
|
],
|
|
95
|
+
loadAction: { url: 'employees/id' },
|
|
96
|
+
heroField: 'employeeID'
|
|
61
97
|
};
|
|
62
98
|
this.employeeTableConfig = {
|
|
63
99
|
showFilter: true,
|
|
@@ -80,24 +116,14 @@ export class DataServiceLib {
|
|
|
80
116
|
loadAction: { url: 'employees/all/x' },
|
|
81
117
|
formConfig: this.employeeFormConfig
|
|
82
118
|
};
|
|
83
|
-
|
|
84
|
-
fields: [
|
|
85
|
-
{ name: 'name', type: 'text', required: true },
|
|
86
|
-
// { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },
|
|
87
|
-
{ name: 'description', type: 'text', span: true },
|
|
88
|
-
],
|
|
89
|
-
loadAction: { url: 'positions/id' },
|
|
90
|
-
heroField: 'positionID'
|
|
91
|
-
};
|
|
92
|
-
this.editPositionButton = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
|
|
119
|
+
//--------------------------Positions-------------------------
|
|
93
120
|
this.positionsTableConfig = {
|
|
94
121
|
showFilter: true,
|
|
95
|
-
minColumns: ['name', 'departmentName', 'salary'],
|
|
96
122
|
flatButtons: true,
|
|
97
123
|
columns: [
|
|
98
|
-
{ name: 'positionID', type: 'number', alias: 'ID' },
|
|
99
124
|
{ name: 'name', type: 'text' },
|
|
100
|
-
|
|
125
|
+
{ name: 'description', type: 'text' },
|
|
126
|
+
{ name: 'departmentName', type: 'text' },
|
|
101
127
|
],
|
|
102
128
|
buttons: [
|
|
103
129
|
{ name: 'create', display: 'Create', dialog: true, action: { url: 'positions?action=create', method: 'post' } },
|
|
@@ -105,15 +131,14 @@ export class DataServiceLib {
|
|
|
105
131
|
name: 'view',
|
|
106
132
|
dialog: true,
|
|
107
133
|
detailsConfig: {
|
|
108
|
-
formConfig:
|
|
134
|
+
formConfig: this.positionFormConfig,
|
|
109
135
|
heroField: 'positionID',
|
|
110
136
|
buttons: [this.editPositionButton],
|
|
111
137
|
tableConfigs: [
|
|
112
138
|
{
|
|
113
139
|
...this.employeeTableConfig,
|
|
114
|
-
loadAction: { url: '
|
|
115
|
-
|
|
116
|
-
loadIDField: 'positionID',
|
|
140
|
+
loadAction: { url: 'employees/x/x' }, loadCriteria: 'position', loadIDField: 'positionID',
|
|
141
|
+
columns: this.employeeTableConfig.columns.filter(x => ['departmentName', 'positionName'].includes(x.name) == false),
|
|
117
142
|
tabTitle: 'Employees',
|
|
118
143
|
elevation: 'none',
|
|
119
144
|
}
|
|
@@ -127,19 +152,12 @@ export class DataServiceLib {
|
|
|
127
152
|
formConfig: this.positionFormConfig
|
|
128
153
|
};
|
|
129
154
|
//--------------------------Departments-------------------------
|
|
130
|
-
this.departmentFormConfig = {
|
|
131
|
-
fields: [
|
|
132
|
-
{ name: 'name', type: 'text', required: true },
|
|
133
|
-
],
|
|
134
|
-
loadAction: { url: 'departments/id' },
|
|
135
|
-
};
|
|
136
|
-
this.editDepartmentButton = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
|
|
137
155
|
this.departmentTableConfig = {
|
|
138
156
|
showFilter: true,
|
|
139
157
|
minColumns: ['name'],
|
|
140
158
|
flatButtons: true,
|
|
141
159
|
columns: [
|
|
142
|
-
{ name: 'departmentID', type: 'number', alias: 'ID' },
|
|
160
|
+
// { name: 'departmentID', type: 'number', alias: 'ID' },
|
|
143
161
|
{ name: 'name', type: 'text' },
|
|
144
162
|
],
|
|
145
163
|
buttons: [
|
|
@@ -154,17 +172,14 @@ export class DataServiceLib {
|
|
|
154
172
|
tableConfigs: [
|
|
155
173
|
{
|
|
156
174
|
...this.employeeTableConfig,
|
|
157
|
-
loadAction: { url: 'employees/x/x' },
|
|
158
|
-
|
|
159
|
-
loadIDField: 'departmentID',
|
|
175
|
+
loadAction: { url: 'employees/x/x' }, loadCriteria: 'department', loadIDField: 'departmentID',
|
|
176
|
+
columns: this.employeeTableConfig.columns.filter(x => ['departmentName', 'positionName'].includes(x.name) == false),
|
|
160
177
|
tabTitle: 'Employees',
|
|
161
178
|
elevation: 'none',
|
|
162
179
|
},
|
|
163
180
|
{
|
|
164
181
|
...this.positionsTableConfig,
|
|
165
|
-
loadAction: { url: '
|
|
166
|
-
loadCriteria: 'positions',
|
|
167
|
-
loadIDField: 'departmentID',
|
|
182
|
+
loadAction: { url: 'positions/x/x' }, loadCriteria: 'department', loadIDField: 'departmentID',
|
|
168
183
|
tabTitle: 'Positions',
|
|
169
184
|
elevation: 'none',
|
|
170
185
|
}
|
|
@@ -185,15 +200,15 @@ export class DataServiceLib {
|
|
|
185
200
|
{ name: 'mobile', type: 'text' },
|
|
186
201
|
{ name: 'email', type: 'text' },
|
|
187
202
|
{ name: 'contactMethods', type: 'composite', span: true, subfields: [
|
|
188
|
-
{ name: 'canCall', type: 'checkbox', alias: '
|
|
189
|
-
{ name: 'canSMS', type: 'checkbox', alias: '
|
|
190
|
-
{ name: 'canWhatsApp', type: 'checkbox', alias: '
|
|
203
|
+
{ name: 'canCall', type: 'checkbox', alias: 'Call' },
|
|
204
|
+
{ name: 'canSMS', type: 'checkbox', alias: 'SMS' },
|
|
205
|
+
{ name: 'canWhatsApp', type: 'checkbox', alias: 'WhatsApp' }
|
|
191
206
|
] },
|
|
192
207
|
],
|
|
193
208
|
reset: true
|
|
194
209
|
};
|
|
195
210
|
this.contactPersonTableConfig = {
|
|
196
|
-
tabTitle: '
|
|
211
|
+
tabTitle: 'Contacts',
|
|
197
212
|
showFilter: true,
|
|
198
213
|
minColumns: ['name', 'contactMethods'],
|
|
199
214
|
elevation: 'none',
|
|
@@ -231,18 +246,19 @@ export class DataServiceLib {
|
|
|
231
246
|
],
|
|
232
247
|
reset: true,
|
|
233
248
|
};
|
|
249
|
+
this.customerEditButton = { name: 'edit', dialog: true, action: { url: 'customers?action=edit', method: 'post' } };
|
|
234
250
|
this.customerDetailsConfig = {
|
|
235
251
|
formConfig: this.customerFormConfig,
|
|
236
252
|
heroField: 'customerID',
|
|
237
253
|
tableConfigs: [
|
|
238
|
-
// ... existing tables
|
|
239
254
|
{
|
|
240
255
|
...this.contactPersonTableConfig,
|
|
241
256
|
loadAction: { url: 'contactpersons/customer/x' },
|
|
242
257
|
loadCriteria: 'customer',
|
|
243
258
|
loadIDField: 'customerID'
|
|
244
259
|
}
|
|
245
|
-
]
|
|
260
|
+
],
|
|
261
|
+
buttons: [this.customerEditButton]
|
|
246
262
|
};
|
|
247
263
|
this.customersTableConfig = {
|
|
248
264
|
showFilter: true,
|
|
@@ -257,7 +273,7 @@ export class DataServiceLib {
|
|
|
257
273
|
buttons: [
|
|
258
274
|
{ name: 'create', display: 'Create', dialog: true, action: { url: 'customers?action=create', method: 'post' } },
|
|
259
275
|
{ name: 'view', dialog: true, detailsConfig: this.customerDetailsConfig },
|
|
260
|
-
{ name: 'edit', dialog: true,
|
|
276
|
+
{ name: 'edit', dialog: true, detailsConfig: this.customerDetailsConfig },
|
|
261
277
|
{ name: 'delete', dialog: true, action: { url: 'customers?action=delete', method: 'post' } },
|
|
262
278
|
],
|
|
263
279
|
loadAction: { url: 'customers/all/x' },
|
|
@@ -274,18 +290,19 @@ export class DataServiceLib {
|
|
|
274
290
|
],
|
|
275
291
|
reset: true,
|
|
276
292
|
};
|
|
293
|
+
this.supplierEditButton = { name: 'edit', dialog: true, action: { url: 'suppliers?action=edit', method: 'post' } };
|
|
277
294
|
this.supplierDetailsConfig = {
|
|
278
295
|
formConfig: this.supplierFormConfig,
|
|
279
296
|
heroField: 'supplierID',
|
|
280
297
|
tableConfigs: [
|
|
281
|
-
// ... existing tables
|
|
282
298
|
{
|
|
283
299
|
...this.contactPersonTableConfig,
|
|
284
300
|
loadAction: { url: 'contactpersons/supplier/x' },
|
|
285
301
|
loadCriteria: 'supplier',
|
|
286
302
|
loadIDField: 'supplierID'
|
|
287
303
|
}
|
|
288
|
-
]
|
|
304
|
+
],
|
|
305
|
+
buttons: [this.supplierEditButton]
|
|
289
306
|
};
|
|
290
307
|
this.suppliersTableConfig = {
|
|
291
308
|
showFilter: true,
|
|
@@ -299,7 +316,7 @@ export class DataServiceLib {
|
|
|
299
316
|
buttons: [
|
|
300
317
|
{ name: 'create', display: 'Create', dialog: true, action: { url: 'suppliers?action=create', method: 'post' }, },
|
|
301
318
|
{ name: 'view', dialog: true, detailsConfig: this.supplierDetailsConfig },
|
|
302
|
-
{ name: 'edit', dialog: true,
|
|
319
|
+
{ name: 'edit', dialog: true, detailsConfig: this.supplierDetailsConfig },
|
|
303
320
|
{ name: 'delete', dialog: true, action: { url: 'suppliers?action=delete', method: 'post' } },
|
|
304
321
|
],
|
|
305
322
|
loadAction: { url: 'suppliers/all/x' },
|
|
@@ -403,21 +420,6 @@ export class DataServiceLib {
|
|
|
403
420
|
this.appConfigSource.next(config);
|
|
404
421
|
this.appConfig = config;
|
|
405
422
|
}
|
|
406
|
-
//--------------------------Employees-------------------------
|
|
407
|
-
loadEmployeesMeta() {
|
|
408
|
-
this.CallApi({ url: 'employees/meta/x' }, "").subscribe((apiResponse) => {
|
|
409
|
-
this.employeeFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;
|
|
410
|
-
this.employeeFormConfig.fields.find(x => x.name == 'positionID').masterOptions = apiResponse.data.positions;
|
|
411
|
-
this.employeeFormConfig.fields.find(x => x.name == 'employmentStatus').options = apiResponse.data.employmentStatuses;
|
|
412
|
-
this.employeeFormConfig.fields.find(x => x.name == 'activeStatus').options = apiResponse.data.activeStatuses;
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
//--------------------------Positions-------------------------
|
|
416
|
-
loadPositionMeta() {
|
|
417
|
-
// this.CallApi({ url: 'positions/meta/x' }, "").subscribe((apiResponse: ApiResponse) => {
|
|
418
|
-
// this.positionFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;
|
|
419
|
-
// });
|
|
420
|
-
}
|
|
421
423
|
CallApi(action, data = '') {
|
|
422
424
|
if (action.url.includes('/list/')) {
|
|
423
425
|
return this.handleListCall(action);
|
|
@@ -432,6 +434,9 @@ export class DataServiceLib {
|
|
|
432
434
|
if (action.isFormData || action.url.includes('/form')) {
|
|
433
435
|
return this.httpService.Post_FormData(action.url, data);
|
|
434
436
|
}
|
|
437
|
+
else if (action.url == 'approve' || action.url == 'decline') {
|
|
438
|
+
return this.httpService.Post(`${data.endpoint}/approve?action=${action.url}`, data);
|
|
439
|
+
}
|
|
435
440
|
else {
|
|
436
441
|
return this.httpService.Post(action.url, data);
|
|
437
442
|
}
|
|
@@ -452,7 +457,7 @@ export class DataServiceLib {
|
|
|
452
457
|
}
|
|
453
458
|
// Make API call and cache result
|
|
454
459
|
return this.httpService.Get(action.url).pipe(tap((response) => {
|
|
455
|
-
if (response.success) {
|
|
460
|
+
if (response.success && response?.data?.length > 0) {
|
|
456
461
|
this.listCache[cacheKey] = response.data;
|
|
457
462
|
this.cacheTimestamps[cacheKey] = currentTime;
|
|
458
463
|
}
|
|
@@ -468,6 +473,9 @@ export class DataServiceLib {
|
|
|
468
473
|
}
|
|
469
474
|
});
|
|
470
475
|
}
|
|
476
|
+
ClearCache() {
|
|
477
|
+
this.listCache = {};
|
|
478
|
+
}
|
|
471
479
|
CheckWelcomed(path = 'home/admin/welcome') {
|
|
472
480
|
this.CallApi({ url: 'tenant/welcome/x' }).subscribe((x) => {
|
|
473
481
|
if (!x.data) {
|
|
@@ -557,4 +565,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
557
565
|
providedIn: 'root'
|
|
558
566
|
}]
|
|
559
567
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
|
|
560
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUIsU0FBUyxFQUFVLE9BQU8sRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFRNUQsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsV0FBd0IsRUFBUyxNQUFjLEVBQVUsS0FBcUI7UUFBOUUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUEySGxHLGNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQU03RCxZQUFPLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdEIsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN2QixhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdkIsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFFMUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDekIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUM1QixhQUFRLEdB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QUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFHRCxVQUFVO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBYztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDOzsyR0FucUJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEFwaVJlc3BvbnNlLCBBcHBDb25maWcsIEJ1dHRvbiwgQ2FwSXRlbSwgRGV0YWlsc0RpYWxvZ0NvbmZpZywgRm9ybUNvbmZpZywgVGFibGVDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy9MaWJDbGFzc2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlTGliIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuXHJcbiAgICB0aGlzLmFwcENvbmZpZy5hcHBOYW1lID0gXCJBcHAtTmFtZVwiO1xyXG4gICAgdGhpcy5hcHBDb25maWcubG9nbyA9IFwiLi9hc3NldHMvbG9nby5wbmdcIlxyXG4gICAgdGhpcy5hcHBDb25maWcuQURBdXRoID0gdHJ1ZTtcclxuICAgIHRoaXMuYXBwQ29uZmlnLmNhcEl0ZW1zID0gW3RoaXMuY2FwTXVsdGl0ZW5hbnQsIHRoaXMuY2FwQWRtaW4sIHRoaXMuY2FwSG9tZV07XHJcblxyXG5cclxuICAgIHRoaXMuY2FwSG9tZS5uYW1lID0gXCJjYXAxXCI7XHJcbiAgICB0aGlzLmNhcEhvbWUuZGlzcGxheSA9IFwiSG9tZVwiO1xyXG4gICAgdGhpcy5jYXBIb21lLmxpbmsgPSBcImhvbWVcIjtcclxuICAgIHRoaXMuY2FwSG9tZS5pY29uID1cImhvbWVcIjtcclxuXHJcblxyXG4gICAgdGhpcy5jYXBBZG1pbi5uYW1lID0gXCJjYXAyXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmRpc3BsYXkgPSBcIkFkbWluXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmljb24gPSBcInNlY3VyaXR5XCJcclxuICAgIHRoaXMuY2FwQWRtaW4uY2FwU3ViSXRlbXMgPSBbdGhpcy5jYXBVc2VycywgdGhpcy5jYXBSb2xlcywgdGhpcy5jYXBMb2dzLCB0aGlzLmNhcFNldHRpbmdzLCB0aGlzLmNhcEFwcHJvdmFsc0NvbmZpZ107XHJcblxyXG4gICAgdGhpcy5jYXBVc2Vycy5uYW1lID0gXCJjYXAzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmRpc3BsYXkgPSBcIlVzZXJzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmxpbmsgPSBcImhvbWUvYWRtaW4vdXNlcnNcIjtcclxuICAgIHRoaXMuY2FwVXNlcnMuaWNvbiA9IFwiZ3JvdXBcIjtcclxuXHJcbiAgICB0aGlzLmNhcFJvbGVzLm5hbWUgPSBcImNhcDRcIlxyXG4gICAgdGhpcy5jYXBSb2xlcy5kaXNwbGF5ID0gXCJSb2xlc1wiO1xyXG4gICAgdGhpcy5jYXBSb2xlcy5saW5rID0gXCJob21lL2FkbWluL3JvbGVzXCI7XHJcbiAgICB0aGlzLmNhcFJvbGVzLmljb24gPSBcIndvcmtcIjtcclxuXHJcbiAgICB0aGlzLmNhcExvZ3MubmFtZSA9IFwiY2FwNVwiXHJcbiAgICB0aGlzLmNhcExvZ3MuZGlzcGxheSA9IFwiTG9nc1wiO1xyXG4gICAgdGhpcy5jYXBMb2dzLmxpbmsgPSBcImhvbWUvYWRtaW4vbG9nc1wiO1xyXG4gICAgdGhpcy5jYXBMb2dzLmljb24gPSBcInRleHRfc25pcHBldFwiO1xyXG5cclxuICAgIHRoaXMuY2FwU2V0dGluZ3MubmFtZSA9IFwiY2FwNlwiXHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLmRpc3BsYXkgPSBcIlNldHRpbmdzXCI7XHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLmxpbmsgPSBcImhvbWUvYWRtaW4vc2V0dGluZ3NcIjtcclxuICAgIHRoaXMuY2FwU2V0dGluZ3MuaWNvbiA9XCJzZXR0aW5nc1wiO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcE11bHRpdGVuYW50Lm5hbWUgPSBcImNhcDdcIlxyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5kaXNwbGF5ID0gXCJNdWx0aXRlbmFudFwiO1xyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5pY29uID0gXCJhcGFydG1lbnRcIlxyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5jYXBTdWJJdGVtcyA9IFt0aGlzLmNhcFRlbmFudHMsIHRoaXMuY2FwTWVtYmVyc2hpcCwgdGhpcy5jYXBQbGFucyBdO1xyXG5cclxuICAgIHRoaXMuY2FwVGVuYW50cy5uYW1lID0gXCJjYXA4XCJcclxuICAgIHRoaXMuY2FwVGVuYW50cy5kaXNwbGF5ID0gXCJUZW5hbnRzXCI7XHJcbiAgICB0aGlzLmNhcFRlbmFudHMubGluayA9IFwiaG9tZS9hZG1pbi90ZW5hbnRzXCI7XHJcblxyXG4gICAgdGhpcy5jYXBNZW1iZXJzaGlwLm5hbWUgPSBcImNhcDlcIlxyXG4gICAgdGhpcy5jYXBNZW1iZXJzaGlwLmRpc3BsYXkgPSBcIk1lbWJlcnNoaXBcIjtcclxuICAgIHRoaXMuY2FwTWVtYmVyc2hpcC5saW5rID0gXCJob21lL2FkbWluL21lbWJlcnNoaXBcIjtcclxuXHJcbiAgICB0aGlzLmNhcFBsYW5zLm5hbWUgPSBcImNhcDEwXCJcclxuICAgIHRoaXMuY2FwUGxhbnMuZGlzcGxheSA9IFwiUGxhbnNcIjtcclxuICAgIHRoaXMuY2FwUGxhbnMubGluayA9IFwiaG9tZS9hZG1pbi9wbGFuc1wiO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcEdlbmVyYWwubmFtZSA9IFwiY2FwMTFcIlxyXG4gICAgdGhpcy5jYXBHZW5lcmFsLmRpc3BsYXkgPSBcIkdlbmVyYWxcIjtcclxuICAgIHRoaXMuY2FwR2VuZXJhbC5jYXBTdWJJdGVtcyA9IFt0aGlzLmNhcEFwcHJvdmFscyx0aGlzLmNhcEN1c3RvbWVycywgdGhpcy5jYXBJbnZlbnRvcnksIHRoaXMuY2FwQWNjb3VudHMsIHRoaXMuY2FwU3VwcGxpZXJzLCB0aGlzLmNhcFRhc2tzXTtcclxuXHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5uYW1lID0gXCJjYXAxMlwiXHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5kaXNwbGF5ID0gXCJDdXN0b21lcnNcIjtcclxuICAgIHRoaXMuY2FwQ3VzdG9tZXJzLmxpbmsgPSBcImhvbWUvYWRtaW4vY3VzdG9tZXJzXCI7XHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5pY29uID0gXCJncm91cFwiXHJcblxyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkubmFtZSA9IFwiY2FwMTNcIlxyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkuZGlzcGxheSA9IFwiSW52ZW50b3J5XCI7XHJcbiAgICB0aGlzLmNhcEludmVudG9yeS5saW5rID0gXCJob21lL2FkbWluL2ludmVudG9yeVwiO1xyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkuaWNvbiA9IFwic3RvcmVmcm9udFwiXHJcblxyXG4gICAgdGhpcy5jYXBBY2NvdW50cy5uYW1lID0gXCJjYXAxNFwiXHJcbiAgICB0aGlzLmNhcEFjY291bnRzLmRpc3BsYXkgPSBcIkFjY291bnRzXCI7XHJcbiAgICB0aGlzLmNhcEFjY291bnRzLmxpbmsgPSBcImhvbWUvYWRtaW4vYWNjb3VudHNcIjtcclxuICAgIHRoaXMuY2FwQWNjb3VudHMuaWNvbiA9IFwiYWNjb3VudF9iYWxhbmNlX3dhbGxldFwiXHJcblxyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMubmFtZSA9IFwiY2FwMTVcIlxyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMuZGlzcGxheSA9IFwiU3VwcGxpZXJzXCI7XHJcbiAgICB0aGlzLmNhcFN1cHBsaWVycy5saW5rID0gXCJob21lL2FkbWluL3N1cHBsaWVyc1wiO1xyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMuaWNvbiA9IFwiZ3JvdXBzXCJcclxuXHJcbiAgICB0aGlzLmNhcFRhc2tzLm5hbWUgPSBcImNhcDE2XCJcclxuICAgIHRoaXMuY2FwVGFza3MuZGlzcGxheSA9IFwiVGFza3NcIjtcclxuICAgIHRoaXMuY2FwVGFza3MubGluayA9IFwiaG9tZS9hZG1pbi90YXNrc1wiO1xyXG4gICAgdGhpcy5jYXBUYXNrcy5pY29uID0gXCJjaGVja19ib3hcIlxyXG5cclxuXHJcbiAgICB0aGlzLmNhcEhSLm5hbWUgPSBcImNhcDE3XCJcclxuICAgIHRoaXMuY2FwSFIuZGlzcGxheSA9IFwiSFJcIjtcclxuICAgIHRoaXMuY2FwSFIubGluayA9IFwiaG9tZS9hZG1pbi9oclwiO1xyXG4gICAgdGhpcy5jYXBIUi5pY29uID0gXCJkaXZlcnNpdHlfM1wiXHJcbiAgICB0aGlzLmNhcEhSLmNhcFN1Ykl0ZW1zID0gW3RoaXMuY2FwRGVwYXJ0bWVudHMsIHRoaXMuY2FwUG9zaXRpb25zLCB0aGlzLmNhcEVtcGxveWVlcyxdXHJcblxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuZGlzcGxheSA9IFwiRW1wbG95ZWVzXCI7XHJcbiAgICB0aGlzLmNhcEVtcGxveWVlcy5saW5rID0gXCJob21lL2FkbWluL2VtcGxveWVlc1wiO1xyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuaWNvbiA9IFwiZ3JvdXBcIlxyXG5cclxuICAgIHRoaXMuY2FwRGVwYXJ0bWVudHMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5kaXNwbGF5ID0gXCJEZXBhcnRtZW50c1wiO1xyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5saW5rID0gXCJob21lL2FkbWluL2RlcGFydG1lbnRzXCI7XHJcbiAgICB0aGlzLmNhcERlcGFydG1lbnRzLmljb24gPSBcImJ1c2luZXNzX2NlbnRlclwiXHJcblxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuZGlzcGxheSA9IFwiUG9zaXRpb25zXCI7XHJcbiAgICB0aGlzLmNhcFBvc2l0aW9ucy5saW5rID0gXCJob21lL2FkbWluL3Bvc2l0aW9uc1wiO1xyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuaWNvbiA9IFwicGljdHVyZV9pbl9waWN0dXJlX21lZGl1bVwiXHJcblxyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMubmFtZSA9IFwiY2FwMThcIlxyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMuZGlzcGxheSA9IFwiQXBwcm92YWxzXCI7XHJcbiAgICB0aGlzLmNhcEFwcHJvdmFscy5saW5rID0gXCJob21lL2FkbWluL2FwcHJvdmFsc1wiO1xyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMuaWNvbiA9IFwidGFza19hbHRcIlxyXG5cclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLm5hbWUgPSBcImNhcDE5XCJcclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLmRpc3BsYXkgPSBcIkFwcHJvdmFscyBDb25maWdcIjtcclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLmxpbmsgPSBcImhvbWUvYWRtaW4vYXBwcm92YWxzLWNvbmZpZ1wiO1xyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHNDb25maWcuaWNvbiA9IFwicHVibGlzaGVkX3dpdGhfY2hhbmdlc1wiXHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcbiAgcHJpdmF0ZSBhcHBDb25maWdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuYXBwQ29uZmlnKTtcclxuICBwdWJsaWMgYXBwQ29uZmlnT2JzZXJ2ID0gdGhpcy5hcHBDb25maWdTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgVXBkYXRlQXBwQ29uZmlnKGNvbmZpZzogQXBwQ29uZmlnKSB7XHJcbiAgICB0aGlzLmFwcENvbmZpZ1NvdXJjZS5uZXh0KGNvbmZpZyk7XHJcbiAgICB0aGlzLmFwcENvbmZpZyA9IGNvbmZpZztcclxuICB9XHJcblxyXG4gIGNhcEhvbWUgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBBZG1pbiA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFVzZXJzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwUm9sZXMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBMb2dzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwU2V0dGluZ3MgPSBuZXcgQ2FwSXRlbTtcclxuXHJcbiAgY2FwTXVsdGl0ZW5hbnQgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBUZW5hbnRzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwTWVtYmVyc2hpcCA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFBsYW5zID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIGNhcEdlbmVyYWwgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBDdXN0b21lcnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBJbnZlbnRvcnkgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBBY2NvdW50cyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFN1cHBsaWVycyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFRhc2tzID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIGNhcEhSID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwRW1wbG95ZWVzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwRGVwYXJ0bWVudHMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBQb3NpdGlvbnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBHcmFkZXMgPSBuZXcgQ2FwSXRlbTtcclxuXHJcbiAgY2FwQXBwcm92YWxzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwQXBwcm92YWxzQ29uZmlnID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIHB1YmxpYyB0bXBQcm9maWxldXNlck5hbWUgPSBcIlwiO1xyXG5cclxuXHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUVtcGxveWVlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBsb2FkRW1wbG95ZWVzTWV0YSgpIHtcclxuICAgIHRoaXMuQ2FsbEFwaSh7IHVybDogJ2VtcGxveWVlcy9tZXRhL3gnIH0sIFwiXCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdkZXBhcnRtZW50SUQnKS5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YS5kZXBhcnRtZW50cztcclxuICAgICAgdGhpcy5lbXBsb3llZUZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ3Bvc2l0aW9uSUQnKS5tYXN0ZXJPcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YS5wb3NpdGlvbnM7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdlbXBsb3ltZW50U3RhdHVzJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuZW1wbG95bWVudFN0YXR1c2VzO1xyXG4gICAgICB0aGlzLmVtcGxveWVlRm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAnYWN0aXZlU3RhdHVzJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuYWN0aXZlU3RhdHVzZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdlbmRlcnMgPSBbXHJcbiAgICB7IG5hbWU6ICdNYWxlJywgdmFsdWU6IDEgfSxcclxuICAgIHsgbmFtZTogJ0ZlbWFsZScsIHZhbHVlOiAyIH1cclxuICBdXHJcblxyXG4gIGVtcGxveWVlRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYXRpb25hbElEJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ05hdGlvbmFsIElEJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZ2VuZGVyJywgYWxpYXM6ICdHZW5kZXInLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogdGhpcy5nZW5kZXJzLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdmaXJzdE5hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2xhc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdkYXRlT2ZCaXJ0aCcsIHR5cGU6ICdkYXRlJywgYWxpYXM6ICdEYXRlIG9mIEJpcnRoJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZW1wbG95bWVudERhdGUnLCB0eXBlOiAnZGF0ZScsIGFsaWFzOiAnRW1wbG95bWVudCBEYXRlJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZGVwYXJ0bWVudElEJywgYWxpYXM6ICdEZXBhcnRtZW50JywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFtdLCBvcHRpb25EaXNwbGF5OiAnbmFtZScsIG9wdGlvblZhbHVlOiAnZGVwYXJ0bWVudElEJyB9LFxyXG4gICAgICB7IG5hbWU6ICdwb3NpdGlvbklEJywgYWxpYXM6ICdQb3NpdGlvbicsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBbXSwgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ3Bvc2l0aW9uSUQnLCBtYXN0ZXJGaWVsZDogJ2RlcGFydG1lbnRJRCcsIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtcGxveW1lbnRTdGF0dXMnLCBhbGlhczogJ0VtcGxveW1lbnQgU3RhdHVzJywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFtdLCBvcHRpb25EaXNwbGF5OiAnbmFtZScsIG9wdGlvblZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FjdGl2ZVN0YXR1cycsIGFsaWFzOiAnQWN0aXZlIFN0YXR1cycsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBbXSwgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ3ZhbHVlJyB9LFxyXG4gICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCByb3dzOiAyLCBzcGFuOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bob25lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ25vdGUnLCB0eXBlOiAndGV4dCcsIHJvd3M6IDIsIHNwYW46IHRydWUgfSxcclxuICAgIF0sXHJcbiAgfVxyXG5cclxuICBlbXBsb3llZVRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAnZGVwYXJ0bWVudE5hbWUnLCAncG9zaXRpb25OYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdnZW5kZXJOYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0dlbmRlcicgfSxcclxuICAgICAgeyBuYW1lOiAnZGVwYXJ0bWVudE5hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcgfSxcclxuICAgICAgeyBuYW1lOiAncG9zaXRpb25OYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ1Bvc2l0aW9uJyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbXBsb3ltZW50U3RhdHVzTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdFbXBsb3ltZW50IFN0YXR1cycgfSxcclxuICAgICAgeyBuYW1lOiAnYWN0aXZlU3RhdHVzTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdBY3RpdmUgU3RhdHVzJyB9LFxyXG4gICAgXSxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdlbXBsb3llZXM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcz9hY3Rpb249ZGVsZXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgXSxcclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZW1wbG95ZWVzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5lbXBsb3llZUZvcm1Db25maWdcclxuICB9XHJcblxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUG9zaXRpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICBsb2FkUG9zaXRpb25NZXRhKCkge1xyXG4gICAgLy8gdGhpcy5DYWxsQXBpKHsgdXJsOiAncG9zaXRpb25zL21ldGEveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgIC8vICAgdGhpcy5wb3NpdGlvbkZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2RlcGFydG1lbnRJRCcpLm9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhLmRlcGFydG1lbnRzO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbkZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgLy8geyBuYW1lOiAnZGVwYXJ0bWVudElEJywgYWxpYXM6ICdEZXBhcnRtZW50JywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFtdLCBvcHRpb25EaXNwbGF5OiAnbmFtZScsIG9wdGlvblZhbHVlOiAnZGVwYXJ0bWVudElEJyB9LFxyXG4gICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIHR5cGU6ICd0ZXh0Jywgc3BhbjogdHJ1ZSB9LFxyXG5cclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3Bvc2l0aW9ucy9pZCcgfSxcclxuICAgIGhlcm9GaWVsZCA6ICdwb3NpdGlvbklEJ1xyXG4gIH1cclxuXHJcbiAgZWRpdFBvc2l0aW9uQnV0dG9uOiBCdXR0b24gPSB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAncG9zaXRpb25zP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcsIHN1Y2Nlc3NNZXNzYWdlOiAnRWRpdGVkIFN1Y2Nlc3NmdWxseScgfSB9XHJcblxyXG4gIHBvc2l0aW9uc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAnZGVwYXJ0bWVudE5hbWUnLCAnc2FsYXJ5J10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAncG9zaXRpb25JRCcsIHR5cGU6ICdudW1iZXInLCBhbGlhczogJ0lEJyB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIC8vIHsgbmFtZTogJ2RlcGFydG1lbnROYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0RlcGFydG1lbnQnIH0sXHJcbiAgICBdLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAncG9zaXRpb25zP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAndmlldycsXHJcbiAgICAgICAgZGlhbG9nOiB0cnVlLFxyXG4gICAgICAgIGRldGFpbHNDb25maWc6IHtcclxuICAgICAgICAgIGZvcm1Db25maWc6IHsgLi4udGhpcy5wb3NpdGlvbkZvcm1Db25maWcsIGZpZWxkczogdGhpcy5wb3NpdGlvbkZvcm1Db25maWcuZmllbGRzLmZpbHRlcih4ID0+IHgubmFtZSAhPSAnZGVwYXJ0bWVudElEJykgfSxcclxuICAgICAgICAgIGhlcm9GaWVsZDogJ3Bvc2l0aW9uSUQnLFxyXG4gICAgICAgICAgYnV0dG9uczogW3RoaXMuZWRpdFBvc2l0aW9uQnV0dG9uXSxcclxuICAgICAgICAgIHRhYmxlQ29uZmlnczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5lbXBsb3llZVRhYmxlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIGxvYWRBY3Rpb246IHsgdXJsOiAncG9zaXRpb25zL2VtcGxveWVlcy94JyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRDcml0ZXJpYTogJ2VtcGxveWVlcycsXHJcbiAgICAgICAgICAgICAgbG9hZElERmllbGQ6ICdwb3NpdGlvbklEJyxcclxuICAgICAgICAgICAgICB0YWJUaXRsZTogJ0VtcGxveWVlcycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB0aGlzLmVkaXRQb3NpdGlvbkJ1dHRvbixcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAncG9zaXRpb25zP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnMvYWxsL3gnIH0sXHJcbiAgICBmb3JtQ29uZmlnOiB0aGlzLnBvc2l0aW9uRm9ybUNvbmZpZ1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1EZXBhcnRtZW50cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBkZXBhcnRtZW50Rm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHMvaWQnIH0sXHJcbiAgfVxyXG5cclxuICBlZGl0RGVwYXJ0bWVudEJ1dHRvbjogQnV0dG9uID0geyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcsIHN1Y2Nlc3NNZXNzYWdlOiAnRWRpdGVkIFN1Y2Nlc3NmdWxseScgfSB9XHJcblxyXG4gIGRlcGFydG1lbnRUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnZGVwYXJ0bWVudElEJywgdHlwZTogJ251bWJlcicsIGFsaWFzOiAnSUQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDcmVhdGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdkZXBhcnRtZW50cz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3ZpZXcnLFxyXG4gICAgICAgIGRpYWxvZzogdHJ1ZSxcclxuICAgICAgICBkZXRhaWxzQ29uZmlnOiB7XHJcbiAgICAgICAgICBmb3JtQ29uZmlnOiB0aGlzLmRlcGFydG1lbnRGb3JtQ29uZmlnLFxyXG4gICAgICAgICAgaGVyb0ZpZWxkOiAnZGVwYXJ0bWVudElEJyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFt0aGlzLmVkaXREZXBhcnRtZW50QnV0dG9uXSxcclxuICAgICAgICAgIHRhYmxlQ29uZmlnczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5lbXBsb3llZVRhYmxlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZW1wbG95ZWVzL3gveCcgfSxcclxuICAgICAgICAgICAgICBsb2FkQ3JpdGVyaWE6ICdkZXBhcnRtZW50JyxcclxuICAgICAgICAgICAgICBsb2FkSURGaWVsZDogJ2RlcGFydG1lbnRJRCcsXHJcbiAgICAgICAgICAgICAgdGFiVGl0bGU6ICdFbXBsb3llZXMnLFxyXG4gICAgICAgICAgICAgIGVsZXZhdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wb3NpdGlvbnNUYWJsZUNvbmZpZyxcclxuICAgICAgICAgICAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzL3gveCcgfSxcclxuICAgICAgICAgICAgICBsb2FkQ3JpdGVyaWE6ICdwb3NpdGlvbnMnLFxyXG4gICAgICAgICAgICAgIGxvYWRJREZpZWxkOiAnZGVwYXJ0bWVudElEJyxcclxuICAgICAgICAgICAgICB0YWJUaXRsZTogJ1Bvc2l0aW9ucycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdGhpcy5lZGl0RGVwYXJ0bWVudEJ1dHRvbixcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5kZXBhcnRtZW50Rm9ybUNvbmZpZ1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Db250YWN0IFBlcnNvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgY29udGFjdFBlcnNvbkZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICB0aXRsZTogJ0NvbnRhY3QgUGVyc29uJyxcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCBzcGFuIDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdtb2JpbGUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY29udGFjdE1ldGhvZHMnLCB0eXBlOiAnY29tcG9zaXRlJywgc3BhbjogdHJ1ZSwgc3ViZmllbGRzIDpbXHJcbiAgICAgICAgeyBuYW1lOiAnY2FuQ2FsbCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnQ2FuIENhbGwnIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnY2FuU01TJywgdHlwZTogJ2NoZWNrYm94JywgYWxpYXM6ICdDYW4gU01TJyB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2NhbldoYXRzQXBwJywgdHlwZTogJ2NoZWNrYm94JywgYWxpYXM6ICdDYW4gV2hhdHNBcHAnIH1cclxuICAgICAgXSB9LFxyXG5cclxuICAgIF0sXHJcbiAgICByZXNldDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbnRhY3RQZXJzb25UYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICB0YWJUaXRsZTogJ0NvbnRhY3QgUGVyc29ucycsXHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJywgJ2NvbnRhY3RNZXRob2RzJ10sXHJcbiAgICBlbGV2YXRpb246ICdub25lJyxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCB9LFxyXG4gICAgICB7IG5hbWU6ICdtb2JpbGUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdjb250YWN0TWV0aG9kcycsXHJcbiAgICAgICAgdHlwZTogJ2ljb24nLFxyXG4gICAgICAgIGljb25zOiBbXHJcbiAgICAgICAgICB7IG5hbWU6ICdjYWxsJywgY29sb3I6ICdncmVlbicsIGNvbmRpdGlvbjogeCA9PiB4LmNhbkNhbGwsIHRpcDogJ0F2YWlsYWJsZSBmb3IgQ2FsbHMnIH0sXHJcbiAgICAgICAgICB7IG5hbWU6ICdzbXMnLCBjb2xvcjogJ2dyZWVuJywgY29uZGl0aW9uOiB4ID0+IHguY2FuU01TLCB0aXA6ICdBdmFpbGFibGUgZm9yIFNNUycgfSxcclxuICAgICAgICAgIHsgbmFtZTogJ2ZvcnVtJywgY29sb3I6ICdncmVlbicsIGNvbmRpdGlvbjogeCA9PiB4LmNhbldoYXRzQXBwLCB0aXA6ICdBdmFpbGFibGUgb24gV2hhdHNBcHAnIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdBZGQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdjb250YWN0cGVyc29ucz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSwgY29uZmlybTogeyBtZXNzYWdlOiAnQWRkIGNvbnRhY3QgcGVyc29uPycgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnY29udGFjdHBlcnNvbnM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2NvbnRhY3RwZXJzb25zP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH1cclxuICAgIF0sXHJcbiAgICBmb3JtQ29uZmlnOiB0aGlzLmNvbnRhY3RQZXJzb25Gb3JtQ29uZmlnXHJcbiAgfTtcclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DdXN0b21lcnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgY3VzdG9tZXJGb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjb250YWN0UGVyc29uJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FkZHJlc3MnLCB0eXBlOiAndGV4dCcsIHJvd3M6IDIsIHNwYW46IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnY3VzdG9tZXJUZW5hbnRJRCcsIGFsaWFzOiAnQ3VzdG9tZXIgVGVuYW50JywgdHlwZTogJ3NlbGVjdCcsIGxvYWRBY3Rpb246IHsgdXJsOiAndGVuYW50cy9saXN0L3gnIH0gLCBudWxsYWJsZTogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIGN1c3RvbWVyRGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgIGZvcm1Db25maWcgOiB0aGlzLmN1c3RvbWVyRm9ybUNvbmZpZyxcclxuICAgIGhlcm9GaWVsZCA6ICdjdXN0b21lcklEJyxcclxuICAgIHRhYmxlQ29uZmlnczogW1xyXG4gICAgICAvLyAuLi4gZXhpc3RpbmcgdGFibGVzXHJcbiAgICAgIHtcclxuICAgICAgICAuLi50aGlzLmNvbnRhY3RQZXJzb25UYWJsZUNvbmZpZyxcclxuICAgICAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2NvbnRhY3RwZXJzb25zL2N1c3RvbWVyL3gnIH0sXHJcbiAgICAgICAgbG9hZENyaXRlcmlhOiAnY3VzdG9tZXInLFxyXG4gICAgICAgIGxvYWRJREZpZWxkOiAnY3VzdG9tZXJJRCdcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcblxyXG4gIGN1c3RvbWVyc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG5cclxuICAgIGNvbHVtbnM6IFtcclxuXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAncGhvbmUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY29udGFjdFBlcnNvbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdpc0xpbmtlZCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnTGlua2VkJyB9LFxyXG5cclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnY3VzdG9tZXJzP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUsIGRldGFpbHNDb25maWc6IHRoaXMuY3VzdG9tZXJEZXRhaWxzQ29uZmlnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdjdXN0b21lcnM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9LCBkZXRhaWxzQ29uZmlnOiB0aGlzLmN1c3RvbWVyRGV0YWlsc0NvbmZpZyB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdjdXN0b21lcnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdjdXN0b21lcnMvYWxsL3gnIH0sXHJcblxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5jdXN0b21lckZvcm1Db25maWdcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVN1cHBsaWVycy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBzdXBwbGllckZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcblxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bob25lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2NvbnRhY3RQZXJzb24nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0Jywgcm93czogMiwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIHN1cHBsaWVyRGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgIGZvcm1Db25maWcgOiB0aGlzLnN1cHBsaWVyRm9ybUNvbmZpZyxcclxuICAgIGhlcm9GaWVsZCA6ICdzdXBwbGllcklEJyxcclxuICAgIHRhYmxlQ29uZmlnczogW1xyXG4gICAgICAvLyAuLi4gZXhpc3RpbmcgdGFibGVzXHJcbiAgICAgIHtcclxuICAgICAgICAuLi50aGlzLmNvbnRhY3RQZXJzb25UYWJsZUNvbmZpZyxcclxuICAgICAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2NvbnRhY3RwZXJzb25zL3N1cHBsaWVyL3gnIH0sXHJcbiAgICAgICAgbG9hZENyaXRlcmlhOiAnc3VwcGxpZXInLFxyXG4gICAgICAgIGxvYWRJREZpZWxkOiAnc3VwcGxpZXJJRCdcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcblxyXG4gIHN1cHBsaWVyc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG5cclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcblxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bob25lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2NvbnRhY3RQZXJzb24nLCB0eXBlOiAndGV4dCcgfSxcclxuXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3N1cHBsaWVycz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSx9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlLCBkZXRhaWxzQ29uZmlnOiB0aGlzLnN1cHBsaWVyRGV0YWlsc0NvbmZpZyB9LFxyXG4gICAgICB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnc3VwcGxpZXJzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSwgZGV0YWlsc0NvbmZpZzogdGhpcy5zdXBwbGllckRldGFpbHNDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnc3VwcGxpZXJzP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnc3VwcGxpZXJzL2FsbC94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuc3VwcGxpZXJGb3JtQ29uZmlnXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tT3RoZXIgY29kZVxyXG5cclxuICBwcml2YXRlIGxpc3RDYWNoZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FjaGVEdXJhdGlvbiA9IDUgKiA2MCAqIDEwMDA7XHJcbiAgcHJpdmF0ZSBjYWNoZVRpbWVzdGFtcHM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcbiAgcHVibGljIENhbGxBcGkoYWN0aW9uOiBBY3Rpb24sIGRhdGE6IGFueSA9ICcnICkge1xyXG5cclxuICAgIGlmIChhY3Rpb24udXJsLmluY2x1ZGVzKCcvbGlzdC8nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVMaXN0Q2FsbChhY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghYWN0aW9uLm1ldGhvZCl7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChhY3Rpb24udXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihhY3Rpb24ubWV0aG9kID09J2dldCcpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoYWN0aW9uLnVybCk7XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbi5tZXRob2QgPT0gJ3Bvc3QnKXtcclxuXHJcbiAgICAgIGlmIChhY3Rpb24uaXNGb3JtRGF0YSB8fCBhY3Rpb24udXJsLmluY2x1ZGVzKCcvZm9ybScpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdF9Gb3JtRGF0YShhY3Rpb24udXJsLCBkYXRhKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChhY3Rpb24udXJsLCBkYXRhKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoYWN0aW9uLnVybCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVMaXN0Q2FsbChhY3Rpb246IEFjdGlvbikge1xyXG4gICAgY29uc3QgY2FjaGVLZXkgPSBhY3Rpb24udXJsO1xyXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgIC8vIFJldHVybiBjYWNoZSBpZiB2YWxpZCBhbmQgbm90IGZvcmNpbmcgcmVmcmVzaFxyXG4gICAgaWYgKCFhY3Rpb24uc2tpcENhY2hlICYmIHRoaXMubGlzdENhY2hlW2NhY2hlS2V5XSAmJiBjdXJyZW50VGltZSAtIHRoaXMuY2FjaGVUaW1lc3RhbXBzW2NhY2hlS2V5XSA8IHRoaXMuY2FjaGVEdXJhdGlvbikge1xyXG4gICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXHJcbiAgICAgICAgZGF0YTogdGhpcy5saXN0Q2FjaGVbY2FjaGVLZXldXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE1ha2UgQVBJIGNhbGwgYW5kIGNhY2hlIHJlc3VsdFxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KGFjdGlvbi51cmwpLnBpcGUoXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMubGlzdENhY2hlW2NhY2hlS2V5XSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlVGltZXN0YW1wc1tjYWNoZUtleV0gPSBjdXJyZW50VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGludmFsaWRhdGUgY2FjaGUgb24gZGF0YSBjaGFuZ2VcclxuICBwdWJsaWMgaW52YWxpZGF0ZUxpc3RDYWNoZShlbnRpdHlVcmw6IHN0cmluZykge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5saXN0Q2FjaGUpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgY2FjaGUgZW50cmllcyByZWxhdGVkIHRvIHRoaXMgZW50aXR5XHJcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoZW50aXR5VXJsKSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmxpc3RDYWNoZVtrZXldO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlVGltZXN0YW1wc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDaGVja1dlbGNvbWVkKHBhdGg6IHN0cmluZyA9ICdob21lL2FkbWluL3dlbGNvbWUnKSB7XHJcbiAgICB0aGlzLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnQvd2VsY29tZS94JyB9KS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgaWYgKCF4LmRhdGEpIHtcclxuICAgICAgICB0aGlzLk5hdmlnYXRlKHBhdGgpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHB1YmxpYyBOYXZpZ2F0ZShwYXRoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTmF2aWdhdGVXaXRoVmFsdWUocGF0aDogc3RyaW5nLCB2YWx1ZSA6IHN0cmluZyl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aF0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgdjogdmFsdWUgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TmF2aWdhdGlvblZhbHVlKCl7XHJcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInZcIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1widlwiXVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRtcEFjY291bnRJRDtcclxuXHJcblxyXG5cclxuICAvL1VzZXJzXHJcbiAgcHVibGljIEdldFVzZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoXCJVc2VyL2FsbC94XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZ2lzdGVyQWNjb3VudCh1KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9yZWdpc3RlclwiLCB1KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRVc2VyQnlJRCh2YWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KGBVc2VyL2lkLyR7dmFsfWApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZVVzZXIocHJvZmlsZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvZWRpdFwiLCBwcm9maWxlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVbmxvY2tVc2VyKHVzZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL3VubG9ja1wiLCB1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2NrVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9sb2NrXCIsIHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERlbGV0ZVVzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvZGVsZXRlXCIsIHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvZ2luKHU6IFVzZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2xvZ2luXCIsIHUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENoYW5nZVBhc3N3b3JkKHUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2NoYW5nZXBhc3N3b3JkLXNlbGZcIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2hhbmdlUGFzc3dvcmRBZG1pbih1KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9jaGFuZ2VwYXNzd29yZC1hZG1pblwiLCB1KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxmUmVzZXQodTogVXNlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiQmFzaWMvU2VsZlJlc2V0XCIsIHUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vUm9sZXNcclxuXHJcbiAgcHVibGljIFBvc3RSb2xlKHJvbGUsIGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KGBSb2xlP2FjdGlvbj0ke2FjdGlvbn1gLCByb2xlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQdXRSb2xlKHJvbGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlB1dChcIlJvbGVcIiwgcm9sZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0Um9sZShieTogc3RyaW5nLCB2YWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KFwiUm9sZS9hbGwveFwiKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9Mb2dzXHJcbiAgcHVibGljIEdldExvZyhieTogc3RyaW5nLCB2YWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KFwiTG9nL2FsbC94XCIpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vU2V0dGluZ3NcclxuICBwdWJsaWMgR2V0U2V0dGluZyhieTogc3RyaW5nLCB2YWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KFwiU2V0dGluZy9hbGwveFwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVTZXR0aW5nKHNldHRpbmcsIGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KGBTZXR0aW5nP2FjdGlvbj0ke2FjdGlvbn1gLCBzZXR0aW5nKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
568
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUIsU0FBUyxFQUFVLE9BQU8sRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFRNUQsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsV0FBd0IsRUFBUyxNQUFjLEVBQVUsS0FBcUI7UUFBOUUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUEySGxHLGNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQU03RCxZQUFPLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdEIsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN2QixhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdkIsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFFMUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDekIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUM1QixhQUFRLEdB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LElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBR0QsT0FBTztJQUVBLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBYztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxPQUFPLENBQUMsRUFBVSxFQUFFLEdBQVc7UUFDcEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBSUQsTUFBTTtJQUNDLE1BQU0sQ0FBQyxFQUFVLEVBQUUsR0FBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFHRCxVQUFVO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBYztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDOzsyR0E1cUJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEFwaVJlc3BvbnNlLCBBcHBDb25maWcsIEJ1dHRvbiwgQ2FwSXRlbSwgRGV0YWlsc0RpYWxvZ0NvbmZpZywgRm9ybUNvbmZpZywgVGFibGVDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy9MaWJDbGFzc2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlTGliIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuXHJcbiAgICB0aGlzLmFwcENvbmZpZy5hcHBOYW1lID0gXCJBcHAtTmFtZVwiO1xyXG4gICAgdGhpcy5hcHBDb25maWcubG9nbyA9IFwiLi9hc3NldHMvbG9nby5wbmdcIlxyXG4gICAgdGhpcy5hcHBDb25maWcuQURBdXRoID0gdHJ1ZTtcclxuICAgIHRoaXMuYXBwQ29uZmlnLmNhcEl0ZW1zID0gW3RoaXMuY2FwTXVsdGl0ZW5hbnQsIHRoaXMuY2FwQWRtaW4sIHRoaXMuY2FwSG9tZV07XHJcblxyXG5cclxuICAgIHRoaXMuY2FwSG9tZS5uYW1lID0gXCJjYXAxXCI7XHJcbiAgICB0aGlzLmNhcEhvbWUuZGlzcGxheSA9IFwiSG9tZVwiO1xyXG4gICAgdGhpcy5jYXBIb21lLmxpbmsgPSBcImhvbWVcIjtcclxuICAgIHRoaXMuY2FwSG9tZS5pY29uID1cImhvbWVcIjtcclxuXHJcblxyXG4gICAgdGhpcy5jYXBBZG1pbi5uYW1lID0gXCJjYXAyXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmRpc3BsYXkgPSBcIkFkbWluXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmljb24gPSBcInNlY3VyaXR5XCJcclxuICAgIHRoaXMuY2FwQWRtaW4uY2FwU3ViSXRlbXMgPSBbdGhpcy5jYXBVc2VycywgdGhpcy5jYXBSb2xlcywgdGhpcy5jYXBMb2dzLCB0aGlzLmNhcFNldHRpbmdzLCB0aGlzLmNhcEFwcHJvdmFsc0NvbmZpZ107XHJcblxyXG4gICAgdGhpcy5jYXBVc2Vycy5uYW1lID0gXCJjYXAzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmRpc3BsYXkgPSBcIlVzZXJzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmxpbmsgPSBcImhvbWUvYWRtaW4vdXNlcnNcIjtcclxuICAgIHRoaXMuY2FwVXNlcnMuaWNvbiA9IFwiZ3JvdXBcIjtcclxuXHJcbiAgICB0aGlzLmNhcFJvbGVzLm5hbWUgPSBcImNhcDRcIlxyXG4gICAgdGhpcy5jYXBSb2xlcy5kaXNwbGF5ID0gXCJSb2xlc1wiO1xyXG4gICAgdGhpcy5jYXBSb2xlcy5saW5rID0gXCJob21lL2FkbWluL3JvbGVzXCI7XHJcbiAgICB0aGlzLmNhcFJvbGVzLmljb24gPSBcIndvcmtcIjtcclxuXHJcbiAgICB0aGlzLmNhcExvZ3MubmFtZSA9IFwiY2FwNVwiXHJcbiAgICB0aGlzLmNhcExvZ3MuZGlzcGxheSA9IFwiTG9nc1wiO1xyXG4gICAgdGhpcy5jYXBMb2dzLmxpbmsgPSBcImhvbWUvYWRtaW4vbG9nc1wiO1xyXG4gICAgdGhpcy5jYXBMb2dzLmljb24gPSBcInRleHRfc25pcHBldFwiO1xyXG5cclxuICAgIHRoaXMuY2FwU2V0dGluZ3MubmFtZSA9IFwiY2FwNlwiXHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLmRpc3BsYXkgPSBcIlNldHRpbmdzXCI7XHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLmxpbmsgPSBcImhvbWUvYWRtaW4vc2V0dGluZ3NcIjtcclxuICAgIHRoaXMuY2FwU2V0dGluZ3MuaWNvbiA9XCJzZXR0aW5nc1wiO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcE11bHRpdGVuYW50Lm5hbWUgPSBcImNhcDdcIlxyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5kaXNwbGF5ID0gXCJNdWx0aXRlbmFudFwiO1xyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5pY29uID0gXCJhcGFydG1lbnRcIlxyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5jYXBTdWJJdGVtcyA9IFt0aGlzLmNhcFRlbmFudHMsIHRoaXMuY2FwTWVtYmVyc2hpcCwgdGhpcy5jYXBQbGFucyBdO1xyXG5cclxuICAgIHRoaXMuY2FwVGVuYW50cy5uYW1lID0gXCJjYXA4XCJcclxuICAgIHRoaXMuY2FwVGVuYW50cy5kaXNwbGF5ID0gXCJUZW5hbnRzXCI7XHJcbiAgICB0aGlzLmNhcFRlbmFudHMubGluayA9IFwiaG9tZS9hZG1pbi90ZW5hbnRzXCI7XHJcblxyXG4gICAgdGhpcy5jYXBNZW1iZXJzaGlwLm5hbWUgPSBcImNhcDlcIlxyXG4gICAgdGhpcy5jYXBNZW1iZXJzaGlwLmRpc3BsYXkgPSBcIk1lbWJlcnNoaXBcIjtcclxuICAgIHRoaXMuY2FwTWVtYmVyc2hpcC5saW5rID0gXCJob21lL2FkbWluL21lbWJlcnNoaXBcIjtcclxuXHJcbiAgICB0aGlzLmNhcFBsYW5zLm5hbWUgPSBcImNhcDEwXCJcclxuICAgIHRoaXMuY2FwUGxhbnMuZGlzcGxheSA9IFwiUGxhbnNcIjtcclxuICAgIHRoaXMuY2FwUGxhbnMubGluayA9IFwiaG9tZS9hZG1pbi9wbGFuc1wiO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcEdlbmVyYWwubmFtZSA9IFwiY2FwMTFcIlxyXG4gICAgdGhpcy5jYXBHZW5lcmFsLmRpc3BsYXkgPSBcIkdlbmVyYWxcIjtcclxuICAgIHRoaXMuY2FwR2VuZXJhbC5jYXBTdWJJdGVtcyA9IFt0aGlzLmNhcEFwcHJvdmFscyx0aGlzLmNhcEN1c3RvbWVycywgdGhpcy5jYXBJbnZlbnRvcnksIHRoaXMuY2FwQWNjb3VudHMsIHRoaXMuY2FwU3VwcGxpZXJzLCB0aGlzLmNhcFRhc2tzXTtcclxuXHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5uYW1lID0gXCJjYXAxMlwiXHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5kaXNwbGF5ID0gXCJDdXN0b21lcnNcIjtcclxuICAgIHRoaXMuY2FwQ3VzdG9tZXJzLmxpbmsgPSBcImhvbWUvYWRtaW4vY3VzdG9tZXJzXCI7XHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5pY29uID0gXCJncm91cFwiXHJcblxyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkubmFtZSA9IFwiY2FwMTNcIlxyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkuZGlzcGxheSA9IFwiSW52ZW50b3J5XCI7XHJcbiAgICB0aGlzLmNhcEludmVudG9yeS5saW5rID0gXCJob21lL2FkbWluL2ludmVudG9yeVwiO1xyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkuaWNvbiA9IFwic3RvcmVmcm9udFwiXHJcblxyXG4gICAgdGhpcy5jYXBBY2NvdW50cy5uYW1lID0gXCJjYXAxNFwiXHJcbiAgICB0aGlzLmNhcEFjY291bnRzLmRpc3BsYXkgPSBcIkFjY291bnRzXCI7XHJcbiAgICB0aGlzLmNhcEFjY291bnRzLmxpbmsgPSBcImhvbWUvYWRtaW4vYWNjb3VudHNcIjtcclxuICAgIHRoaXMuY2FwQWNjb3VudHMuaWNvbiA9IFwiYWNjb3VudF9iYWxhbmNlX3dhbGxldFwiXHJcblxyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMubmFtZSA9IFwiY2FwMTVcIlxyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMuZGlzcGxheSA9IFwiU3VwcGxpZXJzXCI7XHJcbiAgICB0aGlzLmNhcFN1cHBsaWVycy5saW5rID0gXCJob21lL2FkbWluL3N1cHBsaWVyc1wiO1xyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMuaWNvbiA9IFwiZ3JvdXBzXCJcclxuXHJcbiAgICB0aGlzLmNhcFRhc2tzLm5hbWUgPSBcImNhcDE2XCJcclxuICAgIHRoaXMuY2FwVGFza3MuZGlzcGxheSA9IFwiVGFza3NcIjtcclxuICAgIHRoaXMuY2FwVGFza3MubGluayA9IFwiaG9tZS9hZG1pbi90YXNrc1wiO1xyXG4gICAgdGhpcy5jYXBUYXNrcy5pY29uID0gXCJjaGVja19ib3hcIlxyXG5cclxuXHJcbiAgICB0aGlzLmNhcEhSLm5hbWUgPSBcImNhcDE3XCJcclxuICAgIHRoaXMuY2FwSFIuZGlzcGxheSA9IFwiSFJcIjtcclxuICAgIHRoaXMuY2FwSFIubGluayA9IFwiaG9tZS9hZG1pbi9oclwiO1xyXG4gICAgdGhpcy5jYXBIUi5pY29uID0gXCJkaXZlcnNpdHlfM1wiXHJcbiAgICB0aGlzLmNhcEhSLmNhcFN1Ykl0ZW1zID0gW3RoaXMuY2FwRGVwYXJ0bWVudHMsIHRoaXMuY2FwUG9zaXRpb25zLCB0aGlzLmNhcEVtcGxveWVlcyxdXHJcblxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuZGlzcGxheSA9IFwiRW1wbG95ZWVzXCI7XHJcbiAgICB0aGlzLmNhcEVtcGxveWVlcy5saW5rID0gXCJob21lL2FkbWluL2VtcGxveWVlc1wiO1xyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuaWNvbiA9IFwiZ3JvdXBcIlxyXG5cclxuICAgIHRoaXMuY2FwRGVwYXJ0bWVudHMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5kaXNwbGF5ID0gXCJEZXBhcnRtZW50c1wiO1xyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5saW5rID0gXCJob21lL2FkbWluL2RlcGFydG1lbnRzXCI7XHJcbiAgICB0aGlzLmNhcERlcGFydG1lbnRzLmljb24gPSBcImJ1c2luZXNzX2NlbnRlclwiXHJcblxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuZGlzcGxheSA9IFwiUG9zaXRpb25zXCI7XHJcbiAgICB0aGlzLmNhcFBvc2l0aW9ucy5saW5rID0gXCJob21lL2FkbWluL3Bvc2l0aW9uc1wiO1xyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuaWNvbiA9IFwicGljdHVyZV9pbl9waWN0dXJlX21lZGl1bVwiXHJcblxyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMubmFtZSA9IFwiY2FwMThcIlxyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMuZGlzcGxheSA9IFwiQXBwcm92YWxzXCI7XHJcbiAgICB0aGlzLmNhcEFwcHJvdmFscy5saW5rID0gXCJob21lL2FkbWluL2FwcHJvdmFsc1wiO1xyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHMuaWNvbiA9IFwidGFza19hbHRcIlxyXG5cclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLm5hbWUgPSBcImNhcDE5XCJcclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLmRpc3BsYXkgPSBcIkFwcHJvdmFscyBDb25maWdcIjtcclxuICAgIHRoaXMuY2FwQXBwcm92YWxzQ29uZmlnLmxpbmsgPSBcImhvbWUvYWRtaW4vYXBwcm92YWxzLWNvbmZpZ1wiO1xyXG4gICAgdGhpcy5jYXBBcHByb3ZhbHNDb25maWcuaWNvbiA9IFwicHVibGlzaGVkX3dpdGhfY2hhbmdlc1wiXHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcbiAgcHJpdmF0ZSBhcHBDb25maWdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuYXBwQ29uZmlnKTtcclxuICBwdWJsaWMgYXBwQ29uZmlnT2JzZXJ2ID0gdGhpcy5hcHBDb25maWdTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgVXBkYXRlQXBwQ29uZmlnKGNvbmZpZzogQXBwQ29uZmlnKSB7XHJcbiAgICB0aGlzLmFwcENvbmZpZ1NvdXJjZS5uZXh0KGNvbmZpZyk7XHJcbiAgICB0aGlzLmFwcENvbmZpZyA9IGNvbmZpZztcclxuICB9XHJcblxyXG4gIGNhcEhvbWUgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBBZG1pbiA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFVzZXJzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwUm9sZXMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBMb2dzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwU2V0dGluZ3MgPSBuZXcgQ2FwSXRlbTtcclxuXHJcbiAgY2FwTXVsdGl0ZW5hbnQgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBUZW5hbnRzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwTWVtYmVyc2hpcCA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFBsYW5zID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIGNhcEdlbmVyYWwgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBDdXN0b21lcnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBJbnZlbnRvcnkgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBBY2NvdW50cyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFN1cHBsaWVycyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFRhc2tzID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIGNhcEhSID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwRW1wbG95ZWVzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwRGVwYXJ0bWVudHMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBQb3NpdGlvbnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBHcmFkZXMgPSBuZXcgQ2FwSXRlbTtcclxuXHJcbiAgY2FwQXBwcm92YWxzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwQXBwcm92YWxzQ29uZmlnID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIHB1YmxpYyB0bXBQcm9maWxldXNlck5hbWUgPSBcIlwiO1xyXG5cclxuXHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGVwYXJ0bWVtdHMgRm9ybS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBkZXBhcnRtZW50Rm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIHNlY3VyaXR5OiB7IGFsbG93OiBbdGhpcy5jYXBEZXBhcnRtZW50c10gfSxcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHMvaWQnIH0sXHJcbiAgICBoZXJvRmllbGQ6ICdkZXBhcnRtZW50SUQnXHJcbiAgfVxyXG5cclxuICBlZGl0RGVwYXJ0bWVudEJ1dHRvbjogQnV0dG9uID0geyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcsIHN1Y2Nlc3NNZXNzYWdlOiAnRWRpdGVkIFN1Y2Nlc3NmdWxseScgfSB9XHJcblxyXG4gIGRlcGFydG1lbnREZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5kZXBhcnRtZW50Rm9ybUNvbmZpZyxcclxuICAgIGhlcm9GaWVsZDogJ2RlcGFydG1lbnRJRCcsXHJcbiAgICBidXR0b25zOiBbdGhpcy5lZGl0RGVwYXJ0bWVudEJ1dHRvbl0sXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVBvc2l0aW9ucyBGb3JtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIHBvc2l0aW9uRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIHNlY3VyaXR5OiB7IGFsbG93OiBbdGhpcy5jYXBQb3NpdGlvbnNdIH0sXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCB0eXBlOiAndGV4dCcsIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlcGFydG1lbnRJRCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcsIHR5cGU6ICdzZWxlY3QnLCBsb2FkQWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzL2xpc3QveCcgfSwgZGV0YWlsc0NvbmZpZzogdGhpcy5kZXBhcnRtZW50RGV0YWlsc0NvbmZpZyB9LFxyXG5cclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3Bvc2l0aW9ucy9pZCcgfSxcclxuICAgIGhlcm9GaWVsZDogJ3Bvc2l0aW9uSUQnXHJcbiAgfVxyXG5cclxuICBlZGl0UG9zaXRpb25CdXR0b246IEJ1dHRvbiA9IHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0Jywgc3VjY2Vzc01lc3NhZ2U6ICdFZGl0ZWQgU3VjY2Vzc2Z1bGx5JyB9IH1cclxuXHJcbiAgcG9zaXRpb25EZXRhaWxzQ29uZmlnIDogRGV0YWlsc0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgIGZvcm1Db25maWcgOiB0aGlzLnBvc2l0aW9uRm9ybUNvbmZpZyxcclxuICAgIGhlcm9GaWVsZCA6ICdwb3NpdGlvbklEJyxcclxuICAgIGJ1dHRvbnM6IFt0aGlzLmVkaXRQb3NpdGlvbkJ1dHRvbl0sXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FbXBsb3llZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIGdlbmRlcnMgPSBbXHJcbiAgICB7IG5hbWU6ICdNYWxlJywgdmFsdWU6IDEgfSxcclxuICAgIHsgbmFtZTogJ0ZlbWFsZScsIHZhbHVlOiAyIH1cclxuICBdXHJcblxyXG4gIGVtcGxveWVlRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIHNlY3VyaXR5IDoge2FsbG93IDogW3RoaXMuY2FwRW1wbG95ZWVzXX0sXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmF0aW9uYWxJRCcsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdOYXRpb25hbCBJRCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2dlbmRlcicsIGFsaWFzOiAnR2VuZGVyJywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHRoaXMuZ2VuZGVycywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZmlyc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZGF0ZU9mQmlydGgnLCB0eXBlOiAnZGF0ZScsIGFsaWFzOiAnRGF0ZSBvZiBCaXJ0aCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtcGxveW1lbnREYXRlJywgdHlwZTogJ2RhdGUnLCBhbGlhczogJ0VtcGxveW1lbnQgRGF0ZScsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlcGFydG1lbnRJRCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcsIHR5cGU6ICdzZWxlY3QnLCBsb2FkQWN0aW9uIDogeyB1cmwgOiAnZGVwYXJ0bWVudHMvbGlzdC94J30sIGRldGFpbHNDb25maWc6IHRoaXMuZGVwYXJ0bWVudERldGFpbHNDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAncG9zaXRpb25JRCcsIGFsaWFzOiAnUG9zaXRpb24nLCB0eXBlOiAnc2VsZWN0JywgbG9hZEFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnMvbGlzdC94JyB9LCBtYXN0ZXJGaWVsZDogJ2RlcGFydG1lbnRJRCcsIGRldGFpbHNDb25maWc6IHRoaXMucG9zaXRpb25EZXRhaWxzQ29uZmlnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtcGxveW1lbnRTdGF0dXMnLCBhbGlhczogJ0VtcGxveW1lbnQgU3RhdHVzJywgdHlwZTogJ3NlbGVjdCcsIGxvYWRBY3Rpb246IHsgdXJsOiAnZW1wbG95ZWVzL2xpc3QvZW1wbG95bWVudC1zdGF0dXMnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnYWN0aXZlU3RhdHVzJywgYWxpYXM6ICdBY3RpdmUgU3RhdHVzJywgdHlwZTogJ3NlbGVjdCcsIGxvYWRBY3Rpb246IHsgdXJsOiAnZW1wbG95ZWVzL2xpc3QvYWN0aXZlLXN0YXR1cycgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCByb3dzOiAyLCBzcGFuOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bob25lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ25vdGUnLCB0eXBlOiAndGV4dCcsIHJvd3M6IDIsIHNwYW46IHRydWUgfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcy9pZCcgfSxcclxuICAgIGhlcm9GaWVsZDogJ2VtcGxveWVlSUQnXHJcbiAgfVxyXG5cclxuICBlbXBsb3llZVRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAnZGVwYXJ0bWVudE5hbWUnLCAncG9zaXRpb25OYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdnZW5kZXJOYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0dlbmRlcicgfSxcclxuICAgICAgeyBuYW1lOiAnZGVwYXJ0bWVudE5hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcgfSxcclxuICAgICAgeyBuYW1lOiAncG9zaXRpb25OYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ1Bvc2l0aW9uJyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbXBsb3ltZW50U3RhdHVzTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdFbXBsb3ltZW50IFN0YXR1cycgfSxcclxuICAgICAgeyBuYW1lOiAnYWN0aXZlU3RhdHVzTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdBY3RpdmUgU3RhdHVzJyB9LFxyXG4gICAgXSxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdlbXBsb3llZXM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcz9hY3Rpb249ZGVsZXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgXSxcclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnZW1wbG95ZWVzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5lbXBsb3llZUZvcm1Db25maWdcclxuICB9XHJcblxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUG9zaXRpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIHBvc2l0aW9uc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdkZXBhcnRtZW50TmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgXSxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3Bvc2l0aW9ucz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ3ZpZXcnLFxyXG4gICAgICAgIGRpYWxvZzogdHJ1ZSxcclxuICAgICAgICBkZXRhaWxzQ29uZmlnOiB7XHJcbiAgICAgICAgICBmb3JtQ29uZmlnOiB0aGlzLnBvc2l0aW9uRm9ybUNvbmZpZyAsXHJcbiAgICAgICAgICBoZXJvRmllbGQ6ICdwb3NpdGlvbklEJyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFt0aGlzLmVkaXRQb3NpdGlvbkJ1dHRvbl0sXHJcbiAgICAgICAgICB0YWJsZUNvbmZpZ3M6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZW1wbG95ZWVUYWJsZUNvbmZpZyxcclxuICAgICAgICAgICAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcy94L3gnIH0sIGxvYWRDcml0ZXJpYTogJ3Bvc2l0aW9uJywgbG9hZElERmllbGQ6ICdwb3NpdGlvbklEJyxcclxuICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmVtcGxveWVlVGFibGVDb25maWcuY29sdW1ucy5maWx0ZXIoeCA9PiBbJ2RlcGFydG1lbnROYW1lJywgJ3Bvc2l0aW9uTmFtZSddLmluY2x1ZGVzKHgubmFtZSkgPT0gZmFsc2UpLFxyXG4gICAgICAgICAgICAgIHRhYlRpdGxlOiAnRW1wbG95ZWVzJyxcclxuICAgICAgICAgICAgICBlbGV2YXRpb246ICdub25lJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHRoaXMuZWRpdFBvc2l0aW9uQnV0dG9uLFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3Bvc2l0aW9ucy9hbGwveCcgfSxcclxuICAgIGZvcm1Db25maWc6IHRoaXMucG9zaXRpb25Gb3JtQ29uZmlnXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLURlcGFydG1lbnRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICBkZXBhcnRtZW50VGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIC8vIHsgbmFtZTogJ2RlcGFydG1lbnRJRCcsIHR5cGU6ICdudW1iZXInLCBhbGlhczogJ0lEJyB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICBdLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHM/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICd2aWV3JyxcclxuICAgICAgICBkaWFsb2c6IHRydWUsXHJcbiAgICAgICAgZGV0YWlsc0NvbmZpZzoge1xyXG4gICAgICAgICAgZm9ybUNvbmZpZzogdGhpcy5kZXBhcnRtZW50Rm9ybUNvbmZpZyxcclxuICAgICAgICAgIGhlcm9GaWVsZDogJ2RlcGFydG1lbnRJRCcsXHJcbiAgICAgICAgICBidXR0b25zOiBbdGhpcy5lZGl0RGVwYXJ0bWVudEJ1dHRvbl0sXHJcbiAgICAgICAgICB0YWJsZUNvbmZpZ3M6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZW1wbG95ZWVUYWJsZUNvbmZpZyxcclxuICAgICAgICAgICAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2VtcGxveWVlcy94L3gnIH0sIGxvYWRDcml0ZXJpYTogJ2RlcGFydG1lbnQnLCBsb2FkSURGaWVsZDogJ2RlcGFydG1lbnRJRCcsXHJcbiAgICAgICAgICAgICAgY29sdW1uczogdGhpcy5lbXBsb3llZVRhYmxlQ29uZmlnLmNvbHVtbnMuZmlsdGVyKHggPT4gWydkZXBhcnRtZW50TmFtZScsICdwb3NpdGlvbk5hbWUnXS5pbmNsdWRlcyh4Lm5hbWUpID09IGZhbHNlKSxcclxuICAgICAgICAgICAgICB0YWJUaXRsZTogJ0VtcGxveWVlcycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBvc2l0aW9uc1RhYmxlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIGxvYWRBY3Rpb246IHsgdXJsOiAncG9zaXRpb25zL3gveCcgfSwgbG9hZENyaXRlcmlhOiAnZGVwYXJ0bWVudCcsIGxvYWRJREZpZWxkOiAnZGVwYXJ0bWVudElEJyxcclxuICAgICAgICAgICAgICB0YWJUaXRsZTogJ1Bvc2l0aW9ucycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdGhpcy5lZGl0RGVwYXJ0bWVudEJ1dHRvbixcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5kZXBhcnRtZW50Rm9ybUNvbmZpZ1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Db250YWN0IFBlcnNvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgY29udGFjdFBlcnNvbkZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICB0aXRsZTogJ0NvbnRhY3QgUGVyc29uJyxcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCBzcGFuIDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdtb2JpbGUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY29udGFjdE1ldGhvZHMnLCB0eXBlOiAnY29tcG9zaXRlJywgc3BhbjogdHJ1ZSwgc3ViZmllbGRzIDpbXHJcbiAgICAgICAgeyBuYW1lOiAnY2FuQ2FsbCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnQ2FsbCcgfSxcclxuICAgICAgICB7IG5hbWU6ICdjYW5TTVMnLCB0eXBlOiAnY2hlY2tib3gnLCBhbGlhczogJ1NNUycgfSxcclxuICAgICAgICB7IG5hbWU6ICdjYW5XaGF0c0FwcCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnV2hhdHNBcHAnIH1cclxuICAgICAgXSB9LFxyXG5cclxuICAgIF0sXHJcbiAgICByZXNldDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbnRhY3RQZXJzb25UYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICB0YWJUaXRsZTogJ0NvbnRhY3RzJyxcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAnY29udGFjdE1ldGhvZHMnXSxcclxuICAgIGVsZXZhdGlvbjogJ25vbmUnLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcsIH0sXHJcbiAgICAgIHsgbmFtZTogJ21vYmlsZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2NvbnRhY3RNZXRob2RzJyxcclxuICAgICAgICB0eXBlOiAnaWNvbicsXHJcbiAgICAgICAgaWNvbnM6IFtcclxuICAgICAgICAgIHsgbmFtZTogJ2NhbGwnLCBjb2xvcjogJ2dyZWVuJywgY29uZGl0aW9uOiB4ID0+IHguY2FuQ2FsbCwgdGlwOiAnQXZhaWxhYmxlIGZvciBDYWxscycgfSxcclxuICAgICAgICAgIHsgbmFtZTogJ3NtcycsIGNvbG9yOiAnZ3JlZW4nLCBjb25kaXRpb246IHggPT4geC5jYW5TTVMsIHRpcDogJ0F2YWlsYWJsZSBmb3IgU01TJyB9LFxyXG4gICAgICAgICAgeyBuYW1lOiAnZm9ydW0nLCBjb2xvcjogJ2dyZWVuJywgY29uZGl0aW9uOiB4ID0+IHguY2FuV2hhdHNBcHAsIHRpcDogJ0F2YWlsYWJsZSBvbiBXaGF0c0FwcCcgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgXSxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0FkZCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2NvbnRhY3RwZXJzb25zP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9LCBjb25maXJtOiB7IG1lc3NhZ2U6ICdBZGQgY29udGFjdCBwZXJzb24/JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdjb250YWN0cGVyc29ucz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnY29udGFjdHBlcnNvbnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfVxyXG4gICAgXSxcclxuICAgIGZvcm1Db25maWc6IHRoaXMuY29udGFjdFBlcnNvbkZvcm1Db25maWdcclxuICB9O1xyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUN1c3RvbWVycy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBjdXN0b21lckZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcblxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bob25lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2NvbnRhY3RQZXJzb24nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0Jywgcm93czogMiwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdjdXN0b21lclRlbmFudElEJywgYWxpYXM6ICdDdXN0b21lciBUZW5hbnQnLCB0eXBlOiAnc2VsZWN0JywgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL2xpc3QveCcgfSAsIG51bGxhYmxlOiB0cnVlIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIHJlc2V0OiB0cnVlLFxyXG4gIH1cclxuXHJcbiAgY3VzdG9tZXJFZGl0QnV0dG9uOiBCdXR0b24gPSB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnY3VzdG9tZXJzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSB9XHJcblxyXG4gIGN1c3RvbWVyRGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgIGZvcm1Db25maWcgOiB0aGlzLmN1c3RvbWVyRm9ybUNvbmZpZyxcclxuICAgIGhlcm9GaWVsZCA6ICdjdXN0b21lcklEJyxcclxuICAgIHRhYmxlQ29uZmlnczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgLi4udGhpcy5jb250YWN0UGVyc29uVGFibGVDb25maWcsXHJcbiAgICAgICAgbG9hZEFjdGlvbjogeyB1cmw6ICdjb250YWN0cGVyc29ucy9jdXN0b21lci94JyB9LFxyXG4gICAgICAgIGxvYWRDcml0ZXJpYTogJ2N1c3RvbWVyJyxcclxuICAgICAgICBsb2FkSURGaWVsZDogJ2N1c3RvbWVySUQnXHJcbiAgICAgIH1cclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbdGhpcy5jdXN0b21lckVkaXRCdXR0b25dXHJcbiAgfTtcclxuXHJcbiAgY3VzdG9tZXJzVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG5cclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjb250YWN0UGVyc29uJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2lzTGlua2VkJywgdHlwZTogJ2NoZWNrYm94JywgYWxpYXM6ICdMaW5rZWQnIH0sXHJcblxyXG4gICAgXSxcclxuXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDcmVhdGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdjdXN0b21lcnM/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAndmlldycsIGRpYWxvZzogdHJ1ZSwgZGV0YWlsc0NvbmZpZzogdGhpcy5jdXN0b21lckRldGFpbHNDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgZGV0YWlsc0NvbmZpZzogdGhpcy5jdXN0b21lckRldGFpbHNDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnY3VzdG9tZXJzP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnY3VzdG9tZXJzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5jdXN0b21lckZvcm1Db25maWdcclxuICB9XHJcblxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU3VwcGxpZXJzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIHN1cHBsaWVyRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAncGhvbmUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnY29udGFjdFBlcnNvbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdhZGRyZXNzJywgdHlwZTogJ3RleHQnLCByb3dzOiAyLCBzcGFuOiB0cnVlIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIHJlc2V0OiB0cnVlLFxyXG4gIH1cclxuXHJcbiAgc3VwcGxpZXJFZGl0QnV0dG9uIDogQnV0dG9uID0geyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3N1cHBsaWVycz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfVxyXG5cclxuICBzdXBwbGllckRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnIDogdGhpcy5zdXBwbGllckZvcm1Db25maWcsXHJcbiAgICBoZXJvRmllbGQgOiAnc3VwcGxpZXJJRCcsXHJcbiAgICB0YWJsZUNvbmZpZ3M6IFtcclxuICAgICAge1xyXG4gICAgICAgIC4uLnRoaXMuY29udGFjdFBlcnNvblRhYmxlQ29uZmlnLFxyXG4gICAgICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnY29udGFjdHBlcnNvbnMvc3VwcGxpZXIveCcgfSxcclxuICAgICAgICBsb2FkQ3JpdGVyaWE6ICdzdXBwbGllcicsXHJcbiAgICAgICAgbG9hZElERmllbGQ6ICdzdXBwbGllcklEJ1xyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgYnV0dG9ucyA6IFt0aGlzLnN1cHBsaWVyRWRpdEJ1dHRvbl1cclxuICB9O1xyXG5cclxuICBzdXBwbGllcnNUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJ10sXHJcbiAgICBmbGF0QnV0dG9uczogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdjb250YWN0UGVyc29uJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3N1cHBsaWVycz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSx9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlLCBkZXRhaWxzQ29uZmlnOiB0aGlzLnN1cHBsaWVyRGV0YWlsc0NvbmZpZyB9LFxyXG4gICAgICB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCAgZGV0YWlsc0NvbmZpZzogdGhpcy5zdXBwbGllckRldGFpbHNDb25maWcgfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnc3VwcGxpZXJzP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnc3VwcGxpZXJzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5zdXBwbGllckZvcm1Db25maWdcclxuICB9XHJcblxyXG5cclxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLU90aGVyIGNvZGVcclxuXHJcbiAgcHJpdmF0ZSBsaXN0Q2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICBwcml2YXRlIGNhY2hlRHVyYXRpb24gPSA1ICogNjAgKiAxMDAwO1xyXG4gIHByaXZhdGUgY2FjaGVUaW1lc3RhbXBzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XHJcblxyXG4gIHB1YmxpYyBDYWxsQXBpKGFjdGlvbjogQWN0aW9uLCBkYXRhOiBhbnkgPSAnJyApIHtcclxuXHJcbiAgICBpZiAoYWN0aW9uLnVybC5pbmNsdWRlcygnL2xpc3QvJykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTGlzdENhbGwoYWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFjdGlvbi5tZXRob2Qpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoYWN0aW9uLnVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoYWN0aW9uLm1ldGhvZCA9PSdnZXQnKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KGFjdGlvbi51cmwpO1xyXG4gICAgfSBlbHNlIGlmIChhY3Rpb24ubWV0aG9kID09ICdwb3N0Jyl7XHJcblxyXG4gICAgICBpZiAoYWN0aW9uLmlzRm9ybURhdGEgfHwgYWN0aW9uLnVybC5pbmNsdWRlcygnL2Zvcm0nKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3RfRm9ybURhdGEoYWN0aW9uLnVybCwgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYWN0aW9uLnVybCA9PSAnYXBwcm92ZScgfHwgYWN0aW9uLnVybCA9PSAnZGVjbGluZScpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KGAke2RhdGEuZW5kcG9pbnR9L2FwcHJvdmU/YWN0aW9uPSR7YWN0aW9uLnVybH1gLCBkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoYWN0aW9uLnVybCwgZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChhY3Rpb24udXJsLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUxpc3RDYWxsKGFjdGlvbjogQWN0aW9uKSB7XHJcbiAgICBjb25zdCBjYWNoZUtleSA9IGFjdGlvbi51cmw7XHJcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IERhdGUubm93KCk7XHJcblxyXG4gICAgLy8gUmV0dXJuIGNhY2hlIGlmIHZhbGlkIGFuZCBub3QgZm9yY2luZyByZWZyZXNoXHJcbiAgICBpZiAoIWFjdGlvbi5za2lwQ2FjaGUgJiYgdGhpcy5saXN0Q2FjaGVbY2FjaGVLZXldICYmIGN1cnJlbnRUaW1lIC0gdGhpcy5jYWNoZVRpbWVzdGFtcHNbY2FjaGVLZXldIDwgdGhpcy5jYWNoZUR1cmF0aW9uKSB7XHJcbiAgICAgIHJldHVybiBvZih7XHJcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcclxuICAgICAgICBkYXRhOiB0aGlzLmxpc3RDYWNoZVtjYWNoZUtleV1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFrZSBBUEkgY2FsbCBhbmQgY2FjaGUgcmVzdWx0XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoYWN0aW9uLnVybCkucGlwZShcclxuICAgICAgdGFwKChyZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5saXN0Q2FjaGVbY2FjaGVLZXldID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIHRoaXMuY2FjaGVUaW1lc3RhbXBzW2NhY2hlS2V5XSA9IGN1cnJlbnRUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gaW52YWxpZGF0ZSBjYWNoZSBvbiBkYXRhIGNoYW5nZVxyXG4gIHB1YmxpYyBpbnZhbGlkYXRlTGlzdENhY2hlKGVudGl0eVVybDogc3RyaW5nKSB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmxpc3RDYWNoZSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAvLyBJbnZhbGlkYXRlIGFueSBjYWNoZSBlbnRyaWVzIHJlbGF0ZWQgdG8gdGhpcyBlbnRpdHlcclxuICAgICAgaWYgKGtleS5pbmNsdWRlcyhlbnRpdHlVcmwpKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMubGlzdENhY2hlW2tleV07XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVUaW1lc3RhbXBzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFyQ2FjaGUoKXtcclxuICAgIHRoaXMubGlzdENhY2hlID0ge307XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIENoZWNrV2VsY29tZWQocGF0aDogc3RyaW5nID0gJ2hvbWUvYWRtaW4vd2VsY29tZScpIHtcclxuICAgIHRoaXMuQ2FsbEFwaSh7IHVybDogJ3RlbmFudC93ZWxjb21lL3gnIH0pLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICBpZiAoIXguZGF0YSkge1xyXG4gICAgICAgIHRoaXMuTmF2aWdhdGUocGF0aClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHVibGljIE5hdmlnYXRlKHBhdGg6IHN0cmluZykge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBOYXZpZ2F0ZVdpdGhWYWx1ZShwYXRoOiBzdHJpbmcsIHZhbHVlIDogc3RyaW5nKXtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczogeyB2OiB2YWx1ZSB9LFxyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXROYXZpZ2F0aW9uVmFsdWUoKXtcclxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW1widlwiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJ2XCJdXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG1wQWNjb3VudElEO1xyXG5cclxuXHJcblxyXG4gIC8vVXNlcnNcclxuICBwdWJsaWMgR2V0VXNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIlVzZXIvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVnaXN0ZXJBY2NvdW50KHUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL3JlZ2lzdGVyXCIsIHUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFVzZXJCeUlEKHZhbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoYFVzZXIvaWQvJHt2YWx9YCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlVXNlcihwcm9maWxlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9lZGl0XCIsIHByb2ZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVubG9ja1VzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvdW5sb2NrXCIsIHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvY2tVc2VyKHVzZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2xvY2tcIiwgdXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRGVsZXRlVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9kZWxldGVcIiwgdXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9naW4odTogVXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvbG9naW5cIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2hhbmdlUGFzc3dvcmQodSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvY2hhbmdlcGFzc3dvcmQtc2VsZlwiLCB1KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDaGFuZ2VQYXNzd29yZEFkbWluKHUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2NoYW5nZXBhc3N3b3JkLWFkbWluXCIsIHUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGZSZXNldCh1OiBVc2VyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJCYXNpYy9TZWxmUmVzZXRcIiwgdSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9Sb2xlc1xyXG5cclxuICBwdWJsaWMgUG9zdFJvbGUocm9sZSwgYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoYFJvbGU/YWN0aW9uPSR7YWN0aW9ufWAsIHJvbGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFB1dFJvbGUocm9sZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUHV0KFwiUm9sZVwiLCByb2xlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRSb2xlKGJ5OiBzdHJpbmcsIHZhbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoXCJSb2xlL2FsbC94XCIpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvL0xvZ3NcclxuICBwdWJsaWMgR2V0TG9nKGJ5OiBzdHJpbmcsIHZhbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoXCJMb2cvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9TZXR0aW5nc1xyXG4gIHB1YmxpYyBHZXRTZXR0aW5nKGJ5OiBzdHJpbmcsIHZhbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoXCJTZXR0aW5nL2FsbC94XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZVNldHRpbmcoc2V0dGluZywgYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoYFNldHRpbmc/YWN0aW9uPSR7YWN0aW9ufWAsIHNldHRpbmcpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|