@rangertechnologies/ngnxt 2.1.242 → 2.1.243

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.
Files changed (43) hide show
  1. package/esm2022/environments/version.mjs +2 -2
  2. package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +1 -11
  3. package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +6 -9
  4. package/esm2022/lib/components/datatable/datatable.component.mjs +347 -218
  5. package/esm2022/lib/components/file-upload/file-upload.component.mjs +6 -6
  6. package/esm2022/lib/components/list-view-filter/list-view-filter.component.mjs +1 -3
  7. package/esm2022/lib/components/nxt-input/nxt-input.component.mjs +18 -7
  8. package/esm2022/lib/components/pick-location/pick-location.component.mjs +6 -13
  9. package/esm2022/lib/components/search-box/search-box.component.mjs +14 -10
  10. package/esm2022/lib/i18n.component.mjs +1 -3
  11. package/esm2022/lib/pages/booklet/booklet.component.mjs +4 -6
  12. package/esm2022/lib/pages/builder/element/element.component.mjs +41 -31
  13. package/esm2022/lib/pages/builder/form/form.component.mjs +1 -1
  14. package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +5 -5
  15. package/esm2022/lib/pages/builder/properties/properties.component.mjs +610 -687
  16. package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +12 -8
  17. package/esm2022/lib/pages/pdfDesigner/pdf-properties/pdf-properties.component.mjs +4 -12
  18. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +2 -5
  19. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +2 -170
  20. package/esm2022/lib/pipe/get-value.pipe.mjs +2 -2
  21. package/esm2022/lib/services/change.service.mjs +1 -5
  22. package/esm2022/lib/services/data.service.mjs +1 -4
  23. package/esm2022/lib/services/form-builder.service.mjs +35 -25
  24. package/esm2022/lib/services/pdf-designer.service.mjs +3 -6
  25. package/esm2022/lib/services/salesforce.service.mjs +1 -6
  26. package/esm2022/lib/services/storage.service.mjs +1 -2
  27. package/esm2022/lib/services/translation.service.mjs +1 -2
  28. package/fesm2022/rangertechnologies-ngnxt.mjs +8666 -8793
  29. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  30. package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +2 -1
  31. package/lib/components/datatable/datatable.component.d.ts +34 -28
  32. package/lib/components/file-upload/file-upload.component.d.ts +2 -1
  33. package/lib/components/nxt-input/nxt-input.component.d.ts +5 -1
  34. package/lib/components/pick-location/pick-location.component.d.ts +2 -1
  35. package/lib/components/search-box/search-box.component.d.ts +2 -1
  36. package/lib/pages/builder/element/element.component.d.ts +2 -15
  37. package/lib/pages/builder/properties/common-fields.constants.d.ts +4 -16
  38. package/lib/pages/builder/properties/properties.component.d.ts +95 -129
  39. package/lib/pipe/get-value.pipe.d.ts +1 -1
  40. package/lib/services/form-builder.service.d.ts +0 -1
  41. package/package.json +1 -1
  42. package/rangertechnologies-ngnxt-2.1.243.tgz +0 -0
  43. package/rangertechnologies-ngnxt-2.1.242.tgz +0 -0
@@ -277,7 +277,6 @@ export class ListViewFilterComponent {
277
277
  return this.tableFilterArrayTrans.filter(col => col.label.toLowerCase().includes(term));
278
278
  }
279
279
  getColumnColumns(term) {
280
- console.log(term);
281
280
  if (!term)
282
281
  return this.displayedColumnsTrans;
283
282
  term = term.toLowerCase();
@@ -360,7 +359,6 @@ export class ListViewFilterComponent {
360
359
  }
361
360
  }
362
361
  getLabelByFieldName(fieldName) {
363
- console.log(fieldName);
364
362
  const match = this.displayedColumnsTrans.find(col => col.fieldName === fieldName);
365
363
  return match?.label ? match.label : fieldName;
366
364
  }
@@ -400,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
400
398
  type: HostListener,
401
399
  args: ['document:click', ['$event']]
402
400
  }] } });
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9saXN0LXZpZXctZmlsdGVyL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC12aWV3LWZpbHRlci9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQWdDN0QsTUFBTSxPQUFPLHVCQUF1QjtJQWlDZDtJQUF3QjtJQWhDbkMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0Isa0JBQWtCLEdBQXlEO1FBQ2xGLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDMUQsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUMsU0FBUyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxF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QUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFDRCxpRkFBaUY7SUFFakYsZUFBZSxDQUFDLEtBQVU7UUFDeEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQzt3R0E1WVUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsNFdBSnZCLENBQUMsbUJBQW1CLENBQUMsK0NDaENsQyxpdnZCQXVSTSx1dk1EeFBNLFlBQVksK1BBQUUsV0FBVywyc0NBQUUsbUJBQW1CLHloQkFBRSxtQkFBbUIsdURBQUMsZ0JBQWdCOzs0RkFLbkYsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLGdCQUFnQixDQUFDLGFBQ3BGLENBQUMsbUJBQW1CLENBQUM7a0hBS3ZCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFTSSxZQUFZO3NCQUFyQixNQUFNO2dCQXdYUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvY3VzdG9tLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW50ZXJmYWNlIExpc3RWaWV3IHtcbiAgZmlsdGVyTmFtZTogc3RyaW5nO1xuICBsYWJlbFBhdGg6IGFueTtcbiAgb3JkZXI6IG51bWJlcjtcbiAgaXNEZWZhdWx0OiBib29sZWFuO1xuICBjb25kaXRpb25zOiBMaXN0Vmlld0ZpbHRlcltdO1xuICBjb2x1bW5zOiBMaXN0Vmlld0NvbHVtbltdO1xuICBzaG93QWN0aW9ucz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMaXN0Vmlld0ZpbHRlciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIG9wZXJhdG9yOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBMaXN0Vmlld0NvbHVtbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc29ydGFibGU6IGJvb2xlYW47XG4gIGZpbHRlcmFibGU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1saXN0LXZpZXctZmlsdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEN1c3RvbVRyYW5zbGF0ZVBpcGUsTWF0VG9vbHRpcE1vZHVsZV0sXG4gIHByb3ZpZGVyczogW0N1c3RvbVRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExpc3RWaWV3RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGlzdFZpZXdzOiBMaXN0Vmlld1tdID0gW107XG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyQXJyYXk6IGFueSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZFZpZXc6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgYXZhaWxhYmxlT3BlcmF0b3JzOiB7IGxhYmVsOiBzdHJpbmcsbGFiZWxQYXRoOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW1xuICAgIHsgbGFiZWw6ICdFcXVhbHMgKD0pJyxsYWJlbFBhdGg6J0FQUC5FUVVBTFMnLCB2YWx1ZTogJz0nIH0sXG4gICAgeyBsYWJlbDogJ05vdCBFcXVhbCAoIT0pJyxsYWJlbFBhdGg6J0FQUC5OT1RfRVFVQUwnLCB2YWx1ZTogJyE9JyB9LFxuICAgIHsgbGFiZWw6ICdHcmVhdGVyIFRoYW4gKD4pJyxsYWJlbFBhdGg6J0FQUC5HUkVBVEVSX1RIQU4nLCB2YWx1ZTogJz4nIH0sXG4gICAgeyBsYWJlbDogJ0xlc3MgVGhhbiAoPCknLGxhYmVsUGF0aDonQVBQLkxFU1NfVEhBTicsIHZhbHVlOiAnPCcgfSxcbiAgICB7IGxhYmVsOiAnR3JlYXRlciBUaGFuIG9yIEVxdWFsICg+PSknLGxhYmVsUGF0aDonQVBQLkdSRUFURVJfVEhBTl9PUl9FUVVBTCcsIHZhbHVlOiAnPj0nIH0sXG4gICAgeyBsYWJlbDogJ0xlc3MgVGhhbiBvciBFcXVhbCAoPD0pJyxsYWJlbFBhdGg6J0FQUC5MRVNTX1RIQU5fT1JfRVFVQUwnLCB2YWx1ZTogJzw9JyB9XG4gIF07ICAvLyAnY29udGFpbnMnLCAnbm90IGNvbnRhaW5zJywgJ3N0YXJ0cyB3aXRoJywgJ2VuZHMgd2l0aCdcblxuICBAT3V0cHV0KCkgbGlzdFZpZXdFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaXNEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNb2RhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEZWxldGVNb2RhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBZGRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlld1RvRGVsZXRlOiBMaXN0VmlldyB8IG51bGwgPSBudWxsO1xuXG4gIGVkaXRpbmdWaWV3OiBGb3JtR3JvdXA7XG5cbiAgaXNDb2x1bW5Ecm9wZG93bk9wZW46IGJvb2xlYW5bXSA9IFtdO1xuICBpc09wZXJhdG9yRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcbiAgaXNWYWx1ZURyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG4gIGlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG4gIHNlbGVjdGVkVmlld1BhdGg6IHN0cmluZztcbiAgdGFibGVGaWx0ZXJBcnJheVRyYW5zOiBhbnk7XG4gIGRpc3BsYXllZENvbHVtbnNUcmFuczogYW55O1xuICBhdmFpbGFibGVPcGVyYXRvcnNUcmFuczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIscHJpdmF0ZSBjdXN0b21UcmFuc2xhdGU6IEN1c3RvbVRyYW5zbGF0ZVBpcGUpIHtcbiAgICB0aGlzLmVkaXRpbmdWaWV3ID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBmaWx0ZXJOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb3JkZXI6IFswLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGlzRGVmYXVsdDogW2ZhbHNlXSxcbiAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgY29sdW1uczogdGhpcy5mYi5hcnJheShbXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMubGlzdFZpZXdzWzBdLmZpbHRlck5hbWU7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlld1BhdGggPSB0aGlzLmxpc3RWaWV3c1swXS5sYWJlbFBhdGhcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gdGhpcy5zZWxlY3RlZFZpZXcgPT09ICdBbGwgRGF0YScgPyB0aGlzLmxpc3RWaWV3c1swXS5sYWJlbFBhdGggOiB0aGlzLnNlbGVjdGVkVmlld1xuICAgIH1cbiAgICB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucyA9dGhpcy50YWJsZUZpbHRlckFycmF5XG4gICAgdGhpcy50YWJsZUZpbHRlckFycmF5VHJhbnMuZm9yRWFjaCgoZWxlOmFueSkgPT4ge1xuICAgICAgZWxlLmxhYmVsID0gdGhpcy5jdXN0b21UcmFuc2xhdGUudHJhbnNmb3JtKGVsZS5sYWJlbFBhdGggfHwgZWxlLmxhYmVsLGVsZS5sYWJlbCApXG4gICAgfSk7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMgPXRoaXMuZGlzcGxheWVkQ29sdW1uc1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZvckVhY2goKGVsZTphbnkpID0+IHtcbiAgICAgIGVsZS5sYWJlbCA9IHRoaXMuY3VzdG9tVHJhbnNsYXRlLnRyYW5zZm9ybShlbGUubGFiZWxQYXRoIHx8IGVsZS5sYWJlbCxlbGUubGFiZWwgKVxuICAgIH0pO1xuICAgIHRoaXMuYXZhaWxhYmxlT3BlcmF0b3JzVHJhbnMgPSB0aGlzLmF2YWlsYWJsZU9wZXJhdG9yc1xuICAgIHRoaXMuYXZhaWxhYmxlT3BlcmF0b3JzVHJhbnMuZm9yRWFjaCgoZWxlOmFueSkgPT4ge1xuICAgICAgZWxlLmxhYmVsID0gdGhpcy5jdXN0b21UcmFuc2xhdGUudHJhbnNmb3JtKGVsZS5sYWJlbFBhdGggfHwgZWxlLmxhYmVsLGVsZS5sYWJlbCApXG4gICAgfSk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IHRoaXMubGlzdFZpZXdzWzBdLmxhYmVsUGF0aFxuICAgIH1lbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IHRoaXMuc2VsZWN0ZWRWaWV3ID09PSAnQWxsIERhdGEnID8gdGhpcy5saXN0Vmlld3NbMF0ubGFiZWxQYXRoIDogdGhpcy5zZWxlY3RlZFZpZXdcbiAgICB9XG4gIH1cblxuICBnZXQgY29uZGl0aW9ucygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdWaWV3LmdldCgnY29uZGl0aW9ucycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZXR1cm5zIHRoZSBGb3JtQXJyYXkgb2YgY29sdW1ucyBmcm9tIHRoZSBlZGl0aW5nIGZvcm1cbiAgZ2V0IGNvbHVtbnMoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nVmlldy5nZXQoJ2NvbHVtbnMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgQWRkcyBhIG5ldyBmaWx0ZXIgY29uZGl0aW9uIHRvIHRoZSBmb3JtXG4gIGFkZEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmRpdGlvbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZpZWxkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb3BlcmF0b3I6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0pKTtcbiAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuLnB1c2goZmFsc2UpO1xuICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW4ucHVzaChmYWxzZSk7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgUmVtb3ZlcyBhIGZpbHRlciBjb25kaXRpb24gYnkgaW5kZXhcbiAgcmVtb3ZlRmlsdGVyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmRpdGlvbnMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGFkZENvbHVtbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBzb3J0YWJsZTogW2ZhbHNlXSxcbiAgICAgIGZpbHRlcmFibGU6IFtmYWxzZV1cbiAgICB9KSk7XG4gICAgdGhpcy5pc0NvbHVtbk5hbWVEcm9wZG93bk9wZW4ucHVzaChmYWxzZSk7XG4gIH1cblxuICByZW1vdmVDb2x1bW4oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucy5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5pc0NvbHVtbk5hbWVEcm9wZG93bk9wZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdFZpZXdFbWl0LmVtaXQoe1wiYWN0aW9uXCI6ICdmaWx0ZXJHZXQnfSk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IEhhbmRsZXMgc2VsZWN0aW5nIGEgbGlzdCB2aWV3IGZyb20gdGhlIGRyb3Bkb3duXG4gIHNlbGVjdExpc3RWaWV3KHZpZXc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdmlldy5maWx0ZXJOYW1lO1xuICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IHZpZXcubGFiZWxQYXRoIHx8IHZpZXcuZmlsdGVyTmFtZTtcbiAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzonc2VsZWN0JywgJ2RhdGEnOnZpZXd9KTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgbW9kYWwgdG8gZWRpdCBhbiBleGlzdGluZyBsaXN0IHZpZXdcbiAgc3RhcnRFZGl0KHZpZXc6IExpc3RWaWV3LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuaXNBZGRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucmVzZXQoKTtcbiAgICB3aGlsZSAodGhpcy5jb25kaXRpb25zLmxlbmd0aCkgdGhpcy5jb25kaXRpb25zLnJlbW92ZUF0KDApO1xuICAgIHdoaWxlICh0aGlzLmNvbHVtbnMubGVuZ3RoKSB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoMCk7XG5cbiAgICB0aGlzLmVkaXRpbmdWaWV3LnBhdGNoVmFsdWUoe1xuICAgICAgZmlsdGVyTmFtZTogdmlldy5maWx0ZXJOYW1lLFxuICAgICAgb3JkZXI6IHZpZXcub3JkZXIsXG4gICAgICBpc0RlZmF1bHQ6IHZpZXcuaXNEZWZhdWx0XG4gICAgfSk7XG5cbiAgICB2aWV3Py5jb25kaXRpb25zPy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgZmllbGQ6IFtmaWx0ZXIuZmllbGQsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBvcGVyYXRvcjogW2ZpbHRlci5vcGVyYXRvciwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIHZhbHVlOiBbZmlsdGVyLnZhbHVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgXG4gICAgdmlldz8uY29sdW1ucz8uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGlmKGNvbC5uYW1lID09IGZpZWxkLmZpZWxkTmFtZSkge1xuICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogW2ZpZWxkLmxhYmVsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIHNvcnRhYmxlOiBbY29sLnNvcnRhYmxlIHx8IGZhbHNlXSxcbiAgICAgICAgICAgIGZpbHRlcmFibGU6IFtjb2wuZmlsdGVyYWJsZSB8fCBmYWxzZV1cbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gIH1cblxuICAvLyBTS1MzTUFZMjUgT3BlbnMgbW9kYWwgdG8gY3JlYXRlIGEgbmV3IGxpc3Qgdmlld1xuICBzdGFydEFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWRkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucmVzZXQoKTtcbiAgICB3aGlsZSAodGhpcy5jb25kaXRpb25zLmxlbmd0aCkgdGhpcy5jb25kaXRpb25zLnJlbW92ZUF0KDApO1xuICAgIHdoaWxlICh0aGlzLmNvbHVtbnMubGVuZ3RoKSB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoMCk7XG5cbiAgICB0aGlzLmVkaXRpbmdWaWV3LnBhdGNoVmFsdWUoe1xuICAgICAgb3JkZXI6IHRoaXMubGlzdFZpZXdzPy5sZW5ndGgsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gICAgLy8gU0tTMjZNQVkyNSBTZWNvbmQgbG9vcDogZnJvbSBkaXNwbGF5ZWRDb2x1bW5zVHJhbnMsIHNraXAgZHVwbGljYXRlc1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG5hbWU6IFtmaWVsZC5sYWJlbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIHNvcnRhYmxlOiBbZmllbGQuaHlwZXJMaW5rIHx8IGZhbHNlXSxcbiAgICAgICAgZmlsdGVyYWJsZTogW2ZpZWxkLmZpbHRlciB8fCBmYWxzZV1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBTYXZlcyB0aGUgY3VycmVudGx5IGVkaXRlZCBvciBhZGRlZCBsaXN0IHZpZXdcbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nVmlldy52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5lZGl0aW5nVmlldy52YWx1ZTtcbiAgICAgIGZvcm1WYWx1ZT8uY29sdW1ucz8uZm9yRWFjaCgoY29sKT0+e1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucy5mb3JFYWNoKChkQ29sKSA9PiB7XG4gICAgICAgICAgaWYgKGRDb2wubGFiZWwgPT09IGNvbC5uYW1lKSB7XG4gICAgICAgICAgICBjb2wubmFtZSA9IGRDb2wuZmllbGROYW1lXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIGZvcm1WYWx1ZT8uY29uZGl0aW9ucz8uZm9yRWFjaCgoY29sKT0+e1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucy5mb3JFYWNoKChkQ29sKSA9PiB7XG4gICAgICAgICAgaWYgKGRDb2wubGFiZWwgPT09IGNvbC5maWVsZCkge1xuICAgICAgICAgICAgY29sLmZpZWxkID0gZENvbC5maWVsZE5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgY29uc3QgbGlzdFZpZXc6IExpc3RWaWV3ID0ge1xuICAgICAgICBmaWx0ZXJOYW1lOiBmb3JtVmFsdWUuZmlsdGVyTmFtZSxcbiAgICAgICAgbGFiZWxQYXRoOiBmb3JtVmFsdWUubGFiZWxQYXRoIHx8IGZvcm1WYWx1ZS5maWx0ZXJOYW1lLFxuICAgICAgICBvcmRlcjogZm9ybVZhbHVlLm9yZGVyLFxuICAgICAgICBpc0RlZmF1bHQ6IGZvcm1WYWx1ZS5pc0RlZmF1bHQsXG4gICAgICAgIGNvbmRpdGlvbnM6IGZvcm1WYWx1ZS5jb25kaXRpb25zLFxuICAgICAgICBjb2x1bW5zOiBmb3JtVmFsdWUuY29sdW1uc1xuICAgICAgfTtcblxuICAgICAgLy8gaWYgKGxpc3RWaWV3LmlzRGVmYXVsdCkge1xuICAgICAgLy8gICB0aGlzLmxpc3RWaWV3cy5mb3JFYWNoKHZpZXcgPT4ge1xuICAgICAgLy8gICAgIGlmICh2aWV3LmlkICE9PSBsaXN0Vmlldy5pZCkgdmlldy5pc0RlZmF1bHQgPSBmYWxzZTtcbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyB9XG5cbiAgICAgIC8vIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmxpc3RWaWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBsaXN0Vmlldy5pZCk7XG4gICAgICAvLyBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAvLyAgIHRoaXMubGlzdFZpZXdzW2V4aXN0aW5nSW5kZXhdID0geyAuLi5saXN0VmlldyB9O1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgdGhpcy5saXN0Vmlld3MucHVzaChsaXN0Vmlldyk7XG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMubGlzdFZpZXdzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gbGlzdFZpZXcuZmlsdGVyTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IGxpc3RWaWV3LmxhYmVsUGF0aCB8fCBsaXN0Vmlldy5maWx0ZXJOYW1lO1xuICAgICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6J3NhdmUnLCBcImRhdGFcIjogbGlzdFZpZXd9KTtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFNob3dzIGFjdGlvbiBidXR0b25zIGZvciBhIGxpc3QgdmlldyBvbiBob3ZlclxuICBzaG93QWN0aW9ucyh2aWV3OiBMaXN0Vmlldyk6IHZvaWQge1xuICAgIHZpZXcuc2hvd0FjdGlvbnMgPSB0cnVlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IEhpZGVzIGFjdGlvbiBidXR0b25zIGZvciBhbGwgbGlzdCB2aWV3c1xuICBoaWRlQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RWaWV3cy5mb3JFYWNoKHZpZXcgPT4gdmlldy5zaG93QWN0aW9ucyA9IGZhbHNlKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBjb25maXJtYXRpb24gbW9kYWwgdG8gZGVsZXRlIGEgbGlzdCB2aWV3XG4gIGNvbmZpcm1EZWxldGUodmlldzogTGlzdFZpZXcsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudmlld1RvRGVsZXRlID0gdmlldztcbiAgICB0aGlzLmlzRGVsZXRlTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgQ2xvc2VzIHRoZSBkZWxldGUgY29uZmlybWF0aW9uIG1vZGFsXG4gIGNsb3NlRGVsZXRlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0RlbGV0ZU1vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMudmlld1RvRGVsZXRlID0gbnVsbDtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBEZWxldGVzIHRoZSBzZWxlY3RlZCBsaXN0IHZpZXcgYWZ0ZXIgY29uZmlybWF0aW9uXG4gIGRlbGV0ZUNvbmZpcm1lZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3VG9EZWxldGUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0Vmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5maWx0ZXJOYW1lID09PSB0aGlzLnZpZXdUb0RlbGV0ZT8uZmlsdGVyTmFtZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAvLyB0aGlzLmxpc3RWaWV3cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZpZXcgPT09IHRoaXMudmlld1RvRGVsZXRlLmZpbHRlck5hbWUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwID8gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZSA6ICcnO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IHRoaXMubGlzdFZpZXdzPy5sZW5ndGggPiAwID8gdGhpcy5saXN0Vmlld3NbMF0ubGFiZWxQYXRoIDogJycgXG4gICAgICAgICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6J3NlbGVjdCcsICdkYXRhJzp0aGlzLnNlbGVjdGVkVmlld30pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdFZpZXdFbWl0LmVtaXQoeydhY3Rpb24nOiAnZGVsZXRlJywgXCJkYXRhXCI6IHRoaXMudmlld1RvRGVsZXRlfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlRGVsZXRlTW9kYWwoKTtcbiAgICB9XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyBmaWx0ZXJlZCBsaXN0IG9mIGNvbHVtbnMgYmFzZWQgb24gaW5wdXQgc2VhcmNoIHRlcm1cbiAgZ2V0RmlsdGVyZWRDb2x1bW5zKHRlcm06IHN0cmluZyk6IGFueVtdIHtcbiAgICBpZiAoIXRlcm0pIHJldHVybiB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucztcbiAgICB0ZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucy5maWx0ZXIoY29sID0+XG4gICAgICBjb2wubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxuICAgICk7XG4gIH1cblxuICBnZXRDb2x1bW5Db2x1bW5zKHRlcm06IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zb2xlLmxvZyh0ZXJtKVxuICAgIGlmICghdGVybSkgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zO1xuICAgIHRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZpbHRlcihjb2wgPT5cbiAgICAgIGNvbC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgKTtcbiAgfSAgXG4gICAvLyBTS1MzTUFZMjUgUmV0dXJucyBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEgc2VsZWN0ZWQgZmllbGQvY29sdW1uXG4gICBnZXRQb3NzaWJsZVZhbHVlcyhmaWVsZDogc3RyaW5nLCB0ZXJtOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucy5maW5kKGNvbCA9PiBjb2wubGFiZWwgPT09IGZpZWxkKTtcbiAgICBpZiAoIW1hdGNoIHx8ICFBcnJheS5pc0FycmF5KG1hdGNoLnZhbHVlKSkgcmV0dXJuIFtdO1xuICAgIGlmICghdGVybSkgcmV0dXJuIG1hdGNoLnZhbHVlO1xuICAgIGNvbnN0IGxvd2VyVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbWF0Y2gudmFsdWUuZmlsdGVyKHZhbCA9PlxuICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJUZXJtKVxuICAgICk7XG4gIH0gIFxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyBmaWx0ZXJlZCBsaXN0IG9mIG9wZXJhdG9ycyBiYXNlZCBvbiBpbnB1dCBzZWFyY2ggdGVybVxuICBnZXRGaWx0ZXJlZE9wZXJhdG9ycyh0ZXJtOiBzdHJpbmcpOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdIHtcbiAgICBpZiAoIXRlcm0pIHJldHVybiB0aGlzLmF2YWlsYWJsZU9wZXJhdG9yc1RyYW5zO1xuICAgIHRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlT3BlcmF0b3JzVHJhbnMuZmlsdGVyKG9wZXJhdG9yID0+XG4gICAgICBvcGVyYXRvci5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgKTtcbiAgfSAgXG4gIG9wZXJhdG9ySW5wdXQ6IHN0cmluZ1tdID0gW107XG5cbiAgb25PcGVyYXRvcklucHV0KHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZXJhdG9ySW5wdXRbaW5kZXhdID0gdmFsdWU7XG4gIH1cbiAgXG4gIGdldE9wZXJhdG9yTGFiZWwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmF2YWlsYWJsZU9wZXJhdG9yc1RyYW5zLmZpbmQob3AgPT4gb3AudmFsdWUgPT09IHZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQgPyBmb3VuZC5sYWJlbCA6IHZhbHVlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IE9wZW5zIGEgZHJvcGRvd24gb24gZm9jdXMgZm9yIHRoZSBnaXZlbiBpbnB1dCB0eXBlIGFuZCBpbmRleFxuICBvbkZvY3VzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZmllbGQnKSB7XG4gICAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuW2luZGV4XSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3BlcmF0b3InKSB7XG4gICAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW5baW5kZXhdID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZScpIHtcbiAgICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHVtbk5hbWUnKSB7XG4gICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBEZWxheXMgY2xvc2luZyBkcm9wZG93biB0byBhbGxvdyBzZWxlY3Rpb24gb24gYmx1clxuICBvbkJsdXIodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2ZpZWxkJykge1xuICAgICAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3BlcmF0b3InKSB7XG4gICAgICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2x1bW5OYW1lJykge1xuICAgICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LCAyMDApO1xuICB9XG5cbi8vIFNLUzNNQVkyNSBTZXRzIHNlbGVjdGVkIHZhbHVlIGluIHRoZSBmb3JtIGNvbnRyb2wgYW5kIGNsb3NlcyB0aGUgZHJvcGRvd25cbiAgc2VsZWN0T3B0aW9uKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZmllbGQnKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMuYXQoaW5kZXgpLmdldCgnZmllbGQnKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGVyYXRvcicpIHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucy5hdChpbmRleCkuZ2V0KCdvcGVyYXRvcicpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWUnKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMuYXQoaW5kZXgpLmdldCgndmFsdWUnKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHVtbk5hbWUnKSB7XG4gICAgICB0aGlzLmNvbHVtbnMuYXQoaW5kZXgpLmdldCgnbmFtZScpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZ2V0TGFiZWxCeUZpZWxkTmFtZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc29sZS5sb2coZmllbGROYW1lKVxuICAgIGNvbnN0IG1hdGNoID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMuZmluZChjb2wgPT4gY29sLmZpZWxkTmFtZSA9PT0gZmllbGROYW1lKTtcbiAgICByZXR1cm4gbWF0Y2g/LmxhYmVsID8gbWF0Y2gubGFiZWwgOiBmaWVsZE5hbWU7XG4gIH1cblxuICBvbk1hbnVhbElucHV0KGlucHV0VmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1hdGNoID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMuZmluZChjb2wgPT4gY29sLmxhYmVsLnRvTG93ZXJDYXNlKCkgPT09IGlucHV0VmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB0aGlzLmNvbHVtbnMuYXQoaW5kZXgpLmdldCgnbmFtZScpLnNldFZhbHVlKG1hdGNoLmxhYmVsKTtcbiAgICB9XG4gIH0gICAgXG4gIC8vIFNLUzNNQVkyNSBMaXN0ZW5zIHRvIGRvY3VtZW50IGNsaWNrIGFuZCBjbG9zZXMgdGhlIGRyb3Bkb3duIGlmIGNsaWNrZWQgb3V0c2lkZVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5saXN0LXZpZXctZmlsdGVyJykpIHtcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWZpbHRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1sYWJlbFwiPnt7J0FQUC5EQVRBX1JFTEFURURfVE8nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0RhdGEgUmVsYXRlZCB0byd9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWx0ZXItaWNvblwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiByeD1cIjVcIiBmaWxsPVwiI0YxRjFGMVwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjUxMjg4IDQuNUgxMi4xODc5QzEyLjc0MjkgNC41IDEzLjIwMDQgNC45NTc1IDEzLjIwMDQgNS41MTI1VjYuNjIyNDlDMTMuMjAwNCA3LjAyNzQ5IDEyLjk0NTQgNy41MyAxMi42OTc5IDcuNzg1TDEwLjUyMjkgOS43MDVDMTAuMjIyOSA5Ljk2IDEwLjAyMDQgMTAuNDYyNSAxMC4wMjA0IDEwLjg2NzVWMTMuMDQyNUMxMC4wMjA0IDEzLjM0MjUgOS44MTc5IDEzLjc0NzUgOS41NjI5IDEzLjkwNUw4Ljg1Nzg5IDE0LjM2MjVDOC4xOTc4OSAxNC43Njc1IDcuMjkwMzcgMTQuMzEgNy4yOTAzNyAxMy41VjEwLjgyMjVDNy4yOTAzNyAxMC40NyA3LjA4Nzg5IDEwLjAxMjUgNi44ODUzOSA5Ljc1NzUxTDQuOTY1MzkgNy43MzI1QzQuNzEwMzkgNy40Nzc1IDQuNTA3OSA3LjAyNzQ5IDQuNTA3OSA2LjcxOTk5VjUuNTU3NUM0LjUwMDQgNC45NTc1IDQuOTU3ODggNC41IDUuNTEyODggNC41WlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNSAxMS45OTk5VjE0LjI0OTlDNC41IDE3Ljk5OTkgNiAxOS40OTk5IDkuNzUgMTkuNDk5OUgxNC4yNUMxOCAxOS40OTk5IDE5LjUgMTcuOTk5OSAxOS41IDE0LjI0OTlWOS43NDk5NEMxOS41IDcuNDA5OTQgMTguOTE1IDUuOTM5OTMgMTcuNTU3NSA1LjE3NDkzQzE3LjE3NSA0Ljk1NzQzIDE2LjQxIDQuNzkyNDMgMTUuNzEyNSA0LjY3OTkzXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi43NSAxMi43NUgxNi41XCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS4yNSAxNS43NUgxNi41XCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtb3B0aW9uXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkVmlldyA/IChzZWxlY3RlZFZpZXdQYXRoIHx8IHNlbGVjdGVkVmlldyB8IGN1c3RvbVRyYW5zbGF0ZSA6IHNlbGVjdGVkVmlldykgIDogKCdBUFAuU0VMRUNUX0FfVklFVycgfCBjdXN0b21UcmFuc2xhdGUgOiAnU2VsZWN0IGEgdmlldycpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hldnJvbi1pY29uXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOS45OTk5IDI1LjY2NjdDMjMuNjgxOCAyNS42NjY3IDI2LjY2NjYgMjIuNjgxOSAyNi42NjY2IDE5QzI2LjY2NjYgMTUuMzE4MSAyMy42ODE4IDEyLjMzMzQgMTkuOTk5OSAxMi4zMzM0QzE2LjMxOCAxMi4zMzM0IDEzLjMzMzMgMTUuMzE4MSAxMy4zMzMzIDE5QzEzLjMzMzMgMjIuNjgxOSAxNi4zMTggMjUuNjY2NyAxOS45OTk5IDI1LjY2NjdaXCIgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjY0NjcgMTguMTZMMjAuMDAwMSAyMC41MDY3TDIyLjM1MzQgMTguMTZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNLUzNNQVkyNSBsaXN0IHZpZXcgRHJvcCBkb3duLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0Ryb3Bkb3duT3BlblwiIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHZpZXcgb2YgbGlzdFZpZXdzXCIgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkVmlldyA9PT0gdmlldy5maWx0ZXJOYW1lXCIgKG1vdXNlZW50ZXIpPVwic2hvd0FjdGlvbnModmlldylcIiAobW91c2VsZWF2ZSk9XCJoaWRlQWN0aW9ucygpXCIgKGNsaWNrKT1cInNlbGVjdExpc3RWaWV3KHZpZXcpXCIgY2xhc3M9XCJsaXN0LXZpZXctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpZXctbmFtZVwiPnt7IHZpZXcubGFiZWxQYXRoIHx8IHZpZXcuZmlsdGVyTmFtZSB8IGN1c3RvbVRyYW5zbGF0ZSA6IHZpZXcuZmlsdGVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXcuc2hvd0FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEVkaXQodmlldywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4zMjkyMyAzLjk4NzI2TDEyLjAxMjYgNi42NzA1OU05LjMyOTIzIDMuOTg3MjZMMi41MDAwOCAxMC44MTY0VjEzLjQ5OTdINS4xODM0MkwxMi4wMTI2IDYuNjcwNTlNOS4zMjkyMyAzLjk4NzI2TDEyLjAxMjYgMS4zMDM5MkwxNC42OTU5IDMuOTg3MjZMMTIuMDEyNiA2LjY3MDU5XCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwiY29uZmlybURlbGV0ZSh2aWV3LCAkZXZlbnQpXCIgKm5nSWY9XCJsaXN0Vmlld3MubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS42NjY1IDMuMzEzNjJMNS44MTMxNyAyLjQ0MDI4QzUuOTE5ODQgMS44MDY5NSA1Ljk5OTg0IDEuMzMzNjIgNy4xMjY1IDEuMzMzNjJIOC44NzMxN0M5Ljk5OTg0IDEuMzMzNjIgMTAuMDg2NSAxLjgzMzYyIDEwLjE4NjUgMi40NDY5NUwxMC4zMzMyIDMuMzEzNjJcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNTY2NyA2LjA5Mzc1TDEyLjEzMzQgMTIuODA3MUMxMi4wNiAxMy44NTM3IDEyIDE0LjY2NzEgMTAuMTQgMTQuNjY3MUg1Ljg2MDAyQzQuMDAwMDIgMTQuNjY3MSAzLjk0MDAyIDEzLjg1MzcgMy44NjY2OCAxMi44MDcxTDMuNDMzMzUgNi4wOTM3NVwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjMzMzUgOC4zMzMyNUg5LjY2NjgzXCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXJcIiAoY2xpY2spPVwic3RhcnRBZGQoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAzLjMzMzI1VjEyLjY2NjZcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy4zMzMwMSA4SDEyLjY2NjNcIiBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3snQVBQLk5FV19MSVNUX1ZJRVcnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ05ldyBMaXN0IFZpZXcnfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgIDwhLS0gU0tTM01BWTI1IEFkZCBOZXcgTGlzdCBWaWV3LS0+XG4gICAgPGRpdiAqbmdJZj1cImlzTW9kYWxPcGVuXCIgY2xhc3M9XCJtb2RhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlci1kaXZcIj5cbiAgICAgICAgICAgICAgICB7eyAoaXNBZGRpbmcgPyAnQVBQLkFERF9ORVdfTElTVF9WSUVXJyA6ICdBUFAuRURJVF9MSVNUX1ZJRVcnKSAgfCBjdXN0b21UcmFuc2xhdGUgOiAoaXNBZGRpbmcgPyAnQWRkIE5ldyBMaXN0IFZpZXcnIDogJ0VkaXQgTGlzdCBWaWV3JykgfX0gXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVkaXRpbmdWaWV3XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3snQVBQLk5BTUUnIHwgY3VzdG9tVHJhbnNsYXRlIDonTmFtZSd9fTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpbHRlck5hbWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0FQUC5FTlRFUl9MSVNUX1ZJRVdfTkFNRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgbGlzdCB2aWV3IG5hbWUnXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGluZ1ZpZXcuZ2V0KCdmaWx0ZXJOYW1lJyk/LmludmFsaWQgJiYgKGVkaXRpbmdWaWV3LmdldCgnZmlsdGVyTmFtZScpPy5kaXJ0eSB8fCBlZGl0aW5nVmlldy5nZXQoJ2ZpbHRlck5hbWUnKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLk5BTUVfSVNfUkVRJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdOYW1lIGlzIHJlcXVpcmVkJ319LlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J0FQUC5PUkRFUicgfCBjdXN0b21UcmFuc2xhdGUgOiAnT3JkZXInfX06PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJcIiBbcGxhY2Vob2xkZXJdPVwiICdBUFAuRU5URVJfRElTUExBWV9PUkRFUicgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgZGlzcGxheSBvcmRlcidcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0aW5nVmlldy5nZXQoJ29yZGVyJyk/LmludmFsaWQgJiYgKGVkaXRpbmdWaWV3LmdldCgnb3JkZXInKT8uZGlydHkgfHwgZWRpdGluZ1ZpZXcuZ2V0KCdvcmRlcicpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FQUC5PUkRFUl9JU19SRVFfQU5EX0JFX0FfTlVNJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdPcmRlciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIG51bWJlcid9fS5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eydBUFAuREVGQVVMVF9WSUVXJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdEZWZhdWx0IFZpZXcnfX06PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtd3JhcHBlciBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0RlZmF1bHRcIiBpZD1cImlzRGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc0RlZmF1bHRcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eydBUFAuRklMVEVSUycgfCBjdXN0b21UcmFuc2xhdGUgOiAnRmlsdGVycyd9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbi1kZXNjcmlwdGlvblwiPnt7J0FQUC5ERUZJTkVfQ09ORElUSU9OU19GT1JfRklMVEVSRURfTElTVF9WSUVXJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdEZWZpbmUgY29uZGl0aW9ucyBmb3IgZmlsdGVyZWQgbGlzdCB2aWV3J319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cImNvbmRpdGlvbnNcIiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWNlbGxcIj57eydBUFAuQ09MVU1OJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdDb2x1bW4nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvci1jZWxsXCI+e3snQVBQLk9QRVJBVE9SJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdPcGVyYXRvcid9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNlbGxcIj57eydBUFAuVkFMVUUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ1ZhbHVlJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWNlbGxcIj57eydBUFAuQUNUSU9OJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdBY3Rpb24nfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZGl0aW9ucy5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjbGFzcz1cImZpbHRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0dmlldy1jdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJmaWVsZFwiIFt2YWx1ZV09XCJnZXRMYWJlbEJ5RmllbGROYW1lKGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCdmaWVsZCcpLnZhbHVlKVwiIChmb2N1cyk9XCJvbkZvY3VzKCdmaWVsZCcsIGkpXCIgKGJsdXIpPVwib25CbHVyKCdmaWVsZCcsIGkpXCIgW3BsYWNlaG9sZGVyXT1cIidBUFAuRU5URVJfT1JfU0VMRUNUX0NPTFVNTicgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgb3Igc2VsZWN0IGNvbHVtbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzQ29sdW1uRHJvcGRvd25PcGVuW2ldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBnZXRGaWx0ZXJlZENvbHVtbnMoY29uZGl0aW9ucy5hdChpKS5nZXQoJ2ZpZWxkJykudmFsdWUpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbignZmllbGQnLCBpLCBmaWVsZC5sYWJlbClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIuZ2V0KCdmaWVsZCcpPy5pbnZhbGlkICYmIChmaWx0ZXIuZ2V0KCdmaWVsZCcpPy5kaXJ0eSB8fCBmaWx0ZXIuZ2V0KCdmaWVsZCcpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBUFAuQ09MVU1OX0lTX1JFUScgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ29sdW1uIGlzIHJlcXVpcmVkJ319LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcGVyYXRvci1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3R2aWV3LWN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldE9wZXJhdG9yTGFiZWwoY29uZGl0aW9ucy5hdChpKS5nZXQoJ29wZXJhdG9yJykudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25PcGVyYXRvcklucHV0KCRldmVudC50YXJnZXQudmFsdWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygnb3BlcmF0b3InLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCdvcGVyYXRvcicsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FQUC5FTlRFUl9PUl9TRUxFQ1RfT1BFUkFUT1InIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0VudGVyIG9yIHNlbGVjdCBvcGVyYXRvcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgKm5nSWY9XCJpc09wZXJhdG9yRHJvcGRvd25PcGVuW2ldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wZXJhdG9yIG9mIGdldEZpbHRlcmVkT3BlcmF0b3JzKG9wZXJhdG9ySW5wdXRbaV0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCdvcGVyYXRvcicsIGksIG9wZXJhdG9yLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3BlcmF0b3IubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLmdldCgnb3BlcmF0b3InKT8uaW52YWxpZCAmJiAoZmlsdGVyLmdldCgnb3BlcmF0b3InKT8uZGlydHkgfHwgZmlsdGVyLmdldCgnb3BlcmF0b3InKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQVBQLk9QRVJBVE9SX0lTX1JFUScgfCBjdXN0b21UcmFuc2xhdGUgOiAnT3BlcmF0b3IgaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdHZpZXctY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiAoZm9jdXMpPVwib25Gb2N1cygndmFsdWUnLCBpKVwiIChibHVyKT1cIm9uQmx1cigndmFsdWUnLCBpKVwiIFtwbGFjZWhvbGRlcl09XCInQVBQLkVOVEVSX09SX1NFTEVDVF9WQUxVRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgb3Igc2VsZWN0IHZhbHVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiICpuZ0lmPVwiaXNWYWx1ZURyb3Bkb3duT3BlbltpXSAmJiBnZXRQb3NzaWJsZVZhbHVlcyhjb25kaXRpb25zLmF0KGkpLmdldCgnZmllbGQnKS52YWx1ZSwgY29uZGl0aW9ucy5hdChpKS5nZXQoJ3ZhbHVlJykudmFsdWUpPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWwgb2YgZ2V0UG9zc2libGVWYWx1ZXMoY29uZGl0aW9ucy5hdChpKS5nZXQoJ2ZpZWxkJykudmFsdWUsIGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCd2YWx1ZScpLnZhbHVlKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZWxlY3RPcHRpb24oJ3ZhbHVlJywgaSwgdmFsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIuZ2V0KCd2YWx1ZScpPy5pbnZhbGlkICYmIChmaWx0ZXIuZ2V0KCd2YWx1ZScpPy5kaXJ0eSB8fCBmaWx0ZXIuZ2V0KCd2YWx1ZScpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBUFAuVkFMVUVfSVNfUkVRVUlSRUQnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ1ZhbHVlIGlzIHJlcXVpcmVkJ319LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWNvbi1jb250YWluZXJcIiBbbWF0VG9vbHRpcF09XCInQVBQLlJFTU9WRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnUmVtb3ZlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDMuOTg3MjZDMTEuNzggMy43NjcyNiA5LjU0NjY3IDMuNjUzOTMgNy4zMiAzLjY1MzkzQzYgMy42NTM5MyA0LjY4IDMuNzIwNiAzLjM2IDMuODUzOTNMMiAzLjk4NzI2XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2NjUgMy4zMTM2Mkw1LjgxMzE3IDIuNDQwMjhDNS45MTk4NCAxLjgwNjk1IDUuOTk5ODQgMS4zMzM2MiA3LjEyNjUgMS4zMzM2Mkg4Ljg3MzE3QzkuOTk5ODQgMS4zMzM2MiAxMC4wODY1IDEuODMzNjIgMTAuMTg2NSAyLjQ0Njk1TDEwLjMzMzIgMy4zMTM2MlwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNTY2NyA2LjA5Mzc1TDEyLjEzMzQgMTIuODA3MUMxMi4wNiAxMy44NTM3IDEyIDE0LjY2NzEgMTAuMTQgMTQuNjY3MUg1Ljg2MDAyQzQuMDAwMDIgMTQuNjY3MSAzLjk0MDAyIDEzLjg1MzcgMy44NjY2OCAxMi44MDcxTDMuNDMzMzUgNi4wOTM3NVwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi44ODY0NyAxMS4wMDA0SDkuMTA2NDdcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMzMzNSA4LjMzMzI1SDkuNjY2ODNcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhZGRJY29uQm9yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZEZpbHRlcigpXCIgW21hdFRvb2x0aXBdPVwiJ0FQUC5BRERfRklMVEVSJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdBZGQgRmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDMuMzMzMjVWMTIuNjY2NlwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjMzMzAxIDhIMTIuNjY2M1wiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snQVBQLkFERF9GSUxURVInIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FkZCBGaWx0ZXInfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eydBUFAuQ09MVU1OUycgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ29sdW1ucyd9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbi1kZXNjcmlwdGlvblwiPnt7J0FQUC5TRUxFQ1RfRklFTERfVE9fRElTUExBWV9JTl9UQUJMRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnU2VsZWN0IGZpZWxkIHRvIGRpc3BsYXkgaW4gdGFibGUnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiY29sdW1uc1wiIGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWNlbGxcIj57eydBUFAuQ09MVU1OX05BTUUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0NvbHVtbiBOYW1lJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9vbC1jZWxsXCI+e3snQVBQLlNPUlRBQkxFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdTb3J0YWJsZSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2wtY2VsbFwiPnt7J0FQUC5GSUxURVJBQkxFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6J0ZpbHRlcmFibGUnfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPnt7J0FQUC5BQ1RJT04nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FjdGlvbid9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbHVtbnMuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgY2xhc3M9XCJjb2x1bW4tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3R2aWV3LWN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCdjb2x1bW5OYW1lJywgaSlcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCdjb2x1bW5OYW1lJywgaSlcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uTWFudWFsSW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FQUC5FTlRFUl9PUl9TRUxFQ1RfQ09MVU1OX05BTUUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0VudGVyIG9yIHNlbGVjdCBjb2x1bW4gbmFtZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgKm5nSWY9XCJpc0NvbHVtbk5hbWVEcm9wZG93bk9wZW5baV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbE5hbWUgb2YgZ2V0Q29sdW1uQ29sdW1ucyhjb2x1bW5zLmF0KGkpLmdldCgnbmFtZScpLnZhbHVlKVwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJzZWxlY3RPcHRpb24oJ2NvbHVtbk5hbWUnLCBpLCBjb2xOYW1lLmxhYmVsKTsgaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuW2ldID0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2xOYW1lLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpZWxkLmdldCgnbmFtZScpPy5pbnZhbGlkICYmIChmaWVsZC5nZXQoJ25hbWUnKT8uZGlydHkgfHwgZmllbGQuZ2V0KCduYW1lJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FQUC5DT0xVTU5fTkFNRV9JU19SRVEnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0NvbHVtbiBuYW1lIGlzIHJlcXVpcmVkJ319LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXIgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInc29ydGFibGUtJyArIGlcIiBmb3JtQ29udHJvbE5hbWU9XCJzb3J0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInc29ydGFibGUtJyArIGlcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXIgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInZmlsdGVyYWJsZS0nICsgaVwiIGZvcm1Db250cm9sTmFtZT1cImZpbHRlcmFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbHRlcmFibGUtJyArIGlcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWNvbi1jb250YWluZXJcIiBbbWF0VG9vbHRpcF09XCInQVBQLlJFTU9WRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnUmVtb3ZlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWljb25cIiAoY2xpY2spPVwicmVtb3ZlQ29sdW1uKGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDMuOTg3MjZDMTEuNzggMy43NjcyNiA5LjU0NjY3IDMuNjUzOTMgNy4zMiAzLjY1MzkzQzYgMy42NTM5MyA0LjY4IDMuNzIwNiAzLjM2IDMuODUzOTNMMiAzLjk4NzI2XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2NjUgMy4zMTM2Mkw1LjgxMzE3IDIuNDQwMjhDNS45MTk4NCAxLjgwNjk1IDUuOTk5ODQgMS4zMzM2MiA3LjEyNjUgMS4zMzM2Mkg4Ljg3MzE3QzkuOTk5ODQgMS4zMzM2MiAxMC4wODY1IDEuODMzNjIgMTAuMTg2NSAyLjQ0Njk1TDEwLjMzMzIgMy4zMTM2MlwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNTY2NyA2LjA5Mzc1TDEyLjEzMzQgMTIuODA3MUMxMi4wNiAxMy44NTM3IDEyIDE0LjY2NzEgMTAuMTQgMTQuNjY3MUg1Ljg2MDAyQzQuMDAwMDIgMTQuNjY3MSAzLjk0MDAyIDEzLjg1MzcgMy44NjY2OCAxMi44MDcxTDMuNDMzMzUgNi4wOTM3NVwiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi44ODY0NyAxMS4wMDA0SDkuMTA2NDdcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMzMzNSA4LjMzMzI1SDkuNjY2ODNcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhZGRJY29uQm9yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCIgW21hdFRvb2x0aXBdPVwiJ0FQUC5BRERfQ09MVU1OJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdBZGQgQ29sdW1uJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDMuMzMzMjVWMTIuNjY2NlwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjMzMzAxIDhIMTIuNjY2M1wiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snQVBQLkFERF9DT0xVTU4nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FkZCBDb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25kaXRpb25zLmxlbmd0aCA9PT0gMCAmJiBjb2x1bW5zLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgIHt7J0FQUC5BVF9MRUFTVF9PTkVfRklMVEVSX09SX09ORV9DT0xVTU5fSVNfUkVRJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICcgQXQgbGVhc3Qgb25lIGZpbHRlciBvciBvbmUgY29sdW1uIGlzIHJlcXVpcmVkJ319LlxuICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzYXZlLWJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWVkaXRpbmdWaWV3LnZhbGlkIHx8IChjb25kaXRpb25zLmxlbmd0aCA9PT0gMCAmJiBjb2x1bW5zLmxlbmd0aCA9PT0gMClcIj57eydBUFAuU0FWRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnU2F2ZSd9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+e3snQVBQLkNBTkNFTCcgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ2FuY2VsJ319PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU0tTM01BWTI1IERlbGV0ZSBMaXN0IFZpZXctLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNEZWxldGVNb2RhbE9wZW5cIiBjbGFzcz1cIm1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8aDI+e3snQVBQLkRFTEVURV9MSVNUX1ZJRVcnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0RlbGV0ZSBMaXN0IFZpZXcnfX08L2gyPlxuICAgICAgICAgICAgPHA+e3snQVBQLkFSRV9ZT1VfU1VSRV9ZT1VfV0FOVF9UT19ERUxFVEUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnfX0gXCJ7eyB2aWV3VG9EZWxldGU/LmZpbHRlck5hbWUgfX1cIj88L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kZWxldGVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlQ29uZmlybWVkKClcIj57eydBUFAuREVMRVRFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdEZWxldGUnfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VEZWxldGVNb2RhbCgpXCI+e3snQVBQLkNBTkNFTCcgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ2FuY2VsJ319PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9saXN0LXZpZXctZmlsdGVyL2xpc3Qtdmlldy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC12aWV3LWZpbHRlci9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQWdDN0QsTUFBTSxPQUFPLHVCQUF1QjtJQWlDZDtJQUF3QjtJQWhDbkMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0Isa0JBQWtCLEdBQXlEO1FBQ2xGLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDMUQsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUMsU0FBUyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1FBQ2xFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1FBQ3RFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBQyxTQUFTLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDaEUsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUMsU0FBUyxFQUFDLDJCQUEyQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUMsU0FBUyxFQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7S0FDckYsQ0FBQyxDQUFFLHlEQUF5RDtJQUVuRCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVqRCxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0IsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBQ25DLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsWUFBWSxHQUFvQixJQUFJLENBQUM7SUFFckMsV0FBVyxDQUFZO0lBRXZCLG9CQUFvQixHQUFjLEVBQUUsQ0FBQztJQUNyQyxzQkFBc0IsR0FBYyxFQUFFLENBQUM7SUFDdkMsbUJBQW1CLEdBQWMsRUFBRSxDQUFDO0lBQ3BDLHdCQUF3QixHQUFjLEVBQUUsQ0FBQztJQUN6QyxnQkFBZ0IsQ0FBUztJQUN6QixxQkFBcUIsQ0FBTTtJQUMzQixxQkFBcUIsQ0FBTTtJQUMzQix1QkFBdUIsQ0FBc0M7SUFFN0QsWUFBb0IsRUFBZSxFQUFTLGVBQW9DO1FBQTVELE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDOUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFBO1FBQzVHLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtZQUM3QyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFFLENBQUE7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLEdBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtZQUM3QyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFFLENBQUE7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFBO1FBQ3RELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtZQUMvQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFFLENBQUE7UUFDbkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ3JELENBQUM7YUFBSyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUM1RyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFjLENBQUM7SUFDekQsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsU0FBUztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxTQUFTLENBQUMsSUFBYyxFQUFFLEtBQWE7UUFDckMsSUFBSSxLQUFLO1lBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUMsQ0FBQztRQUVILElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDaEQsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFHSCxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN6QyxJQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzt3QkFDOUIsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO3dCQUN4QyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQzt3QkFDakMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7cUJBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTTtZQUM3QixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUN4QyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztnQkFDcEMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7YUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN6QyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzVCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtvQkFDM0IsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFBO1lBQ0YsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMxQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUM3QixHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUE7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUMsQ0FBQTtZQUNGLE1BQU0sUUFBUSxHQUFhO2dCQUN6QixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7Z0JBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVO2dCQUN0RCxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztnQkFDOUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVO2dCQUNoQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87YUFDM0IsQ0FBQztZQUVGLDRCQUE0QjtZQUM1QixxQ0FBcUM7WUFDckMsMkRBQTJEO1lBQzNELFFBQVE7WUFDUixJQUFJO1lBRUosbUZBQW1GO1lBQ25GLDRCQUE0QjtZQUM1QixxREFBcUQ7WUFDckQsV0FBVztZQUNYLG1DQUFtQztZQUNuQyxJQUFJO1lBRUosSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsYUFBYSxDQUFDLElBQWMsRUFBRSxLQUFhO1FBQ3pDLElBQUksS0FBSztZQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNsRyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixtQ0FBbUM7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDckYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFDeEUsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxrQkFBa0IsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQzdDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQzdDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUNBLGdFQUFnRTtJQUNoRSxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDOUIsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQ2pFLENBQUM7SUFDSixDQUFDO0lBQ0QsMEVBQTBFO0lBQzFFLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUMvQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNwRCxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDNUMsQ0FBQztJQUNKLENBQUM7SUFDRCxhQUFhLEdBQWEsRUFBRSxDQUFDO0lBRTdCLGVBQWUsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUMxRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsT0FBTyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2pDLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMzQyxDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVILDRFQUE0RTtJQUMxRSxZQUFZLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ3JELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdDLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUNELG1CQUFtQixDQUFDLFNBQWlCO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhLENBQUMsVUFBa0IsRUFBRSxLQUFhO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUNELGlGQUFpRjtJQUVqRixlQUFlLENBQUMsS0FBVTtRQUN4QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO3dHQTFZVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qiw0V0FKdkIsQ0FBQyxtQkFBbUIsQ0FBQywrQ0NoQ2xDLGl2dkJBdVJNLHV2TUR4UE0sWUFBWSwrUEFBRSxXQUFXLDJzQ0FBRSxtQkFBbUIseWhCQUFFLG1CQUFtQix1REFBQyxnQkFBZ0I7OzRGQUtuRix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUMsZ0JBQWdCLENBQUMsYUFDcEYsQ0FBQyxtQkFBbUIsQ0FBQztrSEFLdkIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBc1hQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDdXN0b21UcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZS9jdXN0b20tdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbnRlcmZhY2UgTGlzdFZpZXcge1xuICBmaWx0ZXJOYW1lOiBzdHJpbmc7XG4gIGxhYmVsUGF0aDogYW55O1xuICBvcmRlcjogbnVtYmVyO1xuICBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIGNvbmRpdGlvbnM6IExpc3RWaWV3RmlsdGVyW107XG4gIGNvbHVtbnM6IExpc3RWaWV3Q29sdW1uW107XG4gIHNob3dBY3Rpb25zPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExpc3RWaWV3RmlsdGVyIHtcbiAgZmllbGQ6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIExpc3RWaWV3Q29sdW1uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3J0YWJsZTogYm9vbGVhbjtcbiAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpc3Qtdmlldy1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ3VzdG9tVHJhbnNsYXRlUGlwZSxNYXRUb29sdGlwTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbQ3VzdG9tVHJhbnNsYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12aWV3LWZpbHRlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdFZpZXdGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsaXN0Vmlld3M6IExpc3RWaWV3W10gPSBbXTtcbiAgQElucHV0KCkgdGFibGVGaWx0ZXJBcnJheTogYW55ID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGVkVmlldzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBhdmFpbGFibGVPcGVyYXRvcnM6IHsgbGFiZWw6IHN0cmluZyxsYWJlbFBhdGg6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10gPSBbXG4gICAgeyBsYWJlbDogJ0VxdWFscyAoPSknLGxhYmVsUGF0aDonQVBQLkVRVUFMUycsIHZhbHVlOiAnPScgfSxcbiAgICB7IGxhYmVsOiAnTm90IEVxdWFsICghPSknLGxhYmVsUGF0aDonQVBQLk5PVF9FUVVBTCcsIHZhbHVlOiAnIT0nIH0sXG4gICAgeyBsYWJlbDogJ0dyZWF0ZXIgVGhhbiAoPiknLGxhYmVsUGF0aDonQVBQLkdSRUFURVJfVEhBTicsIHZhbHVlOiAnPicgfSxcbiAgICB7IGxhYmVsOiAnTGVzcyBUaGFuICg8KScsbGFiZWxQYXRoOidBUFAuTEVTU19USEFOJywgdmFsdWU6ICc8JyB9LFxuICAgIHsgbGFiZWw6ICdHcmVhdGVyIFRoYW4gb3IgRXF1YWwgKD49KScsbGFiZWxQYXRoOidBUFAuR1JFQVRFUl9USEFOX09SX0VRVUFMJywgdmFsdWU6ICc+PScgfSxcbiAgICB7IGxhYmVsOiAnTGVzcyBUaGFuIG9yIEVxdWFsICg8PSknLGxhYmVsUGF0aDonQVBQLkxFU1NfVEhBTl9PUl9FUVVBTCcsIHZhbHVlOiAnPD0nIH1cbiAgXTsgIC8vICdjb250YWlucycsICdub3QgY29udGFpbnMnLCAnc3RhcnRzIHdpdGgnLCAnZW5kcyB3aXRoJ1xuXG4gIEBPdXRwdXQoKSBsaXN0Vmlld0VtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc01vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0RlbGV0ZU1vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0FkZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICB2aWV3VG9EZWxldGU6IExpc3RWaWV3IHwgbnVsbCA9IG51bGw7XG5cbiAgZWRpdGluZ1ZpZXc6IEZvcm1Hcm91cDtcblxuICBpc0NvbHVtbkRyb3Bkb3duT3BlbjogYm9vbGVhbltdID0gW107XG4gIGlzT3BlcmF0b3JEcm9wZG93bk9wZW46IGJvb2xlYW5bXSA9IFtdO1xuICBpc1ZhbHVlRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcbiAgaXNDb2x1bW5OYW1lRHJvcGRvd25PcGVuOiBib29sZWFuW10gPSBbXTtcbiAgc2VsZWN0ZWRWaWV3UGF0aDogc3RyaW5nO1xuICB0YWJsZUZpbHRlckFycmF5VHJhbnM6IGFueTtcbiAgZGlzcGxheWVkQ29sdW1uc1RyYW5zOiBhbnk7XG4gIGF2YWlsYWJsZU9wZXJhdG9yc1RyYW5zOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IH1bXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixwcml2YXRlIGN1c3RvbVRyYW5zbGF0ZTogQ3VzdG9tVHJhbnNsYXRlUGlwZSkge1xuICAgIHRoaXMuZWRpdGluZ1ZpZXcgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZpbHRlck5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvcmRlcjogWzAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKV1dLFxuICAgICAgaXNEZWZhdWx0OiBbZmFsc2VdLFxuICAgICAgY29uZGl0aW9uczogdGhpcy5mYi5hcnJheShbXSksXG4gICAgICBjb2x1bW5zOiB0aGlzLmZiLmFycmF5KFtdKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5saXN0Vmlld3NbMF0uZmlsdGVyTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3UGF0aCA9IHRoaXMubGlzdFZpZXdzWzBdLmxhYmVsUGF0aFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlld1BhdGggPSB0aGlzLnNlbGVjdGVkVmlldyA9PT0gJ0FsbCBEYXRhJyA/IHRoaXMubGlzdFZpZXdzWzBdLmxhYmVsUGF0aCA6IHRoaXMuc2VsZWN0ZWRWaWV3XG4gICAgfVxuICAgIHRoaXMudGFibGVGaWx0ZXJBcnJheVRyYW5zID10aGlzLnRhYmxlRmlsdGVyQXJyYXlcbiAgICB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucy5mb3JFYWNoKChlbGU6YW55KSA9PiB7XG4gICAgICBlbGUubGFiZWwgPSB0aGlzLmN1c3RvbVRyYW5zbGF0ZS50cmFuc2Zvcm0oZWxlLmxhYmVsUGF0aCB8fCBlbGUubGFiZWwsZWxlLmxhYmVsIClcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucyA9dGhpcy5kaXNwbGF5ZWRDb2x1bW5zXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMuZm9yRWFjaCgoZWxlOmFueSkgPT4ge1xuICAgICAgZWxlLmxhYmVsID0gdGhpcy5jdXN0b21UcmFuc2xhdGUudHJhbnNmb3JtKGVsZS5sYWJlbFBhdGggfHwgZWxlLmxhYmVsLGVsZS5sYWJlbCApXG4gICAgfSk7XG4gICAgdGhpcy5hdmFpbGFibGVPcGVyYXRvcnNUcmFucyA9IHRoaXMuYXZhaWxhYmxlT3BlcmF0b3JzXG4gICAgdGhpcy5hdmFpbGFibGVPcGVyYXRvcnNUcmFucy5mb3JFYWNoKChlbGU6YW55KSA9PiB7XG4gICAgICBlbGUubGFiZWwgPSB0aGlzLmN1c3RvbVRyYW5zbGF0ZS50cmFuc2Zvcm0oZWxlLmxhYmVsUGF0aCB8fCBlbGUubGFiZWwsZWxlLmxhYmVsIClcbiAgICB9KTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLmxpc3RWaWV3cz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmxpc3RWaWV3c1swXS5maWx0ZXJOYW1lO1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gdGhpcy5saXN0Vmlld3NbMF0ubGFiZWxQYXRoXG4gICAgfWVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gdGhpcy5zZWxlY3RlZFZpZXcgPT09ICdBbGwgRGF0YScgPyB0aGlzLmxpc3RWaWV3c1swXS5sYWJlbFBhdGggOiB0aGlzLnNlbGVjdGVkVmlld1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb25kaXRpb25zKCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1ZpZXcuZ2V0KCdjb25kaXRpb25zJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFJldHVybnMgdGhlIEZvcm1BcnJheSBvZiBjb2x1bW5zIGZyb20gdGhlIGVkaXRpbmcgZm9ybVxuICBnZXQgY29sdW1ucygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdWaWV3LmdldCgnY29sdW1ucycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBBZGRzIGEgbmV3IGZpbHRlciBjb25kaXRpb24gdG8gdGhlIGZvcm1cbiAgYWRkRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZmllbGQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvcGVyYXRvcjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHZhbHVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSkpO1xuICAgIHRoaXMuaXNDb2x1bW5Ecm9wZG93bk9wZW4ucHVzaChmYWxzZSk7XG4gICAgdGhpcy5pc09wZXJhdG9yRHJvcGRvd25PcGVuLnB1c2goZmFsc2UpO1xuICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZW1vdmVzIGEgZmlsdGVyIGNvbmRpdGlvbiBieSBpbmRleFxuICByZW1vdmVGaWx0ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9ucy5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgYWRkQ29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHNvcnRhYmxlOiBbZmFsc2VdLFxuICAgICAgZmlsdGVyYWJsZTogW2ZhbHNlXVxuICAgIH0pKTtcbiAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3Blbi5wdXNoKGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3Blbi5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7XCJhY3Rpb25cIjogJ2ZpbHRlckdldCd9KTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gIXRoaXMuaXNEcm9wZG93bk9wZW47XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgSGFuZGxlcyBzZWxlY3RpbmcgYSBsaXN0IHZpZXcgZnJvbSB0aGUgZHJvcGRvd25cbiAgc2VsZWN0TGlzdFZpZXcodmlldzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB2aWV3LmZpbHRlck5hbWU7XG4gICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gdmlldy5sYWJlbFBhdGggfHwgdmlldy5maWx0ZXJOYW1lO1xuICAgIHRoaXMubGlzdFZpZXdFbWl0LmVtaXQoeydhY3Rpb24nOidzZWxlY3QnLCAnZGF0YSc6dmlld30pO1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBtb2RhbCB0byBlZGl0IGFuIGV4aXN0aW5nIGxpc3Qgdmlld1xuICBzdGFydEVkaXQodmlldzogTGlzdFZpZXcsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5pc0FkZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuXG4gICAgdGhpcy5lZGl0aW5nVmlldy5yZXNldCgpO1xuICAgIHdoaWxlICh0aGlzLmNvbmRpdGlvbnMubGVuZ3RoKSB0aGlzLmNvbmRpdGlvbnMucmVtb3ZlQXQoMCk7XG4gICAgd2hpbGUgKHRoaXMuY29sdW1ucy5sZW5ndGgpIHRoaXMuY29sdW1ucy5yZW1vdmVBdCgwKTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucGF0Y2hWYWx1ZSh7XG4gICAgICBmaWx0ZXJOYW1lOiB2aWV3LmZpbHRlck5hbWUsXG4gICAgICBvcmRlcjogdmlldy5vcmRlcixcbiAgICAgIGlzRGVmYXVsdDogdmlldy5pc0RlZmF1bHRcbiAgICB9KTtcblxuICAgIHZpZXc/LmNvbmRpdGlvbnM/LmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBmaWVsZDogW2ZpbHRlci5maWVsZCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIG9wZXJhdG9yOiBbZmlsdGVyLm9wZXJhdG9yLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgdmFsdWU6IFtmaWx0ZXIudmFsdWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBcbiAgICB2aWV3Py5jb2x1bW5zPy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgaWYoY29sLm5hbWUgPT0gZmllbGQuZmllbGROYW1lKSB7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBuYW1lOiBbZmllbGQubGFiZWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgc29ydGFibGU6IFtjb2wuc29ydGFibGUgfHwgZmFsc2VdLFxuICAgICAgICAgICAgZmlsdGVyYWJsZTogW2NvbC5maWx0ZXJhYmxlIHx8IGZhbHNlXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBPcGVucyBtb2RhbCB0byBjcmVhdGUgYSBuZXcgbGlzdCB2aWV3XG4gIHN0YXJ0QWRkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBZGRpbmcgPSB0cnVlO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuXG4gICAgdGhpcy5lZGl0aW5nVmlldy5yZXNldCgpO1xuICAgIHdoaWxlICh0aGlzLmNvbmRpdGlvbnMubGVuZ3RoKSB0aGlzLmNvbmRpdGlvbnMucmVtb3ZlQXQoMCk7XG4gICAgd2hpbGUgKHRoaXMuY29sdW1ucy5sZW5ndGgpIHRoaXMuY29sdW1ucy5yZW1vdmVBdCgwKTtcblxuICAgIHRoaXMuZWRpdGluZ1ZpZXcucGF0Y2hWYWx1ZSh7XG4gICAgICBvcmRlcjogdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICAvLyBTS1MyNk1BWTI1IFNlY29uZCBsb29wOiBmcm9tIGRpc3BsYXllZENvbHVtbnNUcmFucywgc2tpcCBkdXBsaWNhdGVzXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zVHJhbnMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgbmFtZTogW2ZpZWxkLmxhYmVsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgc29ydGFibGU6IFtmaWVsZC5oeXBlckxpbmsgfHwgZmFsc2VdLFxuICAgICAgICBmaWx0ZXJhYmxlOiBbZmllbGQuZmlsdGVyIHx8IGZhbHNlXVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IFNhdmVzIHRoZSBjdXJyZW50bHkgZWRpdGVkIG9yIGFkZGVkIGxpc3Qgdmlld1xuICBzYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRpbmdWaWV3LnZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmVkaXRpbmdWaWV3LnZhbHVlO1xuICAgICAgZm9ybVZhbHVlPy5jb2x1bW5zPy5mb3JFYWNoKChjb2wpPT57XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZvckVhY2goKGRDb2wpID0+IHtcbiAgICAgICAgICBpZiAoZENvbC5sYWJlbCA9PT0gY29sLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbC5uYW1lID0gZENvbC5maWVsZE5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgZm9ybVZhbHVlPy5jb25kaXRpb25zPy5mb3JFYWNoKChjb2wpPT57XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZvckVhY2goKGRDb2wpID0+IHtcbiAgICAgICAgICBpZiAoZENvbC5sYWJlbCA9PT0gY29sLmZpZWxkKSB7XG4gICAgICAgICAgICBjb2wuZmllbGQgPSBkQ29sLmZpZWxkTmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBjb25zdCBsaXN0VmlldzogTGlzdFZpZXcgPSB7XG4gICAgICAgIGZpbHRlck5hbWU6IGZvcm1WYWx1ZS5maWx0ZXJOYW1lLFxuICAgICAgICBsYWJlbFBhdGg6IGZvcm1WYWx1ZS5sYWJlbFBhdGggfHwgZm9ybVZhbHVlLmZpbHRlck5hbWUsXG4gICAgICAgIG9yZGVyOiBmb3JtVmFsdWUub3JkZXIsXG4gICAgICAgIGlzRGVmYXVsdDogZm9ybVZhbHVlLmlzRGVmYXVsdCxcbiAgICAgICAgY29uZGl0aW9uczogZm9ybVZhbHVlLmNvbmRpdGlvbnMsXG4gICAgICAgIGNvbHVtbnM6IGZvcm1WYWx1ZS5jb2x1bW5zXG4gICAgICB9O1xuXG4gICAgICAvLyBpZiAobGlzdFZpZXcuaXNEZWZhdWx0KSB7XG4gICAgICAvLyAgIHRoaXMubGlzdFZpZXdzLmZvckVhY2godmlldyA9PiB7XG4gICAgICAvLyAgICAgaWYgKHZpZXcuaWQgIT09IGxpc3RWaWV3LmlkKSB2aWV3LmlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgLy8gICB9KTtcbiAgICAgIC8vIH1cblxuICAgICAgLy8gY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMubGlzdFZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IGxpc3RWaWV3LmlkKTtcbiAgICAgIC8vIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgIC8vICAgdGhpcy5saXN0Vmlld3NbZXhpc3RpbmdJbmRleF0gPSB7IC4uLmxpc3RWaWV3IH07XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgLy8gICB0aGlzLmxpc3RWaWV3cy5wdXNoKGxpc3RWaWV3KTtcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5saXN0Vmlld3Muc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBsaXN0Vmlldy5maWx0ZXJOYW1lO1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gbGlzdFZpZXcubGFiZWxQYXRoIHx8IGxpc3RWaWV3LmZpbHRlck5hbWU7XG4gICAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzonc2F2ZScsIFwiZGF0YVwiOiBsaXN0Vmlld30pO1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgU2hvd3MgYWN0aW9uIGJ1dHRvbnMgZm9yIGEgbGlzdCB2aWV3IG9uIGhvdmVyXG4gIHNob3dBY3Rpb25zKHZpZXc6IExpc3RWaWV3KTogdm9pZCB7XG4gICAgdmlldy5zaG93QWN0aW9ucyA9IHRydWU7XG4gIH1cblxuICAvLyBTS1MzTUFZMjUgSGlkZXMgYWN0aW9uIGJ1dHRvbnMgZm9yIGFsbCBsaXN0IHZpZXdzXG4gIGhpZGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdFZpZXdzLmZvckVhY2godmlldyA9PiB2aWV3LnNob3dBY3Rpb25zID0gZmFsc2UpO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IE9wZW5zIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBkZWxldGUgYSBsaXN0IHZpZXdcbiAgY29uZmlybURlbGV0ZSh2aWV3OiBMaXN0VmlldywgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy52aWV3VG9EZWxldGUgPSB2aWV3O1xuICAgIHRoaXMuaXNEZWxldGVNb2RhbE9wZW4gPSB0cnVlO1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBDbG9zZXMgdGhlIGRlbGV0ZSBjb25maXJtYXRpb24gbW9kYWxcbiAgY2xvc2VEZWxldGVNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRGVsZXRlTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy52aWV3VG9EZWxldGUgPSBudWxsO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IERlbGV0ZXMgdGhlIHNlbGVjdGVkIGxpc3QgdmlldyBhZnRlciBjb25maXJtYXRpb25cbiAgZGVsZXRlQ29uZmlybWVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdUb0RlbGV0ZSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3RWaWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmZpbHRlck5hbWUgPT09IHRoaXMudmlld1RvRGVsZXRlPy5maWx0ZXJOYW1lKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIC8vIHRoaXMubGlzdFZpZXdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmlldyA9PT0gdGhpcy52aWV3VG9EZWxldGUuZmlsdGVyTmFtZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RWaWV3c1swXS5maWx0ZXJOYW1lIDogJyc7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXdQYXRoID0gdGhpcy5saXN0Vmlld3M/Lmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RWaWV3c1swXS5sYWJlbFBhdGggOiAnJyBcbiAgICAgICAgICB0aGlzLmxpc3RWaWV3RW1pdC5lbWl0KHsnYWN0aW9uJzonc2VsZWN0JywgJ2RhdGEnOnRoaXMuc2VsZWN0ZWRWaWV3fSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0Vmlld0VtaXQuZW1pdCh7J2FjdGlvbic6ICdkZWxldGUnLCBcImRhdGFcIjogdGhpcy52aWV3VG9EZWxldGV9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xvc2VEZWxldGVNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBSZXR1cm5zIGZpbHRlcmVkIGxpc3Qgb2YgY29sdW1ucyBiYXNlZCBvbiBpbnB1dCBzZWFyY2ggdGVybVxuICBnZXRGaWx0ZXJlZENvbHVtbnModGVybTogc3RyaW5nKTogYW55W10ge1xuICAgIGlmICghdGVybSkgcmV0dXJuIHRoaXMudGFibGVGaWx0ZXJBcnJheVRyYW5zO1xuICAgIHRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMudGFibGVGaWx0ZXJBcnJheVRyYW5zLmZpbHRlcihjb2wgPT5cbiAgICAgIGNvbC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbHVtbkNvbHVtbnModGVybTogc3RyaW5nKTogYW55W10ge1xuICAgIGlmICghdGVybSkgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zO1xuICAgIHRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkQ29sdW1uc1RyYW5zLmZpbHRlcihjb2wgPT5cbiAgICAgIGNvbC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgKTtcbiAgfSAgXG4gICAvLyBTS1MzTUFZMjUgUmV0dXJucyBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEgc2VsZWN0ZWQgZmllbGQvY29sdW1uXG4gICBnZXRQb3NzaWJsZVZhbHVlcyhmaWVsZDogc3RyaW5nLCB0ZXJtOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnRhYmxlRmlsdGVyQXJyYXlUcmFucy5maW5kKGNvbCA9PiBjb2wubGFiZWwgPT09IGZpZWxkKTtcbiAgICBpZiAoIW1hdGNoIHx8ICFBcnJheS5pc0FycmF5KG1hdGNoLnZhbHVlKSkgcmV0dXJuIFtdO1xuICAgIGlmICghdGVybSkgcmV0dXJuIG1hdGNoLnZhbHVlO1xuICAgIGNvbnN0IGxvd2VyVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbWF0Y2gudmFsdWUuZmlsdGVyKHZhbCA9PlxuICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJUZXJtKVxuICAgICk7XG4gIH0gIFxuICAvLyBTS1MzTUFZMjUgUmV0dXJucyBmaWx0ZXJlZCBsaXN0IG9mIG9wZXJhdG9ycyBiYXNlZCBvbiBpbnB1dCBzZWFyY2ggdGVybVxuICBnZXRGaWx0ZXJlZE9wZXJhdG9ycyh0ZXJtOiBzdHJpbmcpOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdIHtcbiAgICBpZiAoIXRlcm0pIHJldHVybiB0aGlzLmF2YWlsYWJsZU9wZXJhdG9yc1RyYW5zO1xuICAgIHRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlT3BlcmF0b3JzVHJhbnMuZmlsdGVyKG9wZXJhdG9yID0+XG4gICAgICBvcGVyYXRvci5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgKTtcbiAgfSAgXG4gIG9wZXJhdG9ySW5wdXQ6IHN0cmluZ1tdID0gW107XG5cbiAgb25PcGVyYXRvcklucHV0KHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZXJhdG9ySW5wdXRbaW5kZXhdID0gdmFsdWU7XG4gIH1cbiAgXG4gIGdldE9wZXJhdG9yTGFiZWwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmF2YWlsYWJsZU9wZXJhdG9yc1RyYW5zLmZpbmQob3AgPT4gb3AudmFsdWUgPT09IHZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQgPyBmb3VuZC5sYWJlbCA6IHZhbHVlO1xuICB9XG5cbiAgLy8gU0tTM01BWTI1IE9wZW5zIGEgZHJvcGRvd24gb24gZm9jdXMgZm9yIHRoZSBnaXZlbiBpbnB1dCB0eXBlIGFuZCBpbmRleFxuICBvbkZvY3VzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZmllbGQnKSB7XG4gICAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuW2luZGV4XSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3BlcmF0b3InKSB7XG4gICAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW5baW5kZXhdID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZScpIHtcbiAgICAgIHRoaXMuaXNWYWx1ZURyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHVtbk5hbWUnKSB7XG4gICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNLUzNNQVkyNSBEZWxheXMgY2xvc2luZyBkcm9wZG93biB0byBhbGxvdyBzZWxlY3Rpb24gb24gYmx1clxuICBvbkJsdXIodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2ZpZWxkJykge1xuICAgICAgICB0aGlzLmlzQ29sdW1uRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3BlcmF0b3InKSB7XG4gICAgICAgIHRoaXMuaXNPcGVyYXRvckRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgICB0aGlzLmlzVmFsdWVEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2x1bW5OYW1lJykge1xuICAgICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LCAyMDApO1xuICB9XG5cbi8vIFNLUzNNQVkyNSBTZXRzIHNlbGVjdGVkIHZhbHVlIGluIHRoZSBmb3JtIGNvbnRyb2wgYW5kIGNsb3NlcyB0aGUgZHJvcGRvd25cbiAgc2VsZWN0T3B0aW9uKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZmllbGQnKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMuYXQoaW5kZXgpLmdldCgnZmllbGQnKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc0NvbHVtbkRyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcGVyYXRvcicpIHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucy5hdChpbmRleCkuZ2V0KCdvcGVyYXRvcicpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzT3BlcmF0b3JEcm9wZG93bk9wZW5baW5kZXhdID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWUnKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvbnMuYXQoaW5kZXgpLmdldCgndmFsdWUnKT8uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5pc1ZhbHVlRHJvcGRvd25PcGVuW2luZGV4XSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHVtbk5hbWUnKSB7XG4gICAgICB0aGlzLmNvbHVtbnMuYXQoaW5kZXgpLmdldCgnbmFtZScpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpbmRleF0gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZ2V0TGFiZWxCeUZpZWxkTmFtZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucy5maW5kKGNvbCA9PiBjb2wuZmllbGROYW1lID09PSBmaWVsZE5hbWUpO1xuICAgIHJldHVybiBtYXRjaD8ubGFiZWwgPyBtYXRjaC5sYWJlbCA6IGZpZWxkTmFtZTtcbiAgfVxuXG4gIG9uTWFudWFsSW5wdXQoaW5wdXRWYWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLmRpc3BsYXllZENvbHVtbnNUcmFucy5maW5kKGNvbCA9PiBjb2wubGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHRoaXMuY29sdW1ucy5hdChpbmRleCkuZ2V0KCduYW1lJykuc2V0VmFsdWUobWF0Y2gubGFiZWwpO1xuICAgIH1cbiAgfSAgICBcbiAgLy8gU0tTM01BWTI1IExpc3RlbnMgdG8gZG9jdW1lbnQgY2xpY2sgYW5kIGNsb3NlcyB0aGUgZHJvcGRvd24gaWYgY2xpY2tlZCBvdXRzaWRlXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmxpc3Qtdmlldy1maWx0ZXInKSkge1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJsaXN0LXZpZXctZmlsdGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWxhYmVsXCI+e3snQVBQLkRBVEFfUkVMQVRFRF9UTycgfCBjdXN0b21UcmFuc2xhdGUgOiAnRGF0YSBSZWxhdGVkIHRvJ319PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbHRlci1pY29uXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHJ4PVwiNVwiIGZpbGw9XCIjRjFGMUYxXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNTEyODggNC41SDEyLjE4NzlDMTIuNzQyOSA0LjUgMTMuMjAwNCA0Ljk1NzUgMTMuMjAwNCA1LjUxMjVWNi42MjI0OUMxMy4yMDA0IDcuMDI3NDkgMTIuOTQ1NCA3LjUzIDEyLjY5NzkgNy43ODVMMTAuNTIyOSA5LjcwNUMxMC4yMjI5IDkuOTYgMTAuMDIwNCAxMC40NjI1IDEwLjAyMDQgMTAuODY3NVYxMy4wNDI1QzEwLjAyMDQgMTMuMzQyNSA5LjgxNzkgMTMuNzQ3NSA5LjU2MjkgMTMuOTA1TDguODU3ODkgMTQuMzYyNUM4LjE5Nzg5IDE0Ljc2NzUgNy4yOTAzNyAxNC4zMSA3LjI5MDM3IDEzLjVWMTAuODIyNUM3LjI5MDM3IDEwLjQ3IDcuMDg3ODkgMTAuMDEyNSA2Ljg4NTM5IDkuNzU3NTFMNC45NjUzOSA3LjczMjVDNC43MTAzOSA3LjQ3NzUgNC41MDc5IDcuMDI3NDkgNC41MDc5IDYuNzE5OTlWNS41NTc1QzQuNTAwNCA0Ljk1NzUgNC45NTc4OCA0LjUgNS41MTI4OCA0LjVaXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1taXRlcmxpbWl0PVwiMTBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC41IDExLjk5OTlWMTQuMjQ5OUM0LjUgMTcuOTk5OSA2IDE5LjQ5OTkgOS43NSAxOS40OTk5SDE0LjI1QzE4IDE5LjQ5OTkgMTkuNSAxNy45OTk5IDE5LjUgMTQuMjQ5OVY5Ljc0OTk0QzE5LjUgNy40MDk5NCAxOC45MTUgNS45Mzk5MyAxNy41NTc1IDUuMTc0OTNDMTcuMTc1IDQuOTU3NDMgMTYuNDEgNC43OTI0MyAxNS43MTI1IDQuNjc5OTNcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjc1IDEyLjc1SDE2LjVcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjI1IDE1Ljc1SDE2LjVcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1vcHRpb25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRWaWV3ID8gKHNlbGVjdGVkVmlld1BhdGggfHwgc2VsZWN0ZWRWaWV3IHwgY3VzdG9tVHJhbnNsYXRlIDogc2VsZWN0ZWRWaWV3KSAgOiAoJ0FQUC5TRUxFQ1RfQV9WSUVXJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdTZWxlY3QgYSB2aWV3JykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGV2cm9uLWljb25cIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5Ljk5OTkgMjUuNjY2N0MyMy42ODE4IDI1LjY2NjcgMjYuNjY2NiAyMi42ODE5IDI2LjY2NjYgMTlDMjYuNjY2NiAxNS4zMTgxIDIzLjY4MTggMTIuMzMzNCAxOS45OTk5IDEyLjMzMzRDMTYuMzE4IDEyLjMzMzQgMTMuMzMzMyAxNS4zMTgxIDEzLjMzMzMgMTlDMTMuMzMzMyAyMi42ODE5IDE2LjMxOCAyNS42NjY3IDE5Ljk5OTkgMjUuNjY2N1pcIiBmaWxsPVwiIzI5MkQzMlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjQ2NyAxOC4xNkwyMC4wMDAxIDIwLjUwNjdMMjIuMzUzNCAxOC4xNlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gU0tTM01BWTI1IGxpc3QgdmlldyBEcm9wIGRvd24tLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCIgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdmlldyBvZiBsaXN0Vmlld3NcIiBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRWaWV3ID09PSB2aWV3LmZpbHRlck5hbWVcIiAobW91c2VlbnRlcik9XCJzaG93QWN0aW9ucyh2aWV3KVwiIChtb3VzZWxlYXZlKT1cImhpZGVBY3Rpb25zKClcIiAoY2xpY2spPVwic2VsZWN0TGlzdFZpZXcodmlldylcIiBjbGFzcz1cImxpc3Qtdmlldy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlldy1uYW1lXCI+e3sgdmlldy5sYWJlbFBhdGggfHwgdmlldy5maWx0ZXJOYW1lIHwgY3VzdG9tVHJhbnNsYXRlIDogdmlldy5maWx0ZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlldy5zaG93QWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RWRpdCh2aWV3LCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjMyOTIzIDMuOTg3MjZMMTIuMDEyNiA2LjY3MDU5TTkuMzI5MjMgMy45ODcyNkwyLjUwMDA4IDEwLjgxNjRWMTMuNDk5N0g1LjE4MzQyTDEyLjAxMjYgNi42NzA1OU05LjMyOTIzIDMuOTg3MjZMMTIuMDEyNiAxLjMwMzkyTDE0LjY5NTkgMy45ODcyNkwxMi4wMTI2IDYuNjcwNTlcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJjb25maXJtRGVsZXRlKHZpZXcsICRldmVudClcIiAqbmdJZj1cImxpc3RWaWV3cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAzLjk4NzI2QzExLjc4IDMuNzY3MjYgOS41NDY2NyAzLjY1MzkzIDcuMzIgMy42NTM5M0M2IDMuNjUzOTMgNC42OCAzLjcyMDYgMy4zNiAzLjg1MzkzTDIgMy45ODcyNlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2NjUgMy4zMTM2Mkw1LjgxMzE3IDIuNDQwMjhDNS45MTk4NCAxLjgwNjk1IDUuOTk5ODQgMS4zMzM2MiA3LjEyNjUgMS4zMzM2Mkg4Ljg3MzE3QzkuOTk5ODQgMS4zMzM2MiAxMC4wODY1IDEuODMzNjIgMTAuMTg2NSAyLjQ0Njk1TDEwLjMzMzIgMy4zMTM2MlwiIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuODg2NDcgMTEuMDAwNEg5LjEwNjQ3XCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMzMzNSA4LjMzMzI1SDkuNjY2ODNcIiBzdHJva2U9XCIjMDAwMDAwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWZpbHRlclwiIChjbGljayk9XCJzdGFydEFkZCgpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDMuMzMzMjVWMTIuNjY2NlwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjMzMzAxIDhIMTIuNjY2M1wiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydBUFAuTkVXX0xJU1RfVklFVycgfCBjdXN0b21UcmFuc2xhdGUgOiAnTmV3IExpc3QgVmlldyd9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICAgPCEtLSBTS1MzTUFZMjUgQWRkIE5ldyBMaXN0IFZpZXctLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cIm1vZGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyLWRpdlwiPlxuICAgICAgICAgICAgICAgIHt7IChpc0FkZGluZyA/ICdBUFAuQUREX05FV19MSVNUX1ZJRVcnIDogJ0FQUC5FRElUX0xJU1RfVklFVycpICB8IGN1c3RvbVRyYW5zbGF0ZSA6IChpc0FkZGluZyA/ICdBZGQgTmV3IExpc3QgVmlldycgOiAnRWRpdCBMaXN0IFZpZXcnKSB9fSBcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZWRpdGluZ1ZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eydBUFAuTkFNRScgfCBjdXN0b21UcmFuc2xhdGUgOidOYW1lJ319OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZmlsdGVyTmFtZVwiIFtwbGFjZWhvbGRlcl09XCInQVBQLkVOVEVSX0xJU1RfVklFV19OQU1FJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdFbnRlciBsaXN0IHZpZXcgbmFtZSdcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0aW5nVmlldy5nZXQoJ2ZpbHRlck5hbWUnKT8uaW52YWxpZCAmJiAoZWRpdGluZ1ZpZXcuZ2V0KCdmaWx0ZXJOYW1lJyk/LmRpcnR5IHx8IGVkaXRpbmdWaWV3LmdldCgnZmlsdGVyTmFtZScpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBUFAuTkFNRV9JU19SRVEnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ05hbWUgaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3snQVBQLk9SREVSJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdPcmRlcid9fTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclwiIFtwbGFjZWhvbGRlcl09XCIgJ0FQUC5FTlRFUl9ESVNQTEFZX09SREVSJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdFbnRlciBkaXNwbGF5IG9yZGVyJ1wiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRpbmdWaWV3LmdldCgnb3JkZXInKT8uaW52YWxpZCAmJiAoZWRpdGluZ1ZpZXcuZ2V0KCdvcmRlcicpPy5kaXJ0eSB8fCBlZGl0aW5nVmlldy5nZXQoJ29yZGVyJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQVBQLk9SREVSX0lTX1JFUV9BTkRfQkVfQV9OVU0nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ09yZGVyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgbnVtYmVyJ319LlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J0FQUC5ERUZBVUxUX1ZJRVcnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0RlZmF1bHQgVmlldyd9fTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS13cmFwcGVyIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cImlzRGVmYXVsdFwiIGlkPVwiaXNEZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlzRGVmYXVsdFwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7J0FQUC5GSUxURVJTJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdGaWx0ZXJzJ319PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3snQVBQLkRFRklORV9DT05ESVRJT05TX0ZPUl9GSUxURVJFRF9MSVNUX1ZJRVcnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0RlZmluZSBjb25kaXRpb25zIGZvciBmaWx0ZXJlZCBsaXN0IHZpZXcnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiY29uZGl0aW9uc1wiIGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2VsbFwiPnt7J0FQUC5DT0xVTU4nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0NvbHVtbid9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdG9yLWNlbGxcIj57eydBUFAuT1BFUkFUT1InIHwgY3VzdG9tVHJhbnNsYXRlIDogJ09wZXJhdG9yJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtY2VsbFwiPnt7J0FQUC5WQUxVRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnVmFsdWUnfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY2VsbFwiPnt7J0FQUC5BQ1RJT04nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FjdGlvbid9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBjb25kaXRpb25zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiIGNsYXNzPVwiZmlsdGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3R2aWV3LWN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpZWxkXCIgW3ZhbHVlXT1cImdldExhYmVsQnlGaWVsZE5hbWUoY29uZGl0aW9ucy5hdChpKS5nZXQoJ2ZpZWxkJykudmFsdWUpXCIgKGZvY3VzKT1cIm9uRm9jdXMoJ2ZpZWxkJywgaSlcIiAoYmx1cik9XCJvbkJsdXIoJ2ZpZWxkJywgaSlcIiBbcGxhY2Vob2xkZXJdPVwiJ0FQUC5FTlRFUl9PUl9TRUxFQ1RfQ09MVU1OJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdFbnRlciBvciBzZWxlY3QgY29sdW1uJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiICpuZ0lmPVwiaXNDb2x1bW5Ecm9wZG93bk9wZW5baV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGdldEZpbHRlcmVkQ29sdW1ucyhjb25kaXRpb25zLmF0KGkpLmdldCgnZmllbGQnKS52YWx1ZSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0T3B0aW9uKCdmaWVsZCcsIGksIGZpZWxkLmxhYmVsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci5nZXQoJ2ZpZWxkJyk/LmludmFsaWQgJiYgKGZpbHRlci5nZXQoJ2ZpZWxkJyk/LmRpcnR5IHx8IGZpbHRlci5nZXQoJ2ZpZWxkJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FQUC5DT0xVTU5fSVNfUkVRJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdDb2x1bW4gaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdG9yLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdHZpZXctY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0T3BlcmF0b3JMYWJlbChjb25kaXRpb25zLmF0KGkpLmdldCgnb3BlcmF0b3InKS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbk9wZXJhdG9ySW5wdXQoJGV2ZW50LnRhcmdldC52YWx1ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCdvcGVyYXRvcicsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJ29wZXJhdG9yJywgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQVBQLkVOVEVSX09SX1NFTEVDVF9PUEVSQVRPUicgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgb3Igc2VsZWN0IG9wZXJhdG9yJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzT3BlcmF0b3JEcm9wZG93bk9wZW5baV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3BlcmF0b3Igb2YgZ2V0RmlsdGVyZWRPcGVyYXRvcnMob3BlcmF0b3JJbnB1dFtpXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24oJ29wZXJhdG9yJywgaSwgb3BlcmF0b3IudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcGVyYXRvci5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy5pbnZhbGlkICYmIChmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy5kaXJ0eSB8fCBmaWx0ZXIuZ2V0KCdvcGVyYXRvcicpPy50b3VjaGVkKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBUFAuT1BFUkFUT1JfSVNfUkVRJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdPcGVyYXRvciBpcyByZXF1aXJlZCd9fS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0dmlldy1jdXN0b20tc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIChmb2N1cyk9XCJvbkZvY3VzKCd2YWx1ZScsIGkpXCIgKGJsdXIpPVwib25CbHVyKCd2YWx1ZScsIGkpXCIgW3BsYWNlaG9sZGVyXT1cIidBUFAuRU5URVJfT1JfU0VMRUNUX1ZBTFVFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdFbnRlciBvciBzZWxlY3QgdmFsdWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0XCIgKm5nSWY9XCJpc1ZhbHVlRHJvcGRvd25PcGVuW2ldICYmIGdldFBvc3NpYmxlVmFsdWVzKGNvbmRpdGlvbnMuYXQoaSkuZ2V0KCdmaWVsZCcpLnZhbHVlLCBjb25kaXRpb25zLmF0KGkpLmdldCgndmFsdWUnKS52YWx1ZSk/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbCBvZiBnZXRQb3NzaWJsZVZhbHVlcyhjb25kaXRpb25zLmF0KGkpLmdldCgnZmllbGQnKS52YWx1ZSwgY29uZGl0aW9ucy5hdChpKS5nZXQoJ3ZhbHVlJykudmFsdWUpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbigndmFsdWUnLCBpLCB2YWwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci5nZXQoJ3ZhbHVlJyk/LmludmFsaWQgJiYgKGZpbHRlci5nZXQoJ3ZhbHVlJyk/LmRpcnR5IHx8IGZpbHRlci5nZXQoJ3ZhbHVlJyk/LnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FQUC5WQUxVRV9JU19SRVFVSVJFRCcgfCBjdXN0b21UcmFuc2xhdGUgOiAnVmFsdWUgaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpY29uLWNvbnRhaW5lclwiIFttYXRUb29sdGlwXT1cIidBUFAuUkVNT1ZFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdSZW1vdmUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFkZEljb25Cb3IgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkRmlsdGVyKClcIiBbbWF0VG9vbHRpcF09XCInQVBQLkFERF9GSUxURVInIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FkZCBGaWx0ZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMy4zMzMyNVYxMi42NjY2XCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuMzMzMDEgOEgxMi42NjYzXCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydBUFAuQUREX0ZJTFRFUicgfCBjdXN0b21UcmFuc2xhdGUgOiAnQWRkIEZpbHRlcid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7J0FQUC5DT0xVTU5TJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdDb2x1bW5zJ319PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3snQVBQLlNFTEVDVF9GSUVMRF9UT19ESVNQTEFZX0lOX1RBQkxFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdTZWxlY3QgZmllbGQgdG8gZGlzcGxheSBpbiB0YWJsZSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJjb2x1bW5zXCIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY2VsbFwiPnt7J0FQUC5DT0xVTU5fTkFNRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ29sdW1uIE5hbWUnfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib29sLWNlbGxcIj57eydBUFAuU09SVEFCTEUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ1NvcnRhYmxlJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9vbC1jZWxsXCI+e3snQVBQLkZJTFRFUkFCTEUnIHwgY3VzdG9tVHJhbnNsYXRlIDonRmlsdGVyYWJsZSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+e3snQVBQLkFDVElPTicgfCBjdXN0b21UcmFuc2xhdGUgOiAnQWN0aW9uJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgY29sdW1ucy5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjbGFzcz1cImNvbHVtbi1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdHZpZXctY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJ2NvbHVtbk5hbWUnLCBpKVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJ2NvbHVtbk5hbWUnLCBpKVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25NYW51YWxJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQVBQLkVOVEVSX09SX1NFTEVDVF9DT0xVTU5fTkFNRScgfCBjdXN0b21UcmFuc2xhdGUgOiAnRW50ZXIgb3Igc2VsZWN0IGNvbHVtbiBuYW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIiAqbmdJZj1cImlzQ29sdW1uTmFtZURyb3Bkb3duT3BlbltpXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sTmFtZSBvZiBnZXRDb2x1bW5Db2x1bW5zKGNvbHVtbnMuYXQoaSkuZ2V0KCduYW1lJykudmFsdWUpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbignY29sdW1uTmFtZScsIGksIGNvbE5hbWUubGFiZWwpOyBpc0NvbHVtbk5hbWVEcm9wZG93bk9wZW5baV0gPSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbE5hbWUubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZ2V0KCduYW1lJyk/LmludmFsaWQgJiYgKGZpZWxkLmdldCgnbmFtZScpPy5kaXJ0eSB8fCBmaWVsZC5nZXQoJ25hbWUnKT8udG91Y2hlZClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQVBQLkNPTFVNTl9OQU1FX0lTX1JFUScgfCBjdXN0b21UcmFuc2xhdGUgOiAnQ29sdW1uIG5hbWUgaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2wtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtd3JhcHBlciBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidzb3J0YWJsZS0nICsgaVwiIGZvcm1Db250cm9sTmFtZT1cInNvcnRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidzb3J0YWJsZS0nICsgaVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvb2wtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtd3JhcHBlciBzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidmaWx0ZXJhYmxlLScgKyBpXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlsdGVyYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZmlsdGVyYWJsZS0nICsgaVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpY29uLWNvbnRhaW5lclwiIFttYXRUb29sdGlwXT1cIidBUFAuUkVNT1ZFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdSZW1vdmUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtaWNvblwiIChjbGljayk9XCJyZW1vdmVDb2x1bW4oaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMy45ODcyNkMxMS43OCAzLjc2NzI2IDkuNTQ2NjcgMy42NTM5MyA3LjMyIDMuNjUzOTNDNiAzLjY1MzkzIDQuNjggMy43MjA2IDMuMzYgMy44NTM5M0wyIDMuOTg3MjZcIiBzdHJva2U9XCIjRkYyQzEwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuNjY2NSAzLjMxMzYyTDUuODEzMTcgMi40NDAyOEM1LjkxOTg0IDEuODA2OTUgNS45OTk4NCAxLjMzMzYyIDcuMTI2NSAxLjMzMzYySDguODczMTdDOS45OTk4NCAxLjMzMzYyIDEwLjA4NjUgMS44MzM2MiAxMC4xODY1IDIuNDQ2OTVMMTAuMzMzMiAzLjMxMzYyXCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi41NjY3IDYuMDkzNzVMMTIuMTMzNCAxMi44MDcxQzEyLjA2IDEzLjg1MzcgMTIgMTQuNjY3MSAxMC4xNCAxNC42NjcxSDUuODYwMDJDNC4wMDAwMiAxNC42NjcxIDMuOTQwMDIgMTMuODUzNyAzLjg2NjY4IDEyLjgwNzFMMy40MzMzNSA2LjA5Mzc1XCIgc3Ryb2tlPVwiI0ZGMkMxMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02Ljg4NjQ3IDExLjAwMDRIOS4xMDY0N1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4zMzM1IDguMzMzMjVIOS42NjY4M1wiIHN0cm9rZT1cIiNGRjJDMTBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFkZEljb25Cb3IgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkQ29sdW1uKClcIiBbbWF0VG9vbHRpcF09XCInQVBQLkFERF9DT0xVTU4nIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0FkZCBDb2x1bW4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMy4zMzMyNVYxMi42NjY2XCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuMzMzMDEgOEgxMi42NjYzXCIgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydBUFAuQUREX0NPTFVNTicgfCBjdXN0b21UcmFuc2xhdGUgOiAnQWRkIENvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmRpdGlvbnMubGVuZ3RoID09PSAwICYmIGNvbHVtbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAge3snQVBQLkFUX0xFQVNUX09ORV9GSUxURVJfT1JfT05FX0NPTFVNTl9JU19SRVEnIHwgY3VzdG9tVHJhbnNsYXRlIDogJyBBdCBsZWFzdCBvbmUgZmlsdGVyIG9yIG9uZSBjb2x1bW4gaXMgcmVxdWlyZWQnfX0uXG4gICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCIhZWRpdGluZ1ZpZXcudmFsaWQgfHwgKGNvbmRpdGlvbnMubGVuZ3RoID09PSAwICYmIGNvbHVtbnMubGVuZ3RoID09PSAwKVwiPnt7J0FQUC5TQVZFJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdTYXZlJ319PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj57eydBUFAuQ0FOQ0VMJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdDYW5jZWwnfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTS1MzTUFZMjUgRGVsZXRlIExpc3QgVmlldy0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc0RlbGV0ZU1vZGFsT3BlblwiIGNsYXNzPVwibW9kYWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxoMj57eydBUFAuREVMRVRFX0xJU1RfVklFVycgfCBjdXN0b21UcmFuc2xhdGUgOiAnRGVsZXRlIExpc3QgVmlldyd9fTwvaDI+XG4gICAgICAgICAgICA8cD57eydBUFAuQVJFX1lPVV9TVVJFX1lPVV9XQU5UX1RPX0RFTEVURScgfCBjdXN0b21UcmFuc2xhdGUgOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSd9fSBcInt7IHZpZXdUb0RlbGV0ZT8uZmlsdGVyTmFtZSB9fVwiPzwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVDb25maXJtZWQoKVwiPnt7J0FQUC5ERUxFVEUnIHwgY3VzdG9tVHJhbnNsYXRlIDogJ0RlbGV0ZSd9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZURlbGV0ZU1vZGFsKClcIj57eydBUFAuQ0FOQ0VMJyB8IGN1c3RvbVRyYW5zbGF0ZSA6ICdDYW5jZWwnfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==