vcomply-workflow-engine 5.0.34 → 6.0.1

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.
@@ -1,13 +1,13 @@
1
1
  import { Pipe } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class GetEditorConfigPipe {
4
- transform(index) {
4
+ transform(index, additionalValue) {
5
5
  return {
6
6
  mode: 'prime',
7
7
  colorPalette: true,
8
8
  link: true,
9
9
  placeholder: 'Add value',
10
- id: 'customField' + index
10
+ id: additionalValue + index
11
11
  };
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GetEditorConfigPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
20
20
  pure: true
21
21
  }]
22
22
  }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVkaXRvci1jb25maWcucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3BpcGVzL2dldC1lZGl0b3ItY29uZmlnLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBUXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBUztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLElBQUk7WUFDVixXQUFXLEVBQUUsV0FBVztZQUN4QixFQUFFLEVBQUUsYUFBYSxHQUFDLEtBQUs7U0FDeEIsQ0FBQztJQUNOLENBQUM7K0dBVFUsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICdAdmNvbXBseS9lZGl0b3InO1xuXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dldEVkaXRvckNvbmZpZycsXG4gIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR2V0RWRpdG9yQ29uZmlnUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oaW5kZXg6IG51bWJlcik6IEVkaXRvckNvbmZpZyB7XG4gICAgcmV0dXJuICAge1xuICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnQWRkIHZhbHVlJyxcbiAgICAgICAgaWQ6ICdjdXN0b21GaWVsZCcraW5kZXhcbiAgICAgIH07XG4gIH1cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVkaXRvci1jb25maWcucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3BpcGVzL2dldC1lZGl0b3ItY29uZmlnLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBUXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUFDLEtBQWEsRUFBRSxlQUF1QjtRQUM5QyxPQUFTO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixZQUFZLEVBQUUsSUFBSTtZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLEVBQUUsRUFBRSxlQUFlLEdBQUcsS0FBSztTQUM1QixDQUFDO0lBQ04sQ0FBQzsrR0FUVSxtQkFBbUI7NkdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ0B2Y29tcGx5L2VkaXRvcic7XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnZ2V0RWRpdG9yQ29uZmlnJyxcbiAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZXRFZGl0b3JDb25maWdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShpbmRleDogbnVtYmVyLCBhZGRpdGlvbmFsVmFsdWU6IHN0cmluZyk6IEVkaXRvckNvbmZpZyB7XG4gICAgcmV0dXJuICAge1xuICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnQWRkIHZhbHVlJyxcbiAgICAgICAgaWQ6IGFkZGl0aW9uYWxWYWx1ZSArIGluZGV4XG4gICAgICB9O1xuICB9XG59XG4iXX0=
@@ -99,20 +99,32 @@ export class CaseCategoryComponent {
99
99
  });
100
100
  }
101
101
  populateInitialCategory() {
102
- if (this.initialCategory?.length && this.workflowType === 'ACTW') {
102
+ if (this.isACTWWorkflow()) {
103
103
  this.updateACTWCategory();
104
+ return;
104
105
  }
105
- else if (this.initialCategory?.length && this.workflowType === 'RAC') {
106
+ if (this.isRACWorkflow()) {
106
107
  this.updateRACCategory();
108
+ return;
107
109
  }
108
- else {
109
- this.mode === 'EDIT' &&
110
- this.workflowType !== 'ACTW' &&
111
- this.caseTypeSelected === this.caseType.ADD_CASE_TO_WORKFLOW
112
- ? ((this.state = SelectionState.DISABLED),
113
- (this.config.disabledText =
114
- this.categoryTexts.case_details.category.placeholder))
115
- : (this.state = SelectionState.EMPTY);
110
+ this.handleDefaultCase();
111
+ }
112
+ isACTWWorkflow() {
113
+ return ((this.initialCategory?.length || this.initialAdditionalCategory?.length) &&
114
+ this.workflowType === 'ACTW');
115
+ }
116
+ isRACWorkflow() {
117
+ return (this.initialCategory?.length || this.initialAdditionalCategory?.length) && this.workflowType === 'RAC';
118
+ }
119
+ handleDefaultCase() {
120
+ const isEditModeWithRestrictions = this.mode === 'EDIT' &&
121
+ this.workflowType !== 'ACTW' &&
122
+ this.caseTypeSelected === this.caseType.ADD_CASE_TO_WORKFLOW;
123
+ this.state = isEditModeWithRestrictions
124
+ ? SelectionState.DISABLED
125
+ : SelectionState.EMPTY;
126
+ if (isEditModeWithRestrictions) {
127
+ this.config.disabledText = this.categoryTexts.case_details.category.placeholder;
116
128
  }
117
129
  }
118
130
  updateRACCategory() {
@@ -127,22 +139,22 @@ export class CaseCategoryComponent {
127
139
  }));
128
140
  }
129
141
  if (this.initialAdditionalCategory?.length) {
130
- this.additionalCategoryState = SelectionState.SELECTED;
131
- this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialAdditionalCategory?.some((id) => id === category?._id));
132
- this.selectedAdditionalItems = this.caseCategoryList
133
- .filter((category) => this.initialAdditionalCategory?.includes(category?._id))
142
+ this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialAdditionalCategory?.some((id) => id === category?._id) || this.initialAdditionalCategory?.includes(category?._id));
143
+ this.selectedAdditionalItems = this.selectedAdditionalCategoryList
134
144
  .map((category) => ({
135
145
  label: category?.name,
136
146
  value: category?._id,
137
147
  }));
148
+ this.additionalCategoryState = SelectionState.SELECTED;
149
+ if (!this.initialCategory?.length) {
150
+ this.handleDefaultCase();
151
+ }
138
152
  }
139
153
  }
140
154
  updateACTWCategory() {
141
155
  this.additionalCategoryState = SelectionState.SELECTED;
142
- this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialCategory.some((id) => id === category?._id));
143
- this.selectedAdditionalItems = this.caseCategoryList
144
- .filter((category) => this.initialCategory.includes(category?._id))
145
- .map((category) => ({
156
+ this.selectedAdditionalCategoryList = this.caseCategoryList?.filter((category) => this.initialCategory.some((id) => id === category?._id) || this.initialAdditionalCategory.includes(category?._id));
157
+ this.selectedAdditionalItems = this.selectedAdditionalCategoryList.map((category) => ({
146
158
  label: category?.name,
147
159
  value: category?._id,
148
160
  }));
@@ -177,8 +189,11 @@ export class CaseCategoryComponent {
177
189
  label: category?.name,
178
190
  value: category?._id,
179
191
  }));
180
- this.payload.additional_category.ids = event.map((item) => item?._id);
181
- this.payload.additional_category.custom_fields = event.flatMap((item) => item?.custom_fields);
192
+ if (!this.payload['additional_category']) {
193
+ this.payload['additional_category'] = {};
194
+ }
195
+ this.payload['additional_category']['ids'] = event.map((item) => item?._id);
196
+ this.payload['additional_category']['custom_fields'] = event.flatMap((item) => item?.custom_fields);
182
197
  this.additionalCategoryState = SelectionState.SELECTED;
183
198
  this.fieldClicked.emit('');
184
199
  }
@@ -242,6 +257,7 @@ export class CaseCategoryComponent {
242
257
  }
243
258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseCategoryComponent, deps: [{ token: i1.ReportACaseService }], target: i0.ɵɵFactoryTarget.Component }); }
244
259
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaseCategoryComponent, selector: "app-case-category", inputs: { payload: "payload", fieldSelected: "fieldSelected", caseTypeSelected: "caseTypeSelected", initialSelection: "initialSelection", initialAdditionalSelection: "initialAdditionalSelection", mode: "mode", workflowType: "workflowType" }, outputs: { onCategoryChange: "onCategoryChange", fieldClicked: "fieldClicked" }, usesOnChanges: true, ngImport: i0, template: `
260
+
245
261
  <app-field-holder
246
262
  [image]="ASSETS.case_category"
247
263
  [disabled]="fieldSelector?.includes(fieldSelected)"
@@ -272,6 +288,7 @@ export class CaseCategoryComponent {
272
288
  <vcomply-editor
273
289
  [(ngModel)]="tag.value"
274
290
  [editorConfig]="customField"
291
+ [editorConfig]="(i | getEditorConfig: 'category') ?? customField"
275
292
  ></vcomply-editor>
276
293
  </div>
277
294
  </ng-container>
@@ -303,7 +320,7 @@ export class CaseCategoryComponent {
303
320
  <vcomply-editor
304
321
  [ngModel]="tag?.value || ''"
305
322
  (ngModelChange)="updateCustomField($event, i)"
306
- [editorConfig]="(i | getEditorConfig) ?? customField"
323
+ [editorConfig]="(i | getEditorConfig: 'additionalCategory') ?? customField"
307
324
  ></vcomply-editor>
308
325
  </div>
309
326
  </ng-container>
@@ -339,6 +356,7 @@ export class CaseCategoryComponent {
339
356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaseCategoryComponent, decorators: [{
340
357
  type: Component,
341
358
  args: [{ selector: 'app-case-category', template: `
359
+
342
360
  <app-field-holder
343
361
  [image]="ASSETS.case_category"
344
362
  [disabled]="fieldSelector?.includes(fieldSelected)"
@@ -369,6 +387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
369
387
  <vcomply-editor
370
388
  [(ngModel)]="tag.value"
371
389
  [editorConfig]="customField"
390
+ [editorConfig]="(i | getEditorConfig: 'category') ?? customField"
372
391
  ></vcomply-editor>
373
392
  </div>
374
393
  </ng-container>
@@ -400,7 +419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
400
419
  <vcomply-editor
401
420
  [ngModel]="tag?.value || ''"
402
421
  (ngModelChange)="updateCustomField($event, i)"
403
- [editorConfig]="(i | getEditorConfig) ?? customField"
422
+ [editorConfig]="(i | getEditorConfig: 'additionalCategory') ?? customField"
404
423
  ></vcomply-editor>
405
424
  </div>
406
425
  </ng-container>
@@ -451,4 +470,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
451
470
  }], fieldClicked: [{
452
471
  type: Output
453
472
  }] } });
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL2NvbXBvbmVudHMvY2FzZS1jYXRlZ29yeS9jYXNlLWNhdGVnb3J5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRCxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFzR2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFtQ2hDLElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7SUFFcEMsQ0FBQztJQUNELElBQWEsMEJBQTBCLENBQUMsS0FBVTtRQUNoRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBT0QsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBL0NuRCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVE7WUFDWixHQUFHLGVBQWUsQ0FBQyxhQUFhO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FB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WTtzQkFBcEIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hc3Nlc3N0cy5jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQUNUSU9OX0NPREUsXG4gIEZJRUxEX1NFTEVDVE9SLFxuICBSRVBPUlRfQ0FTRSxcbiAgU0VMRUNUT1JfQ09ORklHLFxuICBTZWxlY3Rpb25Qb3B1cFN0YXRlLFxuICBTZWxlY3Rpb25TdGF0ZSxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3JlcG9ydC1jYXNlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyByZXBvcnQgfSBmcm9tICcuLi9jYXNlLXR5cGUtc2xpZGVyL2Nhc2UtdHlwZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ0B2Y29tcGx5L2VkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYXNlLWNhdGVnb3J5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICAgW2ltYWdlXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZFNlbGVjdGVkKVwiXG4gICAgICBbYWN0aXZlXT1cImNhdGVnb3J5Q2xpY2tlZFwiXG4gICAgICBbY2hlY2tlZF09XCJwYXlsb2FkPy5jYXRlZ29yeT8uaWRzPy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgW2VkaXREaXNhYmxlZF09XCJjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cIiFjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICAoZmllbGRDbGlja2VkKT1cImFjdGl2YXRlU2VsZWN0b3IoJGV2ZW50KVwiXG4gICAgICAgICAgKHNlbGVjdGVkSXRlbUxpc3RDaGFuZ2UpPVwic2V0Q2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgID48L2FwcC12Yy1sYWJlbD5cbiAgICAgICAgPC9hcHAtZm9ybS1zZWxlY3RCb3g+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgcGF5bG9hZD8uY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cImN1c3RvbUZpZWxkXCJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gICAgPGFwcC1maWVsZC1ob2xkZXJcbiAgICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgICAgW2Rpc2FibGVkXT1cImZpZWxkU2VsZWN0ZWQgPT09ICdSQydcIlxuICAgICAgW2FjdGl2ZV09XCJjYXRlZ29yeUNsaWNrZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cImFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXNcIlxuICAgICAgICAgIChmaWVsZENsaWNrZWQpPVwiYWN0aXZhdGVBZGRpdGlvbmFsQ2F0ZWdvcnlTZWxlY3RvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtTGlzdENoYW5nZSk9XCJzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuYWRkaXRpb25hbF9jYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgPjwvYXBwLXZjLWxhYmVsPlxuICAgICAgICA8L2FwcC1mb3JtLXNlbGVjdEJveD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBwYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5Py5jdXN0b21fZmllbGRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ0YWc/LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUN1c3RvbUZpZWxkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCIoaSB8IGdldEVkaXRvckNvbmZpZykgPz8gY3VzdG9tRmllbGRcIlxuICAgICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYXBwLWZpZWxkLWhvbGRlcj5cbiAgICA8YXBwLWNhdGVnb3J5LWxpc3Qtc2VsZWN0aW9uXG4gICAgICAqbmdJZj1cImNhdGVnb3J5Q2xpY2tlZFwiXG4gICAgICBbY2F0ZWdvcnlMaXN0XT1cImNhc2VDYXRlZ29yeUxpc3RcIlxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgW2xvYWRpbmddPVwiY2F0ZWdvcnlMaXN0TG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZExpc3RdPVwic2VsZWN0ZWRDYXRlZ29yeUxpc3RcIlxuICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiXG4gICAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFID8gJ211bHRpcGxlJyA6ICdzaW5nbGUnXG4gICAgICBcIlxuICAgICAgKGNhbmNlbCk9XCJhY3RpdmF0ZVNlbGVjdG9yKGZhbHNlKVwiXG4gICAgICAobmV4dCk9XCJzYXZlU2VsZWN0ZWRDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXG4gICAgPjwvYXBwLWNhdGVnb3J5LWxpc3Qtc2VsZWN0aW9uPiBcbiAgICA8YXBwLWNhdGVnb3J5LWxpc3Qtc2VsZWN0aW9uXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxDYXRlZ29yeUNsaWNrZWRcIlxuICAgICAgW2NhdGVnb3J5TGlzdF09XCJcbiAgICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cgJiZcbiAgICAgICAgcGF5bG9hZD8uY2F0ZWdvcnk/Lmlkcz8ubGVuZ3RoXG4gICAgICAgICAgPyBmaWx0ZXJlZENhc2VDYXRlZ29yeUxpc3RcbiAgICAgICAgICA6IGNhc2VDYXRlZ29yeUxpc3RcbiAgICAgIFwiXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICBbbG9hZGluZ109XCJjYXRlZ29yeUxpc3RMb2FkZXJcIlxuICAgICAgW3NlbGVjdGVkTGlzdF09XCJzZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3RcIlxuICAgICAgKGNhbmNlbCk9XCJhY3RpdmF0ZUFkZGl0aW9uYWxDYXRlZ29yeVNlbGVjdG9yKGZhbHNlKVwiXG4gICAgICAobmV4dCk9XCJzYXZlU2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgID48L2FwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvbj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4uLy4uLy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUNhdGVnb3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXN7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgY2F0ZWdvcnlUZXh0cyA9IFJFUE9SVF9DQVNFO1xuICBjYXNlQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBjb25maWc6IGFueSA9IHtcbiAgICAuLi5TRUxFQ1RPUl9DT05GSUcuQ0FTRV9DQVRFR09SWSxcbiAgICBwbGFjZWhvbGRlcjogdGhpcy5jYXRlZ29yeVRleHRzLmNhc2VfZGV0YWlscy5jYXRlZ29yeS5wbGFjZWhvbGRlcixcbiAgfTtcbiAgY2F0ZWdvcnlDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFkZGl0aW9uYWxDYXRlZ29yeUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2F0ZWdvcnlMaXN0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIFNlbGVjdGlvblN0YXRlID0gU2VsZWN0aW9uU3RhdGU7XG4gIFNlbGVjdGlvblBvcHVwU3RhdGUgPSBTZWxlY3Rpb25Qb3B1cFN0YXRlO1xuICBzdGF0ZTogc3RyaW5nID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gIGFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlOiBzdHJpbmcgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG4gIGluaXRpYWxDYXRlZ29yeTogYW55O1xuICBjYXNlVHlwZSA9IHJlcG9ydDtcbiAgZmllbGRTZWxlY3RvciA9IEZJRUxEX1NFTEVDVE9SO1xuICBjdXN0b21GaWVsZDogRWRpdG9yQ29uZmlnID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgdmFsdWUnLFxuICAgIGlkOiAnY3VzdG9tRmllbGQnXG4gIH07XG4gIGluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnk6IGFueTtcbiAgZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIHBheWxvYWQ6IGFueSA9IHt9O1xuICBASW5wdXQoKSBmaWVsZFNlbGVjdGVkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2FzZVR5cGVTZWxlY3RlZDogYW55O1xuICBASW5wdXQoKSBzZXQgaW5pdGlhbFNlbGVjdGlvbih2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnkgPSB2YWx1ZT8uaWRzO1xuICBcbiAgfVxuICBASW5wdXQoKSBzZXQgaW5pdGlhbEFkZGl0aW9uYWxTZWxlY3Rpb24odmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeSA9IHZhbHVlPy5pZHM7XG4gIH1cbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHdvcmtmbG93VHlwZTogc3RyaW5nID0gJyc7XG5cbiAgQE91dHB1dCgpIG9uQ2F0ZWdvcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpZWxkQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldEFsbENhdGVnb3JpZXMoKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG4gIFxuICB1cGRhdGVDdXN0b21GaWVsZCh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucGF5bG9hZD8uYWRkaXRpb25hbF9jYXRlZ29yeT8uY3VzdG9tX2ZpZWxkcykge1xuICAgICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuY3VzdG9tX2ZpZWxkc1tpbmRleF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmN1c3RvbV9maWVsZHMgPSBbLi4udGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuY3VzdG9tX2ZpZWxkc107XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwYXlsb2FkJ10pIHtcbiAgICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXRlZ29yeT8uaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRDYXRlZ29yeUxpc3QoKTtcblxuICAgICAgfVxuICAgICAgdGhpcy5wb3B1bGF0ZUluaXRpYWxDYXRlZ29yeSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snaW5pdGlhbFNlbGVjdGlvbiddIHx8IGNoYW5nZXNbJ2luaXRpYWxBZGRpdGlvbmFsU2VsZWN0aW9uJ10pIHtcbiAgICAgIHRoaXMucG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKTtcbiAgICB9XG4gIH1cblxuICBnZXRBbGxDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMuY2F0ZWdvcnlMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmNhc2VTZXJ2aWNlLmdldEFsbENhdGVnb3JpZXMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmNhc2VDYXRlZ29yeUxpc3QgPSByZXM/LmRhdGE7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUluaXRpYWxDYXRlZ29yeSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlciA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGggJiYgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy51cGRhdGVBQ1RXQ2F0ZWdvcnkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGggJiYgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdSQUMnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJBQ0NhdGVnb3J5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXG4gICAgICB0aGlzLndvcmtmbG93VHlwZSAhPT0gJ0FDVFcnICYmXG4gICAgICB0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHRoaXMuY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcbiAgICAgICAgPyAoKHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5ESVNBQkxFRCksXG4gICAgICAgICAgKHRoaXMuY29uZmlnLmRpc2FibGVkVGV4dCA9XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5VGV4dHMuY2FzZV9kZXRhaWxzLmNhdGVnb3J5LnBsYWNlaG9sZGVyKSlcbiAgICAgICAgOiAodGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVSQUNDYXRlZ29yeSgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdD8uZmlsdGVyKFxuICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmluaXRpYWxDYXRlZ29yeT8uc29tZSgoaWQ6IGFueSkgPT4gaWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnk/LnNvbWUoKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3Q/LmZpbHRlcihcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5zb21lKFxuICAgICAgICAgICAgKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3RcbiAgICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnk/LmluY2x1ZGVzKGNhdGVnb3J5Py5faWQpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVBQ1RXQ2F0ZWdvcnkoKSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0Py5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnkuc29tZSgoaWQ6IGFueSkgPT4gaWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PiB0aGlzLmluaXRpYWxDYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeT8uX2lkKSlcbiAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgICB9KSk7XG4gIH1cblxuICBzYXZlU2VsZWN0ZWRDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2F0ZWdvcnlDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZENhdGVnb3J5TGlzdChldmVudCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICBldmVudC5zb21lKChldmVudEl0ZW06IGFueSkgPT4gZXZlbnRJdGVtPy5faWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgICApXG4gICAgICAubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICBsYWJlbDogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgfSkpO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMgPSBldmVudC5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uX2lkKTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmN1c3RvbV9maWVsZHMgPSBldmVudC5mbGF0TWFwKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uY3VzdG9tX2ZpZWxkc1xuICAgICk7XG4gICAgdGhpcy5vbkNhdGVnb3J5Q2hhbmdlLmVtaXQodGhpcy5wYXlsb2FkLmNhdGVnb3J5Lmlkcyk7XG4gICAgdGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICB9XG5cbiAgdXBkYXRlRmlsdGVyZWRDYXRlZ29yeUxpc3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gdGhpcy5jYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPVykge1xuICAgICAgdGhpcy5maWx0ZXJlZENhc2VDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3QuZmlsdGVyKFxuICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gIXRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMuaW5jbHVkZXMoY2F0ZWdvcnkuX2lkKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzYXZlU2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeUNsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNldFNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdChldmVudCk7XG4gICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgKVxuICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgIH0pKTtcbiAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5pZHMgPSBldmVudC5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uX2lkKTtcbiAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gZXZlbnQuZmxhdE1hcChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmN1c3RvbV9maWVsZHNcbiAgICApO1xuICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5U3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdChldmVudDogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdC5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gIH1cblxuICBzZXRTZWxlY3RlZENhdGVnb3J5TGlzdChldmVudDogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/Ll9pZCA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICApO1xuICB9XG5cbiAgYWN0aXZhdGVTZWxlY3RvcihhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNhdGVnb3J5Q2xpY2tlZCA9IGFjdGl2ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCdjYXRlZ29yeScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZUFkZGl0aW9uYWxDYXRlZ29yeVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5Q2xpY2tlZCA9IGFjdGl2ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCdhZGRpdGlvbmFsQ2F0ZWdvcnknKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWVsZENsaWNrZWQuZW1pdCgnJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIWV2ZW50Py5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVzZXRDYXRlZ29yeUxpc3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICBldmVudC5zb21lKChldmVudEl0ZW06IGFueSkgPT4gZXZlbnRJdGVtPy52YWx1ZSA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICApO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMgPSB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0Py5tYXAoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnk/Ll9pZFxuICAgICk7XG4gICAgdGhpcy5vbkNhdGVnb3J5Q2hhbmdlLmVtaXQodGhpcy5wYXlsb2FkLmNhdGVnb3J5Lmlkcyk7XG4gIH1cblxuICBzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yZXNldEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3QuZmlsdGVyKFxuICAgICAgKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/LnZhbHVlID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuaWRzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0Py5tYXAoXG4gICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeT8uX2lkXG4gICAgICApO1xuICB9XG5cbiAgZ2V0IGNhdGVnb3J5RWRpdERpc2FibGUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXG4gICAgICB0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHRoaXMuY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cgJiZcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlICE9PSAnQUNUVydcbiAgICApO1xuICB9XG5cbiAgcmVzZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IFtdO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMgPSBbXTtcbiAgICB0aGlzLnN0YXRlID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gICAgdGhpcy5maWx0ZXJlZENhc2VDYXRlZ29yeUxpc3QgPSBbLi4udGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XTtcbiAgfVxuXG4gIHJlc2V0QWRkaXRpb25hbENhdGVnb3J5TGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IFtdO1xuICAgIHRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmlkcyA9IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbENhdGVnb3J5U3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgfVxufVxuIl19
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL2NvbXBvbmVudHMvY2FzZS1jYXRlZ29yeS9jYXNlLWNhdGVnb3J5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRCxPQUFPLEVBRUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF3R2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFtQ2hDLElBQWEsZ0JBQWdCLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7SUFFcEMsQ0FBQztJQUNELElBQWEsMEJBQTBCLENBQUMsS0FBVTtRQUNoRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBT0QsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBL0NuRCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVE7WUFDWixHQUFHLGVBQWUsQ0FBQyxhQUFhO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FB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QixxQkFBcUIsaVpBbEd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRlQ7OzRGQUdVLHFCQUFxQjtrQkFwR2pDLFNBQVM7K0JBQ0UsbUJBQW1CLFlBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStGVDt5R0FtQ1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFJTywwQkFBMEI7c0JBQXRDLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXNzZXNzdHMuY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEFDVElPTl9DT0RFLFxuICBGSUVMRF9TRUxFQ1RPUixcbiAgUkVQT1JUX0NBU0UsXG4gIFNFTEVDVE9SX0NPTkZJRyxcbiAgU2VsZWN0aW9uUG9wdXBTdGF0ZSxcbiAgU2VsZWN0aW9uU3RhdGUsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cy9yZXBvcnQtY2FzZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSAnLi4vY2FzZS10eXBlLXNsaWRlci9jYXNlLXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC1hLWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICdAdmNvbXBseS9lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2FzZS1jYXRlZ29yeScsXG4gIHRlbXBsYXRlOiBgXG5cbiAgICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICAgW2ltYWdlXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZFNlbGVjdGVkKVwiXG4gICAgICBbYWN0aXZlXT1cImNhdGVnb3J5Q2xpY2tlZFwiXG4gICAgICBbY2hlY2tlZF09XCJwYXlsb2FkPy5jYXRlZ29yeT8uaWRzPy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgW2VkaXREaXNhYmxlZF09XCJjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cIiFjYXRlZ29yeUVkaXREaXNhYmxlXCJcbiAgICAgICAgICAoZmllbGRDbGlja2VkKT1cImFjdGl2YXRlU2VsZWN0b3IoJGV2ZW50KVwiXG4gICAgICAgICAgKHNlbGVjdGVkSXRlbUxpc3RDaGFuZ2UpPVwic2V0Q2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgID48L2FwcC12Yy1sYWJlbD5cbiAgICAgICAgPC9hcHAtZm9ybS1zZWxlY3RCb3g+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgcGF5bG9hZD8uY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cImN1c3RvbUZpZWxkXCJcbiAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiKGkgfCBnZXRFZGl0b3JDb25maWc6ICdjYXRlZ29yeScpID8/IGN1c3RvbUZpZWxkXCJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gICAgPGFwcC1maWVsZC1ob2xkZXJcbiAgICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgICAgW2Rpc2FibGVkXT1cImZpZWxkU2VsZWN0ZWQgPT09ICdSQydcIlxuICAgICAgW2FjdGl2ZV09XCJjYXRlZ29yeUNsaWNrZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgZmllbGQ+XG4gICAgICAgIDxhcHAtZm9ybS1zZWxlY3RCb3hcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgW3N0YXRlXT1cImFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlXCJcbiAgICAgICAgICBbcG9wdXBTdGF0ZV09XCJTZWxlY3Rpb25Qb3B1cFN0YXRlLlNFTEVDVElPTl9ESUFMT0dcIlxuICAgICAgICAgIFtjaGlwSXRlbXNdPVwic2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXNcIlxuICAgICAgICAgIChmaWVsZENsaWNrZWQpPVwiYWN0aXZhdGVBZGRpdGlvbmFsQ2F0ZWdvcnlTZWxlY3RvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtTGlzdENoYW5nZSk9XCJzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIFtsYWJlbFRleHRdPVwiY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuYWRkaXRpb25hbF9jYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgPjwvYXBwLXZjLWxhYmVsPlxuICAgICAgICA8L2FwcC1mb3JtLXNlbGVjdEJveD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiBwYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5Py5jdXN0b21fZmllbGRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPnt7IHRhZz8ubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ0YWc/LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUN1c3RvbUZpZWxkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCIoaSB8IGdldEVkaXRvckNvbmZpZzogJ2FkZGl0aW9uYWxDYXRlZ29yeScpID8/IGN1c3RvbUZpZWxkXCJcbiAgICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gICAgPGFwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvblxuICAgICAgKm5nSWY9XCJjYXRlZ29yeUNsaWNrZWRcIlxuICAgICAgW2NhdGVnb3J5TGlzdF09XCJjYXNlQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgIFtsb2FkaW5nXT1cImNhdGVnb3J5TGlzdExvYWRlclwiXG4gICAgICBbc2VsZWN0ZWRMaXN0XT1cInNlbGVjdGVkQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIlxuICAgICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/ICdtdWx0aXBsZScgOiAnc2luZ2xlJ1xuICAgICAgXCJcbiAgICAgIChjYW5jZWwpPVwiYWN0aXZhdGVTZWxlY3RvcihmYWxzZSlcIlxuICAgICAgKG5leHQpPVwic2F2ZVNlbGVjdGVkQ2F0ZWdvcnlMaXN0KCRldmVudClcIlxuICAgID48L2FwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvbj4gXG4gICAgPGFwcC1jYXRlZ29yeS1saXN0LXNlbGVjdGlvblxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkXCJcbiAgICAgIFtjYXRlZ29yeUxpc3RdPVwiXG4gICAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XICYmXG4gICAgICAgIHBheWxvYWQ/LmNhdGVnb3J5Py5pZHM/Lmxlbmd0aFxuICAgICAgICAgID8gZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgICAgOiBjYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICBcIlxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgW2xvYWRpbmddPVwiY2F0ZWdvcnlMaXN0TG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZExpc3RdPVwic2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0XCJcbiAgICAgIChjYW5jZWwpPVwiYWN0aXZhdGVBZGRpdGlvbmFsQ2F0ZWdvcnlTZWxlY3RvcihmYWxzZSlcIlxuICAgICAgKG5leHQpPVwic2F2ZVNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCgkZXZlbnQpXCJcbiAgICA+PC9hcHAtY2F0ZWdvcnktbGlzdC1zZWxlY3Rpb24+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuLi8uLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2Vze1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGNhdGVnb3J5VGV4dHMgPSBSRVBPUlRfQ0FTRTtcbiAgY2FzZUNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgY29uZmlnOiBhbnkgPSB7XG4gICAgLi4uU0VMRUNUT1JfQ09ORklHLkNBU0VfQ0FURUdPUlksXG4gICAgcGxhY2Vob2xkZXI6IHRoaXMuY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkucGxhY2Vob2xkZXIsXG4gIH07XG4gIGNhdGVnb3J5Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGNhdGVnb3J5TGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBTZWxlY3Rpb25TdGF0ZSA9IFNlbGVjdGlvblN0YXRlO1xuICBTZWxlY3Rpb25Qb3B1cFN0YXRlID0gU2VsZWN0aW9uUG9wdXBTdGF0ZTtcbiAgc3RhdGU6IHN0cmluZyA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICBhZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZTogc3RyaW5nID0gU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZENhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBpbml0aWFsQ2F0ZWdvcnk6IGFueTtcbiAgY2FzZVR5cGUgPSByZXBvcnQ7XG4gIGZpZWxkU2VsZWN0b3IgPSBGSUVMRF9TRUxFQ1RPUjtcbiAgY3VzdG9tRmllbGQ6IEVkaXRvckNvbmZpZyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIHZhbHVlJyxcbiAgICBpZDogJ2N1c3RvbUZpZWxkJ1xuICB9O1xuICBpbml0aWFsQWRkaXRpb25hbENhdGVnb3J5OiBhbnk7XG4gIGZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgZmllbGRTZWxlY3RlZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNhc2VUeXBlU2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KCkgc2V0IGluaXRpYWxTZWxlY3Rpb24odmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5pdGlhbENhdGVnb3J5ID0gdmFsdWU/LmlkcztcbiAgXG4gIH1cbiAgQElucHV0KCkgc2V0IGluaXRpYWxBZGRpdGlvbmFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnkgPSB2YWx1ZT8uaWRzO1xuICB9XG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB3b3JrZmxvd1R5cGU6IHN0cmluZyA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvbkNhdGVnb3J5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhc2VTZXJ2aWNlOiBSZXBvcnRBQ2FzZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRBbGxDYXRlZ29yaWVzKCk7XG4gIH1cblxuICB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuICBcbiAgdXBkYXRlQ3VzdG9tRmllbGQodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheWxvYWQ/LmFkZGl0aW9uYWxfY2F0ZWdvcnk/LmN1c3RvbV9maWVsZHMpIHtcbiAgICAgIHRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmN1c3RvbV9maWVsZHNbaW5kZXhdLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gWy4uLnRoaXMucGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5LmN1c3RvbV9maWVsZHNdO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncGF5bG9hZCddKSB7XG4gICAgICBpZiAoIXRoaXMucGF5bG9hZD8uY2F0ZWdvcnk/Lmlkcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk7XG5cbiAgICAgIH1cbiAgICAgIHRoaXMucG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxTZWxlY3Rpb24nXSB8fCBjaGFuZ2VzWydpbml0aWFsQWRkaXRpb25hbFNlbGVjdGlvbiddKSB7XG4gICAgICB0aGlzLnBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLmNhdGVnb3J5TGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jYXNlU2VydmljZS5nZXRBbGxDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVJbml0aWFsQ2F0ZWdvcnkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlSW5pdGlhbENhdGVnb3J5KCkge1xuICAgIGlmICh0aGlzLmlzQUNUV1dvcmtmbG93KCkpIHtcbiAgICAgIHRoaXMudXBkYXRlQUNUV0NhdGVnb3J5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSQUNXb3JrZmxvdygpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJBQ0NhdGVnb3J5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVEZWZhdWx0Q2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FDVFdXb3JrZmxvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGggfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5sZW5ndGgpICYmIFxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJ1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzUkFDV29ya2Zsb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmluaXRpYWxDYXRlZ29yeT8ubGVuZ3RoIHx8IHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeT8ubGVuZ3RoKSAmJiB0aGlzLndvcmtmbG93VHlwZSA9PT0gJ1JBQyc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlZmF1bHRDYXNlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzRWRpdE1vZGVXaXRoUmVzdHJpY3Rpb25zID0gXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJyAmJlxuICAgICAgdGhpcy5jYXNlVHlwZVNlbGVjdGVkID09PSB0aGlzLmNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XO1xuXG4gICAgdGhpcy5zdGF0ZSA9IGlzRWRpdE1vZGVXaXRoUmVzdHJpY3Rpb25zIFxuICAgICAgPyBTZWxlY3Rpb25TdGF0ZS5ESVNBQkxFRCBcbiAgICAgIDogU2VsZWN0aW9uU3RhdGUuRU1QVFk7XG5cbiAgICBpZiAoaXNFZGl0TW9kZVdpdGhSZXN0cmljdGlvbnMpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRpc2FibGVkVGV4dCA9IHRoaXMuY2F0ZWdvcnlUZXh0cy5jYXNlX2RldGFpbHMuY2F0ZWdvcnkucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGVSQUNDYXRlZ29yeSgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdD8uZmlsdGVyKFxuICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmluaXRpYWxDYXRlZ29yeT8uc29tZSgoaWQ6IGFueSkgPT4gaWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0XG4gICAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ2F0ZWdvcnk/LnNvbWUoKGlkOiBhbnkpID0+IGlkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeT8uX2lkLFxuICAgICAgICB9KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxBZGRpdGlvbmFsQ2F0ZWdvcnk/Lmxlbmd0aCkge1xuICAgICBcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0Py5maWx0ZXIoXG4gICAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuaW5pdGlhbEFkZGl0aW9uYWxDYXRlZ29yeT8uc29tZShcbiAgICAgICAgICAgIChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZFxuICAgICAgICAgICkgfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5Py5pbmNsdWRlcyhjYXRlZ29yeT8uX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdFxuICAgICAgICAubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlID0gU2VsZWN0aW9uU3RhdGUuU0VMRUNURUQ7XG5cbiAgICAgICAgaWYoIXRoaXMuaW5pdGlhbENhdGVnb3J5Py5sZW5ndGgpe1xuICAgICAgICAgIHRoaXMuaGFuZGxlRGVmYXVsdENhc2UoKTtcbiAgICAgICAgICBcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUFDVFdDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxDYXRlZ29yeVN0YXRlID0gU2VsZWN0aW9uU3RhdGUuU0VMRUNURUQ7XG4gICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3Q/LmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICB0aGlzLmluaXRpYWxDYXRlZ29yeS5zb21lKChpZDogYW55KSA9PiBpZCA9PT0gY2F0ZWdvcnk/Ll9pZCkgfHwgdGhpcy5pbml0aWFsQWRkaXRpb25hbENhdGVnb3J5LmluY2x1ZGVzKGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbEl0ZW1zID0gdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgfSkpO1xuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhdGVnb3J5Q2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdFxuICAgICAgLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICAgKVxuICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICB2YWx1ZTogY2F0ZWdvcnk/Ll9pZCxcbiAgICAgIH0pKTtcbiAgICB0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzID0gZXZlbnQubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZCk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZENhdGVnb3J5TGlzdCgpO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeS5jdXN0b21fZmllbGRzID0gZXZlbnQuZmxhdE1hcChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmN1c3RvbV9maWVsZHNcbiAgICApO1xuICAgIHRoaXMub25DYXRlZ29yeUNoYW5nZS5lbWl0KHRoaXMucGF5bG9hZC5jYXRlZ29yeS5pZHMpO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5TRUxFQ1RFRDtcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkQ2F0ZWdvcnlMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHRoaXMuY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRDYXNlQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+ICF0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzLmluY2x1ZGVzKGNhdGVnb3J5Ll9pZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdChldmVudDogYW55KSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsSXRlbXMgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3RcbiAgICAgIC5maWx0ZXIoKGNhdGVnb3J5OiBhbnkpID0+XG4gICAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/Ll9pZCA9PT0gY2F0ZWdvcnk/Ll9pZClcbiAgICAgIClcbiAgICAgIC5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgIGxhYmVsOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgdmFsdWU6IGNhdGVnb3J5Py5faWQsXG4gICAgICB9KSk7XG4gICAgICBpZighdGhpcy5wYXlsb2FkWydhZGRpdGlvbmFsX2NhdGVnb3J5J10pe1xuICAgICAgICB0aGlzLnBheWxvYWRbJ2FkZGl0aW9uYWxfY2F0ZWdvcnknXSA9IHt9O1xuICAgICAgfVxuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydpZHMnXSA9IGV2ZW50Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5faWQpO1xuICAgIHRoaXMucGF5bG9hZFsnYWRkaXRpb25hbF9jYXRlZ29yeSddWydjdXN0b21fZmllbGRzJ10gPSBldmVudC5mbGF0TWFwKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uY3VzdG9tX2ZpZWxkc1xuICAgICk7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLlNFTEVDVEVEO1xuICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcihcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgICBldmVudC5zb21lKChldmVudEl0ZW06IGFueSkgPT4gZXZlbnRJdGVtPy5faWQgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3QgPSB0aGlzLmNhc2VDYXRlZ29yeUxpc3QuZmlsdGVyKChjYXRlZ29yeTogYW55KSA9PlxuICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8uX2lkID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2NhdGVnb3J5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlQWRkaXRpb25hbENhdGVnb3J5U2VsZWN0b3IoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuZmllbGRDbGlja2VkLmVtaXQoJ2FkZGl0aW9uYWxDYXRlZ29yeScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ2xpY2tlZC5lbWl0KCcnKTtcbiAgICB9XG4gIH1cblxuICBzZXRDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueSkge1xuICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yZXNldENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gdGhpcy5jYXNlQ2F0ZWdvcnlMaXN0LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgIGV2ZW50LnNvbWUoKGV2ZW50SXRlbTogYW55KSA9PiBldmVudEl0ZW0/LnZhbHVlID09PSBjYXRlZ29yeT8uX2lkKVxuICAgICk7XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeT8uX2lkXG4gICAgKTtcbiAgICB0aGlzLm9uQ2F0ZWdvcnlDaGFuZ2UuZW1pdCh0aGlzLnBheWxvYWQuY2F0ZWdvcnkuaWRzKTtcbiAgfVxuXG4gIHNldEFkZGl0aW9uYWxDYXRlZ29yeUxpc3QoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKCFldmVudD8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc2V0QWRkaXRpb25hbENhdGVnb3J5TGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQWRkaXRpb25hbENhdGVnb3J5TGlzdCA9IHRoaXMuY2FzZUNhdGVnb3J5TGlzdC5maWx0ZXIoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT5cbiAgICAgICAgZXZlbnQuc29tZSgoZXZlbnRJdGVtOiBhbnkpID0+IGV2ZW50SXRlbT8udmFsdWUgPT09IGNhdGVnb3J5Py5faWQpXG4gICAgKTtcbiAgICB0aGlzLnBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeS5pZHMgPVxuICAgICAgdGhpcy5zZWxlY3RlZEFkZGl0aW9uYWxDYXRlZ29yeUxpc3Q/Lm1hcChcbiAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Py5faWRcbiAgICAgICk7XG4gIH1cblxuICBnZXQgY2F0ZWdvcnlFZGl0RGlzYWJsZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgJiZcbiAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gdGhpcy5jYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPVyAmJlxuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJ1xuICAgICk7XG4gIH1cblxuICByZXNldENhdGVnb3J5TGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5LmlkcyA9IFtdO1xuICAgIHRoaXMuc3RhdGUgPSBTZWxlY3Rpb25TdGF0ZS5FTVBUWTtcbiAgICB0aGlzLmZpbHRlcmVkQ2FzZUNhdGVnb3J5TGlzdCA9IFsuLi50aGlzLmNhc2VDYXRlZ29yeUxpc3RdO1xuICB9XG5cbiAgcmVzZXRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRpdGlvbmFsQ2F0ZWdvcnlMaXN0ID0gW107XG4gICAgdGhpcy5wYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkuaWRzID0gW107XG4gICAgdGhpcy5hZGRpdGlvbmFsQ2F0ZWdvcnlTdGF0ZSA9IFNlbGVjdGlvblN0YXRlLkVNUFRZO1xuICB9XG59XG4iXX0=