@unifylib/ui-lib 1.2.17 → 1.2.19

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.
@@ -36,7 +36,6 @@ export class MultiAutoCompleteComponent {
36
36
  this._columns = ['id', 'code', 'englishName', 'arabicName'];
37
37
  }
38
38
  ngOnInit() {
39
- this.selectedItems = [];
40
39
  this.multiControl = new FormControl(null);
41
40
  this.updateFieldAttributes();
42
41
  const initialValue = this.form?.controls[this.field?.property]?.value;
@@ -154,8 +153,10 @@ export class MultiAutoCompleteComponent {
154
153
  if (!this.form.get('id')?.value) {
155
154
  this.patchLookupValue(this.lookupItems?.find(l => l.defaultValue));
156
155
  }
157
- this.patchLookupValue(this.selectedItems);
158
- this.publishAvailableLookupItems();
156
+ const selected = this.selectedItems?.length
157
+ ? this.selectedItems
158
+ : this.form?.get(this.field.property)?.value;
159
+ this.patchLookupValue(selected);
159
160
  }
160
161
  }));
161
162
  }
@@ -164,7 +165,7 @@ export class MultiAutoCompleteComponent {
164
165
  }
165
166
  }
166
167
  selected(value) {
167
- if (value.id !== -1 && this.selectedItems.findIndex(i => i.id === value.id) === -1) {
168
+ if (value.id !== -1 && this.selectedItems.findIndex(i => i.id == value.id) === -1) {
168
169
  this.selectedItems?.push(value);
169
170
  this.itemInput.nativeElement.value = '';
170
171
  this.form.get(this.field.property)?.setValue(this.selectedItems);
@@ -178,7 +179,7 @@ export class MultiAutoCompleteComponent {
178
179
  return selected ? selected.englishName : undefined;
179
180
  }
180
181
  isSelected(item) {
181
- return this.selectedItems?.some(selected => selected.id === item.id);
182
+ return this.selectedItems?.some((selected) => selected?.code == item?.code);
182
183
  }
183
184
  availableLookupItems(items) {
184
185
  return (items ?? []).filter(item => !this.isSelected(item));
@@ -221,7 +222,6 @@ export class MultiAutoCompleteComponent {
221
222
  }
222
223
  filterRequest.columns = [...this._columns, ...(this.field.extraLookupsColumns ?? [])];
223
224
  this.backendService.getLookupItemsByMultiFilter(listItems, filterRequest).subscribe(resp => {
224
- // console.log('result -->', resp);
225
225
  let items = [];
226
226
  if (resp.valid) {
227
227
  this.lookupItems = resp.body ?? [];
@@ -243,9 +243,10 @@ export class MultiAutoCompleteComponent {
243
243
  }
244
244
  patchLookupValue(defaultValue) {
245
245
  if (defaultValue) {
246
- this.selectedItems = defaultValue;
246
+ this.selectedItems = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
247
247
  this.multiControl.setValue(null, { emitEvent: false });
248
248
  this.syncFormControlState();
249
+ this.publishAvailableLookupItems();
249
250
  }
250
251
  }
251
252
  remove(item) {
@@ -342,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
342
343
  }], selectedValue: [{
343
344
  type: Output
344
345
  }] } });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FB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eVdBQ2YsU0FBUyxnSkFDVCxTQUFTLDhDQUNULElBQUksNEZBRUosZUFBZTs7NEZBS04sMEJBQTBCO2tCQXZCdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxTQUFTO3dCQUNULElBQUk7d0JBQ0osY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtrSEFNdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNZLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMscUJBQXFCO2dCQVdoQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBTExfSVRFTSwgTG9va3VwSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBNYXRPcHRpb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0ZpZWxkSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7R2V0SXRlbXNMaXN0fSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9nZXQtaXRlbXMtbGlzdFwiO1xuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQge01hdENoaXAsIE1hdENoaXBMaXN0Ym94fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHNcIjtcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQge01hdElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7YnVpbGRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XG5pbXBvcnQge0ZpbHRlclJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7UmVxdWlyZU1hdGNofSBmcm9tIFwiLi4vLi4vdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbXVsdGktYXV0by1jb21wbGV0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0Q2hpcCxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE5nRm9yT2YsXG4gICAgTWF0SWNvbixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG4gICAgTWF0SW5wdXQsXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxuICAgIE1hdE9wdGlvbixcbiAgICBBc3luY1BpcGUsXG4gICAgTmdJZixcbiAgICBNYXRDaGlwTGlzdGJveCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlBdXRvQ29tcGxldGVDb21wb25lbnQge1xuLy8gQHRzLWlnbm9yZVxuICBAVmlld0NoaWxkKCdpdGVtSW5wdXQnKSBpdGVtSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZVRyaWdnZXInKSBtYXRBQ1RyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgbG9va3VwSXRlbXMkOiBPYnNlcnZhYmxlPExvb2t1cEl0ZW1bXT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbG9va3VwSXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xuXG4gIHNlbGVjdGVkSXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xuICBjYXNjYWRlZElkejogbnVtYmVyW10gPSBbXTtcbiAgaXNSZXF1aXJlZDogYm9vbGVhbj0gZmFsc2U7XG4gIHByaXZhdGUgdGltZXI6IGFueTtcblxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZmllbGQ6IEZpZWxkSW5mbztcbiAgLy9cbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZGVmYXVsdFZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcGF0aFBhcmFtOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHkgOiBib29sZWFuPWZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsc1NlY3Rpb24/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxMb29rdXBJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHF1ZXN0aW9uID0gJ1dvdWxkIHlvdSBsaWtlIHRvIGFkZCA/XCInO1xuXG4gIG11bHRpQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLCBwcml2YXRlICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLm11bHRpQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICB0aGlzLnVwZGF0ZUZpZWxkQXR0cmlidXRlcygpO1xuXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0/LnZhbHVlO1xuICAgIGlmIChpbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTG9va3VwSXRlbXModiwgbnVsbCk7XG4gICAgICAgIH0sIDcwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmdldExvb2t1cERhdGEoKTtcbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5KSB7XG4gICAgICB0aGlzLmZvcm0/LmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUNoaWxkSXRlbXNJZkNhc2NhZGVkQnlSZW1vdmVkKHYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKSB7XG4gICAgaWYgKHRoaXMuZmllbGQucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY0Zvcm1Db250cm9sU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0Zvcm1Db250cm9sU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQ/LnByb3BlcnR5KTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGQucmVxdWlyZWQpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH1cblxuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy51cGRhdGVJbnB1dFZhbGlkYXRvcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgIHRoaXMuaXNSZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICAgIGlmICghdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goUmVxdWlyZU1hdGNoKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNTZWxlY3RlZEl0ZW1zID0gKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID4gMDtcbiAgICBpZiAodGhpcy5maWVsZC5yZXF1aXJlZCAmJiAhaGFzU2VsZWN0ZWRJdGVtcykge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgdGhpcy5pc1JlcXVpcmVkID0gdGhpcy5maWVsZC5yZXF1aXJlZCAmJiAhaGFzU2VsZWN0ZWRJdGVtcztcbiAgICB0aGlzLm11bHRpQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodikge1xuICAgIHRoaXMuY2FzY2FkZWRJZHogPSBbXTtcbiAgICB2LmZvckVhY2goYSA9PiB7XG4gICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XG4gICAgfSk7XG4gICAgbGV0IHRvRGVsZXRlSWR6ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5mb3JFYWNoKHggPT4ge1xuICAgICAgY29uc3QgZGVsID0gdGhpcy5jYXNjYWRlZElkei5maW5kSW5kZXgoeSA9PiB5ID09PSB4W3RoaXMuZmllbGQuY2FzY2FkZWRCeV0/LmlkKTtcbiAgICAgIGlmIChkZWwgPCAwKSB7XG4gICAgICAgIHRvRGVsZXRlSWR6LnB1c2goeFsnaWQnXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodG9EZWxldGVJZHopIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIocyA9PiAhdG9EZWxldGVJZHouaW5jbHVkZXMocy5pZCkpO1xuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywge2VtaXRFdmVudDogdHJ1ZX0pO1xuICAgICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICAgICAgdGhpcy5wdWJsaXNoQXZhaWxhYmxlTG9va3VwSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7ZGVmYXVsdFZhbHVlLCBmaWVsZH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUoZGVmYXVsdFZhbHVlPy5jdXJyZW50VmFsdWUpO1xuICAgIGlmIChmaWVsZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmZpZWxkID0gZmllbGQuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVGaWVsZEF0dHJpYnV0ZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExvb2t1cERhdGEoKSB7XG4gICAgY29uc3QgbGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QgPSBidWlsZEl0ZW1zTGlzdCgnJywgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoKTtcblxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xuICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xuICAgIHRoaXMuY2FzY2FkZWRJZHogPSBbXTtcbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5KSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlPy5mb3JFYWNoKGEgPT4ge1xuICAgICAgICB0aGlzLmNhc2NhZGVkSWR6LnB1c2goYS5pZCk7XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5ICYmIHRoaXMuY2FzY2FkZWRJZHo/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoe1xuICAgICAgICBrZXk6ICdpZCcsIGZpZWxkTmFtZTogdGhpcy5maWVsZC5jYXNjYWRlZEJ5LCBsYWJlbDogJycsXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogJ0lOJyxcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuY2FzY2FkZWRJZHpcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmaWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSBbJ2lkJywnY29kZScsJ2VuZ2xpc2hOYW1lJywnYXJhYmljTmFtZSddO1xuICAgIGlmICghdGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwID0+IHtcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSB0aGlzLmZpZWxkLmluY2x1ZGVBbGxPcHRpb24gPyBbQUxMX0lURU1dLmNvbmNhdChyZXNwLmJvZHkpIDogcmVzcC5ib2R5O1xuICAgICAgICBpZiAoIXRoaXMuZm9ybS5nZXQoJ2lkJyk/LnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKHRoaXMubG9va3VwSXRlbXM/LmZpbmQobCA9PiBsLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuXG4gICAgICB9XG5cbiAgICB9KSk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA/IHRoaXMuc2VsZWN0ZWRJdGVtcyA6IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy52YWx1ZSk7XG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RlZCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlkICE9PSAtMSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZEluZGV4KGkgPT4gaS5pZCA9PT0gdmFsdWUuaWQpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zPy5wdXNoKHZhbHVlKTtcbiAgICAgIHRoaXMuaXRlbUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSk/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICAgICAgdGhpcy5wdWJsaXNoQXZhaWxhYmxlTG9va3VwSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBkaXNwbGF5Rm4oc2VsZWN0ZWQ6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlbGVjdGVkID8gc2VsZWN0ZWQuZW5nbGlzaE5hbWUgOiB1bmRlZmluZWQ7XG5cbiAgfVxuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXM/LnNvbWUoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQuaWQgPT09IGl0ZW0uaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdmFpbGFibGVMb29rdXBJdGVtcyhpdGVtczogTG9va3VwSXRlbVtdKTogTG9va3VwSXRlbVtdIHtcbiAgICByZXR1cm4gKGl0ZW1zID8/IFtdKS5maWx0ZXIoaXRlbSA9PiAhdGhpcy5pc1NlbGVjdGVkKGl0ZW0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVibGlzaEF2YWlsYWJsZUxvb2t1cEl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMubG9va3VwSXRlbXMkID0gb2YodGhpcy5hdmFpbGFibGVMb29rdXBJdGVtcyh0aGlzLmxvb2t1cEl0ZW1zKSk7XG4gIH1cblxuICBfYWxsb3dTZWxlY3Rpb24ob3B0aW9uOiBMb29rdXBJdGVtKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncHJldmVudC1zZWxlY3Rpb24nOiBvcHRpb24uaWQgPT09IC0xLFxuICAgIH1cbiAgfVxuXG4gIGl0ZW1OYW1lQnlMYWcoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAvLyByZXR1cm4gaXRlbS5hcmFiaWNOYW1lO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJyA/IGl0ZW0uZW5nbGlzaE5hbWUgOiBpdGVtLmFyYWJpY05hbWVcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnMgPSBbJ2lkJywnY29kZScsJ2VuZ2xpc2hOYW1lJywnYXJhYmljTmFtZSddO1xuXG4gIGZpbHRlckxvb2t1cEl0ZW1zKG5hbWU6IGFueSwgdHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikge1xuICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICB0cmlnZ2VyLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuYW1lID0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QgPSBidWlsZEl0ZW1zTGlzdChuYW1lLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gdGhpcy5maWVsZC5sb29rdXBGaWx0ZXJMaXN0IHx8IFtdO1xuICAgIGZpbHRlclJlcXVlc3Quc2VhcmNoU3RyID0gbmFtZTtcbiAgICB0aGlzLmNhc2NhZGVkSWR6ID0gW107XG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSkge1xuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpPy52YWx1ZT8uZm9yRWFjaChhID0+IHtcbiAgICAgICAgdGhpcy5jYXNjYWRlZElkei5wdXNoKGEuaWQpO1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSAmJiB0aGlzLmNhc2NhZGVkSWR6Py5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXcgRmlsdGVyKHtcbiAgICAgICAga2V5OiAnaWQnLGpvaW5PYmplY3ROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGZpZWxkTmFtZTogdGhpcy5maWVsZC5jYXNjYWRlZEJ5LCBsYWJlbDogJycsXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogJ0lOJyxcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuY2FzY2FkZWRJZHpcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmaWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1ucywgLi4uKHRoaXMuZmllbGQuZXh0cmFMb29rdXBzQ29sdW1ucyA/PyBbXSldO1xuXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUocmVzcCA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygncmVzdWx0IC0tPicsIHJlc3ApO1xuICAgICAgbGV0IGl0ZW1zOiBMb29rdXBJdGVtW10gPSBbXTtcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSByZXNwLmJvZHkgPz8gW107XG4gICAgICAgIGl0ZW1zID0gdGhpcy5hdmFpbGFibGVMb29rdXBJdGVtcyh0aGlzLmxvb2t1cEl0ZW1zKTtcbiAgICAgICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cbiAgICAgICAgICAgIGl0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSk6XG4gICAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuICAgICAgfVxuICAgICAgdGhpcy5sb29rdXBJdGVtcyQgPSBvZihpdGVtcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gZGVmYXVsdFZhbHVlO1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyS2V5KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAoIXRoaXMubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBjb25maWd1cmVkS2V5XG4gICAgICA6IGAke3RoaXMubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0UGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWVsZD8ucGxhY2Vob2xkZXIgJiYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID09PSAwO1xuICB9XG5cbiAgb25JbnB1dENsaWNrKGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZD8ucmVhZG9ubHkgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZmllbGQ/LnJlYWRvbmx5IHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKCcnLCBhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgfVxuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkXCIgY2xhc3M9XCJtYWluLW11bHRpLWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1maWVsZC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxuICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPlxuICAgICAgICB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggbXVsdGktYXV0b2NvbXBsZXRlLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggI2NoaXBMaXN0IGNsYXNzPVwiY2hpcC1saXN0Ym94XCIgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpLXNlbGVjdC1jaGlwXCJcbiAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmUoaXRlbSlcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWlucHV0IGFwcC1pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SWQoKVwiXG4gICAgICAgICAgICAjaXRlbUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibXVsdGlDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNob3dJbnB1dFBsYWNlaG9sZGVyID8gKGdldFBsYWNlaG9sZGVyS2V5KCkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCI+XG4gICAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cblxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLnJlYWRvbmx5XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb29rdXBJdGVtcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3QtYXJyb3ctdHJpZ2dlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seSB8fCByZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiJ211bHRpLXNlbGVjdC10cmlnZ2VyLScgKyBmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJvblRyaWdnZXJDbGljaygkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk03IDEwbDUgNSA1LTV6XCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FB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QUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7K0dBeFZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHlmQzlDdkMseTVGQXNFQSxtOUVEM0NJLFlBQVksNExBQ1osT0FBTyw2U0FDUCxhQUFhLG1MQUNiLGNBQWMsMFVBQ2QsT0FBTyxrSEFFUCxtQkFBbUIsdXlCQUNuQixzQkFBc0IscVFBQ3RCLFFBQVEsaVVBQ1IsZUFBZSx5V0FDZixTQUFTLGdKQUNULFNBQVMsOENBQ1QsSUFBSSw0RkFFSixlQUFlOzs0RkFLTiwwQkFBMEI7a0JBdkJ0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsSUFBSTt3QkFDSixjQUFjO3dCQUNkLGVBQWU7cUJBQ2hCO2tIQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1ksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBV2hDLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FMTF9JVEVNLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtHZXRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2dldC1pdGVtcy1saXN0XCI7XG5pbXBvcnQge01hdEZvcm1GaWVsZH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcExpc3Rib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHtidWlsZEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcbmltcG9ydCB7RmlsdGVyUmVxdWVzdH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtSZXF1aXJlTWF0Y2h9IGZyb20gXCIuLi8uLi92YWxpZGF0b3JzXCI7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tdWx0aS1hdXRvLWNvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRDaGlwLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTmdGb3JPZixcbiAgICBNYXRJY29uLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRBdXRvY29tcGxldGUsXG4gICAgTWF0T3B0aW9uLFxuICAgIEFzeW5jUGlwZSxcbiAgICBOZ0lmLFxuICAgIE1hdENoaXBMaXN0Ym94LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCB7XG4vLyBAdHMtaWdub3JlXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1JbnB1dCcpIGl0ZW1JbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlVHJpZ2dlcicpIG1hdEFDVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBsb29rdXBJdGVtcyQ6IE9ic2VydmFibGU8TG9va3VwSXRlbVtdPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XG5cbiAgc2VsZWN0ZWRJdGVtczogTG9va3VwSXRlbVtdID0gW107XG4gIGNhc2NhZGVkSWR6OiBudW1iZXJbXSA9IFtdO1xuICBpc1JlcXVpcmVkOiBib29sZWFuPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lcjogYW55O1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBmaWVsZDogRmllbGRJbmZvO1xuICAvL1xuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBkZWZhdWx0VmFsdWU6IGFueTtcblxuICBASW5wdXQoKVxuICBwYXRoUGFyYW06IGFueTtcblxuICBASW5wdXQoKVxuICByZWFkb25seSA6IGJvb2xlYW49ZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbGFiZWxzU2VjdGlvbj86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPExvb2t1cEl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XG5cbiAgbXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHRoaXMudXBkYXRlRmllbGRBdHRyaWJ1dGVzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XT8udmFsdWU7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcyh2LCBudWxsKTtcbiAgICAgICAgfSwgNzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2V0TG9va3VwRGF0YSgpO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQXR0cmlidXRlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jRm9ybUNvbnRyb2xTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZD8ucHJvcGVydHkpO1xuICAgIGlmICghY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5yZXF1aXJlZCkge1xuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgfVxuXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsaWRhdG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgaWYgKCF0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0pIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChSZXF1aXJlTWF0Y2gpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1NlbGVjdGVkSXRlbXMgPSAodGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwO1xuICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSB0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zO1xuICAgIHRoaXMubXVsdGlDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDaGlsZEl0ZW1zSWZDYXNjYWRlZEJ5UmVtb3ZlZCh2KSB7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIHYuZm9yRWFjaChhID0+IHtcbiAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICB9KTtcbiAgICBsZXQgdG9EZWxldGVJZHogPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXM/LmZvckVhY2goeCA9PiB7XG4gICAgICBjb25zdCBkZWwgPSB0aGlzLmNhc2NhZGVkSWR6LmZpbmRJbmRleCh5ID0+IHkgPT09IHhbdGhpcy5maWVsZC5jYXNjYWRlZEJ5XT8uaWQpO1xuICAgICAgaWYgKGRlbCA8IDApIHtcbiAgICAgICAgdG9EZWxldGVJZHoucHVzaCh4WydpZCddKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0b0RlbGV0ZUlkeikge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihzID0+ICF0b0RlbGV0ZUlkei5pbmNsdWRlcyhzLmlkKSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHtkZWZhdWx0VmFsdWUsIGZpZWxkfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShkZWZhdWx0VmFsdWU/LmN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKGZpZWxkPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuZmllbGQgPSBmaWVsZC5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkQXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcbiAgICBjb25zdCBsaXN0SXRlbXM6IEdldEl0ZW1zTGlzdCA9IGJ1aWxkSXRlbXNMaXN0KCcnLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJywgZmllbGROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGxhYmVsOiAnJyxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsIG9wZXJhdG9yOiAnSU4nLFxuICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5jYXNjYWRlZElkelxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IFsnaWQnLCdjb2RlJywnZW5nbGlzaE5hbWUnLCdhcmFiaWNOYW1lJ107XG4gICAgaWYgKCF0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3AgPT4ge1xuICAgICAgaWYgKHJlc3AudmFsaWQpIHtcbiAgICAgICAgdGhpcy5sb29rdXBJdGVtcyA9IHRoaXMuZmllbGQuaW5jbHVkZUFsbE9wdGlvbiA/IFtBTExfSVRFTV0uY29uY2F0KHJlc3AuYm9keSkgOiByZXNwLmJvZHk7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmdldCgnaWQnKT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aFxuICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW1zXG4gICAgICAgICAgOiB0aGlzLmZvcm0/LmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KT8udmFsdWU7XG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShzZWxlY3RlZCk7XG5cbiAgICAgIH1cblxuICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSk/LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG4gIHNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaWQgIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkID09IHZhbHVlLmlkKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcz8ucHVzaCh2YWx1ZSk7XG4gICAgICB0aGlzLml0ZW1JbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc3luY0Zvcm1Db250cm9sU3RhdGUoKTtcbiAgICAgIHRoaXMucHVibGlzaEF2YWlsYWJsZUxvb2t1cEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWxlY3RlZCA/IHNlbGVjdGVkLmVuZ2xpc2hOYW1lIDogdW5kZWZpbmVkO1xuXG4gIH1cbiAgaXNTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zPy5zb21lKChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZD8uY29kZSA9PSBpdGVtPy5jb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXZhaWxhYmxlTG9va3VwSXRlbXMoaXRlbXM6IExvb2t1cEl0ZW1bXSk6IExvb2t1cEl0ZW1bXSB7XG4gICAgcmV0dXJuIChpdGVtcyA/PyBbXSkuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSk7XG4gIH1cblxuICBwcml2YXRlIHB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLmxvb2t1cEl0ZW1zJCA9IG9mKHRoaXMuYXZhaWxhYmxlTG9va3VwSXRlbXModGhpcy5sb29rdXBJdGVtcykpO1xuICB9XG5cbiAgX2FsbG93U2VsZWN0aW9uKG9wdGlvbjogTG9va3VwSXRlbSk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcbiAgICB9XG4gIH1cblxuICBpdGVtTmFtZUJ5TGFnKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgLy8gcmV0dXJuIGl0ZW0uYXJhYmljTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcblxuICBmaWx0ZXJMb29rdXBJdGVtcyhuYW1lOiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAodHJpZ2dlcikge1xuICAgICAgdHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZSA9ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QobmFtZSwgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoKTtcblxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xuICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVyTGlzdCB8fCBbXTtcbiAgICBmaWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IG5hbWU7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJyxqb2luT2JqZWN0TmFtZTogdGhpcy5maWVsZC5jYXNjYWRlZEJ5LCBmaWVsZE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgbGFiZWw6ICcnLFxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6ICdJTicsXG4gICAgICAgIHZhbHVlT2JqZWN0OiB0aGlzLmNhc2NhZGVkSWR6XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gWy4uLnRoaXMuX2NvbHVtbnMsIC4uLih0aGlzLmZpZWxkLmV4dHJhTG9va3Vwc0NvbHVtbnMgPz8gW10pXTtcblxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgbGV0IGl0ZW1zOiBMb29rdXBJdGVtW10gPSBbXTtcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSByZXNwLmJvZHkgPz8gW107XG4gICAgICAgIGl0ZW1zID0gdGhpcy5hdmFpbGFibGVMb29rdXBJdGVtcyh0aGlzLmxvb2t1cEl0ZW1zKTtcbiAgICAgICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cbiAgICAgICAgICAgIGl0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSk6XG4gICAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuICAgICAgfVxuICAgICAgdGhpcy5sb29rdXBJdGVtcyQgPSBvZihpdGVtcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpID8gZGVmYXVsdFZhbHVlIDogW2RlZmF1bHRWYWx1ZV07XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyS2V5KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAoIXRoaXMubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBjb25maWd1cmVkS2V5XG4gICAgICA6IGAke3RoaXMubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0UGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWVsZD8ucGxhY2Vob2xkZXIgJiYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID09PSAwO1xuICB9XG5cbiAgb25JbnB1dENsaWNrKGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZD8ucmVhZG9ubHkgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZmllbGQ/LnJlYWRvbmx5IHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKCcnLCBhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgfVxuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkXCIgY2xhc3M9XCJtYWluLW11bHRpLWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1maWVsZC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxuICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPlxuICAgICAgICB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggbXVsdGktYXV0b2NvbXBsZXRlLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggI2NoaXBMaXN0IGNsYXNzPVwiY2hpcC1saXN0Ym94XCIgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpLXNlbGVjdC1jaGlwXCJcbiAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmUoaXRlbSlcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWlucHV0IGFwcC1pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SWQoKVwiXG4gICAgICAgICAgICAjaXRlbUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibXVsdGlDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNob3dJbnB1dFBsYWNlaG9sZGVyID8gKGdldFBsYWNlaG9sZGVyS2V5KCkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCI+XG4gICAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cblxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLnJlYWRvbmx5XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb29rdXBJdGVtcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3QtYXJyb3ctdHJpZ2dlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seSB8fCByZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiJ211bHRpLXNlbGVjdC10cmlnZ2VyLScgKyBmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJvblRyaWdnZXJDbGljaygkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk03IDEwbDUgNSA1LTV6XCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19