@microsoft/windows-admin-center-sdk 2.508.0 → 2.510.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +1025 -514
  2. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
  3. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +1 -1
  4. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
  5. package/angular/esm2015/src/controls/common/decorators/deprecation.decorators.js +1 -1
  6. package/angular/esm2015/src/controls/header/header.component.js +79 -32
  7. package/angular/esm2015/src/controls/layout/index.js +2 -1
  8. package/angular/esm2015/src/controls/layout/layout-config.js +69 -0
  9. package/angular/esm2015/src/controls/layout/layout-item.component.js +12 -4
  10. package/angular/esm2015/src/controls/layout/layout-responsive-window-manager.js +22 -0
  11. package/angular/esm2015/src/controls/layout/layout.component.js +402 -69
  12. package/angular/esm2015/src/controls/property-grid/property-grid.component.js +8 -2
  13. package/angular/esm2015/src/controls/settings/settings.component.js +9 -3
  14. package/angular/esm2015/src/controls/split-view/split-view.component.js +1 -1
  15. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +950 -475
  16. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
  17. package/angular/src/controls/header/header.component.d.ts +17 -5
  18. package/angular/src/controls/layout/index.d.ts +1 -0
  19. package/angular/src/controls/layout/layout-config.d.ts +53 -0
  20. package/angular/src/controls/layout/layout-item.component.d.ts +5 -1
  21. package/angular/src/controls/layout/layout-responsive-window-manager.d.ts +5 -0
  22. package/angular/src/controls/layout/layout.component.d.ts +95 -3
  23. package/angular/src/controls/property-grid/property-grid.component.d.ts +5 -1
  24. package/angular/src/controls/settings/settings.component.d.ts +9 -0
  25. package/e2e/assets/strings/cs-CZ/strings.json +1 -1
  26. package/e2e/assets/strings/de-DE/strings.json +1 -1
  27. package/e2e/assets/strings/es-ES/strings.json +1 -1
  28. package/e2e/assets/strings/fr-FR/strings.json +1 -1
  29. package/e2e/assets/strings/hu-HU/strings.json +1 -1
  30. package/e2e/assets/strings/it-IT/strings.json +1 -1
  31. package/e2e/assets/strings/ja-JP/strings.json +1 -1
  32. package/e2e/assets/strings/ko-KR/strings.json +1 -1
  33. package/e2e/assets/strings/nl-NL/strings.json +1 -1
  34. package/e2e/assets/strings/pl-PL/strings.json +1 -1
  35. package/e2e/assets/strings/pt-BR/strings.json +1 -1
  36. package/e2e/assets/strings/pt-PT/strings.json +1 -1
  37. package/e2e/assets/strings/ru-RU/strings.json +1 -1
  38. package/e2e/assets/strings/strings.json +1 -1
  39. package/e2e/assets/strings/sv-SE/strings.json +1 -1
  40. package/e2e/assets/strings/tr-TR/strings.json +1 -1
  41. package/e2e/assets/strings/zh-CN/strings.json +1 -1
  42. package/e2e/assets/strings/zh-TW/strings.json +1 -1
  43. package/package.json +1 -1
  44. package/styles/css/main-v2.css +1 -1
@@ -292,6 +292,10 @@ export class PropertyGridComponent extends CoreBaseComponent {
292
292
  * Implementation of the Layout interface
293
293
  */
294
294
  this.layoutChanged = new EventEmitter();
295
+ /**
296
+ * Implementation of the Layout interface
297
+ */
298
+ this.windowBreakpointChanged = new EventEmitter();
295
299
  this.propertyGridResponsiveWindowManager = new PropertyGridResponsiveWindowManager();
296
300
  // old style supported sme-property-grid-arrange-vertical class. default to vertical orientation if this class is applied.
297
301
  const hasVerticalClass = this.hostElement.nativeElement.classList.contains('sme-property-grid-arrange-vertical');
@@ -408,7 +412,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
408
412
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionLinkTemplate = _t.first);
409
413
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.internalLinkTemplate = _t.first);
410
414
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.externalLinkTemplate = _t.first);
411
- } }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged" }, features: [i0.ɵɵProvidersFeature([
415
+ } }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
412
416
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
413
417
  ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 6, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", 3, "href"], [1, "sme-icon", "sme-icon-openInNewWindow", "sme-margin-left-xs"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) { if (rf & 1) {
414
418
  i0.ɵɵelementStart(0, "sme-layout", 0, 1);
@@ -468,5 +472,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
468
472
  type: Input
469
473
  }], layoutChanged: [{
470
474
  type: Output
475
+ }], windowBreakpointChanged: [{
476
+ type: Output
471
477
  }] }); })();
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUN3RTs7OztJQUF0RSx3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGO0lBQ25GLG1DQUE2SDtJQUMzSCxpQ0FBbUM7SUFDakMsNEJBQU07SUFBQSxZQUFnQjtJQUFBLGlCQUFPO0lBQzdCLDJGQUN3RTtJQUV4RSxnQ0FBZ0M7SUFBQSxZQUFrQjtJQUFBLGlCQUFPO0lBQzNELGlCQUFRO0lBQ1IsMkdBQXNHO0lBQ3hH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QUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDLEVBQUU7aUJBQ3pGO2FBQ0o7O3NCQTJDb0MsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBbkM1RSxLQUFLO2tCQURYLGVBQWU7bUJBQUMseUJBQXlCO1lBSW5DLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJeEMsa0JBQWtCO2tCQUR4QixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUkxQyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFjNUMsV0FBVztrQkFEakIsS0FBSztZQU9DLGFBQWE7a0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciA9IG5ldyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlcigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBsYXlvdXQ6IExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICAvLyBvbGQgc3R5bGUgc3VwcG9ydGVkIHNtZS1wcm9wZXJ0eS1ncmlkLWFycmFuZ2UtdmVydGljYWwgY2xhc3MuIGRlZmF1bHQgdG8gdmVydGljYWwgb3JpZW50YXRpb24gaWYgdGhpcyBjbGFzcyBpcyBhcHBsaWVkLlxyXG4gICAgICAgIGNvbnN0IGhhc1ZlcnRpY2FsQ2xhc3MgPSAoPEhUTUxFbGVtZW50PnRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsJyk7XHJcbiAgICAgICAgdGhpcy5vcmllbnRhdGlvbiA9IGhhc1ZlcnRpY2FsQ2xhc3MgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xyXG5cclxuICAgICAgICAvLyBvbiBwYXJlbnQgbGF5b3V0IGNoYW5nZXMsIHJlLWVtaXQgdGhlIGxheW91dCBjaGFuZ2UgdG8gb3VyIGV2ZW50XHJcbiAgICAgICAgaWYgKGxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwibmFycm93XCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aFwiIFtjb2x1bW5zXT1cIjFcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwibWVkaXVtXCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aCoyXCIgW2NvbHVtbnNdPVwiMlwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiM1wiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIiBbY29sdW1uU3Bhbl09XCJpdGVtLmNvbHVtblNwYW5cIlxyXG4gICAgW21heFdpZHRoXT1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gbnVsbCA6IGl0ZW0uY29sdW1uU3BhbiAqIGxheW91dEl0ZW1XaWR0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1wcm9wZXJ0eS1ncmlkLWl0ZW1cIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIiAjem9uZT1cInNtZVRvb2x0aXBab25lXCIgc21lVG9vbHRpcFpvbmU+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWhcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50b29sdGlwXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1pY29uIHNtZS1pY29uLWluZm8gc21lLWluZm8tYnViYmxlIHNtZS1tYXJnaW4tbGVmdC14c1wiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwXCIgW3Rvb2x0aXBab25lXT1cInpvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgPCEtLSBpbiBzY2FuIG1vZGUgc2NyZWVuIHJlYWRlciBkb2VzIG5vdCBmb2N1cyBvbiB0aGUgaW5mbyBpY29uIHByb3Blcmx5IHRvIHJlYWQgdGhlIHRpdGxlIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBpdGVtLnRvb2x0aXAgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShpdGVtKTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuPC9zbWUtbGF5b3V0PlxyXG5cclxuPCEtLSBSZWFkIG9ubHkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNtZS1sb2FkaW5nLXdoZWVsICpuZ0lmPVwiaXRlbS5sb2FkaW5nICYmIGl0ZW0uaXNBc3luY1wiIHNpemU9XCJleHRyYS1zbWFsbFwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtpc0JhY2tncm91bmRUcmFuc3BhcmVudF09XCJ0cnVlXCI+PC9zbWUtbG9hZGluZy13aGVlbD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyB8fCAhaXRlbS5pc0FzeW5jXCI+XHJcbiAgICA8cCBjbGFzcz1cInJlYWQtb25seS10ZW1wbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZEJhZy5sYWJlbFNwYW4gKyBpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0ubGluayAmJiAhaXRlbS5hY3Rpb25cIj57eyBzdHJpbmdpZnlWYWx1ZShpdGVtLnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQWN0aW9uIGxpbmsgKHJvbGUgYnV0dG9uKSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25MaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBhY3Rpb24tbGluay10ZW1wbGF0ZVwiIHJvbGU9XCJsaW5rXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKGl0ZW0pXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEludGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW50ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5saW5rXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZXh0ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW2hyZWZdPVwiaXRlbS5saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+XHJcbiAgICAgIDxzcGFuPnt7IGl0ZW0udmFsdWUgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tb3BlbkluTmV3V2luZG93IHNtZS1tYXJnaW4tbGVmdC14c1wiPjwvc3Bhbj5cclxuICAgIDwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEljb24gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8c3BhbiAqbmdJZj1cIiEhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1tYXJnaW4tcmlnaHQteHMgc21lLWljb24ge3tpdGVtLmljb25DbGFzc319XCI+PC9zcGFuPlxyXG4gIDxzbWUtc3RhdHVzLWljb24gKm5nSWY9XCJpdGVtLnN0YXR1cyAhPT0gbnVsbCAmJiAhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1sYXlvdXQtaW5saW5lLWJsb2NrIHNtZS1tYXJnaW4tcmlnaHQteHMgXCJcclxuICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0dXNcIiBzaXplPVwiMTZweFwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUN3RTs7OztJQUF0RSx3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGO0lBQ25GLG1DQUE2SDtJQUMzSCxpQ0FBbUM7SUFDakMsNEJBQU07SUFBQSxZQUFnQjtJQUFBLGlCQUFPO0lBQzdCLDJGQUN3RTtJQUV4RSxnQ0FBZ0M7SUFBQSxZQUFrQjtJQUFBLGlCQUFPO0lBQzNELGlCQUFRO0lBQ1IsMkdBQXNHO0lBQ3hH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O29CQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDLEVBQUU7aUJBQ3pGO2FBQ0o7O3NCQWlEb0MsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBekM1RSxLQUFLO2tCQURYLGVBQWU7bUJBQUMseUJBQXlCO1lBSW5DLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJeEMsa0JBQWtCO2tCQUR4QixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUkxQyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFjNUMsV0FBVztrQkFEakIsS0FBSztZQU9DLGFBQWE7a0JBRG5CLE1BQU07WUFPQSx1QkFBdUI7a0JBRDdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aW5kb3dCcmVha3BvaW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgLy8gb2xkIHN0eWxlIHN1cHBvcnRlZCBzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsIGNsYXNzLiBkZWZhdWx0IHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIGlmIHRoaXMgY2xhc3MgaXMgYXBwbGllZC5cclxuICAgICAgICBjb25zdCBoYXNWZXJ0aWNhbENsYXNzID0gKDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCcpO1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSBoYXNWZXJ0aWNhbENsYXNzID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcclxuXHJcbiAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgIGlmIChsYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiBuYW1lPVwibmFycm93XCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aFwiIFtjb2x1bW5zXT1cIjFcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwibWVkaXVtXCIgW3VudGlsXT1cImxheW91dEl0ZW1XaWR0aCoyXCIgW2NvbHVtbnNdPVwiMlwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiM1wiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIiBbY29sdW1uU3Bhbl09XCJpdGVtLmNvbHVtblNwYW5cIlxyXG4gICAgW21heFdpZHRoXT1cIm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gbnVsbCA6IGl0ZW0uY29sdW1uU3BhbiAqIGxheW91dEl0ZW1XaWR0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1wcm9wZXJ0eS1ncmlkLWl0ZW1cIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIiAjem9uZT1cInNtZVRvb2x0aXBab25lXCIgc21lVG9vbHRpcFpvbmU+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWhcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50b29sdGlwXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1pY29uIHNtZS1pY29uLWluZm8gc21lLWluZm8tYnViYmxlIHNtZS1tYXJnaW4tbGVmdC14c1wiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwXCIgW3Rvb2x0aXBab25lXT1cInpvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgPCEtLSBpbiBzY2FuIG1vZGUgc2NyZWVuIHJlYWRlciBkb2VzIG5vdCBmb2N1cyBvbiB0aGUgaW5mbyBpY29uIHByb3Blcmx5IHRvIHJlYWQgdGhlIHRpdGxlIC0tPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIj57eyBpdGVtLnRvb2x0aXAgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShpdGVtKTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuPC9zbWUtbGF5b3V0PlxyXG5cclxuPCEtLSBSZWFkIG9ubHkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNtZS1sb2FkaW5nLXdoZWVsICpuZ0lmPVwiaXRlbS5sb2FkaW5nICYmIGl0ZW0uaXNBc3luY1wiIHNpemU9XCJleHRyYS1zbWFsbFwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtpc0JhY2tncm91bmRUcmFuc3BhcmVudF09XCJ0cnVlXCI+PC9zbWUtbG9hZGluZy13aGVlbD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubG9hZGluZyB8fCAhaXRlbS5pc0FzeW5jXCI+XHJcbiAgICA8cCBjbGFzcz1cInJlYWQtb25seS10ZW1wbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZEJhZy5sYWJlbFNwYW4gKyBpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0ubGluayAmJiAhaXRlbS5hY3Rpb25cIj57eyBzdHJpbmdpZnlWYWx1ZShpdGVtLnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQWN0aW9uIGxpbmsgKHJvbGUgYnV0dG9uKSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25MaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBhY3Rpb24tbGluay10ZW1wbGF0ZVwiIHJvbGU9XCJsaW5rXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKGl0ZW0pXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEludGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW50ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5saW5rXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZXh0ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW2hyZWZdPVwiaXRlbS5saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+XHJcbiAgICAgIDxzcGFuPnt7IGl0ZW0udmFsdWUgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tb3BlbkluTmV3V2luZG93IHNtZS1tYXJnaW4tbGVmdC14c1wiPjwvc3Bhbj5cclxuICAgIDwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEljb24gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8c3BhbiAqbmdJZj1cIiEhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1tYXJnaW4tcmlnaHQteHMgc21lLWljb24ge3tpdGVtLmljb25DbGFzc319XCI+PC9zcGFuPlxyXG4gIDxzbWUtc3RhdHVzLWljb24gKm5nSWY9XCJpdGVtLnN0YXR1cyAhPT0gbnVsbCAmJiAhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1sYXlvdXQtaW5saW5lLWJsb2NrIHNtZS1tYXJnaW4tcmlnaHQteHMgXCJcclxuICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0dXNcIiBzaXplPVwiMTZweFwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -4,6 +4,7 @@ import { map } from 'rxjs/operators';
4
4
  import { CoreBaseComponent } from '../common/base.component';
5
5
  import { SmeInject } from '../common/decorators/injection.decorators';
6
6
  import { DialogService } from '../dialog/dialog.service';
7
+ import { LayoutConfigGenerator } from '../layout/layout-config';
7
8
  import { SettingsFormService } from './settings-form.service';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common";
@@ -86,6 +87,10 @@ export class SettingsComponent extends CoreBaseComponent {
86
87
  * Separator used in sticky header on top of Settings page
87
88
  */
88
89
  this.headerSeparator = '|';
90
+ /**
91
+ * The generator for layout config.
92
+ */
93
+ this.layoutConfigGenerator = new LayoutConfigGenerator();
89
94
  this.autoFocus = true;
90
95
  }
91
96
  /**
@@ -106,6 +111,7 @@ export class SettingsComponent extends CoreBaseComponent {
106
111
  this.autoFocus = true;
107
112
  }), this.settingsForms.formRemoved().subscribe((form) => { MsftSme.remove(this.allForms, form); }));
108
113
  this.fullSettingsTitle = this.settingsTitle;
114
+ this.currentLayoutConfig = this.layoutConfigGenerator.initialize([300, '100']);
109
115
  }
110
116
  ngOnDestroy() {
111
117
  super.ngOnDestroy();
@@ -164,7 +170,7 @@ export class SettingsComponent extends CoreBaseComponent {
164
170
  }
165
171
  }
166
172
  /** @nocollapse */ SettingsComponent.ɵfac = function SettingsComponent_Factory(t) { return new (t || SettingsComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
167
- /** @nocollapse */ SettingsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SettingsComponent, selectors: [["sme-settings"]], inputs: { addPadding: "addPadding", backRoute: "backRoute", settingsTitle: "settingsTitle", selectedSettingsTitle: "selectedSettingsTitle" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 12, vars: 8, consts: [[1, "sme-arrange-stack-v", "sme-layout-relative", "sme-arrange-overflow-auto-y-phone-up", "sme-position-stretch"], ["class", "sme-layout-tool-header sme-position-flex-none sme-arrange-ellipsis sme-padding-bottom-none sme-padding-left-md", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-arrange-overflow-auto", 3, "padLastItem"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "ngClass"], [1, "sme-position-stretch", "sme-padding-left-xl", "sme-padding-top-xs", 3, "columnSpan"], [1, "sme-layout-tool-header", "sme-position-flex-none", "sme-arrange-ellipsis", "sme-padding-bottom-none", "sme-padding-left-md"], [1, "sme-font-h3", "sme-arrange-ellipsis", "sme-position-stretch-h", 3, "title"], ["class", "sme-padding-horizontal-sm sme-font-family-normal", 4, "ngIf"], ["class", "sme-font-family-normal", 4, "ngIf"], [1, "sme-padding-horizontal-sm", "sme-font-family-normal"], [1, "sme-font-family-normal"]], template: function SettingsComponent_Template(rf, ctx) { if (rf & 1) {
173
+ /** @nocollapse */ SettingsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SettingsComponent, selectors: [["sme-settings"]], inputs: { addPadding: "addPadding", backRoute: "backRoute", settingsTitle: "settingsTitle", selectedSettingsTitle: "selectedSettingsTitle" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 12, vars: 10, consts: [[1, "sme-arrange-stack-v", "sme-layout-relative", "sme-arrange-overflow-auto-y-phone-up", "sme-position-stretch"], ["class", "sme-layout-tool-header sme-position-flex-none sme-arrange-ellipsis sme-padding-bottom-none sme-padding-left-md", 4, "ngIf"], [1, "sme-position-flex-auto", "sme-arrange-overflow-auto", 3, "padLastItem", "layoutConfig", "itemHorizontalSpace"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "ngClass"], [1, "sme-position-stretch", "sme-padding-left-xl", "sme-padding-top-xs", 3, "columnSpan"], [1, "sme-layout-tool-header", "sme-position-flex-none", "sme-arrange-ellipsis", "sme-padding-bottom-none", "sme-padding-left-md"], [1, "sme-font-h3", "sme-arrange-ellipsis", "sme-position-stretch-h", 3, "title"], ["class", "sme-padding-horizontal-sm sme-font-family-normal", 4, "ngIf"], ["class", "sme-font-family-normal", 4, "ngIf"], [1, "sme-padding-horizontal-sm", "sme-font-family-normal"], [1, "sme-font-family-normal"]], template: function SettingsComponent_Template(rf, ctx) { if (rf & 1) {
168
174
  i0.ɵɵprojectionDef(_c0);
169
175
  i0.ɵɵelementStart(0, "div", 0);
170
176
  i0.ɵɵtemplate(1, SettingsComponent_div_1_Template, 5, 5, "div", 1);
@@ -186,7 +192,7 @@ export class SettingsComponent extends CoreBaseComponent {
186
192
  i0.ɵɵadvance(1);
187
193
  i0.ɵɵproperty("ngIf", ctx.settingsTitle);
188
194
  i0.ɵɵadvance(1);
189
- i0.ɵɵproperty("padLastItem", false);
195
+ i0.ɵɵproperty("padLastItem", false)("layoutConfig", ctx.currentLayoutConfig)("itemHorizontalSpace", 36);
190
196
  i0.ɵɵadvance(2);
191
197
  i0.ɵɵproperty("until", 768)("columns", 1);
192
198
  i0.ɵɵadvance(1);
@@ -219,4 +225,4 @@ __decorate([
219
225
  }], selectedSettingsTitle: [{
220
226
  type: Input
221
227
  }], settingsForms: [], dialogService: [] }); })();
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBSTNHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztJQ0x4RCxnQ0FBNkY7SUFBQSxZQUFxQjtJQUFBLGlCQUFPOzs7SUFBNUIsZUFBcUI7SUFBckIsNENBQXFCOzs7SUFDbEgsZ0NBQW1FO0lBQUEsWUFBMkI7SUFBQSxpQkFBTzs7O0lBQWxDLGVBQTJCO0lBQTNCLGtEQUEyQjs7O0lBSmxHLDhCQUFrSjtJQUNoSiw2QkFBc0k7SUFDcEksWUFDQTtJQUFBLDJFQUF5SDtJQUN6SCwyRUFBcUc7SUFDdkcsaUJBQUs7SUFDUCxpQkFBTTs7O0lBTEEsZUFBMkI7SUFBM0IsZ0RBQTJCO0lBQUMsc0RBQXFDO0lBQ25FLGVBQ0E7SUFEQSxxREFDQTtJQUFPLGVBQTJCO0lBQTNCLG1EQUEyQjtJQUMzQixlQUEyQjtJQUEzQixtREFBMkI7Ozs7QURNeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJH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UUFDL0IsZUFBZ0I7UUFBaEIsOEJBQWdCLHlGQUFBO1FBR2hCLGVBQWdCO1FBQWhCLDhCQUFnQjs7QUR5RWpDO0lBREMsU0FBUyxDQUFDLG1CQUFtQixDQUFDOzhCQUNULG1CQUFtQjt3REFBQztBQUcxQztJQURDLFNBQVMsQ0FBQyxhQUFhLENBQUM7OEJBQ0gsYUFBYTt3REFBQzt1RkEvQzNCLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7MkRBZ0JVLFVBQVU7a0JBRGhCLEtBQUs7WUFZQyxTQUFTO2tCQURmLEtBQUs7WUFJQyxhQUFhO2tCQURuQixLQUFLO1lBT0MscUJBQXFCO2tCQUQzQixLQUFLO1lBVUMsYUFBYSxNQUdiLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWVJbmplY3QgfSBmcm9tICcuLi9jb21tb24vZGVjb3JhdG9ycy9pbmplY3Rpb24uZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi9zZXR0aW5ncy1jYW4tZGVhY3RpdmF0ZS1ndWFyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0dGluZ3NGb3JtU2VydmljZSB9IGZyb20gJy4vc2V0dGluZ3MtZm9ybS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgU2V0dGluZ3MgQGlkIHNtZS1zZXR0aW5nc31cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9zZXR0aW5ncy1vdmVydmlldy5tZH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBNdWx0aS1Gb3JtIFVzYWdlIEBpZCBiYXNpYy1tdWx0aX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwxLnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDEudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwxLmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3BhbmVsMS5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMi50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcGFuZWwyLnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMi5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDIuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQtcm91dGluZy5tb2R1bGUgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3JvdXRpbmcubW9kdWxlLnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFNpbmdsZS1Gb3JtIFVzYWdlIEBpZCBiYXNpYy1zaW5nbGV9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9wYW5lbC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvcGFuZWwuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQtcm91dGluZy5tb2R1bGUgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9yb3V0aW5nLm1vZHVsZS50c31cclxuICpcclxuICovXHJcblxyXG4gLyoqXHJcbiAgKiBEZWZpbmVzIGJhc2Ugc2V0dGluZ3MgY29tcG9uZW50LCBpbXBsZW1lbnRzIGNvcmUgZnVuY3Rpb25hbGl0eSArIHNldHRpbmdzIGZvcm0uXHJcbiAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zZXR0aW5ncycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIENvcmVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdTZXR0aW5nc0NvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFsbEZvcm1zOiBGb3JtR3JvdXBbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgMDUvMjMvMjIuIFBsZWFzZSByZW1vdmUgdGhpcyBwYXJhbWV0ZXIgZnJvbSBwYXNzaW5nIGluIHRvIHRoaXMgY29udHJvbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRQYWRkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VwYXJhdG9yIHVzZWQgaW4gc3RpY2t5IGhlYWRlciBvbiB0b3Agb2YgU2V0dGluZ3MgcGFnZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyU2VwYXJhdG9yID0gJ3wnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgQWRkIHlvdXIgb3duIGN1c3RvbSBiYWNrIGJ1dHRvbiBpbiB0aGUgZm9ybVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJhY2tSb3V0ZTogeyBjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgfTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MgdGl0bGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHNldHRpbmdzVGl0bGUsIGhlYWRlclNlcGFyYXRvciAmIHNlbGVjdGVkU2V0dGluZ3NUaXRsZVxyXG4gICAgICogVXNlZCBmb3IgdG9vbCB0aXAgd2hlbiBob3ZlciBvdmVyIGhlYWRlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZnVsbFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICBAU21lSW5qZWN0KFNldHRpbmdzRm9ybVNlcnZpY2UpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NGb3JtczogU2V0dGluZ3NGb3JtU2VydmljZTtcclxuXHJcbiAgICBAU21lSW5qZWN0KERpYWxvZ1NlcnZpY2UpXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcclxuXHJcbiAgICBwcml2YXRlIGF1dG9Gb2N1cyA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5zdG9wUHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5hbGxGb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB0aGlzLmFsbEZvcm1zLnB1c2goZm9ybSkpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuZm9ybUFkZGVkKCkuc3Vic2NyaWJlKChmb3JtQWRkZWREYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBkdXBsaWNhdGVzIHdlIGZpcnN0IHJlbW92ZSB0aGUgZm9ybSBpZiBpdCBleGlzdHNcclxuICAgICAgICAgICAgICAgIE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm1BZGRlZERhdGEuZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9ybXMucHVzaChmb3JtQWRkZWREYXRhLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG5ldyBmb3JtLCBpdCBtZWFucyB0aGUgdXNlciBuYXZpZ2F0ZWQgc28gd2UgcmVzZXQgdGhlIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtUmVtb3ZlZCgpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7IE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm0pOyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZnVsbFNldHRpbmdzVGl0bGUgPSB0aGlzLnNldHRpbmdzVGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnN0YXJ0UHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIGNvbXBvbmVudDogQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgICAgICBsZXQgY29udGludWVOYXZpZ2F0aW9uOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxsRm9ybXMuZmlyc3QoKGZvcm0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbiA9IHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybWF0aW9uKGNvbXBvbmVudC5jb25maXJtQ29udGludWVFZGl0aW5nRGlhbG9nT3B0aW9ucyhmb3JtLCB0aGlzLmFsbEZvcm1zKSlcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGlzIHRvIGNvbnRpbnVlIGVkaXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NhcmRDaGFuZ2VzID0gIXJlc3VsdC5jb25maXJtZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzY2FyZENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuYWxsRm9ybXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzY2FyZENoYW5nZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB3aXRoIG9uZSBkaXJ0eSBmb3JtIGlzIGVub3VnaCB0byBzaG93IHRoZSBkaWFsb2csIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgb3RoZXIgZGlhbG9nc1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlTmF2aWdhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgTGlmZSBDeWNsZSBob29rIGZvciBBZnRlciBWaWV3IENoZWNrZWQuXHJcbiAgICAgKiBXaGVuIHRoZSB2aXNpYmlsaXR5IGNoYW5nZXMsIHdlIGFyZSBnb2luZyB0byBmb2N1cyBvbiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGhhcyB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3Q2hlY2tlZCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRvZm9jdXNFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1thdXRvZm9jdXNdJyk7XHJcbiAgICAgICAgICAgIGlmIChhdXRvZm9jdXNFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9Gb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYXV0b2ZvY3VzRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1zZXR0aW5ncydcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGlzLnNldHRpbmdzVGl0bGUgKGhlYWRlciBvZiB0aGUgc2V0dGluZyBwYWdlKSB0byBuZXdseSBzZWxlY3RlZCBzZXR0aW5nIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwZGF0ZVNlbGVjdGVkU2V0dGluZ1RpdGxlKG5ld1NlbGVjdGVkU2V0dGluZ1RpdGxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2V0dGluZ3NUaXRsZSA9IG5ld1NlbGVjdGVkU2V0dGluZ1RpdGxlO1xyXG4gICAgICAgIGNvbnN0IGZ1bGxTZXR0aW5nc1RpdGxlUG9zdEZpeCA9IHRoaXMuc2VsZWN0ZWRTZXR0aW5nc1RpdGxlID8gdGhpcy5oZWFkZXJTZXBhcmF0b3IgKyAnICcgKyB0aGlzLnNlbGVjdGVkU2V0dGluZ3NUaXRsZSA6ICcnO1xyXG4gICAgICAgIHRoaXMuZnVsbFNldHRpbmdzVGl0bGUgPSB0aGlzLnNldHRpbmdzVGl0bGUgKyAnICcgKyBmdWxsU2V0dGluZ3NUaXRsZVBvc3RGaXg7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLXYgc21lLWxheW91dC1yZWxhdGl2ZSBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvLXktcGhvbmUtdXAgc21lLXBvc2l0aW9uLXN0cmV0Y2hcIj5cclxuICA8ZGl2IGNsYXNzPVwic21lLWxheW91dC10b29sLWhlYWRlciBzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1hcnJhbmdlLWVsbGlwc2lzIHNtZS1wYWRkaW5nLWJvdHRvbS1ub25lIHNtZS1wYWRkaW5nLWxlZnQtbWRcIiAqbmdJZj1cInNldHRpbmdzVGl0bGVcIj5cclxuICAgIDxoMiBbdGl0bGVdPVwiZnVsbFNldHRpbmdzVGl0bGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImZ1bGxTZXR0aW5nc1RpdGxlXCIgY2xhc3M9XCJzbWUtZm9udC1oMyBzbWUtYXJyYW5nZS1lbGxpcHNpcyBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgICAgIHt7IHNldHRpbmdzVGl0bGUgfX1cclxuICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFNldHRpbmdzVGl0bGVcIiBjbGFzcz1cInNtZS1wYWRkaW5nLWhvcml6b250YWwtc20gc21lLWZvbnQtZmFtaWx5LW5vcm1hbFwiPnt7IGhlYWRlclNlcGFyYXRvciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFNldHRpbmdzVGl0bGVcIiBjbGFzcz1cInNtZS1mb250LWZhbWlseS1ub3JtYWxcIj57eyBzZWxlY3RlZFNldHRpbmdzVGl0bGUgfX08L3NwYW4+XHJcbiAgICA8L2gyPlxyXG4gIDwvZGl2PlxyXG4gIDxzbWUtbGF5b3V0ICNsYXlvdXQgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG9cIiBbcGFkTGFzdEl0ZW1dPVwiZmFsc2VcIj5cclxuICAgIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gbmFtZT1cIm5hcnJvd1wiIFt1bnRpbF09XCI3NjhcIiBbY29sdW1uc109XCIxXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiNVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gICAgPHNtZS1sYXlvdXQtaXRlbSBbY29sdW1uU3Bhbl09XCIxXCIgW25nQ2xhc3NdPVwibGF5b3V0LmN1cnJlbnRMYXlvdXREZWZpbml0aW9uTmFtZT09PSduYXJyb3cnID8gJycgOiAnc21lLXBvc2l0aW9uLXN0cmV0Y2gtdidcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICAgIDxzbWUtbGF5b3V0LWl0ZW0gW2NvbHVtblNwYW5dPVwiNFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLXN0cmV0Y2ggc21lLXBhZGRpbmctbGVmdC14bCBzbWUtcGFkZGluZy10b3AteHNcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWhlYWRlclwiPjwvbmctY29udGVudD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1zZXR0aW5ncy1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICA8L3NtZS1sYXlvdXQ+XHJcbjwvZGl2PlxyXG4iXX0=
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSWhHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7SUNOeEQsZ0NBQTZGO0lBQUEsWUFBcUI7SUFBQSxpQkFBTzs7O0lBQTVCLGVBQXFCO0lBQXJCLDRDQUFxQjs7O0lBQ2xILGdDQUFtRTtJQUFBLFlBQTJCO0lBQUEsaUJBQU87OztJQUFsQyxlQUEyQjtJQUEzQixrREFBMkI7OztJQUpsRyw4QkFBa0o7SUFDaEosNkJBQXNJO0lBQ3BJLFlBQ0E7SUFBQSwyRUFBeUg7SUFDekgsMkVBQXFHO0lBQ3ZHLGlCQUFLO0lBQ1AsaUJBQU07OztJQUxBLGVBQTJCO0lBQTNCLGdEQUEyQjtJQUFDLHNEQUFxQztJQUNuRSxlQUNBO0lBREEscURBQ0E7SUFBTyxlQUEyQjtJQUEzQixtREFBMkI7SUFDM0IsZUFBMkI7SUFB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QWtCO1FBQ2xCLDBDQUFzRztRQUNwRyxxQkFBc0Q7UUFDdEQsc0JBQXVEO1FBQ3ZELHNCQUFzRDtRQUN4RCxpQkFBa0I7UUFDcEIsaUJBQWE7UUFDZixpQkFBTTs7O1FBbkJ5SCxlQUFtQjtRQUFuQix3Q0FBbUI7UUFPbkUsZUFBcUI7UUFBckIsbUNBQXFCLHlDQUFBLDJCQUFBO1FBQzNELGVBQWE7UUFBYiwyQkFBYSxjQUFBO1FBQ2YsZUFBYTtRQUFiLDJCQUFhO1FBQy9CLGVBQWdCO1FBQWhCLDhCQUFnQix5RkFBQTtRQUdoQixlQUFnQjtRQUFoQiw4QkFBZ0I7O0FEMEVqQztJQURDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQzs4QkFDVCxtQkFBbUI7d0RBQUM7QUFHMUM7SUFEQyxTQUFTLENBQUMsYUFBYSxDQUFDOzhCQUNILGFBQWE7d0RBQUM7dUZBL0MzQixpQkFBaUI7Y0FKN0IsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixXQUFXLEVBQUUsMkJBQTJCO2FBQzNDOzJEQWdCVSxVQUFVO2tCQURoQixLQUFLO1lBWUMsU0FBUztrQkFEZixLQUFLO1lBSUMsYUFBYTtrQkFEbkIsS0FBSztZQU9DLHFCQUFxQjtrQkFEM0IsS0FBSztZQVVDLGFBQWEsTUFHYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtZUluamVjdCB9IGZyb20gJy4uL2NvbW1vbi9kZWNvcmF0b3JzL2luamVjdGlvbi5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dENvbmZpZywgTGF5b3V0Q29uZmlnR2VuZXJhdG9yIH0gZnJvbSAnLi4vbGF5b3V0L2xheW91dC1jb25maWcnO1xyXG5pbXBvcnQgeyBDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi9zZXR0aW5ncy1jYW4tZGVhY3RpdmF0ZS1ndWFyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0dGluZ3NGb3JtU2VydmljZSB9IGZyb20gJy4vc2V0dGluZ3MtZm9ybS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgU2V0dGluZ3MgQGlkIHNtZS1zZXR0aW5nc31cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9zZXR0aW5ncy1vdmVydmlldy5tZH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBNdWx0aS1Gb3JtIFVzYWdlIEBpZCBiYXNpYy1tdWx0aX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwxLnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDEudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwxLmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3BhbmVsMS5odG1sfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMi50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1mb3JtLWV4YW1wbGUvcGFuZWwyLnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIHBhbmVsMi5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL211bHRpLWZvcm0tZXhhbXBsZS9wYW5lbDIuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQtcm91dGluZy5tb2R1bGUgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktZm9ybS1leGFtcGxlL3JvdXRpbmcubW9kdWxlLnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFNpbmdsZS1Gb3JtIFVzYWdlIEBpZCBiYXNpYy1zaW5nbGV9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9jb21wb25lbnQuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgcGFuZWwudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9wYW5lbC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBwYW5lbC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3NpbmdsZS1mb3JtLWV4YW1wbGUvcGFuZWwuaHRtbH1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQtcm91dGluZy5tb2R1bGUgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc2luZ2xlLWZvcm0tZXhhbXBsZS9yb3V0aW5nLm1vZHVsZS50c31cclxuICpcclxuICovXHJcblxyXG4gLyoqXHJcbiAgKiBEZWZpbmVzIGJhc2Ugc2V0dGluZ3MgY29tcG9uZW50LCBpbXBsZW1lbnRzIGNvcmUgZnVuY3Rpb25hbGl0eSArIHNldHRpbmdzIGZvcm0uXHJcbiAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zZXR0aW5ncycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIENvcmVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdTZXR0aW5nc0NvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFsbEZvcm1zOiBGb3JtR3JvdXBbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgMDUvMjMvMjIuIFBsZWFzZSByZW1vdmUgdGhpcyBwYXJhbWV0ZXIgZnJvbSBwYXNzaW5nIGluIHRvIHRoaXMgY29udHJvbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRQYWRkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VwYXJhdG9yIHVzZWQgaW4gc3RpY2t5IGhlYWRlciBvbiB0b3Agb2YgU2V0dGluZ3MgcGFnZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyU2VwYXJhdG9yID0gJ3wnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgQWRkIHlvdXIgb3duIGN1c3RvbSBiYWNrIGJ1dHRvbiBpbiB0aGUgZm9ybVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJhY2tSb3V0ZTogeyBjb21tYW5kczogYW55W10sIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMgfTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MgdGl0bGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZWxlY3RlZFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHNldHRpbmdzVGl0bGUsIGhlYWRlclNlcGFyYXRvciAmIHNlbGVjdGVkU2V0dGluZ3NUaXRsZVxyXG4gICAgICogVXNlZCBmb3IgdG9vbCB0aXAgd2hlbiBob3ZlciBvdmVyIGhlYWRlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZnVsbFNldHRpbmdzVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICBAU21lSW5qZWN0KFNldHRpbmdzRm9ybVNlcnZpY2UpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NGb3JtczogU2V0dGluZ3NGb3JtU2VydmljZTtcclxuXHJcbiAgICBAU21lSW5qZWN0KERpYWxvZ1NlcnZpY2UpXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IGxheW91dCBjb25maWcgZm9yIGN1c3RvbSBjb25maWcgMS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGN1cnJlbnRMYXlvdXRDb25maWc6IExheW91dENvbmZpZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBnZW5lcmF0b3IgZm9yIGxheW91dCBjb25maWcuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRDb25maWdHZW5lcmF0b3I6IExheW91dENvbmZpZ0dlbmVyYXRvciA9IG5ldyBMYXlvdXRDb25maWdHZW5lcmF0b3IoKTtcclxuXHJcbiAgICBwcml2YXRlIGF1dG9Gb2N1cyA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5zdG9wUHJvY2Vzc2luZ0V2ZW50cygpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5hbGxGb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB0aGlzLmFsbEZvcm1zLnB1c2goZm9ybSkpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzRm9ybXMuZm9ybUFkZGVkKCkuc3Vic2NyaWJlKChmb3JtQWRkZWREYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBkdXBsaWNhdGVzIHdlIGZpcnN0IHJlbW92ZSB0aGUgZm9ybSBpZiBpdCBleGlzdHNcclxuICAgICAgICAgICAgICAgIE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm1BZGRlZERhdGEuZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9ybXMucHVzaChmb3JtQWRkZWREYXRhLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG5ldyBmb3JtLCBpdCBtZWFucyB0aGUgdXNlciBuYXZpZ2F0ZWQgc28gd2UgcmVzZXQgdGhlIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtUmVtb3ZlZCgpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7IE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxsRm9ybXMsIGZvcm0pOyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZnVsbFNldHRpbmdzVGl0bGUgPSB0aGlzLnNldHRpbmdzVGl0bGU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0Q29uZmlnID0gdGhpcy5sYXlvdXRDb25maWdHZW5lcmF0b3IuaW5pdGlhbGl6ZShbMzAwLCAnMTAwJ10pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5zdGFydFByb2Nlc3NpbmdFdmVudHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2FuRGVhY3RpdmF0ZShcclxuICAgICAgICBjb21wb25lbnQ6IENhbkNvbXBvbmVudERlYWN0aXZhdGUsXHJcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICAgICk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNvbnRpbnVlTmF2aWdhdGlvbjogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsbEZvcm1zLmZpcnN0KChmb3JtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb24gPSB0aGlzLmRpYWxvZ1NlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAuc2hvd0NvbmZpcm1hdGlvbihjb21wb25lbnQuY29uZmlybUNvbnRpbnVlRWRpdGluZ0RpYWxvZ09wdGlvbnMoZm9ybSwgdGhpcy5hbGxGb3JtcykpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBpcyB0byBjb250aW51ZSBlZGl0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNjYXJkQ2hhbmdlcyA9ICFyZXN1bHQuY29uZmlybWVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc2NhcmRDaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLmFsbEZvcm1zID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpc2NhcmRDaGFuZ2VzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBvbmUgZGlydHkgZm9ybSBpcyBlbm91Z2ggdG8gc2hvdyB0aGUgZGlhbG9nLCBubyBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIG90aGVyIGRpYWxvZ3NcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjb250aW51ZU5hdmlnYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIExpZmUgQ3ljbGUgaG9vayBmb3IgQWZ0ZXIgVmlldyBDaGVja2VkLlxyXG4gICAgICogV2hlbiB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VzLCB3ZSBhcmUgZ29pbmcgdG8gZm9jdXMgb24gdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBoYXMgdGhlIGF1dG9mb2N1cyBhdHRyaWJ1dGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0NoZWNrZWQoKTtcclxuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcclxuICAgICAgICAgICAgY29uc3QgYXV0b2ZvY3VzRWxlbWVudCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbYXV0b2ZvY3VzXScpO1xyXG4gICAgICAgICAgICBpZiAoYXV0b2ZvY3VzRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGF1dG9mb2N1c0VsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluaXRpYWwgaG9zdCBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRJbml0aWFsSG9zdENsYXNzZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEluaXRpYWxIb3N0Q2xhc3NlcygpLmNvbmNhdChbXHJcbiAgICAgICAgICAgICdzbWUtc2V0dGluZ3MnXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhpcy5zZXR0aW5nc1RpdGxlIChoZWFkZXIgb2YgdGhlIHNldHRpbmcgcGFnZSkgdG8gbmV3bHkgc2VsZWN0ZWQgc2V0dGluZyBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVTZWxlY3RlZFNldHRpbmdUaXRsZShuZXdTZWxlY3RlZFNldHRpbmdUaXRsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNldHRpbmdzVGl0bGUgPSBuZXdTZWxlY3RlZFNldHRpbmdUaXRsZTtcclxuICAgICAgICBjb25zdCBmdWxsU2V0dGluZ3NUaXRsZVBvc3RGaXggPSB0aGlzLnNlbGVjdGVkU2V0dGluZ3NUaXRsZSA/IHRoaXMuaGVhZGVyU2VwYXJhdG9yICsgJyAnICsgdGhpcy5zZWxlY3RlZFNldHRpbmdzVGl0bGUgOiAnJztcclxuICAgICAgICB0aGlzLmZ1bGxTZXR0aW5nc1RpdGxlID0gdGhpcy5zZXR0aW5nc1RpdGxlICsgJyAnICsgZnVsbFNldHRpbmdzVGl0bGVQb3N0Rml4O1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15LXBob25lLXVwIHNtZS1wb3NpdGlvbi1zdHJldGNoXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNtZS1sYXlvdXQtdG9vbC1oZWFkZXIgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYXJyYW5nZS1lbGxpcHNpcyBzbWUtcGFkZGluZy1ib3R0b20tbm9uZSBzbWUtcGFkZGluZy1sZWZ0LW1kXCIgKm5nSWY9XCJzZXR0aW5nc1RpdGxlXCI+XHJcbiAgICA8aDIgW3RpdGxlXT1cImZ1bGxTZXR0aW5nc1RpdGxlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmdWxsU2V0dGluZ3NUaXRsZVwiIGNsYXNzPVwic21lLWZvbnQtaDMgc21lLWFycmFuZ2UtZWxsaXBzaXMgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiPlxyXG4gICAgICB7eyBzZXR0aW5nc1RpdGxlIH19XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRTZXR0aW5nc1RpdGxlXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1ob3Jpem9udGFsLXNtIHNtZS1mb250LWZhbWlseS1ub3JtYWxcIj57eyBoZWFkZXJTZXBhcmF0b3IgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRTZXR0aW5nc1RpdGxlXCIgY2xhc3M9XCJzbWUtZm9udC1mYW1pbHktbm9ybWFsXCI+e3sgc2VsZWN0ZWRTZXR0aW5nc1RpdGxlIH19PC9zcGFuPlxyXG4gICAgPC9oMj5cclxuICA8L2Rpdj5cclxuICA8c21lLWxheW91dCAjbGF5b3V0IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXCIgW3BhZExhc3RJdGVtXT1cImZhbHNlXCIgW2xheW91dENvbmZpZ109XCJjdXJyZW50TGF5b3V0Q29uZmlnXCIgW2l0ZW1Ib3Jpem9udGFsU3BhY2VdPVwiMzZcIj5cclxuICAgIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gbmFtZT1cIm5hcnJvd1wiIFt1bnRpbF09XCI3NjhcIiBbY29sdW1uc109XCIxXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJ3aWRlXCIgW2NvbHVtbnNdPVwiNVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gICAgPHNtZS1sYXlvdXQtaXRlbSBbY29sdW1uU3Bhbl09XCIxXCIgW25nQ2xhc3NdPVwibGF5b3V0LmN1cnJlbnRMYXlvdXREZWZpbml0aW9uTmFtZT09PSduYXJyb3cnID8gJycgOiAnc21lLXBvc2l0aW9uLXN0cmV0Y2gtdidcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICAgIDxzbWUtbGF5b3V0LWl0ZW0gW2NvbHVtblNwYW5dPVwiNFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLXN0cmV0Y2ggc21lLXBhZGRpbmctbGVmdC14bCBzbWUtcGFkZGluZy10b3AteHNcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWhlYWRlclwiPjwvbmctY29udGVudD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNldHRpbmdzLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1zZXR0aW5ncy1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NtZS1sYXlvdXQtaXRlbT5cclxuICA8L3NtZS1sYXlvdXQ+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -776,4 +776,4 @@ __decorate([
776
776
  }], isExpanded: [{
777
777
  type: Input
778
778
  }], onWindowBreakpointChanged: [], deferredOnLayoutChanged: [], deferredRefreshUI: [], setInternalPaneDistance: [] }); })();
779
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9zcGxpdC12aWV3L3NwbGl0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc3BsaXQtdmlldy9zcGxpdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0lDdkI5Ryx3QkFBeUQ7Ozs7O0lBUXpELHNDQUU0RTtJQUExRSxxT0FBNkI7SUFDL0IsaUJBQWM7OztJQUZaLG1EQUFtQztJQUQ4QixtRkFBZ0MsbURBQUE7OztJQUluRyx3QkFBc0Q7OztJQWQxRCw2QkFBc0c7SUFDcEcscUNBQWdJO0lBQzlILG9HQUF5RDtJQUMzRCxpQkFBVTtJQUNW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eEIsS0FBSztZQVFDLG1DQUFtQztrQkFEekMsS0FBSztZQWFLLFlBQVk7a0JBRHRCLEtBQUs7WUFrQkMsb0NBQW9DO2tCQUQxQyxLQUFLO1lBT0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBT0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBT0ssV0FBVztrQkFEckIsS0FBSztZQWlCQyxrQ0FBa0M7a0JBRHhDLEtBQUs7WUF3Q0MsWUFBWTtrQkFEbEIsTUFBTTtZQU9BLFdBQVc7a0JBRGpCLE1BQU07WUE2QkksU0FBUztrQkFEbkIsV0FBVzttQkFBQyxPQUFPO1lBU1QsYUFBYTtrQkFEdkIsV0FBVzttQkFBQyxzQkFBc0I7WUFtQnhCLFVBQVU7a0JBRHBCLEtBQUs7WUEwR0MseUJBQXlCLE1BWXhCLHVCQUF1QixNQXlKdkIsaUJBQWlCLE1Bb0RqQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2ctbGV2ZWwnO1xyXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2dnaW5nJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4sIFNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyIH0gZnJvbSAnLi9zcGxpdC12aWV3LXJlc3BvbnNpdmUtd2luZG93LW1hbmFnZXInO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBwYW5lIG9yaWVudGF0aW9uIG9mIHRoZSBzcGxpdCB2aWV3LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgU3BsaXRWaWV3T3JpZW50YXRpb24gPSAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgY29tcG9uZW50IGRlZmluaXRpb24gb2YgdGhlIHNwbGl0IHZpZXcgY29udGVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc3BsaXQtdmlldy1jb250ZW50JyxcclxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PidcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwbGl0Vmlld0NvbnRlbnRDb21wb25lbnQgeyB9XHJcblxyXG4vKipcclxuICogVGhlIGNvbXBvbmVudCBkZWZpbml0aW9uIG9mIHRoZSBzcGxpdCB2aWV3IHBhbmUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLXNwbGl0LXZpZXctcGFuZScsXHJcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGxpdFZpZXdQYW5lQ29tcG9uZW50IHsgfVxyXG5cclxuLyoqXHJcbiAqIFRoZSBjb21wb25lbnQgZGVmaW5pdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc3BsaXQtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNNRV9MQVlPVVRfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNwbGl0Vmlld0NvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BsaXRWaWV3Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBMYXlvdXQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnU3BsaXRWaWV3Q29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5lciBmb3IgYWN0aXZlIHN1YnNjcmlwdGlvbnMgdGhhdCBzaG91bGQgYmUgY2xlYW5lZCB1cCBpbiB0aGUgT25EZXN0cm95IGNhbGwuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB0aGUgYWN0dWFsIHBhbmUgZGlzdGFuY2UgdGhhdCB0aGUgY29udHJvbCB1c2VzIGZvciByZW5kZXJpbmcuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxQYW5lRGlzdGFuY2U6IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGRlZmluZXMgd2hldGhlciB0aGUgcGFuZSBkaXN0YW5jZSB2YWx1ZSBpcyBzZXQuXHJcbiAgICAgKiBJdCB3aWxsIG5vdCBzZXQgaXQgdHdpY2UgaWYgc2V0IGJlY2F1c2Ugb25seSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBpbml0aWFsIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzUGFuZURpc3RhbmNlU2V0ID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCByZW1lbWJlcnMgdGhlIHBhbmUgZGlzdGFuY2UgdGhhdCBoYXMgYmVlbiBzZXQgaW5pdGlhbGx5LlxyXG4gICAgICogVGhlIGludGVudGlvbiBpcyBmb3IgcmVjb3ZlcmluZyB0aGUgdmFsdWUgb24gd2luZG93IHNpemUgY2hhbmdlcyBhbmQgbGF5b3V0IGNoYW5nZXMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZGVmYXVsdFBhbmVEaXN0YW5jZTogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB3aGV0aGVyIHRoZSBzcGxpdCB2aWV3IGhhcyBiZWVuIGV4cGFuZGVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGludGVybmFsSXNFeHBhbmRlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSBzcGxpdCB2aWV3IGNvbXBvbmVudCBoYXMgYmVlbiBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0NvbXBvbmVudEluaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgd2luZG93IHJlc3BvbnNpdmUgbWFuYWdlciBmb3IgdGhlIHNwbGl0IHZpZXcuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXI6IFNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBwYW5lLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGludGVybmFsT3JpZW50YXRpb246IFNwbGl0Vmlld09yaWVudGF0aW9uID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHRoZSBJTGF5b3V0IGludGVyZmFjZS4gSXQncyB0cmlnZ2VyZWQgd2hlbiB0aGUgbGF5b3V0IGlzIGNoYW5nZWQuXHJcbiAgICAgKiBJdCdzIHVzZWQgdG8gdGVsbCB0aGUgY2hpbGQgY29tcG9uZW50cyB0byBjb29yZGluYXRlIHdpdGggdGhlIGxheW91dCBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxheW91dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHdpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFNwbGl0Vmlld0NvbnRlbnRDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgY29udGVudDogU3BsaXRWaWV3Q29udGVudENvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwYW5lIG9mIHRoZSBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoU3BsaXRWaWV3UGFuZUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBwYW5lOiBTcGxpdFZpZXdQYW5lQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlY3Rpb24gaHRtbCBlbGVtZW50IHRoYXQgd3JhcHMgdGhlIHNtZS1zcGxpdC12aWV3LXBhbmVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgncGFuZUNvbnRhaW5lcicpXHJcbiAgICBwdWJsaWMgcGFuZUNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VjdGlvbiBodG1sIGVsZW1lbnQgdGhhdCB3cmFwcyB0aGUgc21lLXNwbGl0LXZpZXctY29udGFpbmVyXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInKVxyXG4gICAgcHVibGljIGNvbnRlbnRDb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgc2Nyb2xsYmFyIHdoZW4gaXQncyBuZWVkZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1Njcm9sbGJhciA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgYm9yZGVyIGZvciB0aGUgc3BsaXR0ZXIuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1NwbGl0dGVyQm9yZGVyID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGlzIHRvIHRydWUgbWVhbnMgb24gc21hbGxlciB3aW5kb3csIHdpbGwgcmVzcGVjdCB0aGUgb3JpZ2luYWwgcGFuZSB2YWx1ZVxyXG4gICAgICogSXQgaXMgbm90IHN1Z2dlc3RlZCB0byBiZSB1c2VkIG90aGVyIHRoYW4gdGhlIHNoZWxsIHNpZGUgbmF2IGJhci5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlUGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBwYW5lLlxyXG4gICAgICogSXQgaXMgYSBoYXJkY29kZWQgdmFsdWUsIG5vdCBmdWxseSB3b3JraW5nIG9uIHdpbmRvdyByZXNwb25zaXZlIGRlc2lnbi5cclxuICAgICAqIEJ5IGRlc2lnbiwgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSByZXNwZWN0ZWQgb24gc21hbGxlciBzY3JlZW4sIHBob25lIGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcGFuZURpc3RhbmNlKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxQYW5lRGlzdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgcGFuZURpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFBhbmVEaXN0YW5jZSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhbmVEaXN0YW5jZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNQYW5lRGlzdGFuY2VTZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0UGFuZURpc3RhbmNlID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNQYW5lRGlzdGFuY2VTZXQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IHRvIHRydWUgdG8gZGlzYWJsZSB0aGUgcmVzaXplIG1hcmdpbiB0byBnbyB3aW5kb3cgcmVzcG9uc2l2ZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlZFJlc2l6ZU1hcmdpblJlc3BvbnNpdmVXaW5kb3cgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB0aGUgbWluIHZhbHVlIG9mIHRoZSBwYW5lIHNpemUuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVzaXplTG93ZXJNYXJnaW4gPSAxMDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgdGhlIG1pbiB2YWx1ZSBvZiB0aGUgY29udGVudCBzaXplLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJlc2l6ZVVwcGVyTWFyZ2luID0gMTAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGVsZW1lbnQgd2hpY2ggaG9sZHMgdGhlIHJlc2l6ZXIgaW4gdGhlIHJlc2l6aW5nIGxheW91dC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgb3JpZW50YXRpb24oaW5wdXQ6IFNwbGl0Vmlld09yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbE9yaWVudGF0aW9uID0gaW5wdXQ7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzT3JpZW50YXRpb24gPSB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnByZXZpb3VzT3JpZW50YXRpb247XHJcbiAgICAgICAgaWYgKHByZXZpb3VzT3JpZW50YXRpb24gIT09IHRoaXMuaW50ZXJuYWxPcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnByZXZpb3VzT3JpZW50YXRpb24gPSB0aGlzLmludGVybmFsT3JpZW50YXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBkaXNhYmxlIHRoZSBvcmllbnRhdGlvbiBjaGFuZ2Ugb24gd2luZG93IHNpemUgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHRlciBmb3Igb3JpZW50YXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBvcmllbnRhdGlvbigpOiBTcGxpdFZpZXdPcmllbnRhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxPcmllbnRhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbWVtYmVyIHRoZSBwcmV2aW91cyB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3Igb3JpZW50YXRpb24gZm9yIHRoZSBvbiBvcmllbnRhdGlvbiBjaGFuZ2VkIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByZXZpb3VzT3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3IgdGhlIG9yaWVudGF0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93KCkge1xyXG4gICAgICAgIC8vIElmIG9wdC1vdXQsIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIG9yaWVudGF0aW9uXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZU9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1ciA9IHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub3JpZW50YXRpb247XHJcbiAgICAgICAgICAgIGlmIChjdXIgIT09IHRoaXMucHJldmlvdXNPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25PcmllbnRhdGlvbkNoYW5nZWQoY3VyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSBjdXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9yaWVudGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBldmVudCBmaXJlZCB3aGVuIHRoZSBwYW5lJ3MgZXhwYW5kZWQgc3RhdGUgaXMgYmVpbmcgdG9nZ2xlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFuZVRvZ2dsaW5nOiBFdmVudEVtaXR0ZXI8eyBpc0V4cGFuZGVkOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlzRXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBldmVudCBmaXJlZCB3aGVuIHRoZSBwYW5lJ3MgZXhwYW5kZWQgc3RhdGUgaGFzIGJlZW4gdG9nZ2xlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFuZVRvZ2dsZWQ6IEV2ZW50RW1pdHRlcjx7IGlzRXhwYW5kZWQ6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXNFeHBhbmRlZDogYm9vbGVhbiB9PigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgU3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIobGF5b3V0KTtcclxuICAgICAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCgpID0+IHRoaXMub25QYXJlbnRMYXlvdXRDaGFuZ2VkKCkpKSk7XHJcbiAgICAgICAgICAgIC8vIG9uIHdpbmRvdyBicmVhayBwb2ludCBjaGFuZ2VzLCBlbWl0IHRoZSBldmVudCBhYm91dCBjcml0aWNhbCBjbGFzc2VzIGFuZCBzdHlsaW5nIHVwZGF0ZXMgc2lnbmFsLlxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsYXlvdXQud2luZG93QnJlYWtwb2ludENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25XaW5kb3dCcmVha3BvaW50Q2hhbmdlZCgpKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRlZmVycmVkT25MYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgQ1NTIGNsYXNzZXMgb2YgdGhlIGNvbXBvbmVudC5cclxuICAgICAqXHJcbiAgICAgKiBUT0RPOiBzZXR0aW5nIHRoZSBjbGFzcyB0aGlzIHdheSBwcmV2ZW50IGFueSBjdXN0b20gY2xhc3MgZnJvbSBiZWluZyBhcHBsaWVkLlxyXG4gICAgICogQ2hhbmdlIHRvIHNldHRpbmcgY2xhc3MgaW4gdGhlIGNvbnN0cnVjdG9yIHVzaW5nIFJlbmRlcmVyMiBhbmQgRWxlbWVudFJlZlxyXG4gICAgICpcclxuICAgICAqIE9uIHBob25lIGRvd24sIHRoZSBsYXlvdXQgZm9yIHNwbGl0IHZpZXcgY2FuIG9ubHkgYmUgdG9wIGFuZCBib3R0b20sIGluIHRoaXMgY2FzZSwgd2Ugd2lsbCBhbGxvdyB5IHNjcm9sbC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgICBwdWJsaWMgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAnc21lLWxheW91dC1hYnNvbHV0ZSBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgZmxleCBkaXJlY3Rpb24gb2YgdGhlIGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LWRpcmVjdGlvbicpXHJcbiAgICBwdWJsaWMgZ2V0IGZsZXhEaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMub3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3cnO1xyXG4gICAgICAgICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb2x1bW4nO1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Jvdyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbHVtbic7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSBwYW5lIGhhcyBiZWVuIGV4cGFuZGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsSXNFeHBhbmRlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgd2hldGhlciB0aGUgcGFuZSBoYXMgYmVlbiBleHBhbmRlZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBpc0V4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLmludGVybmFsSXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmludGVybmFsSXNFeHBhbmRlZCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMucGFuZVRvZ2dsaW5nLmVtaXQoe1xyXG4gICAgICAgICAgICBpc0V4cGFuZGVkOiB0aGlzLmludGVybmFsSXNFeHBhbmRlZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFVJKCk7XHJcbiAgICAgICAgdGhpcy5wYW5lVG9nZ2xlZC5lbWl0KHtcclxuICAgICAgICAgICAgaXNFeHBhbmRlZDogdGhpcy5pbnRlcm5hbElzRXhwYW5kZWRcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQW5ndWxhciBuZ09uSW5pdCBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNDb21wb25lbnRJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVUkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBBbmd1bGFyIG5nT25EZXN0cm95IGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgY2FsbGVkIGFmdGVyIGNvbnRlbnQgaXMgaW5pdGlhbGl6ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGVudCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIExvZ2dpbmcubG9nKHtcclxuICAgICAgICAgICAgICAgIGxldmVsOiBMb2dMZXZlbC5FcnJvcixcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgdmFsdWUgb2YgJ2NvbnRlbnQnIGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC5gLFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc291cmNlOiAnU3BsaXRWaWV3Q29tcG9uZW50Lm5nQWZ0ZXJDb250ZW50SW5pdCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wYW5lID09IG51bGwpIHtcclxuICAgICAgICAgICAgTG9nZ2luZy5sb2coe1xyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IExvZ0xldmVsLkVycm9yLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBvZiAncGFuZScgaXMgZWl0aGVyIG51bGwgb3IgdW5kZWZpbmVkLmAsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lOiB0aGlzLnBhbmVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6ICdTcGxpdFZpZXdDb21wb25lbnQubmdBZnRlckNvbnRlbnRJbml0J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc1BhbmVEaXN0YW5jZVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0UGFuZU1heFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3IgdGhlIHBhbmUgZGlzdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93KCk6IG51bWJlciB7XHJcbiAgICAgICAgLy8gSWYgb3B0LW91dCwgc2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwgcGFuZSBkaXN0YW5jZS5cclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlUGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdyB8fCAhdGhpcy5zcGxpdFZpZXdSZXNwb25zaXZlV2luZG93TWFuYWdlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lRGlzdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zcGxpdFZpZXdSZXNwb25zaXZlV2luZG93TWFuYWdlci5wYW5lRGlzdGFuY2UodGhpcy5wYW5lRGlzdGFuY2UpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHdpbmRvdyByZXNwb25zaXZlIHZhbHVlIGZvciB0aGUgcmVzaXplciBtYXJnaW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luIHtcclxuICAgICAgICAvLyBJZiBvcHQtb3V0LCBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCBtYXJnaW4gc2l6ZS5cclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZFJlc2l6ZU1hcmdpblJlc3BvbnNpdmVXaW5kb3cgfHwgIXRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGxvd2VyOiB0aGlzLnJlc2l6ZUxvd2VyTWFyZ2luLFxyXG4gICAgICAgICAgICAgICAgdXBwZXI6IHRoaXMucmVzaXplVXBwZXJNYXJnaW5cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4oXHJcbiAgICAgICAgICAgIHRoaXMucmVzaXplTG93ZXJNYXJnaW4sIHRoaXMucmVzaXplVXBwZXJNYXJnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9uIHdpbmRvdyBicmVha3BvaW50IGNoYW5nZWQgaGFuZGxlci5cclxuICAgICAqIEFkZGluZyB5aWVsZCBmb3IgY29tcG9uZW50IHRvIGdldCBFbGVtZW50UmVmIGFmdGVyIGluaXRpYWxpemF0aW9uLlxyXG4gICAgICovXHJcbiAgICBAWWllbGQoKVxyXG4gICAgcHVibGljIG9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmNvbnRlbnRDb250YWluZXJFbGVtZW50LCB0aGlzLnBhbmVDb250YWluZXJFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZlcnJlZCBsYXlvdXQgY2hhbmdlZCBoYW5kbGVyLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHJpdmF0ZSBkZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLm9uUGFyZW50TGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyB0aGUgY2hhbmdlIGV2ZW50IGNvbWluZyBmcm9tIHBhcmVudCBjb250cm9sIGZyb20gdGhlIGxheW91dCBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25QYXJlbnRMYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0NvbXBvbmVudEluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUGFuZURpc3RhbmNlU2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW5lTWF4U2l6ZSgpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzaXplTWFyZ2luOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luID0gdGhpcy5nZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3RvcCcpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIHJlc2l6ZU1hcmdpbi51cHBlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5tYXgodGhpcy5wYW5lRGlzdGFuY2UsIHJlc2l6ZU1hcmdpbi5sb3dlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLnBhbmVEaXN0YW5jZSA/ICh0aGlzLnBhbmVEaXN0YW5jZSArICdweCcpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSByZXNpemVNYXJnaW4udXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSA9IE1hdGgubWF4KHRoaXMucGFuZURpc3RhbmNlLCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLnBhbmVEaXN0YW5jZSA/ICh0aGlzLnBhbmVEaXN0YW5jZSArICdweCcpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYW5lTWF4U2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgc3RhdGUgb2YgdGhlIHBhbmUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2dnbGVQYW5lKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW1wbGVtZW50YXRpb24gZm9yIGFmdGVyIHRoZSBjb250cm9sIGdldHMgc2lnbmFsIGZvciBjb25maXJtYXRpb24gZm9yIHJlc2l6ZS5cclxuICAgICAqIEBwYXJhbSAkZXZlbnQgdGhlIGV2ZW50IGZvciByZXNpemluZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25SZXNpemVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVzZXRQYW5lTWF4U2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNpemVNYXJnaW46IFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4gPSB0aGlzLmdldFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW5SZXNwb25zaXZlV2luZG93KCk7XHJcbiAgICAgICAgY29uc3Qgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID0gdGhpcy5vcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3c7XHJcbiAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgdGhpcy5pc1BhbmVEaXN0YW5jZVNldCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUud2lkdGggPSAnJztcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZEhlaWdodCA9IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgP1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gJGV2ZW50LnkgOlxyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0SGVpZ2h0ICsgJGV2ZW50Lnk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1heChyZXNpemVkSGVpZ2h0LCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgID0gTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gcmVzaXplTWFyZ2luLnVwcGVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHRoaXMucGFuZURpc3RhbmNlID8gdGhpcy5wYW5lRGlzdGFuY2UgKyAncHgnIDogJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkV2lkdGggPSBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcgP1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0V2lkdGggLSAkZXZlbnQueCA6XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5vZmZzZXRXaWR0aCArICRldmVudC54O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5tYXgocmVzaXplZFdpZHRoLCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIHJlc2l6ZU1hcmdpbi51cHBlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMucGFuZURpc3RhbmNlID8gdGhpcy5wYW5lRGlzdGFuY2UgKyAncHgnIDogJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIHBhbmUncyBkaXN0YW5jZSBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3Nlcy5cclxuICAgICAqIEByZXR1cm5zIG51bWJlciB0aGF0IGluZGljYXRlcyB0aGUgcGFuZSdzIHJlbmRlcmluZyB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFyaWFWYWx1ZU5vdygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMucGFuZURpc3RhbmNlID8gTWF0aC5yb3VuZCh0aGlzLnBhbmVEaXN0YW5jZSkgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyB0aGUgb3JpZW50YXRpb24gY2hhbmdlZCBldmVudHMuIFRoaXMgdXN1YWxseSBoYXBwZW5zIG9uIGxheW91dCBjaGFuZ2UgYmVoYXZpb3Igc3VjaCBhcyByZXNpemluZyB0aGUgd2luZG93LlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkIHdpdGggY29tcG9uZW50IGluaXRpYWxpemVkLlxyXG4gICAgICogQHBhcmFtIGN1ciB0aGUgY3VycmVudCBsYXlvdXQsIGNvdWxkIGJlIHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC5cclxuICAgICAqIEByZXR1cm5zIHZvaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25PcmllbnRhdGlvbkNoYW5nZWQoY3VyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBJZ25vcmUgaWYgdGhlIGNvbnRhaW5lciBpcyBub3QgeWV0IGluaXRpYWxpemVkLlxyXG4gICAgICAgIGlmICghdGhpcy5pc0NvbXBvbmVudEluaXRpYWxpemVkIHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoY3VyID09PSAndG9wJyB8fCBjdXIgPT09ICdib3R0b20nICkge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSB0aGlzLmdldFBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3coKSArICdweCc7XHJcbiAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gdGhpcy5kZWZhdWx0UGFuZURpc3RhbmNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY3VyID09PSAnbGVmdCcgfHwgY3VyID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMuZ2V0UGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdygpICsgJ3B4JztcclxuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGVmZXJyZWRSZWZyZXNoVUkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhcyB0byBiZSBhIGRlYm91bmNlIHZhbHVlIGluIGJldHdlZW4gMCAtIDI1MCB0byB3YWl0IGZvciBjaGlsZHJlbiBjb21wb25lbnQuXHJcbiAgICAgKiBJZGVhbGx5IHNob3VsZCBiZSBwcm9taXNlIGltcGxlbWVudGVkLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoMTApXHJcbiAgICBwcml2YXRlIGRlZmVycmVkUmVmcmVzaFVJKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFVJKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZnVuY3Rpb24gdG8gcmVmcmVzaCB0aGUgc3BsaXQgdmlldyBmcm9tIFVJLlxyXG4gICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlZnJlc2hVSSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDb21wb25lbnRJbml0aWFsaXplZCB8fCAhdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudCB8fCAhdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLmdldFBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3coKTtcclxuICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICBjb25zdCBwYW5lQ29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbElzRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFuZURpc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFuZURpc3RhbmNlID0gdGhpcy5wYW5lRGlzdGFuY2UgPiBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93IDogdGhpcy5wYW5lRGlzdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAvLyBPbiBwaG9uZS1kb3duLCBnZXQgcmlkIG9mIHRoZSBzY3JvbGxiYXIgdmVydGljYWxseS5cclxuICAgICAgICAgICAgICAgIGlmIChwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lRGlzdGFuY2UgPSBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHBhbmVEaXN0YW5jZSA/IHBhbmVEaXN0YW5jZSArICdweCcgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLndpZHRoID0gcGFuZURpc3RhbmNlID8gcGFuZURpc3RhbmNlICsgJ3B4JyA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2xlZnQnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldEludGVybmFsUGFuZURpc3RhbmNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBwYW5lIGRpc3RhbmNlIHRoYXQgd291bGQgYmUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBwYW5lLlxyXG4gICAgICogcGFuZSdzIGhlaWdodCBvbiB0b3AsIGJvdHRvbSBsYXlvdXQuXHJcbiAgICAgKiBwYW5lJ3Mgd2lkdGggb24gbGVmdCwgcmlnaHQgbGF5b3V0LlxyXG4gICAgICogQHJldHVybnMgdm9pZDtcclxuICAgICAqL1xyXG4gICAgQERlYm91bmNlKClcclxuICAgIHByaXZhdGUgc2V0SW50ZXJuYWxQYW5lRGlzdGFuY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmludGVybmFsSXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICBjb25zdCBwYW5lQ29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gcGFuZUNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBwYW5lQ29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIG1heCB2YWx1ZSB0aGF0IHRoZSBwYW5lIGNhbiBncm93LlxyXG4gICAgICogU2V0cyBwYW5lJ3MgaGVpZ2h0IHZhbHVlIG9uIHRvcCwgYm90dG9tIGxheW91dC5cclxuICAgICAqIFNldHMgcGFuZSdzIHdpZHRoIHZhbHVlIG9uIGxlZnQsIHJpZ2h0IGxheW91dC5cclxuICAgICAqIEByZXR1cm5zIHZvaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0UGFuZU1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzaXplTWFyZ2luOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luID0gdGhpcy5nZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpO1xyXG4gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9IHRoaXMub3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93O1xyXG4gICAgICAgIGNvbnN0IHBhbmVDb250YWluZXIgPSB0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1pbkhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS5tYXhIZWlnaHQgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1pbldpZHRoID0gJyc7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1heFdpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3RvcCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkUmVzaXplTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWluSGVpZ2h0ID0gcmVzaXplTWFyZ2luLmxvd2VyICsgJ3B4JztcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1heEhlaWdodCA9ICh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSByZXNpemVNYXJnaW4udXBwZXIpICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWluV2lkdGggPSAgcmVzaXplTWFyZ2luLmxvd2VyICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWF4V2lkdGggPSAodGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSByZXNpemVNYXJnaW4udXBwZXIpICsgJ3B4JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0cyB0aGUgbWF4IHZhbHVlIHRoYXQgdGhlIHBhbmUgY2FuIGdyb3cuXHJcbiAgICAgKiBAcmV0dXJucyB2b2lkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlc2V0UGFuZU1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9ICcnO1xyXG4gICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdib3R0b20nIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdyaWdodCdcIj5cclxuICA8c2VjdGlvbiAjY29udGVudENvbnRhaW5lciBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiIFtjbGFzcy5zbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXT1cInNob3dTY3JvbGxiYXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG4gIDxzZWN0aW9uICNwYW5lQ29udGFpbmVyXHJcbiAgICBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYm9yZGVyLWNvbG9yLWJhc2UtODBcIlxyXG4gICAgW2NsYXNzLnNtZS1ib3JkZXItbGVmdC1zbV09XCJzaG93U3BsaXR0ZXJCb3JkZXIgJiYgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnXCJcclxuICAgIFtjbGFzcy5zbWUtYm9yZGVyLXRvcC1zbV09XCJzaG93U3BsaXR0ZXJCb3JkZXIgJiYgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJ1wiXHJcbiAgICBbY2xhc3Muc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0b109XCJzaG93U2Nyb2xsYmFyXCI+XHJcbiAgICA8IS0tIFRPRE86IGhpZGUgcmVzaXplciBvbiBwaG9uZSBkb3duIHRlbXBvcmFyaWx5LCBuZWVkcyBzcGVjaWFsIGRlc2lnbiAtLT5cclxuICAgIDxzbWUtcmVzaXplciAqbmdJZj1cImlzRXhwYW5kZWRcIiBjbGFzcz1cInNtZS1sYXlvdXQtaGlkZS1waG9uZS1kb3duXCIgW3RhYmluZGV4XT1cIltpc0V4cGFuZGVkPzA6bnVsbF1cIlxyXG4gICAgICBbY2xhc3Muc21lLWZvY3VzLXpvbmVdPVwiaXNFeHBhbmRlZFwiIHJlc2l6ZXJIb3N0U2VsZWN0b3I9XCJzbWUtc3BsaXQtdmlld1wiXHJcbiAgICAgIChyZXNpemVkKT1cIm9uUmVzaXplZCgkZXZlbnQpXCIgW29yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvd1wiPlxyXG4gICAgPC9zbWUtcmVzaXplcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYW5lXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSd0b3AnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdsZWZ0J1wiPlxyXG4gIDxzZWN0aW9uICNwYW5lQ29udGFpbmVyXHJcbiAgICBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYm9yZGVyLWNvbG9yLWJhc2UtODBcIiBcclxuICAgIFtjbGFzcy5zbWUtYm9yZGVyLXJpZ2h0LXNtXT1cInNob3dTcGxpdHRlckJvcmRlciAmJiBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0J1wiXHJcbiAgICBbY2xhc3Muc21lLWJvcmRlci1ib3R0b20tc21dPVwic2hvd1NwbGl0dGVyQm9yZGVyICYmIG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3RvcCdcIlxyXG4gICAgW2NsYXNzLnNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG9dPVwic2hvd1Njcm9sbGJhclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhbmVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gVE9ETzogaGlkZSByZXNpemVyIG9uIHBob25lIGRvd24gdGVtcG9yYXJpbHksIG5lZWRzIHNwZWNpYWwgZGVzaWduIC0tPlxyXG4gICAgPHNtZS1yZXNpemVyICpuZ0lmPVwiaXNFeHBhbmRlZFwiIGNsYXNzPVwic21lLWxheW91dC1oaWRlLXBob25lLWRvd25cIiBbdGFiaW5kZXhdPVwiW2lzRXhwYW5kZWQ/MDpudWxsXVwiXHJcbiAgICAgIFtjbGFzcy5zbWUtZm9jdXMtem9uZV09XCJpc0V4cGFuZGVkXCIgcmVzaXplckhvc3RTZWxlY3Rvcj1cInNtZS1zcGxpdC12aWV3XCJcclxuICAgICAgKHJlc2l6ZWQpPVwib25SZXNpemVkKCRldmVudClcIiBbb3JpZW50YXRpb25dPVwib3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93XCIgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJnZXRBcmlhVmFsdWVOb3coKVwiPlxyXG4gICAgPC9zbWUtcmVzaXplcj5cclxuICA8L3NlY3Rpb24+XHJcbiAgPHNlY3Rpb24gI2NvbnRlbnRDb250YWluZXIgY2xhc3M9XCJzbWUtbGF5b3V0LXJlbGF0aXZlIHNtZS1wb3NpdGlvbi1mbGV4LWF1dG9cIiBbY2xhc3Muc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0b109XCJzaG93U2Nyb2xsYmFyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNwbGl0LXZpZXctY29udGVudFwiPjwvbmctY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNwYW5lPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1zcGxpdC12aWV3LXBhbmVcIj48L25nLWNvbnRlbnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0gVGhlIHJlYXNvbiB0byB1c2UgbmctdGVtcGFsdGUgdG8gd3JhcCB0aGUgbmctY29udGVudCBlbGVtZW50IGluc3RlYWQgb2YgZGlyZWN0bHkgdG8gdXNlIG5nLWNvbnRlbnQgaW4gYm90aCB0d28gbmctY29udGFpbmVycyBhYm92ZSBpczpcclxuSWYgd2UgdXNlIG5nLWNvbnRlbnQgZWxlbWVudHMgZGlyZWN0bHkgaW4gYm90aCAyIG5nLWNvbnRhaW5lcnMsIHRoZXJlIHdpbGwgYmUgMiBuZy1jb250ZW50IGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgc2VsZWN0b3IuIEJ1dCBBbmd1bGFyIHdpbGwgb25seVxyXG5yZXNvbHZlIHRoZSBmaXJzdCBuZy1jb250ZW50IGluIG11bHRpcGxlIG5nLWNvbnRlbnQgZWxlbWVudHMgd2l0aCBzYW1lIHNlbGVjdG9yIGV2ZW4gdGhlIGZpcnN0IG9uZSBpcyBpbiBhIG5nSWYgZmFsc2UgYmxvY2suXHJcblNvIHdoZW4gdGhlIG9yaWVudGF0aW9uIGlzIFwidG9wXCIgb3IgXCJsZWZ0XCIsIG5vIG5nLWNvbnRlbnQgZWxlbWVudCB3aWxsIGJlIHJlc29sdmVkIHRoZW4gbm90aGluZyB3b3VsZCByZW5kZXIuXHJcbkluIG9yZGVyIHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgd2UgaGF2ZSB0byB1c2UgbmctdGVtcGxhdGUgdG8gd3JhcCB0aGUgbmctY29udGVudCB0byBtYWtlIHN1cmUgb25lIHNlbGVjdG9yIG1hcHMgdG8gb25lIG5nLWNvbnRlbnQuXHJcblRoZW4gd2UgdXNlIG5nLWNvbnRhaW5lciBhbmQgbmdUZW1wbGF0ZU91dGxldCB0byBjYWxsIHRoZSBuZy10ZW1wbGF0ZS5cclxuVGh4IGZvciByZWFkaW5nIHRpbGwgaGVyZS4uLi4uLiAtLT5cclxuIl19
779
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9zcGxpdC12aWV3L3NwbGl0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc3BsaXQtdmlldy9zcGxpdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0lDdkI5Ryx3QkFBeUQ7Ozs7O0lBUXpELHNDQUU0RTtJQUExRSxxT0FBNkI7SUFDL0IsaUJBQWM7OztJQUZaLG1EQUFtQztJQUQ4QixtRkFBZ0MsbURBQUE7OztJQUluRyx3QkFBc0Q7OztJQWQxRCw2QkFBc0c7SUFDcEcscUNBQWdJO0lBQzlILG9HQUF5RDtJQUMzRCxpQkFBVTtJQUNW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eEIsS0FBSztZQVFDLG1DQUFtQztrQkFEekMsS0FBSztZQWFLLFlBQVk7a0JBRHRCLEtBQUs7WUFrQkMsb0NBQW9DO2tCQUQxQyxLQUFLO1lBT0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBT0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBT0ssV0FBVztrQkFEckIsS0FBSztZQWlCQyxrQ0FBa0M7a0JBRHhDLEtBQUs7WUF3Q0MsWUFBWTtrQkFEbEIsTUFBTTtZQU9BLFdBQVc7a0JBRGpCLE1BQU07WUE2QkksU0FBUztrQkFEbkIsV0FBVzttQkFBQyxPQUFPO1lBU1QsYUFBYTtrQkFEdkIsV0FBVzttQkFBQyxzQkFBc0I7WUFtQnhCLFVBQVU7a0JBRHBCLEtBQUs7WUEwR0MseUJBQXlCLE1BWXhCLHVCQUF1QixNQXlKdkIsaUJBQWlCLE1Bb0RqQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2ctbGV2ZWwnO1xyXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2dnaW5nJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4sIFNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyIH0gZnJvbSAnLi9zcGxpdC12aWV3LXJlc3BvbnNpdmUtd2luZG93LW1hbmFnZXInO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBwYW5lIG9yaWVudGF0aW9uIG9mIHRoZSBzcGxpdCB2aWV3LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgU3BsaXRWaWV3T3JpZW50YXRpb24gPSAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgY29tcG9uZW50IGRlZmluaXRpb24gb2YgdGhlIHNwbGl0IHZpZXcgY29udGVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc3BsaXQtdmlldy1jb250ZW50JyxcclxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PidcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwbGl0Vmlld0NvbnRlbnRDb21wb25lbnQgeyB9XHJcblxyXG4vKipcclxuICogVGhlIGNvbXBvbmVudCBkZWZpbml0aW9uIG9mIHRoZSBzcGxpdCB2aWV3IHBhbmUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLXNwbGl0LXZpZXctcGFuZScsXHJcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGxpdFZpZXdQYW5lQ29tcG9uZW50IHsgfVxyXG5cclxuLyoqXHJcbiAqIFRoZSBjb21wb25lbnQgZGVmaW5pdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc3BsaXQtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXQtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNNRV9MQVlPVVRfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNwbGl0Vmlld0NvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BsaXRWaWV3Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBMYXlvdXQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnU3BsaXRWaWV3Q29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5lciBmb3IgYWN0aXZlIHN1YnNjcmlwdGlvbnMgdGhhdCBzaG91bGQgYmUgY2xlYW5lZCB1cCBpbiB0aGUgT25EZXN0cm95IGNhbGwuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB0aGUgYWN0dWFsIHBhbmUgZGlzdGFuY2UgdGhhdCB0aGUgY29udHJvbCB1c2VzIGZvciByZW5kZXJpbmcuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxQYW5lRGlzdGFuY2U6IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGRlZmluZXMgd2hldGhlciB0aGUgcGFuZSBkaXN0YW5jZSB2YWx1ZSBpcyBzZXQuXHJcbiAgICAgKiBJdCB3aWxsIG5vdCBzZXQgaXQgdHdpY2UgaWYgc2V0IGJlY2F1c2Ugb25seSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBpbml0aWFsIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzUGFuZURpc3RhbmNlU2V0ID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCByZW1lbWJlcnMgdGhlIHBhbmUgZGlzdGFuY2UgdGhhdCBoYXMgYmVlbiBzZXQgaW5pdGlhbGx5LlxyXG4gICAgICogVGhlIGludGVudGlvbiBpcyBmb3IgcmVjb3ZlcmluZyB0aGUgdmFsdWUgb24gd2luZG93IHNpemUgY2hhbmdlcyBhbmQgbGF5b3V0IGNoYW5nZXMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZGVmYXVsdFBhbmVEaXN0YW5jZTogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB3aGV0aGVyIHRoZSBzcGxpdCB2aWV3IGhhcyBiZWVuIGV4cGFuZGVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGludGVybmFsSXNFeHBhbmRlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSBzcGxpdCB2aWV3IGNvbXBvbmVudCBoYXMgYmVlbiBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0NvbXBvbmVudEluaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgd2luZG93IHJlc3BvbnNpdmUgbWFuYWdlciBmb3IgdGhlIHNwbGl0IHZpZXcuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXI6IFNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBwYW5lLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGludGVybmFsT3JpZW50YXRpb246IFNwbGl0Vmlld09yaWVudGF0aW9uID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHRoZSBJTGF5b3V0IGludGVyZmFjZS4gSXQncyB0cmlnZ2VyZWQgd2hlbiB0aGUgbGF5b3V0IGlzIGNoYW5nZWQuXHJcbiAgICAgKiBJdCdzIHVzZWQgdG8gdGVsbCB0aGUgY2hpbGQgY29tcG9uZW50cyB0byBjb29yZGluYXRlIHdpdGggdGhlIGxheW91dCBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxheW91dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHdpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFNwbGl0Vmlld0NvbnRlbnRDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgY29udGVudDogU3BsaXRWaWV3Q29udGVudENvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwYW5lIG9mIHRoZSBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoU3BsaXRWaWV3UGFuZUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBwYW5lOiBTcGxpdFZpZXdQYW5lQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlY3Rpb24gaHRtbCBlbGVtZW50IHRoYXQgd3JhcHMgdGhlIHNtZS1zcGxpdC12aWV3LXBhbmVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgncGFuZUNvbnRhaW5lcicpXHJcbiAgICBwdWJsaWMgcGFuZUNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VjdGlvbiBodG1sIGVsZW1lbnQgdGhhdCB3cmFwcyB0aGUgc21lLXNwbGl0LXZpZXctY29udGFpbmVyXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInKVxyXG4gICAgcHVibGljIGNvbnRlbnRDb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgc2Nyb2xsYmFyIHdoZW4gaXQncyBuZWVkZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1Njcm9sbGJhciA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvdyB0aGUgYm9yZGVyIGZvciB0aGUgc3BsaXR0ZXIuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1NwbGl0dGVyQm9yZGVyID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGlzIHRvIHRydWUgbWVhbnMgb24gc21hbGxlciB3aW5kb3csIHdpbGwgcmVzcGVjdCB0aGUgb3JpZ2luYWwgcGFuZSB2YWx1ZVxyXG4gICAgICogSXQgaXMgbm90IHN1Z2dlc3RlZCB0byBiZSB1c2VkIG90aGVyIHRoYW4gdGhlIHNoZWxsIHNpZGUgbmF2IGJhci5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlUGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBwYW5lLlxyXG4gICAgICogSXQgaXMgYSBoYXJkY29kZWQgdmFsdWUsIG5vdCBmdWxseSB3b3JraW5nIG9uIHdpbmRvdyByZXNwb25zaXZlIGRlc2lnbi5cclxuICAgICAqIEJ5IGRlc2lnbiwgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSByZXNwZWN0ZWQgb24gc21hbGxlciBzY3JlZW4sIHBob25lIGRvd24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcGFuZURpc3RhbmNlKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxQYW5lRGlzdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgcGFuZURpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFBhbmVEaXN0YW5jZSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhbmVEaXN0YW5jZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNQYW5lRGlzdGFuY2VTZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0UGFuZURpc3RhbmNlID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNQYW5lRGlzdGFuY2VTZXQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IHRvIHRydWUgdG8gZGlzYWJsZSB0aGUgcmVzaXplIG1hcmdpbiB0byBnbyB3aW5kb3cgcmVzcG9uc2l2ZS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlZFJlc2l6ZU1hcmdpblJlc3BvbnNpdmVXaW5kb3cgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB0aGUgbWluIHZhbHVlIG9mIHRoZSBwYW5lIHNpemUuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVzaXplTG93ZXJNYXJnaW4gPSAxMDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgdGhlIG1pbiB2YWx1ZSBvZiB0aGUgY29udGVudCBzaXplLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJlc2l6ZVVwcGVyTWFyZ2luID0gMTAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGVmaW5lcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGVsZW1lbnQgd2hpY2ggaG9sZHMgdGhlIHJlc2l6ZXIgaW4gdGhlIHJlc2l6aW5nIGxheW91dC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgb3JpZW50YXRpb24oaW5wdXQ6IFNwbGl0Vmlld09yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbE9yaWVudGF0aW9uID0gaW5wdXQ7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzT3JpZW50YXRpb24gPSB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnByZXZpb3VzT3JpZW50YXRpb247XHJcbiAgICAgICAgaWYgKHByZXZpb3VzT3JpZW50YXRpb24gIT09IHRoaXMuaW50ZXJuYWxPcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnByZXZpb3VzT3JpZW50YXRpb24gPSB0aGlzLmludGVybmFsT3JpZW50YXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBkaXNhYmxlIHRoZSBvcmllbnRhdGlvbiBjaGFuZ2Ugb24gd2luZG93IHNpemUgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHRlciBmb3Igb3JpZW50YXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBvcmllbnRhdGlvbigpOiBTcGxpdFZpZXdPcmllbnRhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxPcmllbnRhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbWVtYmVyIHRoZSBwcmV2aW91cyB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3Igb3JpZW50YXRpb24gZm9yIHRoZSBvbiBvcmllbnRhdGlvbiBjaGFuZ2VkIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHByZXZpb3VzT3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID0gJ2JvdHRvbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3IgdGhlIG9yaWVudGF0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93KCkge1xyXG4gICAgICAgIC8vIElmIG9wdC1vdXQsIHNob3VsZCB1c2UgdGhlIG9yaWdpbmFsIG9yaWVudGF0aW9uXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZU9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1ciA9IHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub3JpZW50YXRpb247XHJcbiAgICAgICAgICAgIGlmIChjdXIgIT09IHRoaXMucHJldmlvdXNPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25PcmllbnRhdGlvbkNoYW5nZWQoY3VyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNPcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSBjdXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9yaWVudGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBldmVudCBmaXJlZCB3aGVuIHRoZSBwYW5lJ3MgZXhwYW5kZWQgc3RhdGUgaXMgYmVpbmcgdG9nZ2xlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFuZVRvZ2dsaW5nOiBFdmVudEVtaXR0ZXI8eyBpc0V4cGFuZGVkOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlzRXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBldmVudCBmaXJlZCB3aGVuIHRoZSBwYW5lJ3MgZXhwYW5kZWQgc3RhdGUgaGFzIGJlZW4gdG9nZ2xlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcGFuZVRvZ2dsZWQ6IEV2ZW50RW1pdHRlcjx7IGlzRXhwYW5kZWQ6IGJvb2xlYW4gfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXNFeHBhbmRlZDogYm9vbGVhbiB9PigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgU3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIobGF5b3V0KTtcclxuICAgICAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCgpID0+IHRoaXMub25QYXJlbnRMYXlvdXRDaGFuZ2VkKCkpKSk7XHJcbiAgICAgICAgICAgIC8vIG9uIHdpbmRvdyBicmVhayBwb2ludCBjaGFuZ2VzLCBlbWl0IHRoZSBldmVudCBhYm91dCBjcml0aWNhbCBjbGFzc2VzIGFuZCBzdHlsaW5nIHVwZGF0ZXMgc2lnbmFsLlxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsYXlvdXQud2luZG93QnJlYWtwb2ludENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25XaW5kb3dCcmVha3BvaW50Q2hhbmdlZCgpKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRlZmVycmVkT25MYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgQ1NTIGNsYXNzZXMgb2YgdGhlIGNvbXBvbmVudC5cclxuICAgICAqXHJcbiAgICAgKiBUT0RPOiBzZXR0aW5nIHRoZSBjbGFzcyB0aGlzIHdheSBwcmV2ZW50IGFueSBjdXN0b20gY2xhc3MgZnJvbSBiZWluZyBhcHBsaWVkLlxyXG4gICAgICogQ2hhbmdlIHRvIHNldHRpbmcgY2xhc3MgaW4gdGhlIGNvbnN0cnVjdG9yIHVzaW5nIFJlbmRlcmVyMiBhbmQgRWxlbWVudFJlZlxyXG4gICAgICpcclxuICAgICAqIE9uIHBob25lIGRvd24sIHRoZSBsYXlvdXQgZm9yIHNwbGl0IHZpZXcgY2FuIG9ubHkgYmUgdG9wIGFuZCBib3R0b20sIGluIHRoaXMgY2FzZSwgd2Ugd2lsbCBhbGxvdyB5IHNjcm9sbC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgICBwdWJsaWMgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAnc21lLWxheW91dC1hYnNvbHV0ZSBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgZmxleCBkaXJlY3Rpb24gb2YgdGhlIGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LWRpcmVjdGlvbicpXHJcbiAgICBwdWJsaWMgZ2V0IGZsZXhEaXJlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMub3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdyb3cnO1xyXG4gICAgICAgICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb2x1bW4nO1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Jvdyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvbHVtbic7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSBwYW5lIGhhcyBiZWVuIGV4cGFuZGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsSXNFeHBhbmRlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgd2hldGhlciB0aGUgcGFuZSBoYXMgYmVlbiBleHBhbmRlZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBpc0V4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLmludGVybmFsSXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmludGVybmFsSXNFeHBhbmRlZCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMucGFuZVRvZ2dsaW5nLmVtaXQoe1xyXG4gICAgICAgICAgICBpc0V4cGFuZGVkOiB0aGlzLmludGVybmFsSXNFeHBhbmRlZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFVJKCk7XHJcbiAgICAgICAgdGhpcy5wYW5lVG9nZ2xlZC5lbWl0KHtcclxuICAgICAgICAgICAgaXNFeHBhbmRlZDogdGhpcy5pbnRlcm5hbElzRXhwYW5kZWRcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQW5ndWxhciBuZ09uSW5pdCBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNDb21wb25lbnRJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVUkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBBbmd1bGFyIG5nT25EZXN0cm95IGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgY2FsbGVkIGFmdGVyIGNvbnRlbnQgaXMgaW5pdGlhbGl6ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGVudCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIExvZ2dpbmcubG9nKHtcclxuICAgICAgICAgICAgICAgIGxldmVsOiBMb2dMZXZlbC5FcnJvcixcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgdmFsdWUgb2YgJ2NvbnRlbnQnIGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC5gLFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc291cmNlOiAnU3BsaXRWaWV3Q29tcG9uZW50Lm5nQWZ0ZXJDb250ZW50SW5pdCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wYW5lID09IG51bGwpIHtcclxuICAgICAgICAgICAgTG9nZ2luZy5sb2coe1xyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IExvZ0xldmVsLkVycm9yLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFRoZSB2YWx1ZSBvZiAncGFuZScgaXMgZWl0aGVyIG51bGwgb3IgdW5kZWZpbmVkLmAsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lOiB0aGlzLnBhbmVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6ICdTcGxpdFZpZXdDb21wb25lbnQubmdBZnRlckNvbnRlbnRJbml0J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc1BhbmVEaXN0YW5jZVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0UGFuZU1heFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB3aW5kb3cgcmVzcG9uc2l2ZSB2YWx1ZSBmb3IgdGhlIHBhbmUgZGlzdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93KCk6IG51bWJlciB7XHJcbiAgICAgICAgLy8gSWYgb3B0LW91dCwgc2hvdWxkIHVzZSB0aGUgb3JpZ2luYWwgcGFuZSBkaXN0YW5jZS5cclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlUGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdyB8fCAhdGhpcy5zcGxpdFZpZXdSZXNwb25zaXZlV2luZG93TWFuYWdlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lRGlzdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zcGxpdFZpZXdSZXNwb25zaXZlV2luZG93TWFuYWdlci5wYW5lRGlzdGFuY2UodGhpcy5wYW5lRGlzdGFuY2UpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHdpbmRvdyByZXNwb25zaXZlIHZhbHVlIGZvciB0aGUgcmVzaXplciBtYXJnaW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luIHtcclxuICAgICAgICAvLyBJZiBvcHQtb3V0LCBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCBtYXJnaW4gc2l6ZS5cclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZFJlc2l6ZU1hcmdpblJlc3BvbnNpdmVXaW5kb3cgfHwgIXRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGxvd2VyOiB0aGlzLnJlc2l6ZUxvd2VyTWFyZ2luLFxyXG4gICAgICAgICAgICAgICAgdXBwZXI6IHRoaXMucmVzaXplVXBwZXJNYXJnaW5cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNwbGl0Vmlld1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4oXHJcbiAgICAgICAgICAgIHRoaXMucmVzaXplTG93ZXJNYXJnaW4sIHRoaXMucmVzaXplVXBwZXJNYXJnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9uIHdpbmRvdyBicmVha3BvaW50IGNoYW5nZWQgaGFuZGxlci5cclxuICAgICAqIEFkZGluZyB5aWVsZCBmb3IgY29tcG9uZW50IHRvIGdldCBFbGVtZW50UmVmIGFmdGVyIGluaXRpYWxpemF0aW9uLlxyXG4gICAgICovXHJcbiAgICBAWWllbGQoKVxyXG4gICAgcHVibGljIG9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc3BsaXRWaWV3UmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmNvbnRlbnRDb250YWluZXJFbGVtZW50LCB0aGlzLnBhbmVDb250YWluZXJFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkZWZlcnJlZCBsYXlvdXQgY2hhbmdlZCBoYW5kbGVyLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHJpdmF0ZSBkZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpIHtcclxuICAgICAgICB0aGlzLm9uUGFyZW50TGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyB0aGUgY2hhbmdlIGV2ZW50IGNvbWluZyBmcm9tIHBhcmVudCBjb250cm9sIGZyb20gdGhlIGxheW91dCBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25QYXJlbnRMYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0NvbXBvbmVudEluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUGFuZURpc3RhbmNlU2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRQYW5lTWF4U2l6ZSgpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzaXplTWFyZ2luOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luID0gdGhpcy5nZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3RvcCcpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIHJlc2l6ZU1hcmdpbi51cHBlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5tYXgodGhpcy5wYW5lRGlzdGFuY2UsIHJlc2l6ZU1hcmdpbi5sb3dlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLnBhbmVEaXN0YW5jZSA/ICh0aGlzLnBhbmVEaXN0YW5jZSArICdweCcpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSByZXNpemVNYXJnaW4udXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSA9IE1hdGgubWF4KHRoaXMucGFuZURpc3RhbmNlLCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLnBhbmVEaXN0YW5jZSA/ICh0aGlzLnBhbmVEaXN0YW5jZSArICdweCcpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYW5lTWF4U2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgc3RhdGUgb2YgdGhlIHBhbmUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2dnbGVQYW5lKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW1wbGVtZW50YXRpb24gZm9yIGFmdGVyIHRoZSBjb250cm9sIGdldHMgc2lnbmFsIGZvciBjb25maXJtYXRpb24gZm9yIHJlc2l6ZS5cclxuICAgICAqIEBwYXJhbSAkZXZlbnQgdGhlIGV2ZW50IGZvciByZXNpemluZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25SZXNpemVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVzZXRQYW5lTWF4U2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNpemVNYXJnaW46IFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW4gPSB0aGlzLmdldFNwbGl0Vmlld1Jlc2l6ZXJNYXJnaW5SZXNwb25zaXZlV2luZG93KCk7XHJcbiAgICAgICAgY29uc3Qgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID0gdGhpcy5vcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3c7XHJcbiAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgdGhpcy5pc1BhbmVEaXN0YW5jZVNldCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUud2lkdGggPSAnJztcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZEhlaWdodCA9IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScgP1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gJGV2ZW50LnkgOlxyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0SGVpZ2h0ICsgJGV2ZW50Lnk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1heChyZXNpemVkSGVpZ2h0LCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgID0gTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gcmVzaXplTWFyZ2luLnVwcGVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHRoaXMucGFuZURpc3RhbmNlID8gdGhpcy5wYW5lRGlzdGFuY2UgKyAncHgnIDogJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkV2lkdGggPSBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcgP1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIub2Zmc2V0V2lkdGggLSAkZXZlbnQueCA6XHJcbiAgICAgICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5vZmZzZXRXaWR0aCArICRldmVudC54O1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gTWF0aC5tYXgocmVzaXplZFdpZHRoLCByZXNpemVNYXJnaW4ubG93ZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVEaXN0YW5jZSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIHJlc2l6ZU1hcmdpbi51cHBlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMucGFuZURpc3RhbmNlID8gdGhpcy5wYW5lRGlzdGFuY2UgKyAncHgnIDogJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIHBhbmUncyBkaXN0YW5jZSBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3Nlcy5cclxuICAgICAqIEByZXR1cm5zIG51bWJlciB0aGF0IGluZGljYXRlcyB0aGUgcGFuZSdzIHJlbmRlcmluZyB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEFyaWFWYWx1ZU5vdygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMucGFuZURpc3RhbmNlID8gTWF0aC5yb3VuZCh0aGlzLnBhbmVEaXN0YW5jZSkgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyB0aGUgb3JpZW50YXRpb24gY2hhbmdlZCBldmVudHMuIFRoaXMgdXN1YWxseSBoYXBwZW5zIG9uIGxheW91dCBjaGFuZ2UgYmVoYXZpb3Igc3VjaCBhcyByZXNpemluZyB0aGUgd2luZG93LlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkIHdpdGggY29tcG9uZW50IGluaXRpYWxpemVkLlxyXG4gICAgICogQHBhcmFtIGN1ciB0aGUgY3VycmVudCBsYXlvdXQsIGNvdWxkIGJlIHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC5cclxuICAgICAqIEByZXR1cm5zIHZvaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25PcmllbnRhdGlvbkNoYW5nZWQoY3VyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBJZ25vcmUgaWYgdGhlIGNvbnRhaW5lciBpcyBub3QgeWV0IGluaXRpYWxpemVkLlxyXG4gICAgICAgIGlmICghdGhpcy5pc0NvbXBvbmVudEluaXRpYWxpemVkIHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoY3VyID09PSAndG9wJyB8fCBjdXIgPT09ICdib3R0b20nICkge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSB0aGlzLmdldFBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3coKSArICdweCc7XHJcbiAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gdGhpcy5kZWZhdWx0UGFuZURpc3RhbmNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY3VyID09PSAnbGVmdCcgfHwgY3VyID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMuZ2V0UGFuZURpc3RhbmNlUmVzcG9uc2l2ZVdpbmRvdygpICsgJ3B4JztcclxuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGVmZXJyZWRSZWZyZXNoVUkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhcyB0byBiZSBhIGRlYm91bmNlIHZhbHVlIGluIGJldHdlZW4gMCAtIDI1MCB0byB3YWl0IGZvciBjaGlsZHJlbiBjb21wb25lbnQuXHJcbiAgICAgKiBJZGVhbGx5IHNob3VsZCBiZSBwcm9taXNlIGltcGxlbWVudGVkLlxyXG4gICAgICovXHJcbiAgICBARGVib3VuY2UoMTApXHJcbiAgICBwcml2YXRlIGRlZmVycmVkUmVmcmVzaFVJKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFVJKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZnVuY3Rpb24gdG8gcmVmcmVzaCB0aGUgc3BsaXQgdmlldyBmcm9tIFVJLlxyXG4gICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlZnJlc2hVSSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDb21wb25lbnRJbml0aWFsaXplZCB8fCAhdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudCB8fCAhdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLmdldFBhbmVEaXN0YW5jZVJlc3BvbnNpdmVXaW5kb3coKTtcclxuICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICBjb25zdCBwYW5lQ29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbElzRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFuZURpc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFuZURpc3RhbmNlID0gdGhpcy5wYW5lRGlzdGFuY2UgPiBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93IDogdGhpcy5wYW5lRGlzdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAvLyBPbiBwaG9uZS1kb3duLCBnZXQgcmlkIG9mIHRoZSBzY3JvbGxiYXIgdmVydGljYWxseS5cclxuICAgICAgICAgICAgICAgIGlmIChwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lRGlzdGFuY2UgPSBwYW5lRGlzdGFuY2VSZXNwb25zaXZlV2luZG93O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IHBhbmVEaXN0YW5jZSA/IHBhbmVEaXN0YW5jZSArICdweCcgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLndpZHRoID0gcGFuZURpc3RhbmNlID8gcGFuZURpc3RhbmNlICsgJ3B4JyA6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2xlZnQnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldEludGVybmFsUGFuZURpc3RhbmNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBwYW5lIGRpc3RhbmNlIHRoYXQgd291bGQgYmUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBwYW5lLlxyXG4gICAgICogcGFuZSdzIGhlaWdodCBvbiB0b3AsIGJvdHRvbSBsYXlvdXQuXHJcbiAgICAgKiBwYW5lJ3Mgd2lkdGggb24gbGVmdCwgcmlnaHQgbGF5b3V0LlxyXG4gICAgICogQHJldHVybnMgdm9pZDtcclxuICAgICAqL1xyXG4gICAgQERlYm91bmNlKClcclxuICAgIHByaXZhdGUgc2V0SW50ZXJuYWxQYW5lRGlzdGFuY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmludGVybmFsSXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPSB0aGlzLm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdztcclxuICAgICAgICBjb25zdCBwYW5lQ29udGFpbmVyID0gdGhpcy5wYW5lQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFuZURpc3RhbmNlID0gcGFuZUNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wYW5lRGlzdGFuY2UgPSBwYW5lQ29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIG1heCB2YWx1ZSB0aGF0IHRoZSBwYW5lIGNhbiBncm93LlxyXG4gICAgICogU2V0cyBwYW5lJ3MgaGVpZ2h0IHZhbHVlIG9uIHRvcCwgYm90dG9tIGxheW91dC5cclxuICAgICAqIFNldHMgcGFuZSdzIHdpZHRoIHZhbHVlIG9uIGxlZnQsIHJpZ2h0IGxheW91dC5cclxuICAgICAqIEByZXR1cm5zIHZvaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0UGFuZU1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzaXplTWFyZ2luOiBTcGxpdFZpZXdSZXNpemVyTWFyZ2luID0gdGhpcy5nZXRTcGxpdFZpZXdSZXNpemVyTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdygpO1xyXG4gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9IHRoaXMub3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93O1xyXG4gICAgICAgIGNvbnN0IHBhbmVDb250YWluZXIgPSB0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChyZXNpemVNYXJnaW4ubG93ZXIgPT09IHVuZGVmaW5lZCAmJiByZXNpemVNYXJnaW4udXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICd0b3AnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1pbkhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS5tYXhIZWlnaHQgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnbGVmdCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1pbldpZHRoID0gJyc7XHJcbiAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1heFdpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ3RvcCcgfHwgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkUmVzaXplTWFyZ2luUmVzcG9uc2l2ZVdpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWluSGVpZ2h0ID0gcmVzaXplTWFyZ2luLmxvd2VyICsgJ3B4JztcclxuICAgICAgICAgICAgICAgICAgICBwYW5lQ29udGFpbmVyLnN0eWxlLm1heEhlaWdodCA9ICh0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSByZXNpemVNYXJnaW4udXBwZXIpICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdsZWZ0JyB8fCBvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3cgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWluV2lkdGggPSAgcmVzaXplTWFyZ2luLmxvd2VyICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWF4V2lkdGggPSAodGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSByZXNpemVNYXJnaW4udXBwZXIpICsgJ3B4JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc2V0cyB0aGUgbWF4IHZhbHVlIHRoYXQgdGhlIHBhbmUgY2FuIGdyb3cuXHJcbiAgICAgKiBAcmV0dXJucyB2b2lkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlc2V0UGFuZU1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50IHx8ICF0aGlzLnBhbmVDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFuZUNvbnRhaW5lciA9IHRoaXMucGFuZUNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgcGFuZUNvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9ICcnO1xyXG4gICAgICAgIHBhbmVDb250YWluZXIuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdib3R0b20nIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdyaWdodCdcIj5cclxuICA8c2VjdGlvbiAjY29udGVudENvbnRhaW5lciBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiIFtjbGFzcy5zbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXT1cInNob3dTY3JvbGxiYXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG4gIDxzZWN0aW9uICNwYW5lQ29udGFpbmVyXHJcbiAgICBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYm9yZGVyLWNvbG9yLWJhc2UtODBcIlxyXG4gICAgW2NsYXNzLnNtZS1ib3JkZXItbGVmdC1zbV09XCJzaG93U3BsaXR0ZXJCb3JkZXIgJiYgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAncmlnaHQnXCJcclxuICAgIFtjbGFzcy5zbWUtYm9yZGVyLXRvcC1zbV09XCJzaG93U3BsaXR0ZXJCb3JkZXIgJiYgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAnYm90dG9tJ1wiXHJcbiAgICBbY2xhc3Muc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0b109XCJzaG93U2Nyb2xsYmFyXCI+XHJcbiAgICA8IS0tIFRPRE86IGhpZGUgcmVzaXplciBvbiBwaG9uZSBkb3duIHRlbXBvcmFyaWx5LCBuZWVkcyBzcGVjaWFsIGRlc2lnbiAtLT5cclxuICAgIDxzbWUtcmVzaXplciAqbmdJZj1cImlzRXhwYW5kZWRcIiBjbGFzcz1cInNtZS1sYXlvdXQtaGlkZS1waG9uZS1kb3duXCIgW3RhYmluZGV4XT1cIltpc0V4cGFuZGVkPzA6bnVsbF1cIlxyXG4gICAgICBbY2xhc3Muc21lLWZvY3VzLXpvbmVdPVwiaXNFeHBhbmRlZFwiIHJlc2l6ZXJIb3N0U2VsZWN0b3I9XCJzbWUtc3BsaXQtdmlld1wiXHJcbiAgICAgIChyZXNpemVkKT1cIm9uUmVzaXplZCgkZXZlbnQpXCIgW29yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvd1wiPlxyXG4gICAgPC9zbWUtcmVzaXplcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYW5lXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSd0b3AnIHx8IG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdz09PSdsZWZ0J1wiPlxyXG4gIDxzZWN0aW9uICNwYW5lQ29udGFpbmVyXHJcbiAgICBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtYm9yZGVyLWNvbG9yLWJhc2UtODBcIlxyXG4gICAgW2NsYXNzLnNtZS1ib3JkZXItcmlnaHQtc21dPVwic2hvd1NwbGl0dGVyQm9yZGVyICYmIG9yaWVudGF0aW9uUmVzcG9uc2l2ZVdpbmRvdyA9PT0gJ2xlZnQnXCJcclxuICAgIFtjbGFzcy5zbWUtYm9yZGVyLWJvdHRvbS1zbV09XCJzaG93U3BsaXR0ZXJCb3JkZXIgJiYgb3JpZW50YXRpb25SZXNwb25zaXZlV2luZG93ID09PSAndG9wJ1wiXHJcbiAgICBbY2xhc3Muc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0b109XCJzaG93U2Nyb2xsYmFyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFuZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUT0RPOiBoaWRlIHJlc2l6ZXIgb24gcGhvbmUgZG93biB0ZW1wb3JhcmlseSwgbmVlZHMgc3BlY2lhbCBkZXNpZ24gLS0+XHJcbiAgICA8c21lLXJlc2l6ZXIgKm5nSWY9XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWhpZGUtcGhvbmUtZG93blwiIFt0YWJpbmRleF09XCJbaXNFeHBhbmRlZD8wOm51bGxdXCJcclxuICAgICAgW2NsYXNzLnNtZS1mb2N1cy16b25lXT1cImlzRXhwYW5kZWRcIiByZXNpemVySG9zdFNlbGVjdG9yPVwic21lLXNwbGl0LXZpZXdcIlxyXG4gICAgICAocmVzaXplZCk9XCJvblJlc2l6ZWQoJGV2ZW50KVwiIFtvcmllbnRhdGlvbl09XCJvcmllbnRhdGlvblJlc3BvbnNpdmVXaW5kb3dcIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cImdldEFyaWFWYWx1ZU5vdygpXCI+XHJcbiAgICA8L3NtZS1yZXNpemVyPlxyXG4gIDwvc2VjdGlvbj5cclxuICA8c2VjdGlvbiAjY29udGVudENvbnRhaW5lciBjbGFzcz1cInNtZS1sYXlvdXQtcmVsYXRpdmUgc21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiIFtjbGFzcy5zbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXT1cInNob3dTY3JvbGxiYXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtc3BsaXQtdmlldy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BhbmU+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic21lLXNwbGl0LXZpZXctcGFuZVwiPjwvbmctY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSBUaGUgcmVhc29uIHRvIHVzZSBuZy10ZW1wbGF0ZSB0byB3cmFwIHRoZSBuZy1jb250ZW50IGVsZW1lbnQgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB1c2UgbmctY29udGVudCBpbiBib3RoIHR3byBuZy1jb250YWluZXJzIGFib3ZlIGlzOlxyXG5JZiB3ZSB1c2UgbmctY29udGVudCBlbGVtZW50cyBkaXJlY3RseSBpbiBib3RoIDIgbmctY29udGFpbmVycywgdGhlcmUgd2lsbCBiZSAyIG5nLWNvbnRlbnQgZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBzZWxlY3Rvci4gQnV0IEFuZ3VsYXIgd2lsbCBvbmx5XHJcbnJlc29sdmUgdGhlIGZpcnN0IG5nLWNvbnRlbnQgaW4gbXVsdGlwbGUgbmctY29udGVudCBlbGVtZW50cyB3aXRoIHNhbWUgc2VsZWN0b3IgZXZlbiB0aGUgZmlyc3Qgb25lIGlzIGluIGEgbmdJZiBmYWxzZSBibG9jay5cclxuU28gd2hlbiB0aGUgb3JpZW50YXRpb24gaXMgXCJ0b3BcIiBvciBcImxlZnRcIiwgbm8gbmctY29udGVudCBlbGVtZW50IHdpbGwgYmUgcmVzb2x2ZWQgdGhlbiBub3RoaW5nIHdvdWxkIHJlbmRlci5cclxuSW4gb3JkZXIgdG8gc29sdmUgdGhpcyBwcm9ibGVtLCB3ZSBoYXZlIHRvIHVzZSBuZy10ZW1wbGF0ZSB0byB3cmFwIHRoZSBuZy1jb250ZW50IHRvIG1ha2Ugc3VyZSBvbmUgc2VsZWN0b3IgbWFwcyB0byBvbmUgbmctY29udGVudC5cclxuVGhlbiB3ZSB1c2UgbmctY29udGFpbmVyIGFuZCBuZ1RlbXBsYXRlT3V0bGV0IHRvIGNhbGwgdGhlIG5nLXRlbXBsYXRlLlxyXG5UaHggZm9yIHJlYWRpbmcgdGlsbCBoZXJlLi4uLi4uIC0tPlxyXG4iXX0=