@bizdoc/core 1.14.13 → 1.14.16

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.
@@ -33,6 +33,77 @@
33
33
  },
34
34
  "required": [ "Event" ]
35
35
  },
36
+ "node_base": {
37
+ "properties": {
38
+ "Id": {
39
+ "type": "string"
40
+ },
41
+ "AddInfo": {
42
+ "type": "object",
43
+ "properties": {
44
+ "actionName": {
45
+ "type": "string"
46
+ },
47
+ "Case": { "type": "string" }
48
+ }
49
+ }
50
+ },
51
+ "required": [
52
+ "Id"
53
+ ]
54
+ },
55
+ "node": {
56
+ "type": "object",
57
+ "allOf": [
58
+ {
59
+ "properties": {
60
+ "Parent": {
61
+ "type": "string"
62
+ },
63
+ "RotateAngle": {
64
+ "type": "number"
65
+ },
66
+ "Width": {
67
+ "type": "number"
68
+ },
69
+ "Height": {
70
+ "type": "number"
71
+ },
72
+ "OffsetX": {
73
+ "type": "number"
74
+ },
75
+ "OffsetY": {
76
+ "type": "number"
77
+ },
78
+ "Shape": {
79
+ "$ref": "#/definitions/shape"
80
+ },
81
+ "Ports": {
82
+ "type": "array",
83
+ "items": {}
84
+ },
85
+ "Pivot": {
86
+ "$ref": "#/definitions/point"
87
+ },
88
+ "BorderWidth": {
89
+ "type": "integer"
90
+ },
91
+ "BorderDashArray": {
92
+ "type": "string"
93
+ },
94
+ "Constraints": {
95
+ "type": "integer"
96
+ }
97
+ },
98
+ "required": [
99
+ "Shape"
100
+ ]
101
+ },
102
+ {
103
+ "$ref": "#/definitions/node_base"
104
+ }
105
+ ]
106
+ },
36
107
  "shape": {
37
108
  "type": "object",
38
109
  "properties": {
@@ -140,7 +211,14 @@
140
211
  "items": {
141
212
  "properties": {
142
213
  "Id": { "type": "string" },
214
+ "Children": {
215
+ "type": "array",
216
+ "items": {
217
+ "$ref": "#/definitions/node_base"
218
+ }
219
+ },
143
220
  "Height": { "type": "number" },
221
+ "Width": { "type": "number" },
144
222
  "Header": {
145
223
  "type": "object",
146
224
  "properties": {
@@ -175,6 +253,72 @@
175
253
  },
176
254
  "required": [ "Type" ]
177
255
  },
256
+ "connector": {
257
+ "type": "object",
258
+ "allOf": [
259
+ {
260
+ "properties": {
261
+ "LineDashArray": {
262
+ "type": "string"
263
+ },
264
+ "TargetDecorator": {
265
+ "$ref": "#/definitions/decorator"
266
+ },
267
+ "SourceDecorator": {
268
+ "$ref": "#/definitions/decorator"
269
+ },
270
+ "LineWidth": {
271
+ "type": "integer"
272
+ },
273
+ "Constraints": {
274
+ "type": "integer"
275
+ },
276
+ "Segments": {
277
+ "type": "array",
278
+ "items": {
279
+ "type": "object",
280
+ "properties": {
281
+ "Type": {
282
+ "type": "string"
283
+ },
284
+ "Points": {
285
+ "type": "array",
286
+ "items": {
287
+ "$ref": "#/definitions/point"
288
+ }
289
+ }
290
+ },
291
+ "required": [
292
+ "Type"
293
+ ]
294
+ }
295
+ },
296
+ "CornerRadius": {
297
+ "type": "number"
298
+ },
299
+ "SourcePoint": {
300
+ "$ref": "#/definitions/point"
301
+ },
302
+ "TargetPoint": {
303
+ "$ref": "#/definitions/point"
304
+ },
305
+ "TargetID": {
306
+ "type": "string"
307
+ },
308
+ "SourceID": {
309
+ "type": "string"
310
+ }
311
+ },
312
+ "required": [
313
+ "TargetID",
314
+ "SourceID"
315
+ ]
316
+ },
317
+ {
318
+ "$ref": "#/definitions/node_base"
319
+ }
320
+ ]
321
+ },
178
322
  "alignment": {
179
323
  "type": "string",
180
324
  "enum": [
@@ -295,137 +439,14 @@
295
439
  "Connectors": {
296
440
  "type": "array",
297
441
  "items": {
298
- "type": "object",
299
- "properties": {
300
- "LineDashArray": {
301
- "type": "string"
302
- },
303
- "Id": {
304
- "type": "string"
305
- },
306
- "TargetDecorator": {
307
- "$ref": "#/definitions/decorator"
308
- },
309
- "SourceDecorator": {
310
- "$ref": "#/definitions/decorator"
311
- },
312
- "LineWidth": {
313
- "type": "integer"
314
- },
315
- "Constraints": {
316
- "type": "integer"
317
- },
318
- "Segments": {
319
- "type": "array",
320
- "items": {
321
- "type": "object",
322
- "properties": {
323
- "Type": {
324
- "type": "string"
325
- },
326
- "Points": {
327
- "type": "array",
328
- "items": {
329
- "$ref": "#/definitions/point"
330
- }
331
- }
332
- },
333
- "required": [
334
- "Type"
335
- ]
336
- }
337
- },
338
- "CornerRadius": {
339
- "type": "number"
340
- },
341
- "SourcePoint": {
342
- "$ref": "#/definitions/point"
343
- },
344
- "TargetPoint": {
345
- "$ref": "#/definitions/point"
346
- },
347
- "AddInfo": {
348
- "type": "object",
349
- "properties": {
350
- "actionName": {
351
- "type": "string"
352
- },
353
- "Case": { "type": "string" }
354
- }
355
- },
356
- "TargetID": {
357
- "type": "string"
358
- },
359
- "SourceID": {
360
- "type": "string"
361
- }
362
- },
363
- "required": [
364
- "Id",
365
- "TargetID",
366
- "SourceID"
367
- ]
442
+ "$ref": "#/definitions/connector"
368
443
  }
369
444
  },
370
445
  "Timestamp": { "type": "number" },
371
446
  "Nodes": {
372
447
  "type": "array",
373
448
  "items": {
374
- "type": "object",
375
- "properties": {
376
- "Parent": {
377
- "type": "string"
378
- },
379
- "RotateAngle": {
380
- "type": "number"
381
- },
382
- "Width": {
383
- "type": "number"
384
- },
385
- "Height": {
386
- "type": "number"
387
- },
388
- "OffsetX": {
389
- "type": "number"
390
- },
391
- "OffsetY": {
392
- "type": "number"
393
- },
394
- "Id": {
395
- "type": "string"
396
- },
397
- "AddInfo": {
398
- "type": "object",
399
- "properties": {
400
- "nodeType": { "type": "string" },
401
- "standardTime": { "type": [ "string", "null" ] }
402
- },
403
- "additionalProperties": true
404
- },
405
- "Shape": {
406
- "$ref": "#/definitions/shape"
407
- },
408
- "Ports": {
409
- "type": "array",
410
- "items": {}
411
- },
412
- "Pivot": {
413
- "$ref": "#/definitions/point"
414
- },
415
- "BorderWidth": {
416
- "type": "integer"
417
- },
418
- "BorderDashArray": {
419
- "type": "string"
420
- },
421
- "Constraints": {
422
- "type": "integer"
423
- }
424
- },
425
- "required": [
426
- "Id",
427
- "Shape"
428
- ]
449
+ "$ref": "#/definitions/node"
429
450
  }
430
451
  }
431
452
  },
@@ -1,22 +1,28 @@
1
1
  import { Injectable } from "@angular/core";
2
+ import { SaveChangesDialog } from "../core/save-changes.dialog";
2
3
  import * as i0 from "@angular/core";
3
- import * as i1 from "../core/prompt.service";
4
+ import * as i1 from "@angular/material/dialog";
4
5
  export class AdminDismiss {
5
- constructor(_sb) {
6
- this._sb = _sb;
6
+ constructor(_dialog) {
7
+ this._dialog = _dialog;
7
8
  }
8
9
  onDismiss(component) {
9
10
  if (component.dirty)
10
- return this._sb.ask('SaveChangesAsk', 'SaveChanges', { i18n: true, color: 'primary', ok: 'Save', cancel: 'DiscardChanges' }).
11
- toPromise().
12
- then(ok => ok ? component.save().then(() => true) : true);
11
+ return new Promise((resolve, reject) => this._dialog.open(SaveChangesDialog).
12
+ afterClosed().
13
+ subscribe(ok => {
14
+ if (ok)
15
+ component.save().then(() => resolve(true), reject);
16
+ else
17
+ resolve(ok !== false);
18
+ }));
13
19
  else
14
20
  return true;
15
21
  }
16
22
  }
17
- AdminDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, deps: [{ token: i1.PromptService }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ AdminDismiss.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
18
24
  AdminDismiss.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss });
19
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AdminDismiss, decorators: [{
20
26
  type: Injectable
21
- }], ctorParameters: function () { return [{ type: i1.PromptService }]; } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGlzbWlzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hZG1pbi1kaXNtaXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQW9CLEdBQWtCO1FBQWxCLFFBQUcsR0FBSCxHQUFHLENBQWU7SUFDdEMsQ0FBQztJQUNILFNBQVMsQ0FBQyxTQUF5QjtRQUM3QixJQUFJLFNBQVMsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFILFNBQVMsRUFBRTtnQkFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdkQsQ0FBQzs7WUFFRixPQUFPLElBQUksQ0FBQztJQUNwQixDQUFDOzt5R0FYUSxZQUFZOzZHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDYW5EaXNtaXNzIH0gZnJvbSBcIi4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbkRpc21pc3MgaW1wbGVtZW50cyBDYW5EaXNtaXNzPEFkbWluQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSkge1xyXG4gICAgfVxyXG4gIG9uRGlzbWlzcyhjb21wb25lbnQ6IEFkbWluQ29tcG9uZW50KTogUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQuZGlydHkpXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2IuYXNrKCdTYXZlQ2hhbmdlc0FzaycsICdTYXZlQ2hhbmdlcycsIHsgaTE4bjogdHJ1ZSwgY29sb3I6ICdwcmltYXJ5Jywgb2s6ICdTYXZlJywgY2FuY2VsOiAnRGlzY2FyZENoYW5nZXMnIH0pLlxyXG4gICAgICAgICAgICB0b1Byb21pc2UoKS5cclxuICAgICAgICAgICAgdGhlbihvayA9PiBvayA/IGNvbXBvbmVudC5zYXZlKCkudGhlbigoKSA9PiB0cnVlKSA6IHRydWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluQ29tcG9uZW50IHtcclxuICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICBkaXJ0eTogYm9vbGVhbjtcclxufVxyXG4iXX0=
27
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGlzbWlzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hZG1pbi1kaXNtaXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBSWhFLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1UsT0FBa0I7UUFBbEIsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUM1QixDQUFDO0lBQ0QsU0FBUyxDQUFDLFNBQXlCO1FBQ2pDLElBQUksU0FBUyxDQUFDLEtBQUs7WUFDakIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDbEMsV0FBVyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDYixJQUFJLEVBQUU7b0JBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7O29CQUN0RCxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRVIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7eUdBZlUsWUFBWTs2R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBDYW5EaXNtaXNzIH0gZnJvbSBcIi4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBTYXZlQ2hhbmdlc0RpYWxvZyB9IGZyb20gXCIuLi9jb3JlL3NhdmUtY2hhbmdlcy5kaWFsb2dcIjtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbkRpc21pc3MgaW1wbGVtZW50cyBDYW5EaXNtaXNzPEFkbWluQ29tcG9uZW50PiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZykge1xyXG4gIH1cclxuICBvbkRpc21pc3MoY29tcG9uZW50OiBBZG1pbkNvbXBvbmVudCk6IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgIGlmIChjb21wb25lbnQuZGlydHkpXHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKFNhdmVDaGFuZ2VzRGlhbG9nKS5cclxuICAgICAgICAgIGFmdGVyQ2xvc2VkKCkuXHJcbiAgICAgICAgICBzdWJzY3JpYmUob2sgPT4ge1xyXG4gICAgICAgICAgICBpZiAob2spIGNvbXBvbmVudC5zYXZlKCkudGhlbigoKSA9PiByZXNvbHZlKHRydWUpLCByZWplY3QpO1xyXG4gICAgICAgICAgICBlbHNlIHJlc29sdmUob2sgIT09IGZhbHNlKTtcclxuICAgICAgICAgIH0pKTsgXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBZG1pbkNvbXBvbmVudCB7XHJcbiAgc2F2ZSgpOiBQcm9taXNlPGFueT47XHJcbiAgZGlydHk6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -150,7 +150,7 @@ export class ColorPicker {
150
150
  }
151
151
  ColorPicker.nextId = 0;
152
152
  ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i3.Directionality }], target: i0.ɵɵFactoryTarget.Component });
153
- ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: " mat.get-color-from-palette-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
153
+ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: MatButton, descendants: true, static: true }, { propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `<button mat-button (click)='open()'>
154
154
  <span>{{label}}</span>
155
155
  <mat-icon>arrow_drop_down</mat-icon>
156
156
  </button>
@@ -163,7 +163,7 @@ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
163
163
  </ng-template>`, isInline: true, styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
164
164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ColorPicker, decorators: [{
165
165
  type: Component,
166
- args: [{ selector: ' mat.get-color-from-palette-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
166
+ args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], template: `<button mat-button (click)='open()'>
167
167
  <span>{{label}}</span>
168
168
  <mat-icon>arrow_drop_down</mat-icon>
169
169
  </button>
@@ -205,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
205
205
  type: ViewChild,
206
206
  args: [TemplateRef, { static: true }]
207
207
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb3JlL2NvbG9yLXBpY2tlci5pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUErQixXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQUV0RCxrQ0FBa0M7QUFzQmxDLE1BQU0sT0FBTyxXQUFXO0lBc0d0QixZQUF1QyxTQUFvQixFQUFVLFFBQWlCLEVBQVUsR0FBcUIsRUFBVSxRQUFvQixFQUFVLElBQW9CO1FBQTFJLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFwR3hLLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUV2QyxXQUFNLEdBQUcsQ0FBQyxJQUFJO1lBQ1osS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLLENBQUMsQ0FBQztRQUNULFdBQU0sR0FBRyxDQUFDLEtBQUs7WUFDYixNQUFNO1lBQ04sUUFBUTtZQUNSLFlBQVk7WUFDWixRQUFRO1lBQ1IsTUFBTTtZQUNOLFdBQVc7WUFDWCxNQUFNO1lBQ04sTUFBTTtZQUNOLE9BQU87WUFDUCxZQUFZO1lBQ1osTUFBTTtZQUNOLFFBQVE7WUFDUixPQUFPO1lBQ1AsUUFBUTtZQUNSLE9BQU87WUFDUCxNQUFNO1lBQ04sVUFBVSxDQUFDLENBQUM7UUFFTCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBR2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBcUJmLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IsT0FBRSxHQUFHLGdCQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUUzRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBc0JoQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ21CLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBY3RDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQWxFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksS0FBSyxLQUFhLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxLQUFLLENBQUMsR0FBVztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBT0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFDSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFDSSxRQUFRLEtBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUdELGlCQUFpQixDQUFDLEdBQWE7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxNQUFrQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBUUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0QsS0FBSyxDQUFDLEtBQWE7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNPLGNBQWM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzNGLE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsUUFBUTtvQkFDakIsUUFBUSxFQUFFLE9BQU87b0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2lCQUNoQixFQUFFO29CQUNELE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsT0FBTztvQkFDakIsUUFBUSxFQUFFLFFBQVE7aUJBQ25CLENBQUMsQ0FBQztZQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDMUIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGtDQUFrQztTQUNsRCxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUEzSWMsa0JBQU0sR0FBRyxDQUFFLENBQUE7d0dBRGYsV0FBVzs0RkFBWCxXQUFXLG1UQW5CWCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxvRUFrSDVELFNBQVMsOEZBQ1QsV0FBVyw4REFsSFo7Ozs7Ozs7Ozs7ZUFVRzsyRkFRRixXQUFXO2tCQXJCdkIsU0FBUzsrQkFDRSxvQ0FBb0MsYUFDbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGFBQWEsRUFBRSxDQUFDLFlBQzdEOzs7Ozs7Ozs7O2VBVUcsUUFFUDt3QkFDSixrQkFBa0IsRUFBRSxrQkFBa0I7d0JBQ3RDLE1BQU0sRUFBRSxJQUFJO3dCQUNaLHlCQUF5QixFQUFFLGFBQWE7cUJBQ3pDOzswQkF3R1ksUUFBUTs7MEJBQUksSUFBSTt1SkFuR3BCLEtBQUs7c0JBQWIsS0FBSztnQkEwREcsWUFBWTtzQkFEcEIsTUFBTTtnQkFFUSxFQUFFO3NCQUFoQixXQUFXO2dCQU9SLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBS3pCLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBT2dDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQVFJLFFBQVE7c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSxhQUFhO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgU2VsZiwgT3B0aW9uYWwsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBFU0NBUEUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNQVRFUklBTF9QQUxFVFRFUyB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbG9yc1wiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG4vL1tzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0ndmFsdWUnXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnIG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlLXBpY2tlcicsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogQ29sb3JQaWNrZXIgfV0sXHJcbiAgdGVtcGxhdGU6IGA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0nb3BlbigpJz5cclxuPHNwYW4+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG48bmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImNvbG9yLXBhbGV0dGVcIj5cclxuICAgIDxkaXYgKm5nRm9yPSdsZXQgcCBvZiBPYmplY3Qua2V5cyhfcGFsZXR0ZXMpJyBjbGFzcz1cImNvbG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICA8c3BhbiAqbmdGb3I9J2xldCBjIG9mIE9iamVjdC5rZXlzKF9wYWxldHRlc1twXSknIChjbGljayk9J19waWNrKF9wYWxldHRlc1twXVtjXSknIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0nX3BhbGV0dGVzW3BdW2NdJyBjbGFzcz1cImNvbG9yLWl0ZW1cIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5gLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci5pbnB1dC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy5mbG9hdGluZ10nOiAnc2hvdWxkTGFiZWxGbG9hdCcsXHJcbiAgICAnW2lkXSc6ICdpZCcsXHJcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnZGVzY3JpYmVkQnknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXIgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPHN0cmluZz4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgcmVhZG9ubHkgX3BhbGV0dGVzID0gTUFURVJJQUxfUEFMRVRURVM7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBzY2FsZXMgPSBbXCI1MFwiLFxyXG4gICAgXCIxMDBcIixcclxuICAgIFwiMjAwXCIsXHJcbiAgICBcIjMwMFwiLFxyXG4gICAgXCI0MDBcIixcclxuICAgIFwiNTAwXCIsXHJcbiAgICBcIjYwMFwiLFxyXG4gICAgXCI3MDBcIixcclxuICAgIFwiODAwXCIsXHJcbiAgICBcIjkwMFwiXTtcclxuICBjb2xvcnMgPSBbXCJyZWRcIixcclxuICAgIFwicGlua1wiLFxyXG4gICAgXCJwdXJwbGVcIixcclxuICAgIFwiZGVlcFB1cnBsZVwiLFxyXG4gICAgXCJpbmRpZ29cIixcclxuICAgIFwiYmx1ZVwiLFxyXG4gICAgXCJsaWdodEJsdWVcIixcclxuICAgIFwiY3lhblwiLFxyXG4gICAgXCJ0ZWFsXCIsXHJcbiAgICBcImdyZWVuXCIsXHJcbiAgICBcImxpZ2h0R3JlZW5cIixcclxuICAgIFwibGltZVwiLFxyXG4gICAgXCJ5ZWxsb3dcIixcclxuICAgIFwiYW1iZXJcIixcclxuICAgIFwib3JhbmdlXCIsXHJcbiAgICBcImJyb3duXCIsXHJcbiAgICBcImdyZXlcIixcclxuICAgIFwiYmx1ZUdyZXlcIl07XHJcblxyXG4gIHJlYWRvbmx5IE9iamVjdCA9IE9iamVjdDtcclxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX29uVG91Y2hlZDogYW55O1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gb2JqO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl92YWx1ZTsgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLl9vbkNoYW5nZSAmJiB0aGlzLl9vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXMubmV4dCh2YWwpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjb2xvci1waWNrZXItJHtDb2xvclBpY2tlci5uZXh0SWQrK31gO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZSA9PT0gbnVsbDtcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpXHJcbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcSkge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSByZXE7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3RyaWdnZXIuZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuICBvbkNvbnRhaW5lckNsaWNrKF9ldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgIXRoaXMuX29wZW5lZCAmJiB0aGlzLm9wZW4oKTtcclxuICB9XHJcbiAgQFZpZXdDaGlsZChNYXRCdXR0b24sIHsgc3RhdGljOiB0cnVlIH0pIF90cmlnZ2VyOiBNYXRCdXR0b247XHJcbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgX2NvbG9yUGFsZXR0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIF92YzogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jcmVhdGVPdmVybGF5KCk7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fY29sb3JQYWxldHRlLCB0aGlzLl92Yyk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgdGhpcy5fb3BlbmVkID0gdHJ1ZTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgdGhpcy5fb3BlbmVkID0gZmFsc2U7XHJcbiAgfVxyXG4gIF9waWNrKGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFsdWUgPSBjb2xvcjtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudCkud2l0aFBvc2l0aW9ucyhbe1xyXG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICB9XSksXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJ1xyXG4gICAgfSk7XHJcbiAgICBtZXJnZShyZWYuYmFja2Ryb3BDbGljaygpLCByZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoZmlsdGVyKGsgPT4gay5rZXlDb2RlID09PSBFU0NBUEUpKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgICByZXR1cm4gcmVmO1xyXG4gIH1cclxufVxyXG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb3JlL2NvbG9yLXBpY2tlci5pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUErQixXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQUV0RCxrQ0FBa0M7QUFzQmxDLE1BQU0sT0FBTyxXQUFXO0lBc0d0QixZQUF1QyxTQUFvQixFQUFVLFFBQWlCLEVBQVUsR0FBcUIsRUFBVSxRQUFvQixFQUFVLElBQW9CO1FBQTFJLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFwR3hLLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUV2QyxXQUFNLEdBQUcsQ0FBQyxJQUFJO1lBQ1osS0FBSztZQUNMLEtB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O3dCQUNaLHlCQUF5QixFQUFFLGFBQWE7cUJBQ3pDOzswQkF3R1ksUUFBUTs7MEJBQUksSUFBSTt1SkFuR3BCLEtBQUs7c0JBQWIsS0FBSztnQkEwREcsWUFBWTtzQkFEcEIsTUFBTTtnQkFFUSxFQUFFO3NCQUFoQixXQUFXO2dCQU9SLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBS3pCLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBT2dDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCO2dCQVFJLFFBQVE7c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSxhQUFhO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgU2VsZiwgT3B0aW9uYWwsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBFU0NBUEUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNQVRFUklBTF9QQUxFVFRFUyB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbG9yc1wiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG4vL1tzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0ndmFsdWUnXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWNvbG9yLXBpY2tlcicsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogQ29sb3JQaWNrZXIgfV0sXHJcbiAgdGVtcGxhdGU6IGA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0nb3BlbigpJz5cclxuPHNwYW4+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG48bmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImNvbG9yLXBhbGV0dGVcIj5cclxuICAgIDxkaXYgKm5nRm9yPSdsZXQgcCBvZiBPYmplY3Qua2V5cyhfcGFsZXR0ZXMpJyBjbGFzcz1cImNvbG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICA8c3BhbiAqbmdGb3I9J2xldCBjIG9mIE9iamVjdC5rZXlzKF9wYWxldHRlc1twXSknIChjbGljayk9J19waWNrKF9wYWxldHRlc1twXVtjXSknIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0nX3BhbGV0dGVzW3BdW2NdJyBjbGFzcz1cImNvbG9yLWl0ZW1cIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5gLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci5pbnB1dC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy5mbG9hdGluZ10nOiAnc2hvdWxkTGFiZWxGbG9hdCcsXHJcbiAgICAnW2lkXSc6ICdpZCcsXHJcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnZGVzY3JpYmVkQnknXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXIgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPHN0cmluZz4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgcmVhZG9ubHkgX3BhbGV0dGVzID0gTUFURVJJQUxfUEFMRVRURVM7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBzY2FsZXMgPSBbXCI1MFwiLFxyXG4gICAgXCIxMDBcIixcclxuICAgIFwiMjAwXCIsXHJcbiAgICBcIjMwMFwiLFxyXG4gICAgXCI0MDBcIixcclxuICAgIFwiNTAwXCIsXHJcbiAgICBcIjYwMFwiLFxyXG4gICAgXCI3MDBcIixcclxuICAgIFwiODAwXCIsXHJcbiAgICBcIjkwMFwiXTtcclxuICBjb2xvcnMgPSBbXCJyZWRcIixcclxuICAgIFwicGlua1wiLFxyXG4gICAgXCJwdXJwbGVcIixcclxuICAgIFwiZGVlcFB1cnBsZVwiLFxyXG4gICAgXCJpbmRpZ29cIixcclxuICAgIFwiYmx1ZVwiLFxyXG4gICAgXCJsaWdodEJsdWVcIixcclxuICAgIFwiY3lhblwiLFxyXG4gICAgXCJ0ZWFsXCIsXHJcbiAgICBcImdyZWVuXCIsXHJcbiAgICBcImxpZ2h0R3JlZW5cIixcclxuICAgIFwibGltZVwiLFxyXG4gICAgXCJ5ZWxsb3dcIixcclxuICAgIFwiYW1iZXJcIixcclxuICAgIFwib3JhbmdlXCIsXHJcbiAgICBcImJyb3duXCIsXHJcbiAgICBcImdyZXlcIixcclxuICAgIFwiYmx1ZUdyZXlcIl07XHJcblxyXG4gIHJlYWRvbmx5IE9iamVjdCA9IE9iamVjdDtcclxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX29uVG91Y2hlZDogYW55O1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gb2JqO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl92YWx1ZTsgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLl9vbkNoYW5nZSAmJiB0aGlzLl9vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXMubmV4dCh2YWwpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjb2xvci1waWNrZXItJHtDb2xvclBpY2tlci5uZXh0SWQrK31gO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZSA9PT0gbnVsbDtcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpXHJcbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcSkge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSByZXE7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3RyaWdnZXIuZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuICBvbkNvbnRhaW5lckNsaWNrKF9ldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgIXRoaXMuX29wZW5lZCAmJiB0aGlzLm9wZW4oKTtcclxuICB9XHJcbiAgQFZpZXdDaGlsZChNYXRCdXR0b24sIHsgc3RhdGljOiB0cnVlIH0pIF90cmlnZ2VyOiBNYXRCdXR0b247XHJcbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgX2NvbG9yUGFsZXR0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLCBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIF92YzogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jcmVhdGVPdmVybGF5KCk7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fY29sb3JQYWxldHRlLCB0aGlzLl92Yyk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgdGhpcy5fb3BlbmVkID0gdHJ1ZTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgdGhpcy5fb3BlbmVkID0gZmFsc2U7XHJcbiAgfVxyXG4gIF9waWNrKGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFsdWUgPSBjb2xvcjtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudCkud2l0aFBvc2l0aW9ucyhbe1xyXG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICB9XSksXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJ1xyXG4gICAgfSk7XHJcbiAgICBtZXJnZShyZWYuYmFja2Ryb3BDbGljaygpLCByZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoZmlsdGVyKGsgPT4gay5rZXlDb2RlID09PSBFU0NBUEUpKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgICByZXR1cm4gcmVmO1xyXG4gIH1cclxufVxyXG4iXX0=