imm-element-ui 1.4.1 → 1.4.3
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/esm2022/lib/am/am.component.mjs +87 -119
- package/esm2022/lib/form/form/form.component.mjs +2 -2
- package/esm2022/lib/form/form-field/field-utils.mjs +6 -3
- package/esm2022/lib/grid/grid/grid.component.mjs +2 -2
- package/esm2022/lib/loading/loading.component.mjs +21 -0
- package/esm2022/lib/page-form/page-form.component.mjs +1 -3
- package/esm2022/lib/service/action.service.mjs +1 -2
- package/esm2022/lib/service/loading.service.mjs +32 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/imm-element-ui.mjs +279 -265
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/am/am.component.d.ts +4 -1
- package/lib/crumb-action/crumb-action.component.d.ts +1 -1
- package/lib/form/form-field/field-utils.d.ts +1 -1
- package/lib/grid/grid/grid.component.d.ts +2 -2
- package/lib/loading/loading.component.d.ts +9 -0
- package/lib/page-form/page-form.component.d.ts +0 -2
- package/lib/service/loading.service.d.ts +11 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/lib/loading/loading.component.scss +31 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Component, inject
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { finalize, map } from 'rxjs/operators';
|
|
4
4
|
import * as FileSaver from 'file-saver';
|
|
5
5
|
import { ConfirmationService, MessageService } from 'primeng/api';
|
|
6
6
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
7
|
+
import { LoadingService } from '../service/loading.service';
|
|
8
|
+
import { I18nService } from '../service/i18n.service';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
|
-
const apiPath =
|
|
10
|
+
const apiPath = '';
|
|
9
11
|
export class AmComponent {
|
|
10
12
|
constructor() {
|
|
11
13
|
//是否提交日志
|
|
@@ -39,53 +41,45 @@ export class AmComponent {
|
|
|
39
41
|
this.searchPrm = {};
|
|
40
42
|
this.exportPrm = {};
|
|
41
43
|
this.tamplate = {};
|
|
42
|
-
// 表示是否正在加载用户数据的Signal,初始值为 false
|
|
43
|
-
this.isLoading = signal(false);
|
|
44
44
|
this.http = inject(HttpClient);
|
|
45
45
|
this.messageService = inject(MessageService);
|
|
46
46
|
this.confirmationService = inject(ConfirmationService);
|
|
47
|
+
this.loadingService = inject(LoadingService);
|
|
47
48
|
this.route = inject(ActivatedRoute);
|
|
48
49
|
this.router = inject(Router);
|
|
50
|
+
this.i18n = inject(I18nService);
|
|
49
51
|
}
|
|
50
52
|
rfd(prm) {
|
|
51
|
-
return this.http.post(apiPath +
|
|
52
|
-
.pipe(map((response) => {
|
|
53
|
+
return this.http.post(apiPath + 'RFD', prm).pipe(map((response) => {
|
|
53
54
|
return response;
|
|
54
55
|
}), finalize(() => {
|
|
55
|
-
|
|
56
|
-
this.isLoading.set(false);
|
|
56
|
+
this.loadingService.setLoading(false);
|
|
57
57
|
}));
|
|
58
58
|
}
|
|
59
59
|
webget(param) {
|
|
60
|
-
return this.http.post(apiPath +
|
|
61
|
-
.pipe(map((response) => {
|
|
60
|
+
return this.http.post(apiPath + '/goam/api/webget', param).pipe(map((response) => {
|
|
62
61
|
return response;
|
|
63
62
|
}), finalize(() => {
|
|
64
|
-
|
|
65
|
-
this.isLoading.set(false);
|
|
63
|
+
this.loadingService.setLoading(false);
|
|
66
64
|
}));
|
|
67
65
|
}
|
|
68
66
|
websave(param) {
|
|
69
|
-
return this.http.post(apiPath +
|
|
70
|
-
.pipe(map((response) => {
|
|
67
|
+
return this.http.post(apiPath + '/goam/api/websave', param).pipe(map((response) => {
|
|
71
68
|
return response;
|
|
72
69
|
}), finalize(() => {
|
|
73
|
-
|
|
74
|
-
this.isLoading.set(false);
|
|
70
|
+
this.loadingService.setLoading(false);
|
|
75
71
|
}));
|
|
76
72
|
}
|
|
77
73
|
webdel(param) {
|
|
78
|
-
return this.http.post(apiPath +
|
|
79
|
-
.pipe(map((response) => {
|
|
74
|
+
return this.http.post(apiPath + 'webdel', param).pipe(map((response) => {
|
|
80
75
|
return response;
|
|
81
76
|
}), finalize(() => {
|
|
82
|
-
|
|
83
|
-
this.isLoading.set(false);
|
|
77
|
+
this.loadingService.setLoading(false);
|
|
84
78
|
}));
|
|
85
79
|
}
|
|
86
80
|
upsert(prm, cb) {
|
|
87
81
|
if (prm) {
|
|
88
|
-
this.web_upsert(prm).subscribe(res => {
|
|
82
|
+
this.web_upsert(prm).subscribe((res) => {
|
|
89
83
|
cb && cb(res);
|
|
90
84
|
this.resetPrm('upsert');
|
|
91
85
|
});
|
|
@@ -93,7 +87,7 @@ export class AmComponent {
|
|
|
93
87
|
else {
|
|
94
88
|
// const pm: Upsert = this.upserts()
|
|
95
89
|
// console.log('1====',pm)
|
|
96
|
-
this.web_upsert(this.upsertPrm).subscribe(res => {
|
|
90
|
+
this.web_upsert(this.upsertPrm).subscribe((res) => {
|
|
97
91
|
cb && cb(res);
|
|
98
92
|
this.resetPrm('upsert');
|
|
99
93
|
});
|
|
@@ -101,7 +95,7 @@ export class AmComponent {
|
|
|
101
95
|
}
|
|
102
96
|
//全部创建或更新,根据ID判断
|
|
103
97
|
web_upsert(param) {
|
|
104
|
-
this.
|
|
98
|
+
this.loadingService.setLoading(true);
|
|
105
99
|
if (!param.modelName) {
|
|
106
100
|
param = { modelName: this.modelName, ...param };
|
|
107
101
|
}
|
|
@@ -127,10 +121,14 @@ export class AmComponent {
|
|
|
127
121
|
}
|
|
128
122
|
else {
|
|
129
123
|
let lg = '';
|
|
130
|
-
|
|
124
|
+
// @ts-ignore
|
|
125
|
+
const isI18n = window.appIsI18n;
|
|
126
|
+
let createStr = isI18n ? this.i18n.fanyi('app.create') : '新建';
|
|
127
|
+
param.subsert?.forEach((v) => {
|
|
131
128
|
v.logtmp?.forEach((v, k) => {
|
|
132
129
|
if (v.id === 0) {
|
|
133
|
-
lg +=
|
|
130
|
+
lg += `${createStr}: -> ${v.newValue};`;
|
|
131
|
+
// lg += '新建: -> ' + v.newValue + ';';
|
|
134
132
|
}
|
|
135
133
|
else {
|
|
136
134
|
lg += '[' + v.id + '-' + v.label + '] ' + (v.oldValue || '') + ' -> ' + (v.newValue || '') + ';';
|
|
@@ -140,15 +138,13 @@ export class AmComponent {
|
|
|
140
138
|
param = { ...param, log: { ...param.log, subContent: lg } };
|
|
141
139
|
}
|
|
142
140
|
console.log('param====', param);
|
|
143
|
-
return this.http.post(apiPath +
|
|
144
|
-
.pipe(map((response) => {
|
|
141
|
+
return this.http.post(apiPath + 'upsert', param).pipe(map((response) => {
|
|
145
142
|
if (param.log) {
|
|
146
143
|
delete param.log;
|
|
147
144
|
}
|
|
148
145
|
return response;
|
|
149
146
|
}), finalize(() => {
|
|
150
|
-
|
|
151
|
-
this.isLoading.set(false);
|
|
147
|
+
this.loadingService.setLoading(false);
|
|
152
148
|
}));
|
|
153
149
|
}
|
|
154
150
|
//自处理逻辑
|
|
@@ -161,14 +157,12 @@ export class AmComponent {
|
|
|
161
157
|
}
|
|
162
158
|
}
|
|
163
159
|
web_deal(param) {
|
|
164
|
-
this.
|
|
165
|
-
return this.http.post(apiPath +
|
|
166
|
-
.pipe(map((response) => {
|
|
160
|
+
this.loadingService.setLoading(true);
|
|
161
|
+
return this.http.post(apiPath + 'deal', param).pipe(map((response) => {
|
|
167
162
|
this.dealPrm = { data: response, ...this.dealPrm };
|
|
168
163
|
return response;
|
|
169
164
|
}), finalize(() => {
|
|
170
|
-
|
|
171
|
-
this.isLoading.set(false);
|
|
165
|
+
this.loadingService.setLoading(false);
|
|
172
166
|
}));
|
|
173
167
|
}
|
|
174
168
|
//传入map,根据ID,更新map数据
|
|
@@ -181,19 +175,17 @@ export class AmComponent {
|
|
|
181
175
|
}
|
|
182
176
|
}
|
|
183
177
|
web_write(param) {
|
|
184
|
-
this.
|
|
178
|
+
this.loadingService.setLoading(true);
|
|
185
179
|
if (!param.modelName) {
|
|
186
180
|
param = { modelName: this.modelName, ...param };
|
|
187
181
|
}
|
|
188
|
-
return this.http.post(apiPath +
|
|
189
|
-
.pipe(map((response) => {
|
|
182
|
+
return this.http.post(apiPath + 'write', param).pipe(map((response) => {
|
|
190
183
|
if (param.log) {
|
|
191
184
|
delete param.log;
|
|
192
185
|
}
|
|
193
186
|
return response;
|
|
194
187
|
}), finalize(() => {
|
|
195
|
-
|
|
196
|
-
this.isLoading.set(false);
|
|
188
|
+
this.loadingService.setLoading(false);
|
|
197
189
|
}));
|
|
198
190
|
}
|
|
199
191
|
//根据ID删除
|
|
@@ -206,16 +198,14 @@ export class AmComponent {
|
|
|
206
198
|
}
|
|
207
199
|
}
|
|
208
200
|
web_remove(param) {
|
|
209
|
-
this.
|
|
210
|
-
return this.http.post(apiPath +
|
|
211
|
-
.pipe(map((response) => {
|
|
201
|
+
this.loadingService.setLoading(true);
|
|
202
|
+
return this.http.post(apiPath + 'remove', param).pipe(map((response) => {
|
|
212
203
|
if (param.log) {
|
|
213
204
|
delete param.log;
|
|
214
205
|
}
|
|
215
206
|
return response;
|
|
216
207
|
}), finalize(() => {
|
|
217
|
-
|
|
218
|
-
this.isLoading.set(false);
|
|
208
|
+
this.loadingService.setLoading(false);
|
|
219
209
|
}));
|
|
220
210
|
}
|
|
221
211
|
//根据ID获取一条数据
|
|
@@ -231,9 +221,8 @@ export class AmComponent {
|
|
|
231
221
|
if (!param.hasOwnProperty('modelName')) {
|
|
232
222
|
param.modelName = this.modelName;
|
|
233
223
|
}
|
|
234
|
-
this.
|
|
235
|
-
return this.http.post(apiPath +
|
|
236
|
-
.pipe(map((response) => {
|
|
224
|
+
this.loadingService.setLoading(true);
|
|
225
|
+
return this.http.post(apiPath + 'get', param).pipe(map((response) => {
|
|
237
226
|
this.getPrm.data = response;
|
|
238
227
|
if (response.id === 0 && param.hasOwnProperty('foreignKey')) {
|
|
239
228
|
this.upsertPrm.addData[param.foreignKey] = param[param.foreignKey];
|
|
@@ -241,8 +230,7 @@ export class AmComponent {
|
|
|
241
230
|
this.id = response?.id;
|
|
242
231
|
return response;
|
|
243
232
|
}), finalize(() => {
|
|
244
|
-
|
|
245
|
-
this.isLoading.set(false);
|
|
233
|
+
this.loadingService.setLoading(false);
|
|
246
234
|
}));
|
|
247
235
|
}
|
|
248
236
|
//获取多条数据,根据传入的条件自动组织sql
|
|
@@ -255,15 +243,13 @@ export class AmComponent {
|
|
|
255
243
|
}
|
|
256
244
|
}
|
|
257
245
|
web_search(param) {
|
|
258
|
-
this.
|
|
259
|
-
return this.http.post(apiPath +
|
|
260
|
-
.pipe(map((response) => {
|
|
246
|
+
this.loadingService.setLoading(true);
|
|
247
|
+
return this.http.post(apiPath + 'search', param).pipe(map((response) => {
|
|
261
248
|
this.searchPrm = { ...response };
|
|
262
249
|
console.log('upsey-----', this.upsertPrm);
|
|
263
250
|
return response;
|
|
264
251
|
}), finalize(() => {
|
|
265
|
-
|
|
266
|
-
this.isLoading.set(false);
|
|
252
|
+
this.loadingService.setLoading(false);
|
|
267
253
|
}));
|
|
268
254
|
}
|
|
269
255
|
searchmap(prm) {
|
|
@@ -275,15 +261,13 @@ export class AmComponent {
|
|
|
275
261
|
}
|
|
276
262
|
}
|
|
277
263
|
web_searchmap(param) {
|
|
278
|
-
this.
|
|
279
|
-
return this.http.post(apiPath +
|
|
280
|
-
.pipe(map((response) => {
|
|
264
|
+
this.loadingService.setLoading(true);
|
|
265
|
+
return this.http.post(apiPath + 'searchMap', param).pipe(map((response) => {
|
|
281
266
|
this.searchPrm = { ...response };
|
|
282
267
|
console.log('upsey-----', this.upsertPrm);
|
|
283
268
|
return response;
|
|
284
269
|
}), finalize(() => {
|
|
285
|
-
|
|
286
|
-
this.isLoading.set(false);
|
|
270
|
+
this.loadingService.setLoading(false);
|
|
287
271
|
}));
|
|
288
272
|
}
|
|
289
273
|
//获取多条数据,根据传入的条件自动组织sql
|
|
@@ -296,14 +280,12 @@ export class AmComponent {
|
|
|
296
280
|
}
|
|
297
281
|
}
|
|
298
282
|
web_searchCount(param) {
|
|
299
|
-
this.
|
|
300
|
-
return this.http.post(apiPath +
|
|
301
|
-
.pipe(map((response) => {
|
|
283
|
+
this.loadingService.setLoading(true);
|
|
284
|
+
return this.http.post(apiPath + 'searchCount', param).pipe(map((response) => {
|
|
302
285
|
this.searchPrm = { ...response };
|
|
303
286
|
return response;
|
|
304
287
|
}), finalize(() => {
|
|
305
|
-
|
|
306
|
-
this.isLoading.set(false);
|
|
288
|
+
this.loadingService.setLoading(false);
|
|
307
289
|
}));
|
|
308
290
|
}
|
|
309
291
|
//excel导入
|
|
@@ -341,16 +323,16 @@ export class AmComponent {
|
|
|
341
323
|
if (!param.modelName) {
|
|
342
324
|
param = { modelName: this.modelName, ...param };
|
|
343
325
|
}
|
|
344
|
-
this.
|
|
345
|
-
return this.http.post(apiPath +
|
|
346
|
-
|
|
347
|
-
|
|
326
|
+
this.loadingService.setLoading(true);
|
|
327
|
+
return this.http.post(apiPath + 'export', param, { responseType: 'blob' }).pipe(map((response) => {
|
|
328
|
+
const data = new Blob([response], {
|
|
329
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',
|
|
330
|
+
});
|
|
348
331
|
const fileName = param.modelName + '.xlsx';
|
|
349
332
|
FileSaver.saveAs(data, fileName);
|
|
350
333
|
return response;
|
|
351
334
|
}), finalize(() => {
|
|
352
|
-
|
|
353
|
-
this.isLoading.set(false);
|
|
335
|
+
this.loadingService.setLoading(false);
|
|
354
336
|
}));
|
|
355
337
|
}
|
|
356
338
|
//人工处理导入
|
|
@@ -366,16 +348,16 @@ export class AmComponent {
|
|
|
366
348
|
if (!param.modelName) {
|
|
367
349
|
param = { modelName: this.modelName, ...param };
|
|
368
350
|
}
|
|
369
|
-
this.
|
|
370
|
-
return this.http.post(apiPath +
|
|
371
|
-
|
|
372
|
-
|
|
351
|
+
this.loadingService.setLoading(true);
|
|
352
|
+
return this.http.post(apiPath + 'dealExport', param, { responseType: 'blob' }).pipe(map((response) => {
|
|
353
|
+
const data = new Blob([response], {
|
|
354
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',
|
|
355
|
+
});
|
|
373
356
|
const fileName = param.modelName + '.xlsx';
|
|
374
357
|
FileSaver.saveAs(data, fileName);
|
|
375
358
|
return response;
|
|
376
359
|
}), finalize(() => {
|
|
377
|
-
|
|
378
|
-
this.isLoading.set(false);
|
|
360
|
+
this.loadingService.setLoading(false);
|
|
379
361
|
}));
|
|
380
362
|
}
|
|
381
363
|
//下载导入的模板
|
|
@@ -388,16 +370,16 @@ export class AmComponent {
|
|
|
388
370
|
}
|
|
389
371
|
}
|
|
390
372
|
web_downloadTemplate(param) {
|
|
391
|
-
this.
|
|
392
|
-
return this.http.post(apiPath +
|
|
393
|
-
|
|
394
|
-
|
|
373
|
+
this.loadingService.setLoading(true);
|
|
374
|
+
return this.http.post(apiPath + 'download', param, { responseType: 'blob' }).pipe(map((response) => {
|
|
375
|
+
const data = new Blob([response], {
|
|
376
|
+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',
|
|
377
|
+
});
|
|
395
378
|
const fileName = param.modelName + '模板.xlsx';
|
|
396
379
|
FileSaver.saveAs(data, fileName);
|
|
397
380
|
return response;
|
|
398
381
|
}), finalize(() => {
|
|
399
|
-
|
|
400
|
-
this.isLoading.set(false);
|
|
382
|
+
this.loadingService.setLoading(false);
|
|
401
383
|
}));
|
|
402
384
|
}
|
|
403
385
|
//删除图片
|
|
@@ -410,14 +392,12 @@ export class AmComponent {
|
|
|
410
392
|
}
|
|
411
393
|
}
|
|
412
394
|
web_imageDelete(fid) {
|
|
413
|
-
this.
|
|
414
|
-
return this.http.post(apiPath +
|
|
415
|
-
.pipe(map((response) => {
|
|
395
|
+
this.loadingService.setLoading(true);
|
|
396
|
+
return this.http.post(apiPath + 'imageDelete', fid).pipe(map((response) => {
|
|
416
397
|
this.messageService.add({ severity: 'success', summary: 'Success', detail: response });
|
|
417
398
|
return response;
|
|
418
399
|
}), finalize(() => {
|
|
419
|
-
|
|
420
|
-
this.isLoading.set(false);
|
|
400
|
+
this.loadingService.setLoading(false);
|
|
421
401
|
}));
|
|
422
402
|
}
|
|
423
403
|
//删除图片
|
|
@@ -430,25 +410,21 @@ export class AmComponent {
|
|
|
430
410
|
}
|
|
431
411
|
}
|
|
432
412
|
web_filerDelete(fid) {
|
|
433
|
-
this.
|
|
434
|
-
return this.http.post(apiPath +
|
|
435
|
-
.pipe(map((response) => {
|
|
413
|
+
this.loadingService.setLoading(true);
|
|
414
|
+
return this.http.post(apiPath + 'imageDelete', fid).pipe(map((response) => {
|
|
436
415
|
this.messageService.add({ severity: 'success', summary: 'Success', detail: response });
|
|
437
416
|
return response;
|
|
438
417
|
}), finalize(() => {
|
|
439
|
-
|
|
440
|
-
this.isLoading.set(false);
|
|
418
|
+
this.loadingService.setLoading(false);
|
|
441
419
|
}));
|
|
442
420
|
}
|
|
443
421
|
//刷新token
|
|
444
422
|
refreshToken(param) {
|
|
445
|
-
return this.http.post(apiPath +
|
|
446
|
-
.pipe(map((response) => {
|
|
423
|
+
return this.http.post(apiPath + 'refreshToken', param).pipe(map((response) => {
|
|
447
424
|
this.dealPrm = { data: response, ...this.dealPrm };
|
|
448
425
|
return response;
|
|
449
426
|
}), finalize(() => {
|
|
450
|
-
|
|
451
|
-
this.isLoading.set(false);
|
|
427
|
+
this.loadingService.setLoading(false);
|
|
452
428
|
}));
|
|
453
429
|
}
|
|
454
430
|
//创建表
|
|
@@ -461,14 +437,12 @@ export class AmComponent {
|
|
|
461
437
|
}
|
|
462
438
|
}
|
|
463
439
|
web_createTable(param) {
|
|
464
|
-
this.
|
|
465
|
-
return this.http.post(apiPath +
|
|
466
|
-
.pipe(map((response) => {
|
|
440
|
+
this.loadingService.setLoading(true);
|
|
441
|
+
return this.http.post(apiPath + 'createTable', param).pipe(map((response) => {
|
|
467
442
|
// this.messageService.add({severity: 'success',summary: 'Success',detail: response})
|
|
468
443
|
return response;
|
|
469
444
|
}), finalize(() => {
|
|
470
|
-
|
|
471
|
-
this.isLoading.set(false);
|
|
445
|
+
this.loadingService.setLoading(false);
|
|
472
446
|
}));
|
|
473
447
|
}
|
|
474
448
|
// 暂无确定是否重置其他公共变量
|
|
@@ -478,7 +452,7 @@ export class AmComponent {
|
|
|
478
452
|
this.upsertPrm.addData = {};
|
|
479
453
|
this.upsertPrm.updData = {};
|
|
480
454
|
this.upsertPrm.log = {};
|
|
481
|
-
this.upsertPrm.subsert?.forEach(v => {
|
|
455
|
+
this.upsertPrm.subsert?.forEach((v) => {
|
|
482
456
|
v.logtmp = new Map();
|
|
483
457
|
v.maptmp = new Map();
|
|
484
458
|
v.subData = [];
|
|
@@ -498,14 +472,12 @@ export class AmComponent {
|
|
|
498
472
|
}
|
|
499
473
|
}
|
|
500
474
|
webDealQuery(param) {
|
|
501
|
-
this.
|
|
502
|
-
return this.http.post(apiPath +
|
|
503
|
-
.pipe(map((response) => {
|
|
475
|
+
this.loadingService.setLoading(true);
|
|
476
|
+
return this.http.post(apiPath + 'dealQuery', param).pipe(map((response) => {
|
|
504
477
|
this.dealPrm = { data: response, ...this.dealPrm };
|
|
505
478
|
return response;
|
|
506
479
|
}), finalize(() => {
|
|
507
|
-
|
|
508
|
-
this.isLoading.set(false);
|
|
480
|
+
this.loadingService.setLoading(false);
|
|
509
481
|
}));
|
|
510
482
|
}
|
|
511
483
|
dealCustom(prm) {
|
|
@@ -517,14 +489,12 @@ export class AmComponent {
|
|
|
517
489
|
}
|
|
518
490
|
}
|
|
519
491
|
webDealCustom(param) {
|
|
520
|
-
this.
|
|
521
|
-
return this.http.post(apiPath +
|
|
522
|
-
.pipe(map((response) => {
|
|
492
|
+
this.loadingService.setLoading(true);
|
|
493
|
+
return this.http.post(apiPath + 'dealCustom', param).pipe(map((response) => {
|
|
523
494
|
this.dealPrm = { data: response, ...this.dealPrm };
|
|
524
495
|
return response;
|
|
525
496
|
}), finalize(() => {
|
|
526
|
-
|
|
527
|
-
this.isLoading.set(false);
|
|
497
|
+
this.loadingService.setLoading(false);
|
|
528
498
|
}));
|
|
529
499
|
}
|
|
530
500
|
dealSubmit(prm) {
|
|
@@ -536,14 +506,12 @@ export class AmComponent {
|
|
|
536
506
|
}
|
|
537
507
|
}
|
|
538
508
|
webDealSubmit(param) {
|
|
539
|
-
this.
|
|
540
|
-
return this.http.post(apiPath +
|
|
541
|
-
.pipe(map((response) => {
|
|
509
|
+
this.loadingService.setLoading(true);
|
|
510
|
+
return this.http.post(apiPath + 'dealSubmit', param).pipe(map((response) => {
|
|
542
511
|
this.dealPrm = { data: response, ...this.dealPrm };
|
|
543
512
|
return response;
|
|
544
513
|
}), finalize(() => {
|
|
545
|
-
|
|
546
|
-
this.isLoading.set(false);
|
|
514
|
+
this.loadingService.setLoading(false);
|
|
547
515
|
}));
|
|
548
516
|
}
|
|
549
517
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -556,7 +524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
556
524
|
standalone: true,
|
|
557
525
|
imports: [],
|
|
558
526
|
template: '',
|
|
559
|
-
providers: [MessageService, ConfirmationService]
|
|
527
|
+
providers: [MessageService, ConfirmationService],
|
|
560
528
|
}]
|
|
561
529
|
}], ctorParameters: () => [] });
|
|
562
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFvSXpELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtBQVFsQixNQUFNLE9BQU8sV0FBVztJQXVDdEI7UUF0Q0EsUUFBUTtRQUNSLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsT0FBTztRQUNQLE9BQUUsR0FBUyxDQUFDLENBQUE7UUFDWixNQUFNO1FBQ04sY0FBUyxHQUFTLEVBQUUsQ0FBQTtRQUNwQixNQUFNO1FBQ04sVUFBSyxHQUFRLEVBQUUsQ0FBQTtRQUNmLFFBQUcsR0FBUyxFQUFFLENBQUE7UUFDZCxJQUFJO1FBQ0osY0FBUyxHQUFjLEVBQUUsQ0FBQztRQUMxQixJQUFJO1FBQ0osa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU07UUFDTixnQkFBVyxHQUFjLEVBQUUsQ0FBQztRQUM1QixRQUFRO1FBQ1IsY0FBUyxHQUFTLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUs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UzttQkFBQztvQkFDVCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLFFBQVEsRUFBRSxFQUFFO29CQUNaLFNBQVMsRUFBQyxDQUFDLGNBQWMsRUFBQyxtQkFBbUIsQ0FBQztpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsaW5qZWN0LHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnXHJcbmltcG9ydCB7IFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHtUb2FzdH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFte1xyXG4gIGlkPzpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VNZXNzYWdlIHtcclxuICBpZD86IG51bWJlcjtcclxuICBwaWQ/Om51bWJlcjsgIC8vIOihqOS4rWlkXHJcbiAgZnVuYz86c3RyaW5nO1xyXG4gIG9wZXJhdG9yPzpzdHJpbmc7XHJcbiAgY29udGVudD86c3RyaW5nOyAgLy8g5Li76KGo5Y+Y5pu05omA5pyJ5a2X5q615ou85o6l5LiA5Z2XXHJcbiAgc3ViQ29udGVudD86c3RyaW5nOyAvLyDlrZDooajlj5jmm7Tmi7zmjqXkuIDotbdcclxuICBjcmVhdGVkQXQ/OnN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydEV4Y2Vse1xyXG4gIG1vZGVsTmFtZT86IHN0cmluZztcclxuICBvcmdJZD86IG51bWJlcjtcclxuICBvcmdOYW1lPzpzdHJpbmc7XHJcbiAgb3JnSWRGZWlsZD86IHN0cmluZztcclxuICBvcmdOYW1lRmVpbGQ/OnN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcHNlcnQge1xyXG4gIG1vZGVsTmFtZT86IHN0cmluZztcclxuICBhZGREYXRhPzogUmVjb3JkPHN0cmluZyxhbnk+O1xyXG4gIHVwZERhdGE/OiBSZWNvcmQ8c3RyaW5nLGFueT47XHJcbiAgc3Vic2VydD86IFN1YlVwc2VydFtdO1xyXG4gIGxvZ01vZGVsPzogc3RyaW5nO1xyXG4gIGxvZz86IFRyYWNlTWVzc2FnZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdWJVcHNlcnQge1xyXG4gIHN1Yk1vZGVsTmFtZT86IHN0cmluZztcclxuICBmaz86c3RyaW5nO1xyXG4gIHN1YkRhdGE/OiBSZWNvcmQ8c3RyaW5nLGFueT5bXVxyXG4gIG1hcHRtcD86IE1hcDxudW1iZXIsYW55PjtcclxuICBsb2d0bXA/OiBNYXA8c3RyaW5nLGFueT5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlYWx7XHJcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIGRhdGE/OmFueTtcclxufVxyXG4vLyDmm7TmlrDnibnlrprlrZfmrrVcclxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXtcclxuICBtb2RlbE5hbWU/OnN0cmluZztcclxuICBkYXRhPzpSZWNvcmQ8c3RyaW5nLGFueT47XHJcbiAgbG9nTW9kZWw/OnN0cmluZztcclxuICBsb2c/OlRyYWNlTWVzc2FnZTtcclxuICB0cmFuc2FjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuLy8g5Yig6Zmk5o6l5Y+j5aOw5piOXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3Zle1xyXG4gIG1vZGVsTmFtZT86c3RyaW5nO1xyXG4gIGlkcz86bnVtYmVyW107XHJcbiAgZGF0YT86YW55O1xyXG4gIGxvZ01vZGVsPzpzdHJpbmc7XHJcbiAgbG9nPzpUcmFjZU1lc3NhZ2U7XHJcbiAgdHJhbnNhY3Rpb24/OiBib29sZWFuO1xyXG59XHJcbi8vIOiOt+WPluWNleadoeaVsOaNruivpuaDhVxyXG5leHBvcnQgaW50ZXJmYWNlIEdldHtcclxuICBtb2RlbE5hbWU/OnN0cmluZztcclxuICB1c2VyQ29kZT86IHN0cmluZztcclxuICBvcmdGaWVsZD86IHN0cmluZztcclxuICBpZD86bnVtYmVyO1xyXG4gIHByZWxvYWRzPzpzdHJpbmdbXTsgLy8g6IGU6KGo5p+l6K+i6KGo5ZCN56ew77yM6ZyA5a+55bqU5ZCO56uvc3RydWN0XHJcbiAgZml0ZXJQcmVsb2Fkcz86UHJlbG9hZFtdOyAvLyDlj6rog73liqDkuIDlsYIg57G75Ly8ICdtb2R1bGUgPScgbW9kdWxlXHJcbiAgZ2V0TG9nPzpib29sZWFuOyAvL+iOt+WPluaXpeW/l1xyXG4gIGRhdGE/OmFueTsgLy/lkI7nq6/ov5Tlm57nmoRyZXNwb25zZVxyXG4gIGNvbHVtbkZpbHRlcnM/OiBDb2x1bW5GaWx0ZXJbXTsgLy/ov4fmu6TnmoTliJdcclxuICBmb3JlaWduS2V5PzpzdHJpbmcgIC8v55u05o6l5o+S5YWl5a2Q6KGo6ZyA6KaB5Lyg6YCS5aSW6ZSu5a2X5q615Lul5Y+K5aSW6ZSu5YC8XHJcbiAgW3Byb3BOYW1lOiBzdHJpbmddOmFueVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJlbG9hZHtcclxuICBmZWlsZE5hbWU/OiBzdHJpbmc7XHJcbiAgZml0ZXJzPzpDb2x1bW5GaWx0ZXJbXTtcclxuICBzb3J0cz86U29ydFtdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRmlsdGVyIHtcclxuICBjb2x1bW5GaWVsZD86c3RyaW5nO1xyXG4gIHR5cGU/OnN0cmluZztcclxuICBmaXRlcj86IGFueTtcclxuICBmcm9tPzpzdHJpbmcgfCBudW1iZXI7XHJcbiAgdG8/OnN0cmluZyB8IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0e1xyXG4gIGZpZWxkPzpzdHJpbmc7XHJcbiAgaXNBc2M/OmJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoe1xyXG4gIG1vZGVsTmFtZT86IHN0cmluZztcclxuICB1c2VyQ29kZT86IHN0cmluZztcclxuICBvcmdGaWVsZD86IHN0cmluZztcclxuICBjb3VudD86Ym9vbGVhbjsgLy/mmK/lkKbov5Tlm550b3RhbE51bSBcclxuICBwcmVsb2Fkcz86c3RyaW5nW107XHJcbiAgZml0ZXJQcmVsb2Fkcz86UHJlbG9hZFtdO1xyXG4gIG1vZGVsPzphbnk7IFxyXG4gIGRhdGE/OmFueTtcclxuICBjb2x1bW5GaWx0ZXJzPzogQ29sdW1uRmlsdGVyW107IC8v6L+H5ruk55qE5YiXXHJcbiAgc29ydHM/OiBTb3J0W107XHJcbiAgZ3JvdXBzPzogc3RyaW5nW107XHJcbiAgcmVhZD86c3RyaW5nW107ICAvL3JlYWQg5oyH5a6a5p+l6K+i54m55a6a5a2X5q61XHJcbiAgZnVuY3M/OlJlY29yZDxzdHJpbmcsc3RyaW5nPjsgLy/pgI/op4booajlkI7mnJ/opoHnlKhcclxuICBvZmZzZXQ/Om51bWJlcjsgXHJcbiAgbGltaXQ/Om51bWJlcjtcclxuICB0b3RhbE51bT86bnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5JbmZvIHtcclxuICB0b2tlbj86c3RyaW5nXHJcbiAgZXhwaXJlZD86IG51bWJlclxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgYW1XZWJ7XHJcbiAgaWQ/OiBudW1iZXI7XHJcbiAgY29kZT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgYXBwSWQ/OiBudW1iZXI7XHJcbiAgY29udGVudD86IHN0cmluZztcclxuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XHJcbiAgdXBkYXRlZEF0PzpzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSZmQge1xyXG4gIG1vZGVsTmFtZT86IHN0cmluZztcclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgd2hlcmVGaWVsZD86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGZpdGVyPzogYW55O1xyXG4gIGRhdGE/OiBhbnk7XHJcbn1cclxuY29uc3QgYXBpUGF0aCA9IFwiXCJcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHByb3ZpZGVyczpbTWVzc2FnZVNlcnZpY2UsQ29uZmlybWF0aW9uU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFtQ29tcG9uZW50IHtcclxuICAvL+aYr+WQpuaPkOS6pOaXpeW/l1xyXG4gIGlzTG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy/kuLvmlbDmja5pZFxyXG4gIGlkOiBudW1iZXI9MFxyXG4gIC8v5Li76KGo5qih5Z6LXHJcbiAgbW9kZWxOYW1lOiBzdHJpbmc9JydcclxuICAvL0lE5Y+C5pWwXHJcbiAgcGFyYW06IFBhcmFtPXt9XHJcbiAgZmlkOiBzdHJpbmc9JydcclxuICAvL+WvvOWFpVxyXG4gIGltcG9ydFBybTogSW1wb3J0RXhjZWw9e307XHJcbiAgLy/mkJzntKBcclxuICBzZWFyY2hPcHRpb25zOiBTZWFyY2hPcHRpb25zPXt9O1xyXG4gIC8vZm9ybVxyXG4gIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucz17fTtcclxuICAvL+WIm+W7uuaIluiAheabtOaWsFxyXG4gIHVwc2VydFBybTogVXBzZXJ0PXt1cGREYXRhOnt9LGFkZERhdGE6e30sc3Vic2VydDpbXSxsb2c6e319O1xyXG4gIC8v5aSE55CGXHJcbiAgZGVhbFBybTogRGVhbD17fTtcclxuICAvL21hcOabtOaWsFxyXG4gIHdyaXRlUHJtOiBXcml0ZT17fTtcclxuICAvL+WIoOmZpFxyXG4gIHJlbW92ZVBybTogUmVtb3ZlPXt9O1xyXG4gIC8v6I635Y+W5LiA5p2h5pWw5o2uXHJcbiAgZ2V0UHJtOiBHZXQ9e2RhdGE6e319O1xyXG4gIC8v5p+l6K+i5p2h5Lu2XHJcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXI9e307XHJcbiAgLy/mn6Xor6LliJfooajmlbDmja5cclxuICBzZWFyY2hQcm06IFNlYXJjaD17fTtcclxuICBleHBvcnRQcm06IFNlYXJjaD17fTtcclxuICB0YW1wbGF0ZTogRGVhbD17fVxyXG4gIC8vIOihqOekuuaYr+WQpuato+WcqOWKoOi9veeUqOaIt+aVsOaNrueahFNpZ25hbO+8jOWIneWni+WAvOS4uiBmYWxzZVxyXG4gIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KVxyXG4gIG1lc3NhZ2VTZXJ2aWNlIDpNZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSlcclxuICBjb25maXJtYXRpb25TZXJ2aWNlID0gaW5qZWN0KENvbmZpcm1hdGlvblNlcnZpY2UpXHJcbiAgcm91dGUgOkFjdGl2YXRlZFJvdXRlID1pbmplY3QoQWN0aXZhdGVkUm91dGUpXHJcbiAgcm91dGVyID0gaW5qZWN0KFJvdXRlcilcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHJmZChwcm06IFJmZCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJSRkRcIixwcm0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICB3ZWJnZXQocGFyYW06YW1XZWIpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiL2dvYW0vYXBpL3dlYmdldFwiLHBhcmFtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHdlYnNhdmUocGFyYW06YW1XZWIpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiL2dvYW0vYXBpL3dlYnNhdmVcIixwYXJhbSwpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB3ZWJkZWwocGFyYW06YW1XZWIpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wid2ViZGVsXCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBzZXJ0KHBybT86YW55LGNiPzpGdW5jdGlvbil7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl91cHNlcnQocHJtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICBjYiAmJiBjYihyZXMpXHJcblx0XHQgICAgdGhpcy5yZXNldFBybSgndXBzZXJ0JylcclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgLy8gY29uc3QgcG06IFVwc2VydCA9IHRoaXMudXBzZXJ0cygpXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCcxPT09PScscG0pXHJcbiAgICAgIHRoaXMud2ViX3Vwc2VydCh0aGlzLnVwc2VydFBybSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgY2IgJiYgY2IocmVzKVxyXG5cdFx0ICAgIHRoaXMucmVzZXRQcm0oJ3Vwc2VydCcpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+WFqOmDqOWIm+W7uuaIluabtOaWsO+8jOagueaNrklE5Yik5patXHJcbiAgd2ViX3Vwc2VydChwYXJhbTpVcHNlcnQpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICBpZighcGFyYW0ubW9kZWxOYW1lKXtcclxuICAgICAgcGFyYW0gPSB7bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIGxldCBhZGREYXRhOiBhbnkgPSBwYXJhbS5hZGREYXRhXHJcbiAgICBpZihPYmplY3Qua2V5cyhhZGREYXRhKS5sZW5ndGg9PTApe1xyXG4gICAgICBkZWxldGUgcGFyYW0uYWRkRGF0YVxyXG4gICAgfVxyXG4gICAgbGV0IHVwZERhdGE6IGFueSA9cGFyYW0udXBkRGF0YVxyXG4gICAgY29uc29sZS5sb2coJ3BhcmFtLS0tLScscGFyYW0udXBkRGF0YSlcclxuICAgIGlmKE9iamVjdC5rZXlzKHVwZERhdGEpLmxlbmd0aD09MCl7XHJcbiAgICAgIGRlbGV0ZSBwYXJhbS51cGREYXRhXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXJhbS51cGREYXRhIVsnaWQnXSA9IHRoaXMuaWRcclxuICAgICAgcGFyYW0ubG9nIS5waWQgPSB0aGlzLmlkXHJcbiAgICB9XHJcbiAgICBpZighcGFyYW0/LmFkZERhdGEgJiYgIXBhcmFtLnVwZERhdGEpe1xyXG4gICAgICBwYXJhbSA9IHt1cGREYXRhOntpZDp0aGlzLmlkfSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmlzTG9nLS0tLScsdGhpcy5pc0xvZylcclxuICAgIGlmKCF0aGlzLmlzTG9nKXtcclxuICAgICAgZGVsZXRlIHBhcmFtLmxvZ1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGxldCBsZzpzdHJpbmc9JydcclxuICAgICAgcGFyYW0uc3Vic2VydD8uZm9yRWFjaCh2PT57XHJcbiAgICAgICAgdi5sb2d0bXA/LmZvckVhY2goKHYsayk9PntcclxuICAgICAgICAgIGlmKHYuaWQ9PT0wKXtcclxuICAgICAgICAgICAgbGcgKz0n5paw5bu677yaIC0+ICcrdi5uZXdWYWx1ZSsnOydcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBsZyArPSAnWycrdi5pZCsnLScrdi5sYWJlbCsnXSAnICsgKHYub2xkVmFsdWUgfHwgJycpICsnIC0+ICcrKHYubmV3VmFsdWUgfHwgJycpKyc7J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHBhcmFtPXsuLi5wYXJhbSxsb2c6ey4uLnBhcmFtLmxvZyxzdWJDb250ZW50OmxnfX1cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdwYXJhbT09PT0nLHBhcmFtKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJ1cHNlcnRcIixwYXJhbSwpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBpZiAocGFyYW0ubG9nKXtcclxuICAgICAgICAgIGRlbGV0ZSBwYXJhbS5sb2c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy/oh6rlpITnkIbpgLvovpFcclxuICBkZWFsKHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViX2RlYWwocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9kZWFsKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9kZWFsKHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuZGVhbFBybT17ZGF0YTogcmVzcG9uc2UsLi4udGhpcy5kZWFsUHJtfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbi8v5Lyg5YWlbWFw77yM5qC55o2uSUTvvIzmm7TmlrBtYXDmlbDmja5cclxuICB3cml0ZShwcm0/OldyaXRlKSB7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl93cml0ZShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX3dyaXRlKHRoaXMud3JpdGVQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfd3JpdGUocGFyYW06V3JpdGUpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICBpZighcGFyYW0ubW9kZWxOYW1lKXtcclxuICAgICAgcGFyYW0gPSB7bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wid3JpdGVcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGlmIChwYXJhbS5sb2cpe1xyXG4gICAgICAgICAgZGVsZXRlIHBhcmFtLmxvZztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuLy/moLnmja5JROWIoOmZpFxyXG4gIHJlbW92ZShwcm0/OlJlbW92ZSl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9yZW1vdmUocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9yZW1vdmUodGhpcy5yZW1vdmVQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfcmVtb3ZlKHBhcmFtOlJlbW92ZSk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wicmVtb3ZlXCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgaWYgKHBhcmFtLmxvZyl7XHJcbiAgICAgICAgICBkZWxldGUgcGFyYW0ubG9nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4vL+agueaNrklE6I635Y+W5LiA5p2h5pWw5o2uXHJcbiAgZ2V0KHBybT86R2V0KXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2dldChwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX2dldCh0aGlzLmdldFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9nZXQocGFyYW06R2V0KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICBpZighcGFyYW0uaGFzT3duUHJvcGVydHkoJ21vZGVsTmFtZScpKXtcclxuICAgICAgcGFyYW0ubW9kZWxOYW1lPXRoaXMubW9kZWxOYW1lO1xyXG4gICAgfSBcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZ2V0XCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmdldFBybS5kYXRhID0gcmVzcG9uc2VcclxuICAgICAgICBpZihyZXNwb25zZS5pZCA9PT0gMCAmJiBwYXJhbS5oYXNPd25Qcm9wZXJ0eSgnZm9yZWlnbktleScpKXtcclxuICAgICAgICAgIHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3BhcmFtLmZvcmVpZ25LZXkhXSA9IHBhcmFtW3BhcmFtLmZvcmVpZ25LZXkhXVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlkPXJlc3BvbnNlPy5pZFxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbi8v6I635Y+W5aSa5p2h5pWw5o2u77yM5qC55o2u5Lyg5YWl55qE5p2h5Lu26Ieq5Yqo57uE57uHc3FsXHJcbiAgc2VhcmNoKHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaChwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9zZWFyY2gocGFyYW06U2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInNlYXJjaFwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5zZWFyY2hQcm0gPXsuLi5yZXNwb25zZX1cclxuICAgICAgICBjb25zb2xlLmxvZygndXBzZXktLS0tLScsdGhpcy51cHNlcnRQcm0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBzZWFyY2htYXAocHJtPzpTZWFyY2gpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfc2VhcmNoKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfc2VhcmNoKHRoaXMuc2VhcmNoUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX3NlYXJjaG1hcChwYXJhbTpTZWFyY2gpOk9ic2VydmFibGU8YW55PntcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wic2VhcmNoTWFwXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLnNlYXJjaFBybSA9ey4uLnJlc3BvbnNlfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCd1cHNleS0tLS0tJyx0aGlzLnVwc2VydFBybSlcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v6I635Y+W5aSa5p2h5pWw5o2u77yM5qC55o2u5Lyg5YWl55qE5p2h5Lu26Ieq5Yqo57uE57uHc3FsXHJcbiAgc2VhcmNoQ291bnQocHJtPzpTZWFyY2gpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfc2VhcmNoQ291bnQocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9zZWFyY2hDb3VudCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9zZWFyY2hDb3VudChwYXJhbTpTZWFyY2gpOk9ic2VydmFibGU8YW55PntcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wic2VhcmNoQ291bnRcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUHJtID17Li4ucmVzcG9uc2V9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuIC8vZXhjZWzlr7zlhaVcclxuICAvLyBpbXBvcnQocGFyYW06IEltcG9ydEV4Y2VsKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gIC8vICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwiYW0vcmVtb3ZlXCIscGFyYW0saHR0cE9wdGlvbnMpXHJcbiAgLy8gICAucGlwZShcclxuICAvLyAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAvLyAgICAgICB0aGlzLm1lc3NhZ2Uuc2V0KHJlc3BvbnNlKTtcclxuICAvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQodHJ1ZSk7XHJcbiAgLy8gICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIC8vICAgICB9KSxcclxuICAvLyAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAvLyAgICAgICAvLyDoi6Xor7fmsYLlh7rplJnvvIzorr7nva7or7fmsYLmiJDlip/nirbmgIHkuLogZmFsc2XvvIzlubblsIbplJnor6/ph43mlrDmipvlh7pcclxuICAvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQoZmFsc2UpO1xyXG4gIC8vICAgICAgIHRoaXMubWVzc2FnZS5zZXQoZXJyb3IpO1xyXG4gIC8vICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAvLyAgICAgfSksXHJcbiAgLy8gICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAvLyAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAvLyAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgKTtcclxuICAvLyB9XHJcbiAgLy8vL2V4Y2VsIOWvvOWHulxyXG4gIGV4cG9ydChwcm0/OlNlYXJjaCl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9leHBvcnQocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZXhwb3J0KHBhcmFtOiBTZWFyY2gpOk9ic2VydmFibGU8YW55PntcclxuICAgIGlmKCFwYXJhbS5tb2RlbE5hbWUpe1xyXG4gICAgICBwYXJhbSA9IHttb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLC4uLnBhcmFtfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJleHBvcnRcIixwYXJhbSx7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9VVRGLTgnIH0pO1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFyYW0ubW9kZWxOYW1lKycueGxzeCc7XHJcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvL+S6uuW3peWkhOeQhuWvvOWFpVxyXG4gIGRlYWxFeHBvcnQocHJtPzpTZWFyY2gpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfZGVhbF9leHBvcnQocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9kZWFsX2V4cG9ydCh0aGlzLmV4cG9ydFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9kZWFsX2V4cG9ydChwYXJhbTogU2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICBpZighcGFyYW0ubW9kZWxOYW1lKXtcclxuICAgICAgcGFyYW0gPSB7bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZGVhbEV4cG9ydFwiLHBhcmFtLHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDsgY2hhcnNldD1VVEYtOCcgfSk7XHJcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXJhbS5tb2RlbE5hbWUrJy54bHN4JztcclxuICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v5LiL6L295a+85YWl55qE5qih5p2/XHJcbiAgZG93bmxvYWRUZW1wbGF0ZShwcm0/OkRlYWwpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfZG93bmxvYWRUZW1wbGF0ZShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX2Rvd25sb2FkVGVtcGxhdGUodGhpcy50YW1wbGF0ZSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9kb3dubG9hZFRlbXBsYXRlKHBhcmFtOiBEZWFsKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRvd25sb2FkXCIscGFyYW0seyByZXNwb25zZVR5cGU6ICdibG9iJyB9KVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyB9KTtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSsn5qih5p2/Lnhsc3gnO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy/liKDpmaTlm77niYdcclxuICBpbWFnZURlbGV0ZShmaWQ/OnN0cmluZyl7XHJcbiAgICBpZihmaWQpe1xyXG4gICAgICB0aGlzLndlYl9pbWFnZURlbGV0ZShmaWQpLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2UgaWYgKHRoaXMuZmlkLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy53ZWJfaW1hZ2VEZWxldGUodGhpcy5maWQpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfaW1hZ2VEZWxldGUoZmlkOnN0cmluZyk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJpbWFnZURlbGV0ZVwiLGZpZClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ3N1Y2Nlc3MnLHN1bW1hcnk6ICdTdWNjZXNzJyxkZXRhaWw6IHJlc3BvbnNlfSlcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gICAgLy/liKDpmaTlm77niYdcclxuICBmaWxlckRlbGV0ZShmaWQ/OnN0cmluZyl7XHJcbiAgICAgIGlmKGZpZCl7XHJcbiAgICAgICAgdGhpcy53ZWJfZmlsZXJEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuICAgICAgfWVsc2UgaWYgKHRoaXMuZmlkLmxlbmd0aD4wKXtcclxuICAgICAgICB0aGlzLndlYl9maWxlckRlbGV0ZSh0aGlzLmZpZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgd2ViX2ZpbGVyRGVsZXRlKGZpZDpzdHJpbmcpOk9ic2VydmFibGU8YW55PntcclxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImltYWdlRGVsZXRlXCIsZmlkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe3NldmVyaXR5OiAnc3VjY2Vzcycsc3VtbWFyeTogJ1N1Y2Nlc3MnLGRldGFpbDogcmVzcG9uc2V9KVxyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIC8v5Yi35pawdG9rZW5cclxuICByZWZyZXNoVG9rZW4ocGFyYW06VG9rZW5JbmZvKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJyZWZyZXNoVG9rZW5cIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuZGVhbFBybT17ZGF0YTogcmVzcG9uc2UsLi4udGhpcy5kZWFsUHJtfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy/liJvlu7rooahcclxuICBjcmVhdGVUYWJsZShwcm0/OlBhcmFtKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2NyZWF0ZVRhYmxlKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfY3JlYXRlVGFibGUodGhpcy5wYXJhbSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9jcmVhdGVUYWJsZShwYXJhbTpQYXJhbSk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiY3JlYXRlVGFibGVcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ3N1Y2Nlc3MnLHN1bW1hcnk6ICdTdWNjZXNzJyxkZXRhaWw6IHJlc3BvbnNlfSlcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIOaaguaXoOehruWumuaYr+WQpumHjee9ruWFtuS7luWFrOWFseWPmOmHj1xyXG4gIHJlc2V0UHJtKHNlYXJjaD86c3RyaW5nKXtcclxuICAgIHN3aXRjaChzZWFyY2gpe1xyXG4gICAgICBjYXNlICd1cHNlcnQnOlxyXG4gICAgICAgIHRoaXMudXBzZXJ0UHJtLmFkZERhdGEgPSB7fTtcclxuICAgICAgICB0aGlzLnVwc2VydFBybS51cGREYXRhID0ge307XHJcbiAgICAgICAgdGhpcy51cHNlcnRQcm0ubG9nID0ge31cclxuICAgICAgICB0aGlzLnVwc2VydFBybS5zdWJzZXJ0Py5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICAgICAgdi5sb2d0bXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICB2Lm1hcHRtcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgIHYuc3ViRGF0YSA9IFtdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6IFxyXG4gICAgICAgICcnICBcclxuICAgIH1cclxuICB9XHJcbiAgLy/oh6rlpITnkIbpgLvovpFcclxuICBkZWFsUXVlcnkocHJtPzpEZWFsKXtcclxuICAgIGlmIChwcm0pIHtcclxuICAgICAgdGhpcy53ZWJEZWFsUXVlcnkocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYkRlYWxRdWVyeSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJEZWFsUXVlcnkocGFyYW06RGVhbCk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZGVhbFF1ZXJ5XCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmRlYWxQcm09e2RhdGE6IHJlc3BvbnNlLC4uLnRoaXMuZGVhbFBybX1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGRlYWxDdXN0b20ocHJtPzpEZWFsKXtcclxuICAgIGlmIChwcm0pIHtcclxuICAgICAgdGhpcy53ZWJEZWFsQ3VzdG9tKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJEZWFsQ3VzdG9tKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYkRlYWxDdXN0b20ocGFyYW06RGVhbCk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZGVhbEN1c3RvbVwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5kZWFsUHJtPXtkYXRhOiByZXNwb25zZSwuLi50aGlzLmRlYWxQcm19XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBkZWFsU3VibWl0KHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJEZWFsU3VibWl0KHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxTdWJtaXRcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuZGVhbFBybT17ZGF0YTogcmVzcG9uc2UsLi4udGhpcy5kZWFsUHJtfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQW9JdEQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBUW5CLE1BQU0sT0FBTyxXQUFXO0lBdUN2QjtRQXRDQSxRQUFRO1FBQ1IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixPQUFPO1FBQ1AsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLE1BQU07UUFDTixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU07UUFDTixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFDakIsSUFBSTtRQUNKLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUk7UUFDSixrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFDbEMsTUFBTTtRQUNOLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixRQUFRO1FBQ1IsY0FBUyxHQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZFLElBQUk7UUFDSixZQUFPLEdBQVMsRUFBRSxDQUFDO1FBQ25CLE9BQU87UUFDUCxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLElBQUk7UUFDSixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLFFBQVE7UUFDUixXQUFNLEdBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0IsTUFBTTtRQUNOLFdBQU0sR0FBaUIsRUFBRSxDQUFDO1FBQzFCLFFBQVE7UUFDUixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFTLEVBQUUsQ0FBQztRQUNwQixTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxVQUFLLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDWCxDQUFDO0lBRWhCLEdBQUcsQ0FBQyxHQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQy9ELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFTLEVBQUUsRUFBYTtRQUM5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDUCxvQ0FBb0M7WUFDcEMsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqRCxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0YsQ0FBQztJQUNELGdCQUFnQjtJQUNoQixVQUFVLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksT0FBTyxHQUFRLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDakMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksT0FBTyxHQUFRLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ1AsS0FBSyxDQUFDLE9BQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxHQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLEtBQUssR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLEVBQUUsR0FBVyxFQUFFLENBQUM7WUFDcEIsYUFBYTtZQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUE7WUFDL0IsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUEsSUFBSSxDQUFBO1lBQzVELEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMxQixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsSUFBSSxHQUFHLFNBQVMsUUFBUSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUE7d0JBQ3ZDLHNDQUFzQztvQkFDdkMsQ0FBQzt5QkFBTSxDQUFDO3dCQUNQLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUNsRyxDQUFDO2dCQUNGLENBQUMsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDN0QsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTztJQUNQLElBQUksQ0FBQyxHQUFVO1FBQ2QsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0YsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFXO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25ELE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELG9CQUFvQjtJQUNwQixLQUFLLENBQUMsR0FBVztRQUNoQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDRixDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7SUFDUixNQUFNLENBQUMsR0FBWTtRQUNsQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxZQUFZO0lBQ1osR0FBRyxDQUFDLEdBQVM7UUFDWixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDRixDQUFDO0lBQ0QsT0FBTyxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsQ0FBQztRQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUM1QixJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFRLENBQUMsS0FBSyxDQUFDLFVBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVyxDQUFDLENBQUM7WUFDdkUsQ0FBQztZQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCx1QkFBdUI7SUFDdkIsTUFBTSxDQUFDLEdBQVk7UUFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0YsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxTQUFTLENBQUMsR0FBWTtRQUNyQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELHVCQUF1QjtJQUN2QixXQUFXLENBQUMsR0FBWTtRQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELENBQUM7SUFDRixDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsU0FBUztJQUNULCtDQUErQztJQUMvQyw4QkFBOEI7SUFDOUIseURBQXlEO0lBQ3pELFdBQVc7SUFDWCw4QkFBOEI7SUFDOUIsb0NBQW9DO0lBQ3BDLGtDQUFrQztJQUNsQyx5QkFBeUI7SUFDekIsVUFBVTtJQUNWLDhCQUE4QjtJQUM5QiwwQ0FBMEM7SUFDMUMsbUNBQW1DO0lBQ25DLGlDQUFpQztJQUNqQyx3Q0FBd0M7SUFDeEMsVUFBVTtJQUNWLHVCQUF1QjtJQUN2QixxQ0FBcUM7SUFDckMsbUNBQW1DO0lBQ25DLFNBQVM7SUFDVCxPQUFPO0lBQ1AsSUFBSTtJQUNKLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBWTtRQUNsQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM5RSxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsa0ZBQWtGO2FBQ3hGLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVE7SUFDUixVQUFVLENBQUMsR0FBWTtRQUN0QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELENBQUM7SUFDRixDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNsRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsa0ZBQWtGO2FBQ3hGLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7SUFDVCxnQkFBZ0IsQ0FBQyxHQUFVO1FBQzFCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RELENBQUM7SUFDRixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsS0FBVztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsa0ZBQWtGO2FBQ3hGLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU07SUFDTixXQUFXLENBQUMsR0FBWTtRQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0YsQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFXO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU07SUFDTixXQUFXLENBQUMsR0FBWTtRQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0YsQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFXO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7SUFDVCxZQUFZLENBQUMsS0FBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDMUQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsS0FBSztJQUNMLFdBQVcsQ0FBQyxHQUFXO1FBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNGLENBQUM7SUFDRCxlQUFlLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN6RCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixxRkFBcUY7WUFDckYsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsaUJBQWlCO0lBQ2pCLFFBQVEsQ0FBQyxNQUFlO1FBQ3ZCLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDaEIsS0FBSyxRQUFRO2dCQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUDtnQkFDQyxFQUFFLENBQUM7UUFDTCxDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU87SUFDUCxTQUFTLENBQUMsR0FBVTtRQUNuQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVc7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQVU7UUFDcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QyxDQUFDO0lBQ0YsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFXO1FBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3hELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25ELE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVO1FBQ3BCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNGLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVztRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7K0dBMWlCVyxXQUFXO21HQUFYLFdBQVcscURBRlosQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsMEJBRHRDLEVBQUU7OzRGQUdBLFdBQVc7a0JBUHZCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWFyY2hPcHRpb25zIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvbG9hZGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvaTE4bi5zZXJ2aWNlJztcclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbSB7XHJcblx0aWQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VNZXNzYWdlIHtcclxuXHRpZD86IG51bWJlcjtcclxuXHRwaWQ/OiBudW1iZXI7IC8vIOihqOS4rWlkXHJcblx0ZnVuYz86IHN0cmluZztcclxuXHRvcGVyYXRvcj86IHN0cmluZztcclxuXHRjb250ZW50Pzogc3RyaW5nOyAvLyDkuLvooajlj5jmm7TmiYDmnInlrZfmrrXmi7zmjqXkuIDlnZdcclxuXHRzdWJDb250ZW50Pzogc3RyaW5nOyAvLyDlrZDooajlj5jmm7Tmi7zmjqXkuIDotbdcclxuXHRjcmVhdGVkQXQ/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRFeGNlbCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdG9yZ0lkPzogbnVtYmVyO1xyXG5cdG9yZ05hbWU/OiBzdHJpbmc7XHJcblx0b3JnSWRGZWlsZD86IHN0cmluZztcclxuXHRvcmdOYW1lRmVpbGQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBzZXJ0IHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0YWRkRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0dXBkRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0c3Vic2VydD86IFN1YlVwc2VydFtdO1xyXG5cdGxvZ01vZGVsPzogc3RyaW5nO1xyXG5cdGxvZz86IFRyYWNlTWVzc2FnZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdWJVcHNlcnQge1xyXG5cdHN1Yk1vZGVsTmFtZT86IHN0cmluZztcclxuXHRmaz86IHN0cmluZztcclxuXHRzdWJEYXRhPzogUmVjb3JkPHN0cmluZywgYW55PltdO1xyXG5cdG1hcHRtcD86IE1hcDxudW1iZXIsIGFueT47XHJcblx0bG9ndG1wPzogTWFwPHN0cmluZywgYW55PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlYWwge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRkYXRhPzogYW55O1xyXG59XHJcbi8vIOabtOaWsOeJueWumuWtl+autVxyXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlIHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0ZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0bG9nTW9kZWw/OiBzdHJpbmc7XHJcblx0bG9nPzogVHJhY2VNZXNzYWdlO1xyXG5cdHRyYW5zYWN0aW9uPzogYm9vbGVhbjtcclxufVxyXG4vLyDliKDpmaTmjqXlj6Plo7DmmI5cclxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmUge1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRpZHM/OiBudW1iZXJbXTtcclxuXHRkYXRhPzogYW55O1xyXG5cdGxvZ01vZGVsPzogc3RyaW5nO1xyXG5cdGxvZz86IFRyYWNlTWVzc2FnZTtcclxuXHR0cmFuc2FjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuLy8g6I635Y+W5Y2V5p2h5pWw5o2u6K+m5oOFXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0IHtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0dXNlckNvZGU/OiBzdHJpbmc7XHJcblx0b3JnRmllbGQ/OiBzdHJpbmc7XHJcblx0aWQ/OiBudW1iZXI7XHJcblx0cHJlbG9hZHM/OiBzdHJpbmdbXTsgLy8g6IGU6KGo5p+l6K+i6KGo5ZCN56ew77yM6ZyA5a+55bqU5ZCO56uvc3RydWN0XHJcblx0Zml0ZXJQcmVsb2Fkcz86IFByZWxvYWRbXTsgLy8g5Y+q6IO95Yqg5LiA5bGCIOexu+S8vCAnbW9kdWxlID0nIG1vZHVsZVxyXG5cdGdldExvZz86IGJvb2xlYW47IC8v6I635Y+W5pel5b+XXHJcblx0ZGF0YT86IGFueTsgLy/lkI7nq6/ov5Tlm57nmoRyZXNwb25zZVxyXG5cdGNvbHVtbkZpbHRlcnM/OiBDb2x1bW5GaWx0ZXJbXTsgLy/ov4fmu6TnmoTliJdcclxuXHRmb3JlaWduS2V5Pzogc3RyaW5nOyAvL+ebtOaOpeaPkuWFpeWtkOihqOmcgOimgeS8oOmAkuWklumUruWtl+auteS7peWPiuWklumUruWAvFxyXG5cdFtwcm9wTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJlbG9hZCB7XHJcblx0ZmVpbGROYW1lPzogc3RyaW5nO1xyXG5cdGZpdGVycz86IENvbHVtbkZpbHRlcltdO1xyXG5cdHNvcnRzPzogU29ydFtdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRmlsdGVyIHtcclxuXHRjb2x1bW5GaWVsZD86IHN0cmluZztcclxuXHR0eXBlPzogc3RyaW5nO1xyXG5cdGZpdGVyPzogYW55O1xyXG5cdGZyb20/OiBzdHJpbmcgfCBudW1iZXI7XHJcblx0dG8/OiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XHJcblx0ZmllbGQ/OiBzdHJpbmc7XHJcblx0aXNBc2M/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdHVzZXJDb2RlPzogc3RyaW5nO1xyXG5cdG9yZ0ZpZWxkPzogc3RyaW5nO1xyXG5cdGNvdW50PzogYm9vbGVhbjsgLy/mmK/lkKbov5Tlm550b3RhbE51bVxyXG5cdHByZWxvYWRzPzogc3RyaW5nW107XHJcblx0Zml0ZXJQcmVsb2Fkcz86IFByZWxvYWRbXTtcclxuXHRtb2RlbD86IGFueTtcclxuXHRkYXRhPzogYW55O1xyXG5cdGNvbHVtbkZpbHRlcnM/OiBDb2x1bW5GaWx0ZXJbXTsgLy/ov4fmu6TnmoTliJdcclxuXHRzb3J0cz86IFNvcnRbXTtcclxuXHRncm91cHM/OiBzdHJpbmdbXTtcclxuXHRyZWFkPzogc3RyaW5nW107IC8vcmVhZCDmjIflrprmn6Xor6LnibnlrprlrZfmrrVcclxuXHRmdW5jcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IC8v6YCP6KeG6KGo5ZCO5pyf6KaB55SoXHJcblx0b2Zmc2V0PzogbnVtYmVyO1xyXG5cdGxpbWl0PzogbnVtYmVyO1xyXG5cdHRvdGFsTnVtPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5JbmZvIHtcclxuXHR0b2tlbj86IHN0cmluZztcclxuXHRleHBpcmVkPzogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgYW1XZWIge1xyXG5cdGlkPzogbnVtYmVyO1xyXG5cdGNvZGU/OiBzdHJpbmc7XHJcblx0dHlwZT86IHN0cmluZztcclxuXHRuYW1lPzogc3RyaW5nO1xyXG5cdGFwcElkPzogbnVtYmVyO1xyXG5cdGNvbnRlbnQ/OiBzdHJpbmc7XHJcblx0Y3JlYXRlZEF0Pzogc3RyaW5nO1xyXG5cdHVwZGF0ZWRBdD86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFJmZCB7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcblx0dmFsdWVGaWVsZD86IHN0cmluZztcclxuXHR3aGVyZUZpZWxkPzogc3RyaW5nO1xyXG5cdHR5cGU/OiBzdHJpbmc7XHJcblx0Zml0ZXI/OiBhbnk7XHJcblx0ZGF0YT86IGFueTtcclxufVxyXG5jb25zdCBhcGlQYXRoID0gJyc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWFtJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtdLFxyXG5cdHRlbXBsYXRlOiAnJyxcclxuXHRwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbUNvbXBvbmVudCB7XHJcblx0Ly/mmK/lkKbmj5DkuqTml6Xlv5dcclxuXHRpc0xvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8v5Li75pWw5o2uaWRcclxuXHRpZDogbnVtYmVyID0gMDtcclxuXHQvL+S4u+ihqOaooeWei1xyXG5cdG1vZGVsTmFtZTogc3RyaW5nID0gJyc7XHJcblx0Ly9JROWPguaVsFxyXG5cdHBhcmFtOiBQYXJhbSA9IHt9O1xyXG5cdGZpZDogc3RyaW5nID0gJyc7XHJcblx0Ly/lr7zlhaVcclxuXHRpbXBvcnRQcm06IEltcG9ydEV4Y2VsID0ge307XHJcblx0Ly/mkJzntKBcclxuXHRzZWFyY2hPcHRpb25zOiBTZWFyY2hPcHRpb25zID0ge307XHJcblx0Ly9mb3JtXHJcblx0Zm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zID0ge307XHJcblx0Ly/liJvlu7rmiJbogIXmm7TmlrBcclxuXHR1cHNlcnRQcm06IFVwc2VydCA9IHsgdXBkRGF0YToge30sIGFkZERhdGE6IHt9LCBzdWJzZXJ0OiBbXSwgbG9nOiB7fSB9O1xyXG5cdC8v5aSE55CGXHJcblx0ZGVhbFBybTogRGVhbCA9IHt9O1xyXG5cdC8vbWFw5pu05pawXHJcblx0d3JpdGVQcm06IFdyaXRlID0ge307XHJcblx0Ly/liKDpmaRcclxuXHRyZW1vdmVQcm06IFJlbW92ZSA9IHt9O1xyXG5cdC8v6I635Y+W5LiA5p2h5pWw5o2uXHJcblx0Z2V0UHJtOiBHZXQgPSB7IGRhdGE6IHt9IH07XHJcblx0Ly/mn6Xor6LmnaHku7ZcclxuXHRmaWx0ZXI6IENvbHVtbkZpbHRlciA9IHt9O1xyXG5cdC8v5p+l6K+i5YiX6KGo5pWw5o2uXHJcblx0c2VhcmNoUHJtOiBTZWFyY2ggPSB7fTtcclxuXHRleHBvcnRQcm06IFNlYXJjaCA9IHt9O1xyXG5cdHRhbXBsYXRlOiBEZWFsID0ge307XHJcblx0aHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHRtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xyXG5cdGNvbmZpcm1hdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlybWF0aW9uU2VydmljZSk7XHJcblx0bG9hZGluZ1NlcnZpY2UgPSBpbmplY3QoTG9hZGluZ1NlcnZpY2UpO1xyXG5cdHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0aTE4biA9IGluamVjdChJMThuU2VydmljZSlcclxuXHRjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG5cdHJmZChwcm06IFJmZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdSRkQnLCBwcm0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHdlYmdldChwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnL2dvYW0vYXBpL3dlYmdldCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0d2Vic2F2ZShwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnL2dvYW0vYXBpL3dlYnNhdmUnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHdlYmRlbChwYXJhbTogYW1XZWIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnd2ViZGVsJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHR1cHNlcnQocHJtPzogYW55LCBjYj86IEZ1bmN0aW9uKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3Vwc2VydChwcm0pLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0Y2IgJiYgY2IocmVzKTtcclxuXHRcdFx0XHR0aGlzLnJlc2V0UHJtKCd1cHNlcnQnKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBjb25zdCBwbTogVXBzZXJ0ID0gdGhpcy51cHNlcnRzKClcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJzE9PT09JyxwbSlcclxuXHRcdFx0dGhpcy53ZWJfdXBzZXJ0KHRoaXMudXBzZXJ0UHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdGNiICYmIGNiKHJlcyk7XHJcblx0XHRcdFx0dGhpcy5yZXNldFBybSgndXBzZXJ0Jyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+WFqOmDqOWIm+W7uuaIluabtOaWsO+8jOagueaNrklE5Yik5patXHJcblx0d2ViX3Vwc2VydChwYXJhbTogVXBzZXJ0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdGlmICghcGFyYW0ubW9kZWxOYW1lKSB7XHJcblx0XHRcdHBhcmFtID0geyBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IGFkZERhdGE6IGFueSA9IHBhcmFtLmFkZERhdGE7XHJcblx0XHRpZiAoT2JqZWN0LmtleXMoYWRkRGF0YSkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0ZGVsZXRlIHBhcmFtLmFkZERhdGE7XHJcblx0XHR9XHJcblx0XHRsZXQgdXBkRGF0YTogYW55ID0gcGFyYW0udXBkRGF0YTtcclxuXHRcdGNvbnNvbGUubG9nKCdwYXJhbS0tLS0nLCBwYXJhbS51cGREYXRhKTtcclxuXHRcdGlmIChPYmplY3Qua2V5cyh1cGREYXRhKS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRkZWxldGUgcGFyYW0udXBkRGF0YTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHBhcmFtLnVwZERhdGEhWydpZCddID0gdGhpcy5pZDtcclxuXHRcdFx0cGFyYW0ubG9nIS5waWQgPSB0aGlzLmlkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFwYXJhbT8uYWRkRGF0YSAmJiAhcGFyYW0udXBkRGF0YSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgdXBkRGF0YTogeyBpZDogdGhpcy5pZCB9LCAuLi5wYXJhbSB9O1xyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coJ3RoaXMuaXNMb2ctLS0tJywgdGhpcy5pc0xvZyk7XHJcblx0XHRpZiAoIXRoaXMuaXNMb2cpIHtcclxuXHRcdFx0ZGVsZXRlIHBhcmFtLmxvZztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCBsZzogc3RyaW5nID0gJyc7XHJcblx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdFx0XHRsZXQgY3JlYXRlU3RyID0gaXNJMThuID8gdGhpcy5pMThuLmZhbnlpKCdhcHAuY3JlYXRlJykgOifmlrDlu7onXHJcblx0XHRcdHBhcmFtLnN1YnNlcnQ/LmZvckVhY2goKHYpID0+IHtcclxuXHRcdFx0XHR2LmxvZ3RtcD8uZm9yRWFjaCgodiwgaykgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHYuaWQgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0bGcgKz0gYCR7Y3JlYXRlU3Ryfe+8miAtPiAke3YubmV3VmFsdWV9O2BcclxuXHRcdFx0XHRcdFx0Ly8gbGcgKz0gJ+aWsOW7uu+8miAtPiAnICsgdi5uZXdWYWx1ZSArICc7JztcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGxnICs9ICdbJyArIHYuaWQgKyAnLScgKyB2LmxhYmVsICsgJ10gJyArICh2Lm9sZFZhbHVlIHx8ICcnKSArICcgLT4gJyArICh2Lm5ld1ZhbHVlIHx8ICcnKSArICc7JztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHBhcmFtID0geyAuLi5wYXJhbSwgbG9nOiB7IC4uLnBhcmFtLmxvZywgc3ViQ29udGVudDogbGcgfSB9O1xyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coJ3BhcmFtPT09PScsIHBhcmFtKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3Vwc2VydCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW0ubG9nKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW0ubG9nO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+iHquWkhOeQhumAu+i+kVxyXG5cdGRlYWwocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9kZWFsKHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWwnLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kvKDlhaVtYXDvvIzmoLnmja5JRO+8jOabtOaWsG1hcOaVsOaNrlxyXG5cdHdyaXRlKHBybT86IFdyaXRlKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3dyaXRlKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl93cml0ZSh0aGlzLndyaXRlUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX3dyaXRlKHBhcmFtOiBXcml0ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRpZiAoIXBhcmFtLm1vZGVsTmFtZSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgbW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwgLi4ucGFyYW0gfTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3dyaXRlJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbS5sb2cpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbS5sb2c7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v5qC55o2uSUTliKDpmaRcclxuXHRyZW1vdmUocHJtPzogUmVtb3ZlKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3JlbW92ZShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfcmVtb3ZlKHRoaXMucmVtb3ZlUHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX3JlbW92ZShwYXJhbTogUmVtb3ZlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3JlbW92ZScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW0ubG9nKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW0ubG9nO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+agueaNrklE6I635Y+W5LiA5p2h5pWw5o2uXHJcblx0Z2V0KHBybT86IEdldCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9nZXQocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViX2dldCh0aGlzLmdldFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9nZXQocGFyYW06IEdldCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAoIXBhcmFtLmhhc093blByb3BlcnR5KCdtb2RlbE5hbWUnKSkge1xyXG5cdFx0XHRwYXJhbS5tb2RlbE5hbWUgPSB0aGlzLm1vZGVsTmFtZTtcclxuXHRcdH1cclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2dldCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmdldFBybS5kYXRhID0gcmVzcG9uc2U7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmlkID09PSAwICYmIHBhcmFtLmhhc093blByb3BlcnR5KCdmb3JlaWduS2V5JykpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3BhcmFtLmZvcmVpZ25LZXkhXSA9IHBhcmFtW3BhcmFtLmZvcmVpZ25LZXkhXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5pZCA9IHJlc3BvbnNlPy5pZDtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG5cdHNlYXJjaChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfc2VhcmNoKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfc2VhcmNoKHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnc2VhcmNoJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd1cHNleS0tLS0tJywgdGhpcy51cHNlcnRQcm0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHNlYXJjaG1hcChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfc2VhcmNoKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfc2VhcmNobWFwKHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnc2VhcmNoTWFwJywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd1cHNleS0tLS0tJywgdGhpcy51cHNlcnRQcm0pO1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8v6I635Y+W5aSa5p2h5pWw5o2u77yM5qC55o2u5Lyg5YWl55qE5p2h5Lu26Ieq5Yqo57uE57uHc3FsXHJcblx0c2VhcmNoQ291bnQocHJtPzogU2VhcmNoKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX3NlYXJjaENvdW50KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9zZWFyY2hDb3VudCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9zZWFyY2hDb3VudChwYXJhbTogU2VhcmNoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3NlYXJjaENvdW50JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoUHJtID0geyAuLi5yZXNwb25zZSB9O1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdC8vZXhjZWzlr7zlhaVcclxuXHQvLyBpbXBvcnQocGFyYW06IEltcG9ydEV4Y2VsKTpPYnNlcnZhYmxlPGFueT4ge1xyXG5cdC8vICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG5cdC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwiYW0vcmVtb3ZlXCIscGFyYW0saHR0cE9wdGlvbnMpXHJcblx0Ly8gICAucGlwZShcclxuXHQvLyAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuXHQvLyAgICAgICB0aGlzLm1lc3NhZ2Uuc2V0KHJlc3BvbnNlKTtcclxuXHQvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQodHJ1ZSk7XHJcblx0Ly8gICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG5cdC8vICAgICB9KSxcclxuXHQvLyAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuXHQvLyAgICAgICAvLyDoi6Xor7fmsYLlh7rplJnvvIzorr7nva7or7fmsYLmiJDlip/nirbmgIHkuLogZmFsc2XvvIzlubblsIbplJnor6/ph43mlrDmipvlh7pcclxuXHQvLyAgICAgICB0aGlzLmlzU3VjY2Vzcy5zZXQoZmFsc2UpO1xyXG5cdC8vICAgICAgIHRoaXMubWVzc2FnZS5zZXQoZXJyb3IpO1xyXG5cdC8vICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuXHQvLyAgICAgfSksXHJcblx0Ly8gICAgIGZpbmFsaXplKCgpID0+IHtcclxuXHQvLyAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuXHQvLyAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdC8vICAgICB9KVxyXG5cdC8vICAgKTtcclxuXHQvLyB9XHJcblx0Ly8vL2V4Y2VsIOWvvOWHulxyXG5cdGV4cG9ydChwcm0/OiBTZWFyY2gpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfZXhwb3J0KHBhcmFtOiBTZWFyY2gpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKCFwYXJhbS5tb2RlbE5hbWUpIHtcclxuXHRcdFx0cGFyYW0gPSB7IG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsIC4uLnBhcmFtIH07XHJcblx0XHR9XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdleHBvcnQnLCBwYXJhbSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSArICcueGxzeCc7XHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kurrlt6XlpITnkIblr7zlhaVcclxuXHRkZWFsRXhwb3J0KHBybT86IFNlYXJjaCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYl9kZWFsX2V4cG9ydChwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfZGVhbF9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJfZGVhbF9leHBvcnQocGFyYW06IFNlYXJjaCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAoIXBhcmFtLm1vZGVsTmFtZSkge1xyXG5cdFx0XHRwYXJhbSA9IHsgbW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwgLi4ucGFyYW0gfTtcclxuXHRcdH1cclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWxFeHBvcnQnLCBwYXJhbSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSArICcueGxzeCc7XHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/kuIvovb3lr7zlhaXnmoTmqKHmnb9cclxuXHRkb3dubG9hZFRlbXBsYXRlKHBybT86IERlYWwpIHtcclxuXHRcdGlmIChwcm0pIHtcclxuXHRcdFx0dGhpcy53ZWJfZG93bmxvYWRUZW1wbGF0ZShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJfZG93bmxvYWRUZW1wbGF0ZSh0aGlzLnRhbXBsYXRlKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2Rvd25sb2FkVGVtcGxhdGUocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZG93bmxvYWQnLCBwYXJhbSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSArICfmqKHmnb8ueGxzeCc7XHJcblx0XHRcdFx0RmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liKDpmaTlm77niYdcclxuXHRpbWFnZURlbGV0ZShmaWQ/OiBzdHJpbmcpIHtcclxuXHRcdGlmIChmaWQpIHtcclxuXHRcdFx0dGhpcy53ZWJfaW1hZ2VEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maWQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLndlYl9pbWFnZURlbGV0ZSh0aGlzLmZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9pbWFnZURlbGV0ZShmaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdpbWFnZURlbGV0ZScsIGZpZCkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogcmVzcG9uc2UgfSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liKDpmaTlm77niYdcclxuXHRmaWxlckRlbGV0ZShmaWQ/OiBzdHJpbmcpIHtcclxuXHRcdGlmIChmaWQpIHtcclxuXHRcdFx0dGhpcy53ZWJfZmlsZXJEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maWQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLndlYl9maWxlckRlbGV0ZSh0aGlzLmZpZCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYl9maWxlckRlbGV0ZShmaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdpbWFnZURlbGV0ZScsIGZpZCkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogcmVzcG9uc2UgfSk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly/liLfmlrB0b2tlblxyXG5cdHJlZnJlc2hUb2tlbihwYXJhbTogVG9rZW5JbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ3JlZnJlc2hUb2tlbicsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvL+WIm+W7uuihqFxyXG5cdGNyZWF0ZVRhYmxlKHBybT86IFBhcmFtKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViX2NyZWF0ZVRhYmxlKHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYl9jcmVhdGVUYWJsZSh0aGlzLnBhcmFtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0d2ViX2NyZWF0ZVRhYmxlKHBhcmFtOiBQYXJhbSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCArICdjcmVhdGVUYWJsZScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHQvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0Ly8g5pqC5peg56Gu5a6a5piv5ZCm6YeN572u5YW25LuW5YWs5YWx5Y+Y6YePXHJcblx0cmVzZXRQcm0oc2VhcmNoPzogc3RyaW5nKSB7XHJcblx0XHRzd2l0Y2ggKHNlYXJjaCkge1xyXG5cdFx0XHRjYXNlICd1cHNlcnQnOlxyXG5cdFx0XHRcdHRoaXMudXBzZXJ0UHJtLmFkZERhdGEgPSB7fTtcclxuXHRcdFx0XHR0aGlzLnVwc2VydFBybS51cGREYXRhID0ge307XHJcblx0XHRcdFx0dGhpcy51cHNlcnRQcm0ubG9nID0ge307XHJcblx0XHRcdFx0dGhpcy51cHNlcnRQcm0uc3Vic2VydD8uZm9yRWFjaCgodikgPT4ge1xyXG5cdFx0XHRcdFx0di5sb2d0bXAgPSBuZXcgTWFwKCk7XHJcblx0XHRcdFx0XHR2Lm1hcHRtcCA9IG5ldyBNYXAoKTtcclxuXHRcdFx0XHRcdHYuc3ViRGF0YSA9IFtdO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdCcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvL+iHquWkhOeQhumAu+i+kVxyXG5cdGRlYWxRdWVyeShwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbFF1ZXJ5KHBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxRdWVyeSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJEZWFsUXVlcnkocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbFF1ZXJ5JywgcGFyYW0pLnBpcGUoXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZGVhbFBybSA9IHsgZGF0YTogcmVzcG9uc2UsIC4uLnRoaXMuZGVhbFBybSB9O1xyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNldExvYWRpbmcoZmFsc2UpO1xyXG5cdFx0XHR9KSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdGRlYWxDdXN0b20ocHJtPzogRGVhbCkge1xyXG5cdFx0aWYgKHBybSkge1xyXG5cdFx0XHR0aGlzLndlYkRlYWxDdXN0b20ocHJtKS5zdWJzY3JpYmUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR3ZWJEZWFsQ3VzdG9tKHBhcmFtOiBEZWFsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoICsgJ2RlYWxDdXN0b20nLCBwYXJhbSkucGlwZShcclxuXHRcdFx0bWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kZWFsUHJtID0geyBkYXRhOiByZXNwb25zZSwgLi4udGhpcy5kZWFsUHJtIH07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0ZGVhbFN1Ym1pdChwcm0/OiBEZWFsKSB7XHJcblx0XHRpZiAocHJtKSB7XHJcblx0XHRcdHRoaXMud2ViRGVhbEN1c3RvbShwcm0pLnN1YnNjcmliZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJEZWFsQ3VzdG9tKHRoaXMuZGVhbFBybSkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHdlYkRlYWxTdWJtaXQocGFyYW06IERlYWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGggKyAnZGVhbFN1Ym1pdCcsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRlYWxQcm0gPSB7IGRhdGE6IHJlc3BvbnNlLCAuLi50aGlzLmRlYWxQcm0gfTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlKTtcclxuXHRcdFx0fSksXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iXX0=
|