@eqproject/eqp-dynamic-module 2.2.10 → 2.2.11

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 (53) hide show
  1. package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +9 -9
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +12 -12
  3. package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +12 -12
  4. package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +6 -6
  5. package/esm2020/lib/components/private/dynamic-module-field/dynamic-module-field.component.mjs +3 -3
  6. package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +3 -3
  7. package/esm2020/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.mjs +3 -3
  8. package/esm2020/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.mjs +3 -3
  9. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +3 -3
  10. package/esm2020/lib/components/private/field-templates/image-field-template/image-field-template.component.mjs +3 -3
  11. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +4 -4
  12. package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +5 -5
  13. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +5 -5
  14. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +5 -5
  15. package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +10 -10
  16. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +9 -9
  17. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +10 -10
  18. package/esm2020/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +9 -9
  19. package/esm2020/lib/components/private/form-records/repair-form-fields/repair-form-fields.component.mjs +9 -9
  20. package/esm2020/lib/components/private/form-records/view-form-record/view-form-record.component.mjs +9 -9
  21. package/esm2020/lib/components/private/spinner/spinner.component.mjs +3 -3
  22. package/esm2020/lib/eqp-dynamic-module.module.mjs +4 -4
  23. package/esm2020/lib/modules/material.module.mjs +4 -4
  24. package/esm2020/lib/services/eqp-dynamic-module-dialog.service.mjs +3 -3
  25. package/esm2020/lib/services/spinner.service.mjs +3 -3
  26. package/esm2020/lib/services/utilityHelper.services.mjs +10 -10
  27. package/esm2020/lib/services/voice-recognition.service.mjs +3 -3
  28. package/fesm2015/eqproject-eqp-dynamic-module.mjs +145 -145
  29. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  30. package/fesm2020/eqproject-eqp-dynamic-module.mjs +145 -145
  31. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  32. package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +1 -1
  33. package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +1 -1
  34. package/lib/components/private/add-form-field/add-form-field.component.d.ts +1 -1
  35. package/lib/components/private/add-formula-field/add-formula-field.component.d.ts +2 -2
  36. package/lib/components/private/dynamic-module-field/dynamic-module-field.component.d.ts +1 -1
  37. package/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.d.ts +1 -1
  38. package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +1 -1
  39. package/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.d.ts +1 -1
  40. package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +1 -1
  41. package/lib/components/private/field-templates/image-field-template/image-field-template.component.d.ts +1 -1
  42. package/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.d.ts +1 -1
  43. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +1 -1
  44. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +1 -1
  45. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +1 -1
  46. package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +1 -1
  47. package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +1 -1
  48. package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +2 -2
  49. package/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.d.ts +2 -2
  50. package/lib/components/private/form-records/repair-form-fields/repair-form-fields.component.d.ts +1 -1
  51. package/lib/components/private/form-records/view-form-record/view-form-record.component.d.ts +1 -1
  52. package/lib/components/private/spinner/spinner.component.d.ts +1 -1
  53. package/package.json +1 -1
@@ -12,6 +12,11 @@ import * as i5 from "@angular/material/icon";
12
12
  import * as i6 from "@angular/common";
13
13
  import * as i7 from "./single-record/single-record.component";
14
14
  export class ListViewFormRecordComponent {
15
+ debugLog(message, element) {
16
+ if (this.debugMode) {
17
+ console.log(message, element);
18
+ }
19
+ }
15
20
  constructor(utilityHelperService, changeDetector) {
16
21
  this.utilityHelperService = utilityHelperService;
17
22
  this.changeDetector = changeDetector;
@@ -33,11 +38,6 @@ export class ListViewFormRecordComponent {
33
38
  this.saveRecordEvent = new EventEmitter();
34
39
  this.afterSaveRecordEvent = new EventEmitter();
35
40
  }
36
- debugLog(message, element) {
37
- if (this.debugMode) {
38
- console.log(message, element);
39
- }
40
- }
41
41
  ngOnInit() {
42
42
  // this.panelOpenState = [
43
43
  // ...Array(this.configurations.values.length + 1),
@@ -491,11 +491,11 @@ export class ListViewFormRecordComponent {
491
491
  }
492
492
  }
493
493
  }
494
- ListViewFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListViewFormRecordComponent, deps: [{ token: i1.UtilityHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
495
- ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", onDuplicateRecord: "onDuplicateRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle && loader\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n\r\n\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button mat-icon-button class=\"record-icon view-button-icon\" aria-label=\"Visualizza\"\r\n *ngIf=\"defaultListActions.view == true && (defaultListActions.edit == true || defaultListActions.duplicate == true || defaultListActions.delete == true)\"\r\n (click)=\"viewRecord(panel, true, i, $event)\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon edit-button-icon\" aria-label=\"Modifica\"\r\n *ngIf=\"defaultListActions.edit == true\"\r\n (click)=\"EditRecord(panel, false, i, $event)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon duplicate-button-icon\" aria-label=\"Duplica\" \r\n *ngIf=\"defaultListActions.duplicate == true\"\r\n (click)=\"duplicateRecord(panel.record, $event)\">\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon delete-button-icon\" aria-label=\"Elimina\" \r\n *ngIf=\"defaultListActions.delete == true\"\r\n (click)=\"deleteRecord(panel.record, $event)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"selectedIndex == i\">\r\n\r\n <ng-container *ngIf=\"visualizzaContenuto\">\r\n <view-form-record \r\n *ngIf=\"loader && selectedRecord\" \r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\" \r\n [showBackButton]=\"false\">\r\n </view-form-record>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"modificaContenuto\">\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [userID]=\"userID\"\r\n \r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n \r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n </ng-container>\r\n\r\n </ng-container> -->\r\n\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region old -->\r\n<!-- \r\n <div class=\"row eqp-dynamic-module-title\">\r\n <div class=\"col-md-6\">\r\n <h4 *ngIf=\"showTitle\">\r\n <b>Elenco {{ form.Name }}</b>\r\n </h4>\r\n </div>\r\n <div class=\"col-md-6 text-right pb-3\" *ngIf=\"defaultListActions.add\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\"\r\n >\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n </div>\r\n </div> \r\n -->\r\n\r\n<!-- <eqp-table #tableRecords [data]=\"configurations.values\" [columns]=\"columns\"></eqp-table> -->\r\n\r\n<!-- \r\n <mat-accordion [hideToggle]=\"test\">\r\n <mat-expansion-panel\r\n *ngFor=\"let item of listConfigurations.values; index as i\"\r\n [expanded]=\"panelOpenState[i]\"\r\n [disabled]=\"1\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ item.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, true, i)\"\r\n >\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, false, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Duplica\"\r\n (click)=\"duplicateRecord(item)\"\r\n >\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Elimina\"\r\n (click)=\"deleteRecord(item)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n {{ form.Name }}\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n <view-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\"\r\n [showBackButton]=\"false\"\r\n >\r\n </view-form-record>\r\n </mat-expansion-panel>\r\n </mat-accordion> \r\n -->\r\n<!--#endregion old -->", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.SingleRecordComponent, selector: "lib-single-record", inputs: ["debugMode", "endPointConfiguration", "record", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListViewFormRecordComponent, decorators: [{
494
+ ListViewFormRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, deps: [{ token: i1.UtilityHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
495
+ ListViewFormRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ListViewFormRecordComponent, selector: "list-view-form-record", inputs: { debugMode: "debugMode", configurations: "configurations", compileConfigurations: "compileConfigurations", endPointConfiguration: "endPointConfiguration", userID: "userID", formID: "formID", form: "form" }, outputs: { onAddViewEditRecord: "onAddViewEditRecord", onDeleteRecord: "onDeleteRecord", onDuplicateRecord: "onDuplicateRecord", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, viewQueries: [{ propertyName: "tableRecords", first: true, predicate: ["tableRecords"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"loader && (showTitle || defaultListActions.add)\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button mat-icon-button class=\"record-icon view-button-icon\" aria-label=\"Visualizza\"\r\n *ngIf=\"defaultListActions.view == true && (defaultListActions.edit == true || defaultListActions.duplicate == true || defaultListActions.delete == true)\"\r\n (click)=\"viewRecord(panel, true, i, $event)\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon edit-button-icon\" aria-label=\"Modifica\"\r\n *ngIf=\"defaultListActions.edit == true\"\r\n (click)=\"EditRecord(panel, false, i, $event)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon duplicate-button-icon\" aria-label=\"Duplica\" \r\n *ngIf=\"defaultListActions.duplicate == true\"\r\n (click)=\"duplicateRecord(panel.record, $event)\">\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon delete-button-icon\" aria-label=\"Elimina\" \r\n *ngIf=\"defaultListActions.delete == true\"\r\n (click)=\"deleteRecord(panel.record, $event)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"selectedIndex == i\">\r\n\r\n <ng-container *ngIf=\"visualizzaContenuto\">\r\n <view-form-record \r\n *ngIf=\"loader && selectedRecord\" \r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\" \r\n [showBackButton]=\"false\">\r\n </view-form-record>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"modificaContenuto\">\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [userID]=\"userID\"\r\n \r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n \r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n </ng-container>\r\n\r\n </ng-container> -->\r\n\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region old -->\r\n<!-- \r\n <div class=\"row eqp-dynamic-module-title\">\r\n <div class=\"col-md-6\">\r\n <h4 *ngIf=\"showTitle\">\r\n <b>Elenco {{ form.Name }}</b>\r\n </h4>\r\n </div>\r\n <div class=\"col-md-6 text-right pb-3\" *ngIf=\"defaultListActions.add\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\"\r\n >\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n </div>\r\n </div> \r\n -->\r\n\r\n<!-- <eqp-table #tableRecords [data]=\"configurations.values\" [columns]=\"columns\"></eqp-table> -->\r\n\r\n<!-- \r\n <mat-accordion [hideToggle]=\"test\">\r\n <mat-expansion-panel\r\n *ngFor=\"let item of listConfigurations.values; index as i\"\r\n [expanded]=\"panelOpenState[i]\"\r\n [disabled]=\"1\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ item.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, true, i)\"\r\n >\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, false, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Duplica\"\r\n (click)=\"duplicateRecord(item)\"\r\n >\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Elimina\"\r\n (click)=\"deleteRecord(item)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n {{ form.Name }}\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n <view-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\"\r\n [showBackButton]=\"false\"\r\n >\r\n </view-form-record>\r\n </mat-expansion-panel>\r\n </mat-accordion> \r\n -->\r\n<!--#endregion old -->", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i3.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.SingleRecordComponent, selector: "lib-single-record", inputs: ["debugMode", "endPointConfiguration", "record", "pageState", "userID", "form", "showBackButton", "outCompileConfigurations"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ListViewFormRecordComponent, decorators: [{
497
497
  type: Component,
498
- args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle && loader\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n <mat-card-content>\r\n\r\n\r\n\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button mat-icon-button class=\"record-icon view-button-icon\" aria-label=\"Visualizza\"\r\n *ngIf=\"defaultListActions.view == true && (defaultListActions.edit == true || defaultListActions.duplicate == true || defaultListActions.delete == true)\"\r\n (click)=\"viewRecord(panel, true, i, $event)\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon edit-button-icon\" aria-label=\"Modifica\"\r\n *ngIf=\"defaultListActions.edit == true\"\r\n (click)=\"EditRecord(panel, false, i, $event)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon duplicate-button-icon\" aria-label=\"Duplica\" \r\n *ngIf=\"defaultListActions.duplicate == true\"\r\n (click)=\"duplicateRecord(panel.record, $event)\">\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon delete-button-icon\" aria-label=\"Elimina\" \r\n *ngIf=\"defaultListActions.delete == true\"\r\n (click)=\"deleteRecord(panel.record, $event)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"selectedIndex == i\">\r\n\r\n <ng-container *ngIf=\"visualizzaContenuto\">\r\n <view-form-record \r\n *ngIf=\"loader && selectedRecord\" \r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\" \r\n [showBackButton]=\"false\">\r\n </view-form-record>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"modificaContenuto\">\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [userID]=\"userID\"\r\n \r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n \r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n </ng-container>\r\n\r\n </ng-container> -->\r\n\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region old -->\r\n<!-- \r\n <div class=\"row eqp-dynamic-module-title\">\r\n <div class=\"col-md-6\">\r\n <h4 *ngIf=\"showTitle\">\r\n <b>Elenco {{ form.Name }}</b>\r\n </h4>\r\n </div>\r\n <div class=\"col-md-6 text-right pb-3\" *ngIf=\"defaultListActions.add\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\"\r\n >\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n </div>\r\n </div> \r\n -->\r\n\r\n<!-- <eqp-table #tableRecords [data]=\"configurations.values\" [columns]=\"columns\"></eqp-table> -->\r\n\r\n<!-- \r\n <mat-accordion [hideToggle]=\"test\">\r\n <mat-expansion-panel\r\n *ngFor=\"let item of listConfigurations.values; index as i\"\r\n [expanded]=\"panelOpenState[i]\"\r\n [disabled]=\"1\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ item.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, true, i)\"\r\n >\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, false, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Duplica\"\r\n (click)=\"duplicateRecord(item)\"\r\n >\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Elimina\"\r\n (click)=\"deleteRecord(item)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n {{ form.Name }}\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n <view-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\"\r\n [showBackButton]=\"false\"\r\n >\r\n </view-form-record>\r\n </mat-expansion-panel>\r\n </mat-accordion> \r\n -->\r\n<!--#endregion old -->", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"] }]
498
+ args: [{ selector: "list-view-form-record", template: "<mat-card class=\"list-view-form-record\">\r\n <mat-card-header *ngIf=\"loader && (showTitle || defaultListActions.add)\" class=\"align-items-center justify-content-between\">\r\n <mat-card-title *ngIf=\"showTitle\">Elenco {{ form.Name }}</mat-card-title>\r\n <!-- <mat-card-subtitle>Start</mat-card-subtitle> -->\r\n <mat-card-actions>\r\n <button \r\n *ngIf=\"defaultListActions.add\"\r\n class=\"btn btn-primary\" \r\n mat-raised-button \r\n color=\"primary\" \r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n <!-- <button mat-button>LIKE</button> -->\r\n <!-- <button mat-button>SHARE</button> -->\r\n </mat-card-actions>\r\n </mat-card-header>\r\n\r\n \r\n <mat-card-content>\r\n <mat-accordion [hideToggle]=\"test\" [multi]=\"true\">\r\n <mat-expansion-panel *ngFor=\"let panel of panels; index as i\" \r\n [expanded]=\"panel.isOpen\"\r\n [disabled]=\"1\" \r\n >\r\n <mat-expansion-panel-header\r\n (click)=\"togglePanel(panel)\">\r\n <mat-panel-title>\r\n {{ form.Name }} v.{{ panel.record.Version }} - {{ panel.record.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <!--#region BOTTONI PER LE AZIONI -->\r\n <mat-panel-description>\r\n <button mat-icon-button class=\"record-icon view-button-icon\" aria-label=\"Visualizza\"\r\n *ngIf=\"defaultListActions.view == true && (defaultListActions.edit == true || defaultListActions.duplicate == true || defaultListActions.delete == true)\"\r\n (click)=\"viewRecord(panel, true, i, $event)\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon edit-button-icon\" aria-label=\"Modifica\"\r\n *ngIf=\"defaultListActions.edit == true\"\r\n (click)=\"EditRecord(panel, false, i, $event)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon duplicate-button-icon\" aria-label=\"Duplica\" \r\n *ngIf=\"defaultListActions.duplicate == true\"\r\n (click)=\"duplicateRecord(panel.record, $event)\">\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button class=\"record-icon delete-button-icon\" aria-label=\"Elimina\" \r\n *ngIf=\"defaultListActions.delete == true\"\r\n (click)=\"deleteRecord(panel.record, $event)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n \r\n </mat-panel-description>\r\n <!--#endregion BOTTONI PER LE AZIONI -->\r\n </mat-expansion-panel-header>\r\n\r\n <!-- #region CONTENUTO -->\r\n <ng-container *ngIf=\"panel.pageState != null\">\r\n <lib-single-record\r\n [debugMode]=\"debugMode\"\r\n [record] = \"panel.record\" \r\n [endPointConfiguration] = \"endPointConfiguration\"\r\n [form]=\"form\"\r\n [userID]=\"userID\"\r\n [outCompileConfigurations]=\"outCompileConfigurations\"\r\n [pageState]=\"panel.pageState\"\r\n >\r\n\r\n </lib-single-record>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"selectedIndex == i\">\r\n\r\n <ng-container *ngIf=\"visualizzaContenuto\">\r\n <view-form-record \r\n *ngIf=\"loader && selectedRecord\" \r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\" \r\n [showBackButton]=\"false\">\r\n </view-form-record>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"modificaContenuto\">\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [userID]=\"userID\"\r\n \r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n \r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n </ng-container>\r\n\r\n </ng-container> -->\r\n\r\n <!--#endregion CONTENUTO -->\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <!-- <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar> -->\r\n </mat-card-footer>\r\n</mat-card>\r\n\r\n<!--#region old -->\r\n<!-- \r\n <div class=\"row eqp-dynamic-module-title\">\r\n <div class=\"col-md-6\">\r\n <h4 *ngIf=\"showTitle\">\r\n <b>Elenco {{ form.Name }}</b>\r\n </h4>\r\n </div>\r\n <div class=\"col-md-6 text-right pb-3\" *ngIf=\"defaultListActions.add\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"onAddViewEditRecord.emit(null)\"\r\n >\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi</span>\r\n </button>\r\n </div>\r\n </div> \r\n -->\r\n\r\n<!-- <eqp-table #tableRecords [data]=\"configurations.values\" [columns]=\"columns\"></eqp-table> -->\r\n\r\n<!-- \r\n <mat-accordion [hideToggle]=\"test\">\r\n <mat-expansion-panel\r\n *ngFor=\"let item of listConfigurations.values; index as i\"\r\n [expanded]=\"panelOpenState[i]\"\r\n [disabled]=\"1\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ item.AnswerDate | date : \"EEEE, d MMMM y, H:mm:ss\" }}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, true, i)\"\r\n >\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Modifica\"\r\n (click)=\"viewOrEditRecord(item, false, i)\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Duplica\"\r\n (click)=\"duplicateRecord(item)\"\r\n >\r\n <mat-icon>file_copy</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n class=\"record-icon\"\r\n aria-label=\"Elimina\"\r\n (click)=\"deleteRecord(item)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <span class=\"example-spacer\"></span>\r\n {{ form.Name }}\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <add-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [form]=\"form\"\r\n [record]=\"selectedRecord\"\r\n [onlyView]=\"onlyView\"\r\n [configurations]=\"outCompileConfigurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [userID]=\"userID\"\r\n (saveRecordEvent)=\"saveOrExitForm($event)\"\r\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\r\n >\r\n </add-form-record>\r\n\r\n <view-form-record\r\n *ngIf=\"loader && selectedRecord && panelOpenState[i] == true\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [record]=\"selectedRecord.ID\"\r\n [showBackButton]=\"false\"\r\n >\r\n </view-form-record>\r\n </mat-expansion-panel>\r\n </mat-accordion> \r\n -->\r\n<!--#endregion old -->", styles: ["::ng-deep .error-color{color:var(--danger)}::ng-deep .success-color{color:var(--success)}::ng-deep .dynaform-question{font-size:1em;font-weight:lighter}::ng-deep .dynaform-response{font-size:1.2em;font-weight:700}.mat-expansion-panel-header[aria-disabled=true]{color:#0000008a}\n"] }]
499
499
  }], ctorParameters: function () { return [{ type: i1.UtilityHelperService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { debugMode: [{
500
500
  type: Input
501
501
  }], configurations: [{
@@ -524,4 +524,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
524
524
  }], afterSaveRecordEvent: [{
525
525
  type: Output
526
526
  }] } });
527
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZvcm0tcmVjb3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXJlY29yZHMvbGlzdC12aWV3LWZvcm0tcmVjb3JkL2xpc3Qtdmlldy1mb3JtLXJlY29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2xpc3Qtdmlldy1mb3JtLXJlY29yZC9saXN0LXZpZXctZm9ybS1yZWNvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBS2IsTUFBTSxlQUFlLENBQUM7QUFXdkIsT0FBTyxFQUFhLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBVXBFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXpILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFHTCxhQUFhLEdBQ2QsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7O0FBYTFELE1BQU0sT0FBTywyQkFBMkI7SUFnRHRDLFlBQ1Usb0JBQTBDLEVBQzFDLGNBQWlDO1FBRGpDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBaERsQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBYTNCLFNBQUksR0FBUyxJQUFJLENBQUM7UUFDM0IsdUJBQWtCLEdBQ2hCLElBQUkseUNBQXlDLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQUcs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Q0FBQztnQkFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FDWixDQUFDO1lBRUYsOEJBQThCO1lBQzlCLHlCQUF5QjtZQUN6QixxREFBcUQ7U0FDdEQ7SUFDSCxDQUFDOzt5SEF2akJVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLDJuQkNwRHhDLHdnUUFzTnNCOzRGRGxLVCwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsdUJBQXVCOzJJQU14QixTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFjdUMsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1qQyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBS0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBR0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgybXJtU5nT25DaGFuZ2VzRmVhdHVyZSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJQXR0YWNobWVudERUTyB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQge1xyXG4gIENlbGxBbGlnbm1lbnRFbnVtLFxyXG4gIENvbmZpZ0NvbHVtbixcclxuICBFcXBUYWJsZUNvbXBvbmVudCxcclxuICBOdW1iZXJDb2x1bW5QaXBlLFxyXG4gIFR5cGVDb2x1bW4sXHJcbn0gZnJvbSBcIkBlcXByb2plY3QvZXFwLXRhYmxlXCI7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluUmVjb3JkLCBSZWNvcmQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hdHRhY2htZW50RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBEYXRlRmllbGQsXHJcbiAgRGF0ZVRpbWVUeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9kYXRlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgSW1hZ2VGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgTGlzdFZhbHVlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOdW1lcmljRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9udW1lcmljRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHRcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Q29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnIH0gZnJvbSBcIi4vLi4vLi4vLi4vLi4vL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEVuZFBvaW50Q29uZmlndXJhdGlvbixcclxuICBFbmRQb2ludERhdGFQYXJhbXMsXHJcbiAgUGFyYW1UeXBlRW51bSxcclxufSBmcm9tIFwiLi8uLi8uLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcblxyXG50eXBlIFBhbmVsID0geyBcclxuICByZWNvcmQ6IFJlY29yZCwgXHJcbiAgaXNPcGVuOiBib29sZWFuLCBcclxuICBwYWdlU3RhdGU6IHN0cmluZyBcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGlzdC12aWV3LWZvcm0tcmVjb3JkXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwibGlzdC12aWV3LWZvcm0tcmVjb3JkLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2xpc3Qtdmlldy1mb3JtLXJlY29yZC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RWaWV3Rm9ybVJlY29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBcclxuICBASW5wdXQoKSBkZWJ1Z01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkZWJ1Z0xvZyhtZXNzYWdlOiBzdHJpbmcsIGVsZW1lbnQ/OiBhbnkpe1xyXG4gICAgaWYodGhpcy5kZWJ1Z01vZGUpe1xyXG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBlbGVtZW50KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnO1xyXG4gIEBJbnB1dCgpIGNvbXBpbGVDb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XHJcbiAgb3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZztcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcclxuICBASW5wdXQoKSBmb3JtSUQ6IHN0cmluZztcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtID0gbnVsbDtcclxuICBkZWZhdWx0TGlzdEFjdGlvbnM6IER5bmFtaWNNb2R1bGVMaXN0Rm9ybVJlY29yZEFjdGlvbnNEZWZhdWx0ID1cclxuICAgIG5ldyBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCgpO1xyXG4gIHNob3dUaXRsZSA9IHRydWU7XHJcbiAgLy8gdmFsdWVzOiBBcnJheTxSZWNvcmQ+O1xyXG4gIHRlc3QgPSBmYWxzZTtcclxuICBvbmx5VmlldzogYm9vbGVhbjtcclxuICBzZWxlY3RlZFJlY29yZDogUmVjb3JkO1xyXG4gIGxvYWRlcjogYm9vbGVhbjtcclxuICBwYW5lbE9wZW5TdGF0ZTogYm9vbGVhbltdID0gbmV3IEFycmF5PGJvb2xlYW4+KCk7XHJcbiAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHZpc3VhbGl6emFDb250ZW51dG8gPSBmYWxzZTtcclxuICBtb2RpZmljYUNvbnRlbnV0byA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKFwidGFibGVSZWNvcmRzXCIsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUmVjb3JkczogRXFwVGFibGVDb21wb25lbnQ7XHJcblxyXG4gIGNvbHVtbnMgPSBuZXcgQXJyYXk8Q29uZmlnQ29sdW1uPigpO1xyXG4gIHBhbmVsczogQXJyYXk8UGFuZWw+XHJcblxyXG4gIC8vIGFkZCBuZXdcclxuICBAT3V0cHV0KCkgb25BZGRWaWV3RWRpdFJlY29yZDogRXZlbnRFbWl0dGVyPHtcclxuICAgIHJlY29yZDogUmVjb3JkO1xyXG4gICAgb25seVZpZXc6IGJvb2xlYW47XHJcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBSZWNvcmQ7IG9ubHlWaWV3OiBib29sZWFuIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJlY29yZDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgb25EdXBsaWNhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2F2ZVJlY29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlclNhdmVSZWNvcmRFdmVudDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnBhbmVsT3BlblN0YXRlID0gW1xyXG4gICAgLy8gICAuLi5BcnJheSh0aGlzLmNvbmZpZ3VyYXRpb25zLnZhbHVlcy5sZW5ndGggKyAxKSxcclxuICAgIC8vIF0ubWFwKCgpID0+IGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRMaXN0QWN0aW9ucyA9IHRoaXMuY29uZmlndXJhdGlvbnMuZGVmYXVsdExpc3RBY3Rpb25zO1xyXG4gICAgdGhpcy5zaG93VGl0bGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLnNob3dUaXRsZTtcclxuXHJcbiAgICB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucyA9IG5ldyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyhcclxuICAgICAgdGhpcy5jb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd1RpdGxlLFxyXG4gICAgICB0aGlzLmNvbXBpbGVDb25maWd1cmF0aW9ucy5zaG93U2F2ZUJ1dHRvbixcclxuICAgICAgdGhpcy5jb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd0JhY2tCdXR0b24sXHJcbiAgICAgIHRoaXMuY29tcGlsZUNvbmZpZ3VyYXRpb25zLnVzZXJJRFxyXG4gICAgKTtcclxuICAgIHRoaXMuZGVidWdMb2coXCJvdXRjb21waWxlQ29uZmlndXJhdGlvbnMgXCIsIHRoaXMub3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zKTtcclxuXHJcbiAgICB0aGlzLmdldEZvcm1CeUlEKCk7XHJcbiAgICAvLyB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucy51c2VySUQ7XHJcbiAgICAvLyB0aGlzLnZhbHVlcyA9IHRoaXMuY29uZmlndXJhdGlvbnMudmFsdWVzXHJcbiAgICAvLyB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMuZGVidWdMb2coJ25nT25DaGFuZ2VzJywgY2hhbmdlcyk7XHJcblxyXG4gICAgLy8gU2UgdmllbmUgbW9kaWZpY2F0byBpbCB2YWxvcmUgZGkgXCJuZ01vZGVsSW5wdXRcIiBhbGxvcmEgYWdnaW9ybmEgbCdpbnB1dFxyXG4gICAgaWYgKFxyXG4gICAgICBjaGFuZ2VzW1wiY29uZmlndXJhdGlvbnNcIl0gIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGNoYW5nZXNbXCJjb25maWd1cmF0aW9uc1wiXS5maXJzdENoYW5nZSA9PSBmYWxzZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudmFsdWVzID0gY2hhbmdlc1tcImNvbmZpZ3VyYXRpb25zXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5yZWxvYWRUYWJsZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3BlbmluZyhpbmRpY2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kaWNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUJ5SUQoaWQ6IHN0cmluZyA9IHRoaXMuZm9ybUlEKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtID09IG51bGwpIHtcclxuICAgICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiBpZCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCxcclxuICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuY29uZmlndXJlQ29sdW1ucygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge31cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJlQ29sdW1ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjb25maWd1cmFyZSBsZSBjb2xvbm5lIGRlbGxhIGVxcC10YWJsZS5cclxuICAgKi9cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbHVtbnMoKSB7XHJcbiAgICAvLyB0aGlzLmNyZWF0ZUFkZGl0aW9uYWxBY3Rpb25zKCk7XHJcbiAgICAvLyB0aGlzLmNyZWF0ZUNvbHVtbnNGcm9tRm9ybUZpZWxkcygpO1xyXG4gICAgdGhpcy5nZXRSZWNvcmRzQnlGb3JtSUQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmVjdXBlcmFyZSB0dXR0aSBpIHJlY29yZCBzYWx2YXRpIHBlciB1bmEgcGFydGljb2xhcmUgRm9ybS5cclxuICAgKiBMYSBjaGlhbWF0YSB2aWVuZSBlZmZldHR1YXRhIHNvbG8gc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gbCdlbmRQb2ludCBkYSB1c2FyZS5cclxuICAgKiBMYSByaXNwb3N0YSBkZWxsYSBjaGlhbWF0YSBkZXZlIGVzc2VyZSB1biBhcnJheSBkaSBvZ2dldHRpIGRpIHRpcG8gXCJEeW5SZWNvcmRcIlxyXG4gICAqIGEgcGFydGlyZSBkYWkgcXVhbGkgdmVuZ29ubyByaWNyZWF0aSBpIFJlY29yZCB1c2F0aSBuZWwgY2xpZW50LlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldFJlY29yZHNCeUZvcm1JRCgpIHtcclxuICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudXNlcklEID09IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgICAvLyBzZSBub24gY29ub3NjbyBsJ3V0ZW50ZVxyXG4gICAgICBhd2FpdCB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5Rm9ybUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBBcnJheTxEeW5SZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnTG9nKCdHZXRCeUZvcm1JREVuZFBvaW50JywgcmVzKVxyXG4gICAgICAgICAgdGhpcy5nZW5lcmF0ZUFuc3dlcnNBcnJheShyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudXNlcklEICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgLy8gc2UgY29ub3NjbyBsJ3V0ZW50ZVxyXG4gICAgICBsZXQgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBQYXJhbU5hbWU6IFwiRW50SURcIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5JRCxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIlVzZXJJRFwiLFxyXG4gICAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5jb25maWd1cmF0aW9ucy51c2VySUQsXHJcbiAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRBbGxCeUVudEFuZFVzZXJJREVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlczogQXJyYXk8RHluUmVjb3JkPikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnR2V0QWxsQnlFbnRBbmRVc2VySURFbmRQb2ludCcsIHJlcylcclxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBbnN3ZXJzQXJyYXkocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiY29udHJvbGxhcmUgbGUgY29uZmlndXJhemlvbmkgZGVsbCdlbmRwb2ludFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVBbnN3ZXJzQXJyYXkocmVzOiBBcnJheTxEeW5SZWNvcmQ+KXtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbnMudmFsdWVzID0gbmV3IEFycmF5PFJlY29yZD4oKTtcclxuICAgIHRoaXMucGFuZWxzID0gbmV3IEFycmF5PFBhbmVsPigpO1xyXG4gICAgcmVzLmZvckVhY2goKHIpID0+IHtcclxuICAgICAgdmFyIHRtcFJlYzogUmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgICB0bXBSZWMgPSBKU09OLnBhcnNlKHIuU2VyaWFsaXplZFZhbHVlcyk7XHJcbiAgICAgIHRtcFJlYy5JRCA9IHIuSUQ7XHJcbiAgICAgIHRtcFJlYy5FbnRJRCA9IHIuRW50SUQ7XHJcbiAgICAgIHRtcFJlYy5WZXJzaW9uID0gci5WZXJzaW9uO1xyXG4gICAgICB0bXBSZWMudXNlcklEID0gci51c2VySUQ7XHJcbiAgICAgIHRtcFJlYy5BbnN3ZXJEYXRlID0gci5BbnN3ZXJEYXRlO1xyXG4gICAgICB0bXBSZWMuSFRNTHJlYWRhYmxlVmFsdWVzID0gci5IVE1McmVhZGFibGVWYWx1ZXM7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMudmFsdWVzLnB1c2godG1wUmVjKTtcclxuICAgICAgdGhpcy5wYW5lbHMucHVzaCh7cmVjb3JkOiB0bXBSZWMsIGlzT3BlbjogZmFsc2UsIHBhZ2VTdGF0ZTogbnVsbH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoXykgPT4ge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDApOyAvLyByZWZyZXNoIHVpXHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYW5lbChwYW5lbDogYW55KSB7XHJcbiAgICB0aGlzLmRlYnVnTG9nKCd0b2dnbGVQYW5lbCcpXHJcbiAgICBpZiAoIXBhbmVsLmlzT3Blbikge1xyXG4gICAgICAgIHBhbmVsLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgcGFuZWwucGFnZVN0YXRlID0gJ3Zpc3VhbGl6emFDb250ZW51dG8nO1xyXG4gICAgICAvLyBTaW11bGEgdW4gY2FsY29sbyBhc2luY3Jvbm9cclxuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIH0sIDEwMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFuZWwuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIHBhbmVsLnBhZ2VTdGF0ZT0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYWdnaXVuZ2VyZSBuZWxsYSBjb2xvbm5hIFwiYWN0aW9uXCIgZGVsbGEgZXFwLXRhYmxlIGxlIGF6aW9uaSBzdWkgcmVjb3JkXHJcbiAgICogZGVmaW5pdGUgZGFsbCd1dGVudGUgYWxsJ2ludGVybm8gZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICAvLyBwcml2YXRlIGNyZWF0ZUFkZGl0aW9uYWxBY3Rpb25zKCkge1xyXG4gIC8vICAgaWYgKHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQgJiYgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuc29ydCgoYSwgYikgPT5cclxuICAvLyAgICAgICBhLk9yZGluYWxQb3NpdGlvbiA+IGIuT3JkaW5hbFBvc2l0aW9uXHJcbiAgLy8gICAgICAgICA/IDFcclxuICAvLyAgICAgICAgIDogYi5PcmRpbmFsUG9zaXRpb24gPiBhLk9yZGluYWxQb3NpdGlvblxyXG4gIC8vICAgICAgICAgPyAtMVxyXG4gIC8vICAgICAgICAgOiAwXHJcbiAgLy8gICAgICkuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgLy8gICAgICAgICAuZmluZCgoYykgPT4gYy5rZXkgPT09IFwiYWN0aW9uXCIpXHJcbiAgLy8gICAgICAgICAuYWN0aW9ucy5wdXNoKHtcclxuICAvLyAgICAgICAgICAgbmFtZTogYWN0aW9uLk5hbWUsXHJcbiAgLy8gICAgICAgICAgIGljb246IGFjdGlvbi5JY29uLFxyXG4gIC8vICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCByZWMgPSBlbGVtZW50O1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGN0eCA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmNvbnRleHQ7XHJcbiAgLy8gICAgICAgICAgICAgZXZhbChhY3Rpb24uQWN0aW9uKTtcclxuICAvLyAgICAgICAgICAgICAvLyBUT0RPOiBzYWx2YXJlIGxlIG1vZGlmaWNoZVxyXG4gIC8vICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBzY2F0ZW5hIGwnZXZlbnRvIGRpIE91dHB1dCBwZXIgbW9zdHJhcmUgbyBtb2RpZmljYXJlIGlsIHJlY29yZFxyXG4gICAqIHNlbGV6aW9uYXRvIHN1bGxhIGVxcC10YWJsZS5cclxuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZCBkYSB2aXN1YWxpenphcmUgbyBtb2RpZmljYXJlIHNlbGV6aW9uYXRvIHN1bGxhIGVxcC10YWJsZS5cclxuICAgKiBAcGFyYW0gb25seVZpZXcgU2UgVFJVRSB2aWVuZSBtb3N0cmF0byBpbCBjb21wb25lbnRlIGFkZC1mb3JtLXJlY29yZCBpbiBzb2xhIGxldHR1cmEuXHJcbiAgICovXHJcbiAgdmlld09yRWRpdFJlY29yZChyZWNvcmQ6IFJlY29yZCwgb25seVZpZXc6IGJvb2xlYW4sIGkpIHtcclxuICAgIHRoaXMuZGVidWdMb2coJ3ZpZXdPckVkaXRSZWNvcmQnKVxyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMub25BZGRWaWV3RWRpdFJlY29yZDIoeyByZWNvcmQsIG9ubHlWaWV3IH0pO1xyXG4gICAgdGhpcy5wYW5lbE9wZW5TdGF0ZS5tYXAoKCkgPT4gZmFsc2UpO1xyXG4gICAgdGhpcy5wYW5lbE9wZW5TdGF0ZVtpXSA9IHRoaXMucGFuZWxPcGVuU3RhdGVbaV0gPT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIC8vIHRoaXMub25BZGRWaWV3RWRpdFJlY29yZC5lbWl0KHsgcmVjb3JkLCBvbmx5VmlldyB9KTtcclxuICB9ICBcclxuICB2aWV3UmVjb3JkKHBhbmVsOiBQYW5lbCwgb25seVZpZXc6IGJvb2xlYW4sIGksIGV2OiBFdmVudCkgeyAgICBcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZGVidWdMb2coJ3ZpZXdSZWNvcmQnKVxyXG4gICAgbGV0IHJlY29yZCA9IHBhbmVsLnJlY29yZFxyXG4gICAgdGhpcy52aXN1YWxpenphQ29udGVudXRvID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kaWZpY2FDb250ZW51dG8gPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQyKHsgcmVjb3JkLCBvbmx5VmlldyB9KTtcclxuICAgIGlmIChwYW5lbC5wYWdlU3RhdGUgID09ICd2aXN1YWxpenphQ29udGVudXRvJykge1xyXG4gICAgICBwYW5lbC5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgcGFuZWwucGFnZVN0YXRlPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFuZWwuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgcGFuZWwucGFnZVN0YXRlID0gJ3Zpc3VhbGl6emFDb250ZW51dG8nO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYW5lbE9wZW5TdGF0ZS5tYXAoKCkgPT4gZmFsc2UpO1xyXG4gICAgdGhpcy5wYW5lbE9wZW5TdGF0ZVtpXSA9IHRoaXMucGFuZWxPcGVuU3RhdGVbaV0gPT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIC8vIHRoaXMub25BZGRWaWV3RWRpdFJlY29yZC5lbWl0KHsgcmVjb3JkLCBvbmx5VmlldyB9KTtcclxuICB9XHJcbiAgRWRpdFJlY29yZChwYW5lbDogUGFuZWwsIG9ubHlWaWV3OiBib29sZWFuLCBpLCBldjogRXZlbnQpIHsgICAgXHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRlYnVnTG9nKCdFZGl0UmVjb3JkJylcclxuXHJcbiAgICBsZXQgcmVjb3JkID0gcGFuZWwucmVjb3JkXHJcbiAgICB0aGlzLnZpc3VhbGl6emFDb250ZW51dG8gPSBmYWxzZTtcclxuICAgIHRoaXMubW9kaWZpY2FDb250ZW51dG8gPSB0cnVlO1xyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMub25BZGRWaWV3RWRpdFJlY29yZDIoeyByZWNvcmQsIG9ubHlWaWV3IH0pO1xyXG4gICAgaWYgKHBhbmVsLnBhZ2VTdGF0ZSAgPT0gJ21vZGlmaWNhQ29udGVudXRvJykge1xyXG4gICAgICBwYW5lbC5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgcGFuZWwucGFnZVN0YXRlPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFuZWwuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgcGFuZWwucGFnZVN0YXRlID0gJ21vZGlmaWNhQ29udGVudXRvJztcclxuICAgIH1cclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGUubWFwKCgpID0+IGZhbHNlKTtcclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGVbaV0gPSB0aGlzLnBhbmVsT3BlblN0YXRlW2ldID09IHRydWUgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAvLyB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQuZW1pdCh7IHJlY29yZCwgb25seVZpZXcgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGR1cGxpY2FyZSB1biByZWNvcmQgZGVsbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZCBkYSBkdXBsaWNhcmUuXHJcbiAgICovXHJcbiAgZHVwbGljYXRlUmVjb3JkKHJlY29yZDogUmVjb3JkLCBldjogRXZlbnQpIHsgICAgXHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uRHVwbGljYXRlUmVjb3JkLmVtaXQocmVjb3JkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZWxpbWluYXJlIHVuIHJlY29yZCBkYWxsYSBsaXN0YS5cclxuICAgKiBAcGFyYW0gcmVjb3JkIFJlY29yZCBkYSBlbGltaW5hcmUgc2VsZXppb25hdG8gc3VsbGEgZXFwLXRhYmxlLlxyXG4gICAqL1xyXG4gIGRlbGV0ZVJlY29yZChyZWNvcmQ6IFJlY29yZCwgZXY6IEV2ZW50KSB7ICAgIFxyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vbkRlbGV0ZVJlY29yZC5lbWl0KHJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNyZWFyZSBsYSBjb25maWd1cmF6aW9uZSBkZWxsZSBjb2xvbm5lIHBlciBsYSBlcXAtdGFibGUuXHJcbiAgICogSW5kaXZpZHVhIGkgQmFzZUZpZWxkIGRhIG1vc3RyYXJlIGUgbGkgdXNhIHBlciBjcmVhcmUgbGUgQ29uZmlnQ29sdW1uLlxyXG4gICAqIExlIGNvbG9ubmUgdmVuZ29ubyBjcmVhdGUgcGVyIGkgQmFzZUZpZWxkIGNvbiBpbCBmbGFnIEluTGlzdFZpZXcgYSBUUlVFXHJcbiAgICogb3BwdXJlLCBuZWwgY2FzbyBub24gc2lhbm8gc3RhdGkgc3BlY2lmaWNhdGkgaSBjYW1waSBkYSB2aXN1YWxpenphcmUsXHJcbiAgICogc2VsZXppb25hIGkgcHJpbWkgNi5cclxuICAgKi9cclxuICAvLyBwcml2YXRlIGNyZWF0ZUNvbHVtbnNGcm9tRm9ybUZpZWxkcygpIHtcclxuICAvLyAgIHZhciBmaWVsZHNGb3JDb2x1bW5zOiBBcnJheTxCYXNlRmllbGQ+O1xyXG4gIC8vICAgaWYgKHRoaXMuZm9ybS5GaWVsZHMuZmluZCgoZikgPT4gZi5Jbkxpc3RWaWV3KSkge1xyXG4gIC8vICAgICBmaWVsZHNGb3JDb2x1bW5zID0gdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoKGYpID0+IGYuSW5MaXN0Vmlldyk7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICBmaWVsZHNGb3JDb2x1bW5zID0gdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoKGYpID0+IGYuT3JkaW5hbFBvc2l0aW9uIDwgNik7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWVsZHNGb3JDb2x1bW5zXHJcbiAgLy8gICAgIC5zb3J0KChhLCBiKSA9PlxyXG4gIC8vICAgICAgIGEuT3JkaW5hbFBvc2l0aW9uID4gYi5PcmRpbmFsUG9zaXRpb25cclxuICAvLyAgICAgICAgID8gMVxyXG4gIC8vICAgICAgICAgOiBiLk9yZGluYWxQb3NpdGlvbiA+IGEuT3JkaW5hbFBvc2l0aW9uXHJcbiAgLy8gICAgICAgICA/IC0xXHJcbiAgLy8gICAgICAgICA6IDBcclxuICAvLyAgICAgKVxyXG4gIC8vICAgICAuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAvLyAgICAgICB0aGlzLmNvbHVtbnMucHVzaCh0aGlzLmNyZWF0ZUZpZWxkQ29sdW1uKGZpZWxkKSk7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgbCdvZ2dldHRvIENvbmZpZ3VyZUNvbHVtbiBjaGUgcmFwcHJlc2VudGEgaWwgQmFzZUZpZWxkIHBhc3NhdG8gaW4gaW5wdXQuXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBwZXIgY3VpIGNyZWFyZSBsYSBjb2xvbm5hIG5lbGxhIGVxcC10YWJsZVxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuYSBDb25maWdDb2x1bW4gcGVyIGxhIGVxcC10YWJsZVxyXG4gICAqL1xyXG4gIC8vIHByaXZhdGUgY3JlYXRlRmllbGRDb2x1bW4oZmllbGQ6IEJhc2VGaWVsZCk6IENvbmZpZ0NvbHVtbiB7XHJcbiAgLy8gICB2YXIgY29sdW1uOiBDb25maWdDb2x1bW4gPSB7IGtleTogZmllbGQuTmFtZSwgZGlzcGxheTogZmllbGQuTGFiZWwgfTtcclxuICAvLyAgIHN3aXRjaCAoZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgLy8gICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkJvb2xlYW5vXCJdOlxyXG4gIC8vICAgICAgIGNvbHVtbi50eXBlID0gVHlwZUNvbHVtbi5Cb29sZWFuO1xyXG4gIC8vICAgICAgIGNvbHVtbi5ib29sZWFuVmFsdWVzID0ge1xyXG4gIC8vICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLXRpbWVzIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgLy8gICAgICAgICB0cnVlOiAnPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBzdWNjZXNzLWNvbG9yXCI+PC9pPicsXHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgICBjb2x1bW4uc3R5bGVzID0ge1xyXG4gIC8vICAgICAgICAgZmxleDogXCIwIDAgNyVcIixcclxuICAvLyAgICAgICAgIGNlbGxBbGlnbm1lbnQ6IENlbGxBbGlnbm1lbnRFbnVtLkNFTlRFUixcclxuICAvLyAgICAgICB9O1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJEYXRhIGUvbyBvcmFcIl06XHJcbiAgLy8gICAgICAgaWYgKFxyXG4gIC8vICAgICAgICAgKGZpZWxkIGFzIERhdGVGaWVsZCkuSXNPbmx5RGF0ZSAhPSBEYXRlVGltZVR5cGVFbnVtW1wiU29sbyBvcmFyaW9cIl1cclxuICAvLyAgICAgICApIHtcclxuICAvLyAgICAgICAgIGNvbHVtbi50eXBlID0gVHlwZUNvbHVtbi5EYXRlO1xyXG4gIC8vICAgICAgICAgaWYgKFxyXG4gIC8vICAgICAgICAgICAoZmllbGQgYXMgRGF0ZUZpZWxkKS5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bXCJEYXRhIGUgb3JhXCJdXHJcbiAgLy8gICAgICAgICApIHtcclxuICAvLyAgICAgICAgICAgY29sdW1uLmZvcm1hdCA9IFwiZGQvTU0veXl5eSBISDptbVwiO1xyXG4gIC8vICAgICAgICAgfSBlbHNlIGlmIChcclxuICAvLyAgICAgICAgICAgKGZpZWxkIGFzIERhdGVGaWVsZCkuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtW1wiU29sbyBkYXRhXCJdXHJcbiAgLy8gICAgICAgICApIHtcclxuICAvLyAgICAgICAgICAgY29sdW1uLmZvcm1hdCA9IChmaWVsZCBhcyBEYXRlRmllbGQpLkRhdGVGb3JtYXRcclxuICAvLyAgICAgICAgICAgICA/IChmaWVsZCBhcyBEYXRlRmllbGQpLkRhdGVGb3JtYXQucmVwbGFjZShcIkREXCIsIFwiZGRcIilcclxuICAvLyAgICAgICAgICAgICA6IFwiZGQvTU0veXl5eVwiO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gbnVtZXJpY29cIl06XHJcbiAgLy8gICAgICAgaWYgKChmaWVsZCBhcyBOdW1lcmljRmllbGQpLkN1cnJlbmN5U3ltYm9sKSB7XHJcbiAgLy8gICAgICAgICBjb2x1bW4ubnVtYmVyUGlwZSA9IE51bWJlckNvbHVtblBpcGUuQ1VSUkVOQ1k7XHJcbiAgLy8gICAgICAgICBjb2x1bW4uY3VycmVuY3lQaXBlQ29kZSA9IChmaWVsZCBhcyBOdW1lcmljRmllbGQpLkN1cnJlbmN5U3ltYm9sO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAoIShmaWVsZCBhcyBOdW1lcmljRmllbGQpLklzSW50ZWdlcikge1xyXG4gIC8vICAgICAgICAgY29sdW1uLm51bWJlclBpcGUgPSBOdW1iZXJDb2x1bW5QaXBlLkRFQ0lNQUw7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJBbGxlZ2F0b1wiXTpcclxuICAvLyAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiSW1tYWdpbmVcIl06XHJcbiAgLy8gICAgICAgY29sdW1uLnZhbHVlID0gKGVsZW1lbnQ6IFJlY29yZCkgPT4ge1xyXG4gIC8vICAgICAgICAgaWYgKFxyXG4gIC8vICAgICAgICAgICAoZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5Jc011bHRpQXR0YWNoIHx8XHJcbiAgLy8gICAgICAgICAgICgoZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbiAmJlxyXG4gIC8vICAgICAgICAgICAgIChmaWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLklzTXVsdGlBdHRhY2gpXHJcbiAgLy8gICAgICAgICApIHtcclxuICAvLyAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbZmllbGQuTmFtZV0gIT0gbnVsbCAmJiBlbGVtZW50W2ZpZWxkLk5hbWVdLmxlbmd0aCA+IDBcclxuICAvLyAgICAgICAgICAgICA/IChlbGVtZW50W2ZpZWxkLk5hbWVdIGFzIEFycmF5PElBdHRhY2htZW50RFRPPilcclxuICAvLyAgICAgICAgICAgICAgICAgLm1hcCgoYSkgPT4gYS5GaWxlTmFtZSlcclxuICAvLyAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKVxyXG4gIC8vICAgICAgICAgICAgIDogbnVsbDtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJldHVybiBlbGVtZW50W2ZpZWxkLk5hbWVdICE9IG51bGwgJiYgZWxlbWVudFtmaWVsZC5OYW1lXS5sZW5ndGggPiAwXHJcbiAgLy8gICAgICAgICAgICAgPyAoZWxlbWVudFtmaWVsZC5OYW1lXSBhcyBBcnJheTxJQXR0YWNobWVudERUTz4pWzBdLkZpbGVOYW1lXHJcbiAgLy8gICAgICAgICAgICAgOiBudWxsO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgICAgY29sdW1uLmlzU29ydGFibGUgPSBmYWxzZTtcclxuICAvLyAgICAgICBjb2x1bW4uaXNTZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXTpcclxuICAvLyAgICAgICBjb2x1bW4udmFsdWUgPSAoZWxlbWVudDogUmVjb3JkKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoKGZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Jc011bHRpQ2hvaWNoZSkge1xyXG4gIC8vICAgICAgICAgICBpZiAoIWVsZW1lbnRbZmllbGQuTmFtZV0gfHwgZWxlbWVudFtmaWVsZC5OYW1lXS5sZW5ndGggPT0gMCkge1xyXG4gIC8vICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gIC8vICAgICAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cygoZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMpXHJcbiAgLy8gICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgICBlbGVtZW50W2ZpZWxkLk5hbWVdLmluY2x1ZGVzKFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trXVxyXG4gIC8vICAgICAgICAgICAgICAgICApXHJcbiAgLy8gICAgICAgICAgICAgICApXHJcbiAgLy8gICAgICAgICAgICAgICAuam9pbihcIiwgXCIpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoKGZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKS5maW5kKFxyXG4gIC8vICAgICAgICAgICAgIChrKSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgKGZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzW2tdID09IGVsZW1lbnRbZmllbGQuTmFtZV1cclxuICAvLyAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9O1xyXG4gIC8vICAgICAgIGNvbHVtbi5pc1NvcnRhYmxlID0gZmFsc2U7XHJcbiAgLy8gICAgICAgY29sdW1uLmlzU2VhcmNoYWJsZSA9IGZhbHNlO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJMb29rdXBcIl06XHJcbiAgLy8gICAgICAgLy8gVE9ET1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIGNvbHVtbjtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmljYXJpY2FyZSBpIGRhdGkgZGVsbGEgZXFwLXRhYmxlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVsb2FkVGFibGVzKCkge1xyXG4gICAgaWYgKHRoaXMudGFibGVSZWNvcmRzKSB7XHJcbiAgICAgIHRoaXMudGFibGVSZWNvcmRzLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGkgZGF0aSBpbnNlcml0aSBkYWxsJ3V0ZW50ZSB1bmEgdm9sdGEgY29uY2x1c2EgbGEgY29tcGlsYXppb25lIGRlbGxhIGZvcm0uXHJcbiAgICovXHJcbiAgc2F2ZU9yRXhpdEZvcm0ocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIHRoaXMuc2F2ZVJlY29yZEV2ZW50LmVtaXQocmVjb3JkKTtcclxuICB9XHJcbiAgb25BZnRlclNhdmVSZWNvcmQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gcXVhbmRvIHNpIHZ1b2xlIGFnZ2l1bmdlcmUsIHZpc3VhbGl6emFyZSBvIG1vZGlmaWNhcmUgdW4gcmVjb3JkLlxyXG4gICAqIFNlIGwnZXZlbnRvIMOoIG51bGwgdnVvbCBkaXJlIGNoZSBzdGlhbW8gYWdnaXVuZ2VuZG8gdW4gbnVvdm8gcmVjb3JkIGFsdHJpbWVudGkgc2lhbW8gaW4gbW9kaWZpY2FcclxuICAgKiBvIHZpc3VhbGl6emF6aW9uZS4gSW4gcXVlc3RpIHVsdGltaSBkdWUgY2FzaSwgc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kcG9pbnQgcGVyIGlsIHJlY3VwZXJvXHJcbiAgICogZGVsIHJlY29yZCBjb21wbGV0byBhbGxvcmEgdmllbmUgZWZmZXR0dWF0YSB1bmEgY2hpYW1hdGEgYWwgc2VydmVyLCBhbHRyaW1lbnRpIHZpZW5lIHVzYXRvIGwnb2dnZXR0byBzZWxlemlvbmF0by5cclxuICAgKiBAcGFyYW0gZXZlbnQgT2dnZXR0byBjb24gZHVlIHByb3ByaWV0w6A6XHJcbiAgICogXCJyZWNvcmRcIiA9IG9nZ2V0dG8gZGEgbW9kaWZpY2FyZS92aXN1YWxpenphcmUsXHJcbiAgICogXCJvbmx5Vmlld1wiID0gYm9vbGVhbm8gKHNlIFRSVUUgc2lhbW8gaW4gdmlzdWFsaXp6YXppb25lIGFsdHJpbWVudGkgaW4gbW9kaWZpY2EpXHJcbiAgICovXHJcbiAgb25BZGRWaWV3RWRpdFJlY29yZDIoZXZlbnQ6IHsgcmVjb3JkOiBSZWNvcmQ7IG9ubHlWaWV3OiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLm9ubHlWaWV3ID0gZXZlbnQub25seVZpZXc7XHJcblxyXG4gICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd0JhY2tCdXR0b24gPSBmYWxzZTtcclxuICAgIHRoaXMub3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dTYXZlQnV0dG9uID0gIWV2ZW50Lm9ubHlWaWV3O1xyXG4gICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd1RpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3JkcyAmJlxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50XHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vIHByZXBhcm8gbGEgdmVyc2lvbmUgY29ycmV0dGEgZGVsIGZvcm1cclxuICAgICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgICAgIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5FbnRJRCxcclxuICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBQYXJhbU5hbWU6IFwiVmVyc2lvblwiLFxyXG4gICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuVmVyc2lvbixcclxuICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlEQW5kVmVyc2lvbkVuZFBvaW50LFxyXG4gICAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG5cclxuICAgICAgICAgICAgLy8gcHJlcGFybyBpIGRhdGkgZGVsIHJlY29yZFxyXG4gICAgICAgICAgICB2YXIgZHluYW1pY1JlY29yZFBhcmFtcyA9IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICAgICAgICAgIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5JRCxcclxuICAgICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICAgICAgICAgIGR5bmFtaWNSZWNvcmRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgKHJlczogRHluUmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gSlNPTi5wYXJzZShyZXMuU2VyaWFsaXplZFZhbHVlcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkLklEID0gcmVzLklEO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZC5FbnRJRCA9IHJlcy5FbnRJRDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQudXNlcklEID0gcmVzLnVzZXJJRDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQuVmVyc2lvbiA9IHJlcy5WZXJzaW9uO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudC5yZWNvcmQpKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMub25seVZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHt9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkUmVjb3JkID0gbnVsbDtcclxuICAgICAgLy8gdGhpcy5vbmx5VmlldyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLnZpZXdNb2RlID0gRHluYW1pY01vZHVsZVZpZXdNb2RlRW51bS5DT01QSUxFO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPG1hdC1jYXJkIGNsYXNzPVwibGlzdC12aWV3LWZvcm0tcmVjb3JkXCI+XHJcbiAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgPG1hdC1jYXJkLXRpdGxlICpuZ0lmPVwic2hvd1RpdGxlICYmIGxvYWRlclwiPkVsZW5jbyB7eyBmb3JtLk5hbWUgfX08L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPCEtLSA8bWF0LWNhcmQtc3VidGl0bGU+U3RhcnQ8L21hdC1jYXJkLXN1YnRpdGxlPiAtLT5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICA8YnV0dG9uIFxyXG4gICAgICAgICpuZ0lmPVwiZGVmYXVsdExpc3RBY3Rpb25zLmFkZFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBcclxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBcclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwib25BZGRWaWV3RWRpdFJlY29yZC5lbWl0KG51bGwpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPCEtLSA8YnV0dG9uIG1hdC1idXR0b24+TElLRTwvYnV0dG9uPiAtLT5cclxuICAgICAgPCEtLSA8YnV0dG9uIG1hdC1idXR0b24+U0hBUkU8L2J1dHRvbj4gLS0+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG5cclxuXHJcbiAgICA8bWF0LWFjY29yZGlvbiBbaGlkZVRvZ2dsZV09XCJ0ZXN0XCIgW211bHRpXT1cInRydWVcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHBhbmVsIG9mIHBhbmVsczsgaW5kZXggYXMgaVwiIFxyXG4gICAgICAgIFtleHBhbmRlZF09XCJwYW5lbC5pc09wZW5cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIxXCIgXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwocGFuZWwpXCI+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICB7eyBmb3JtLk5hbWUgfX0gdi57eyBwYW5lbC5yZWNvcmQuVmVyc2lvbiB9fSAtIHt7IHBhbmVsLnJlY29yZC5BbnN3ZXJEYXRlIHwgZGF0ZSA6IFwiRUVFRSwgZCBNTU1NIHksIEg6bW06c3NcIiB9fVxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8IS0tI3JlZ2lvbiBCT1RUT05JIFBFUiBMRSBBWklPTkkgLS0+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJlY29yZC1pY29uIHZpZXctYnV0dG9uLWljb25cIiBhcmlhLWxhYmVsPVwiVmlzdWFsaXp6YVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdExpc3RBY3Rpb25zLnZpZXcgPT0gdHJ1ZSAmJiAoZGVmYXVsdExpc3RBY3Rpb25zLmVkaXQgPT0gdHJ1ZSB8fCBkZWZhdWx0TGlzdEFjdGlvbnMuZHVwbGljYXRlID09IHRydWUgfHwgZGVmYXVsdExpc3RBY3Rpb25zLmRlbGV0ZSA9PSB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdSZWNvcmQocGFuZWwsIHRydWUsIGksICRldmVudClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJlY29yZC1pY29uIGVkaXQtYnV0dG9uLWljb25cIiBhcmlhLWxhYmVsPVwiTW9kaWZpY2FcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImRlZmF1bHRMaXN0QWN0aW9ucy5lZGl0ID09IHRydWVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJFZGl0UmVjb3JkKHBhbmVsLCBmYWxzZSwgaSwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicmVjb3JkLWljb24gZHVwbGljYXRlLWJ1dHRvbi1pY29uXCIgYXJpYS1sYWJlbD1cIkR1cGxpY2FcIiBcclxuICAgICAgICAgICAgKm5nSWY9XCJkZWZhdWx0TGlzdEFjdGlvbnMuZHVwbGljYXRlID09IHRydWVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlUmVjb3JkKHBhbmVsLnJlY29yZCwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2NvcHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyZWNvcmQtaWNvbiBkZWxldGUtYnV0dG9uLWljb25cIiBhcmlhLWxhYmVsPVwiRWxpbWluYVwiIFxyXG4gICAgICAgICAgICAqbmdJZj1cImRlZmF1bHRMaXN0QWN0aW9ucy5kZWxldGUgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWNvcmQocGFuZWwucmVjb3JkLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4YW1wbGUtc3BhY2VyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgPCEtLSNlbmRyZWdpb24gQk9UVE9OSSBQRVIgTEUgQVpJT05JIC0tPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgIDwhLS0gI3JlZ2lvbiBDT05URU5VVE8gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhbmVsLnBhZ2VTdGF0ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICA8bGliLXNpbmdsZS1yZWNvcmRcclxuICAgICAgICAgICAgW2RlYnVnTW9kZV09XCJkZWJ1Z01vZGVcIlxyXG4gICAgICAgICAgICBbcmVjb3JkXSA9IFwicGFuZWwucmVjb3JkXCIgXHJcbiAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dID0gXCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgW3VzZXJJRF09XCJ1c2VySURcIlxyXG4gICAgICAgICAgICBbb3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zXT1cIm91dENvbXBpbGVDb25maWd1cmF0aW9uc1wiXHJcbiAgICAgICAgICAgIFtwYWdlU3RhdGVdPVwicGFuZWwucGFnZVN0YXRlXCJcclxuICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICA8L2xpYi1zaW5nbGUtcmVjb3JkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEluZGV4ID09IGlcIj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlzdWFsaXp6YUNvbnRlbnV0b1wiPlxyXG4gICAgICAgICAgICA8dmlldy1mb3JtLXJlY29yZCBcclxuICAgICAgICAgICAgICAqbmdJZj1cImxvYWRlciAmJiBzZWxlY3RlZFJlY29yZFwiIFxyXG4gICAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCJcclxuICAgICAgICAgICAgICBbcmVjb3JkXT1cInNlbGVjdGVkUmVjb3JkLklEXCIgXHJcbiAgICAgICAgICAgICAgW3Nob3dCYWNrQnV0dG9uXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvdmlldy1mb3JtLXJlY29yZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RpZmljYUNvbnRlbnV0b1wiPlxyXG4gICAgICAgICAgICA8YWRkLWZvcm0tcmVjb3JkXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkZXIgJiYgc2VsZWN0ZWRSZWNvcmRcIlxyXG4gICAgICAgICAgICAgIFtvbmx5Vmlld109XCJvbmx5Vmlld1wiXHJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgICAgICAgW3JlY29yZF09XCJzZWxlY3RlZFJlY29yZFwiXHJcbiAgICAgICAgICAgICAgW3VzZXJJRF09XCJ1c2VySURcIlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgIFtjb25maWd1cmF0aW9uc109XCJvdXRDb21waWxlQ29uZmlndXJhdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCJcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAoc2F2ZVJlY29yZEV2ZW50KT1cInNhdmVPckV4aXRGb3JtKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChhZnRlclNhdmVSZWNvcmRFdmVudCk9XCJvbkFmdGVyU2F2ZVJlY29yZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hZGQtZm9ybS1yZWNvcmQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG5cclxuICAgICAgICA8IS0tI2VuZHJlZ2lvbiBDT05URU5VVE8gLS0+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDwvbWF0LWFjY29yZGlvbj5cclxuXHJcblxyXG4gIDwvbWF0LWNhcmQtY29udGVudD5cclxuICA8bWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgPCEtLSA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj4gLS0+XHJcbiAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbjwvbWF0LWNhcmQ+XHJcblxyXG48IS0tI3JlZ2lvbiBvbGQgLS0+XHJcbjwhLS0gIFxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgZXFwLWR5bmFtaWMtbW9kdWxlLXRpdGxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgPGg0ICpuZ0lmPVwic2hvd1RpdGxlXCI+XHJcbiAgICAgICAgPGI+RWxlbmNvIHt7IGZvcm0uTmFtZSB9fTwvYj5cclxuICAgICAgPC9oND5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRleHQtcmlnaHQgcGItM1wiICpuZ0lmPVwiZGVmYXVsdExpc3RBY3Rpb25zLmFkZFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwib25BZGRWaWV3RWRpdFJlY29yZC5lbWl0KG51bGwpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj4gXHJcbiAgLS0+XHJcblxyXG48IS0tIDxlcXAtdGFibGUgI3RhYmxlUmVjb3JkcyBbZGF0YV09XCJjb25maWd1cmF0aW9ucy52YWx1ZXNcIiBbY29sdW1uc109XCJjb2x1bW5zXCI+PC9lcXAtdGFibGU+IC0tPlxyXG5cclxuPCEtLSBcclxuICA8bWF0LWFjY29yZGlvbiBbaGlkZVRvZ2dsZV09XCJ0ZXN0XCI+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0Q29uZmlndXJhdGlvbnMudmFsdWVzOyBpbmRleCBhcyBpXCJcclxuICAgICAgW2V4cGFuZGVkXT1cInBhbmVsT3BlblN0YXRlW2ldXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIjFcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIHt7IGl0ZW0uQW5zd2VyRGF0ZSB8IGRhdGUgOiBcIkVFRUUsIGQgTU1NTSB5LCBIOm1tOnNzXCIgfX1cclxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJyZWNvcmQtaWNvblwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb2RpZmljYVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ2aWV3T3JFZGl0UmVjb3JkKGl0ZW0sIHRydWUsIGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInJlY29yZC1pY29uXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vZGlmaWNhXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdPckVkaXRSZWNvcmQoaXRlbSwgZmFsc2UsIGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInJlY29yZC1pY29uXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkR1cGxpY2FcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlUmVjb3JkKGl0ZW0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVjb3JkLWljb25cIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRWxpbWluYVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWNvcmQoaXRlbSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJleGFtcGxlLXNwYWNlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7IGZvcm0uTmFtZSB9fVxyXG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgPGFkZC1mb3JtLXJlY29yZFxyXG4gICAgICAgICpuZ0lmPVwibG9hZGVyICYmIHNlbGVjdGVkUmVjb3JkICYmIHBhbmVsT3BlblN0YXRlW2ldID09IHRydWVcIlxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmRcIlxyXG4gICAgICAgIFtvbmx5Vmlld109XCJvbmx5Vmlld1wiXHJcbiAgICAgICAgW2NvbmZpZ3VyYXRpb25zXT1cIm91dENvbXBpbGVDb25maWd1cmF0aW9uc1wiXHJcbiAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgIFt1c2VySURdPVwidXNlcklEXCJcclxuICAgICAgICAoc2F2ZVJlY29yZEV2ZW50KT1cInNhdmVPckV4aXRGb3JtKCRldmVudClcIlxyXG4gICAgICAgIChhZnRlclNhdmVSZWNvcmRFdmVudCk9XCJvbkFmdGVyU2F2ZVJlY29yZCgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2FkZC1mb3JtLXJlY29yZD5cclxuXHJcbiAgICAgIDx2aWV3LWZvcm0tcmVjb3JkXHJcbiAgICAgICAgKm5nSWY9XCJsb2FkZXIgJiYgc2VsZWN0ZWRSZWNvcmQgJiYgcGFuZWxPcGVuU3RhdGVbaV0gPT0gdHJ1ZVwiXHJcbiAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmQuSURcIlxyXG4gICAgICAgIFtzaG93QmFja0J1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgID5cclxuICAgICAgPC92aWV3LWZvcm0tcmVjb3JkPlxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDwvbWF0LWFjY29yZGlvbj4gXHJcbiAgLS0+XHJcbjwhLS0jZW5kcmVnaW9uIG9sZCAtLT4iXX0=
527
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWZvcm0tcmVjb3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXJlY29yZHMvbGlzdC12aWV3LWZvcm0tcmVjb3JkL2xpc3Qtdmlldy1mb3JtLXJlY29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2xpc3Qtdmlldy1mb3JtLXJlY29yZC9saXN0LXZpZXctZm9ybS1yZWNvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBS2IsTUFBTSxlQUFlLENBQUM7QUFXdkIsT0FBTyxFQUFhLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBVXBFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXpILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFHTCxhQUFhLEdBQ2QsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7O0FBYTFELE1BQU0sT0FBTywyQkFBMkI7SUFHdEMsUUFBUSxDQUFDLE9BQWUsRUFBRSxPQUFhO1FBQ3JDLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUM5QjtJQUNILENBQUM7SUF5Q0QsWUFDVSxvQkFBMEMsRUFDMUMsY0FBaUM7UUFEakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxtQkFB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QUM7Z0JBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckIsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQ1osQ0FBQztZQUVGLDhCQUE4QjtZQUM5Qix5QkFBeUI7WUFDekIscURBQXFEO1NBQ3REO0lBQ0gsQ0FBQzs7eUhBdmpCVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwybkJDcER4QyxzalFBcU5zQjs0RkRqS1QsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHVCQUF1QjsySUFNeEIsU0FBUztzQkFBakIsS0FBSztnQkFPRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBY3VDLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNakMsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUtHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUdHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIMm1ybVOZ09uQ2hhbmdlc0ZlYXR1cmUsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSUF0dGFjaG1lbnREVE8gfSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHtcclxuICBDZWxsQWxpZ25tZW50RW51bSxcclxuICBDb25maWdDb2x1bW4sXHJcbiAgRXFwVGFibGVDb21wb25lbnQsXHJcbiAgTnVtYmVyQ29sdW1uUGlwZSxcclxuICBUeXBlQ29sdW1uLFxyXG59IGZyb20gXCJAZXFwcm9qZWN0L2VxcC10YWJsZVwiO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsXCI7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IER5blJlY29yZCwgUmVjb3JkIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWxcIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvYXR0YWNobWVudEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgRGF0ZUZpZWxkLFxyXG4gIERhdGVUaW1lVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvZGF0ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXNcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Rm9ybVJlY29yZEFjdGlvbnNEZWZhdWx0XCI7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlTGlzdENvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gXCIuLy4uLy4uLy4uLy4uLy9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBFbmRQb2ludENvbmZpZ3VyYXRpb24sXHJcbiAgRW5kUG9pbnREYXRhUGFyYW1zLFxyXG4gIFBhcmFtVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4vLi4vLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5cclxudHlwZSBQYW5lbCA9IHsgXHJcbiAgcmVjb3JkOiBSZWNvcmQsIFxyXG4gIGlzT3BlbjogYm9vbGVhbiwgXHJcbiAgcGFnZVN0YXRlOiBzdHJpbmcgXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpc3Qtdmlldy1mb3JtLXJlY29yZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcImxpc3Qtdmlldy1mb3JtLXJlY29yZC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9saXN0LXZpZXctZm9ybS1yZWNvcmQuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0Zvcm1SZWNvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVidWdMb2cobWVzc2FnZTogc3RyaW5nLCBlbGVtZW50PzogYW55KXtcclxuICAgIGlmKHRoaXMuZGVidWdNb2RlKXtcclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgZWxlbWVudClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlTGlzdENvbmZpZztcclxuICBASW5wdXQoKSBjb21waWxlQ29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnO1xyXG4gIG91dENvbXBpbGVDb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgdXNlcklEOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZm9ybUlEOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybSA9IG51bGw7XHJcbiAgZGVmYXVsdExpc3RBY3Rpb25zOiBEeW5hbWljTW9kdWxlTGlzdEZvcm1SZWNvcmRBY3Rpb25zRGVmYXVsdCA9XHJcbiAgICBuZXcgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQoKTtcclxuICBzaG93VGl0bGUgPSB0cnVlO1xyXG4gIC8vIHZhbHVlczogQXJyYXk8UmVjb3JkPjtcclxuICB0ZXN0ID0gZmFsc2U7XHJcbiAgb25seVZpZXc6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRSZWNvcmQ6IFJlY29yZDtcclxuICBsb2FkZXI6IGJvb2xlYW47XHJcbiAgcGFuZWxPcGVuU3RhdGU6IGJvb2xlYW5bXSA9IG5ldyBBcnJheTxib29sZWFuPigpO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICB2aXN1YWxpenphQ29udGVudXRvID0gZmFsc2U7XHJcbiAgbW9kaWZpY2FDb250ZW51dG8gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInRhYmxlUmVjb3Jkc1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZVJlY29yZHM6IEVxcFRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBjb2x1bW5zID0gbmV3IEFycmF5PENvbmZpZ0NvbHVtbj4oKTtcclxuICBwYW5lbHM6IEFycmF5PFBhbmVsPlxyXG5cclxuICAvLyBhZGQgbmV3XHJcbiAgQE91dHB1dCgpIG9uQWRkVmlld0VkaXRSZWNvcmQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICByZWNvcmQ6IFJlY29yZDtcclxuICAgIG9ubHlWaWV3OiBib29sZWFuO1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogUmVjb3JkOyBvbmx5VmlldzogYm9vbGVhbiB9PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25EZWxldGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uRHVwbGljYXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVSZWNvcmRFdmVudDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJTYXZlUmVjb3JkRXZlbnQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5wYW5lbE9wZW5TdGF0ZSA9IFtcclxuICAgIC8vICAgLi4uQXJyYXkodGhpcy5jb25maWd1cmF0aW9ucy52YWx1ZXMubGVuZ3RoICsgMSksXHJcbiAgICAvLyBdLm1hcCgoKSA9PiBmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5kZWZhdWx0TGlzdEFjdGlvbnMgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmRlZmF1bHRMaXN0QWN0aW9ucztcclxuICAgIHRoaXMuc2hvd1RpdGxlID0gdGhpcy5jb25maWd1cmF0aW9ucy5zaG93VGl0bGU7XHJcblxyXG4gICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMgPSBuZXcgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcoXHJcbiAgICAgIHRoaXMuY29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dUaXRsZSxcclxuICAgICAgdGhpcy5jb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd1NhdmVCdXR0b24sXHJcbiAgICAgIHRoaXMuY29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dCYWNrQnV0dG9uLFxyXG4gICAgICB0aGlzLmNvbXBpbGVDb25maWd1cmF0aW9ucy51c2VySURcclxuICAgICk7XHJcbiAgICB0aGlzLmRlYnVnTG9nKFwib3V0Y29tcGlsZUNvbmZpZ3VyYXRpb25zIFwiLCB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5nZXRGb3JtQnlJRCgpO1xyXG4gICAgLy8gdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMudXNlcklEO1xyXG4gICAgLy8gdGhpcy52YWx1ZXMgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLnZhbHVlc1xyXG4gICAgLy8gdGhpcy5jb25maWd1cmVDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLmRlYnVnTG9nKCduZ09uQ2hhbmdlcycsIGNoYW5nZXMpO1xyXG5cclxuICAgIC8vIFNlIHZpZW5lIG1vZGlmaWNhdG8gaWwgdmFsb3JlIGRpIFwibmdNb2RlbElucHV0XCIgYWxsb3JhIGFnZ2lvcm5hIGwnaW5wdXRcclxuICAgIGlmIChcclxuICAgICAgY2hhbmdlc1tcImNvbmZpZ3VyYXRpb25zXCJdICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICBjaGFuZ2VzW1wiY29uZmlndXJhdGlvbnNcIl0uZmlyc3RDaGFuZ2UgPT0gZmFsc2VcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnZhbHVlcyA9IGNoYW5nZXNbXCJjb25maWd1cmF0aW9uc1wiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMucmVsb2FkVGFibGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9wZW5pbmcoaW5kaWNlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGljZTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1CeUlEKGlkOiBzdHJpbmcgPSB0aGlzLmZvcm1JRCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybSA9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogaWQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHt9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY29uZmlndXJhcmUgbGUgY29sb25uZSBkZWxsYSBlcXAtdGFibGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb25maWd1cmVDb2x1bW5zKCkge1xyXG4gICAgLy8gdGhpcy5jcmVhdGVBZGRpdGlvbmFsQWN0aW9ucygpO1xyXG4gICAgLy8gdGhpcy5jcmVhdGVDb2x1bW5zRnJvbUZvcm1GaWVsZHMoKTtcclxuICAgIHRoaXMuZ2V0UmVjb3Jkc0J5Rm9ybUlEKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdHV0dGkgaSByZWNvcmQgc2FsdmF0aSBwZXIgdW5hIHBhcnRpY29sYXJlIEZvcm0uXHJcbiAgICogTGEgY2hpYW1hdGEgdmllbmUgZWZmZXR0dWF0YSBzb2xvIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGwnZW5kUG9pbnQgZGEgdXNhcmUuXHJcbiAgICogTGEgcmlzcG9zdGEgZGVsbGEgY2hpYW1hdGEgZGV2ZSBlc3NlcmUgdW4gYXJyYXkgZGkgb2dnZXR0aSBkaSB0aXBvIFwiRHluUmVjb3JkXCJcclxuICAgKiBhIHBhcnRpcmUgZGFpIHF1YWxpIHZlbmdvbm8gcmljcmVhdGkgaSBSZWNvcmQgdXNhdGkgbmVsIGNsaWVudC5cclxuICAgKi9cclxuICBhc3luYyBnZXRSZWNvcmRzQnlGb3JtSUQoKSB7XHJcbiAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5JRCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnVzZXJJRCA9PSBudWxsICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUZvcm1JREVuZFBvaW50XHJcbiAgICApIHtcclxuICAgICAgLy8gc2Ugbm9uIGNvbm9zY28gbCd1dGVudGVcclxuICAgICAgYXdhaXQgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUZvcm1JREVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlczogQXJyYXk8RHluUmVjb3JkPikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWJ1Z0xvZygnR2V0QnlGb3JtSURFbmRQb2ludCcsIHJlcylcclxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBbnN3ZXJzQXJyYXkocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnVzZXJJRCAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRBbGxCeUVudEFuZFVzZXJJREVuZFBvaW50XHJcbiAgICApIHtcclxuICAgIC8vIHNlIGNvbm9zY28gbCd1dGVudGVcclxuICAgICAgbGV0IGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uSUQsXHJcbiAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJVc2VySURcIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuY29uZmlndXJhdGlvbnMudXNlcklELFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QWxsQnlFbnRBbmRVc2VySURFbmRQb2ludCxcclxuICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgIChyZXM6IEFycmF5PER5blJlY29yZD4pID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVidWdMb2coJ0dldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQnLCByZXMpXHJcbiAgICAgICAgICB0aGlzLmdlbmVyYXRlQW5zd2Vyc0FycmF5KHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImNvbnRyb2xsYXJlIGxlIGNvbmZpZ3VyYXppb25pIGRlbGwnZW5kcG9pbnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlQW5zd2Vyc0FycmF5KHJlczogQXJyYXk8RHluUmVjb3JkPil7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnZhbHVlcyA9IG5ldyBBcnJheTxSZWNvcmQ+KCk7XHJcbiAgICB0aGlzLnBhbmVscyA9IG5ldyBBcnJheTxQYW5lbD4oKTtcclxuICAgIHJlcy5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAgIHZhciB0bXBSZWM6IFJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgICAgdG1wUmVjID0gSlNPTi5wYXJzZShyLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICB0bXBSZWMuSUQgPSByLklEO1xyXG4gICAgICB0bXBSZWMuRW50SUQgPSByLkVudElEO1xyXG4gICAgICB0bXBSZWMuVmVyc2lvbiA9IHIuVmVyc2lvbjtcclxuICAgICAgdG1wUmVjLnVzZXJJRCA9IHIudXNlcklEO1xyXG4gICAgICB0bXBSZWMuQW5zd2VyRGF0ZSA9IHIuQW5zd2VyRGF0ZTtcclxuICAgICAgdG1wUmVjLkhUTUxyZWFkYWJsZVZhbHVlcyA9IHIuSFRNTHJlYWRhYmxlVmFsdWVzO1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLnZhbHVlcy5wdXNoKHRtcFJlYyk7XHJcbiAgICAgIHRoaXMucGFuZWxzLnB1c2goe3JlY29yZDogdG1wUmVjLCBpc09wZW46IGZhbHNlLCBwYWdlU3RhdGU6IG51bGx9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKF8pID0+IHtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAwKTsgLy8gcmVmcmVzaCB1aVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGFuZWwocGFuZWw6IGFueSkge1xyXG4gICAgdGhpcy5kZWJ1Z0xvZygndG9nZ2xlUGFuZWwnKVxyXG4gICAgaWYgKCFwYW5lbC5pc09wZW4pIHtcclxuICAgICAgICBwYW5lbC5pc09wZW4gPSB0cnVlO1xyXG4gICAgICAgIHBhbmVsLnBhZ2VTdGF0ZSA9ICd2aXN1YWxpenphQ29udGVudXRvJztcclxuICAgICAgLy8gU2ltdWxhIHVuIGNhbGNvbG8gYXNpbmNyb25vXHJcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyB9LCAxMDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhbmVsLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICBwYW5lbC5wYWdlU3RhdGU9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2l1bmdlcmUgbmVsbGEgY29sb25uYSBcImFjdGlvblwiIGRlbGxhIGVxcC10YWJsZSBsZSBhemlvbmkgc3VpIHJlY29yZFxyXG4gICAqIGRlZmluaXRlIGRhbGwndXRlbnRlIGFsbCdpbnRlcm5vIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgLy8gcHJpdmF0ZSBjcmVhdGVBZGRpdGlvbmFsQWN0aW9ucygpIHtcclxuICAvLyAgIGlmICh0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkICYmIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLnNvcnQoKGEsIGIpID0+XHJcbiAgLy8gICAgICAgYS5PcmRpbmFsUG9zaXRpb24gPiBiLk9yZGluYWxQb3NpdGlvblxyXG4gIC8vICAgICAgICAgPyAxXHJcbiAgLy8gICAgICAgICA6IGIuT3JkaW5hbFBvc2l0aW9uID4gYS5PcmRpbmFsUG9zaXRpb25cclxuICAvLyAgICAgICAgID8gLTFcclxuICAvLyAgICAgICAgIDogMFxyXG4gIC8vICAgICApLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuY29sdW1uc1xyXG4gIC8vICAgICAgICAgLmZpbmQoKGMpID0+IGMua2V5ID09PSBcImFjdGlvblwiKVxyXG4gIC8vICAgICAgICAgLmFjdGlvbnMucHVzaCh7XHJcbiAgLy8gICAgICAgICAgIG5hbWU6IGFjdGlvbi5OYW1lLFxyXG4gIC8vICAgICAgICAgICBpY29uOiBhY3Rpb24uSWNvbixcclxuICAvLyAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcmVjID0gZWxlbWVudDtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBjdHggPSBVdGlsaXR5SGVscGVyU2VydmljZS5jb250ZXh0O1xyXG4gIC8vICAgICAgICAgICAgIGV2YWwoYWN0aW9uLkFjdGlvbik7XHJcbiAgLy8gICAgICAgICAgICAgLy8gVE9ETzogc2FsdmFyZSBsZSBtb2RpZmljaGVcclxuICAvLyAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgc2NhdGVuYSBsJ2V2ZW50byBkaSBPdXRwdXQgcGVyIG1vc3RyYXJlIG8gbW9kaWZpY2FyZSBpbCByZWNvcmRcclxuICAgKiBzZWxlemlvbmF0byBzdWxsYSBlcXAtdGFibGUuXHJcbiAgICogQHBhcmFtIHJlY29yZCBSZWNvcmQgZGEgdmlzdWFsaXp6YXJlIG8gbW9kaWZpY2FyZSBzZWxlemlvbmF0byBzdWxsYSBlcXAtdGFibGUuXHJcbiAgICogQHBhcmFtIG9ubHlWaWV3IFNlIFRSVUUgdmllbmUgbW9zdHJhdG8gaWwgY29tcG9uZW50ZSBhZGQtZm9ybS1yZWNvcmQgaW4gc29sYSBsZXR0dXJhLlxyXG4gICAqL1xyXG4gIHZpZXdPckVkaXRSZWNvcmQocmVjb3JkOiBSZWNvcmQsIG9ubHlWaWV3OiBib29sZWFuLCBpKSB7XHJcbiAgICB0aGlzLmRlYnVnTG9nKCd2aWV3T3JFZGl0UmVjb3JkJylcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQyKHsgcmVjb3JkLCBvbmx5VmlldyB9KTtcclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGUubWFwKCgpID0+IGZhbHNlKTtcclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGVbaV0gPSB0aGlzLnBhbmVsT3BlblN0YXRlW2ldID09IHRydWUgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAvLyB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQuZW1pdCh7IHJlY29yZCwgb25seVZpZXcgfSk7XHJcbiAgfSAgXHJcbiAgdmlld1JlY29yZChwYW5lbDogUGFuZWwsIG9ubHlWaWV3OiBib29sZWFuLCBpLCBldjogRXZlbnQpIHsgICAgXHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRlYnVnTG9nKCd2aWV3UmVjb3JkJylcclxuICAgIGxldCByZWNvcmQgPSBwYW5lbC5yZWNvcmRcclxuICAgIHRoaXMudmlzdWFsaXp6YUNvbnRlbnV0byA9IHRydWU7XHJcbiAgICB0aGlzLm1vZGlmaWNhQ29udGVudXRvID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5vbkFkZFZpZXdFZGl0UmVjb3JkMih7IHJlY29yZCwgb25seVZpZXcgfSk7XHJcbiAgICBpZiAocGFuZWwucGFnZVN0YXRlICA9PSAndmlzdWFsaXp6YUNvbnRlbnV0bycpIHtcclxuICAgICAgcGFuZWwuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIHBhbmVsLnBhZ2VTdGF0ZT0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhbmVsLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgIHBhbmVsLnBhZ2VTdGF0ZSA9ICd2aXN1YWxpenphQ29udGVudXRvJztcclxuICAgIH1cclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGUubWFwKCgpID0+IGZhbHNlKTtcclxuICAgIHRoaXMucGFuZWxPcGVuU3RhdGVbaV0gPSB0aGlzLnBhbmVsT3BlblN0YXRlW2ldID09IHRydWUgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAvLyB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQuZW1pdCh7IHJlY29yZCwgb25seVZpZXcgfSk7XHJcbiAgfVxyXG4gIEVkaXRSZWNvcmQocGFuZWw6IFBhbmVsLCBvbmx5VmlldzogYm9vbGVhbiwgaSwgZXY6IEV2ZW50KSB7ICAgIFxyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5kZWJ1Z0xvZygnRWRpdFJlY29yZCcpXHJcblxyXG4gICAgbGV0IHJlY29yZCA9IHBhbmVsLnJlY29yZFxyXG4gICAgdGhpcy52aXN1YWxpenphQ29udGVudXRvID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vZGlmaWNhQ29udGVudXRvID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLm9uQWRkVmlld0VkaXRSZWNvcmQyKHsgcmVjb3JkLCBvbmx5VmlldyB9KTtcclxuICAgIGlmIChwYW5lbC5wYWdlU3RhdGUgID09ICdtb2RpZmljYUNvbnRlbnV0bycpIHtcclxuICAgICAgcGFuZWwuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIHBhbmVsLnBhZ2VTdGF0ZT0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhbmVsLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgIHBhbmVsLnBhZ2VTdGF0ZSA9ICdtb2RpZmljYUNvbnRlbnV0byc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhbmVsT3BlblN0YXRlLm1hcCgoKSA9PiBmYWxzZSk7XHJcbiAgICB0aGlzLnBhbmVsT3BlblN0YXRlW2ldID0gdGhpcy5wYW5lbE9wZW5TdGF0ZVtpXSA9PSB0cnVlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgLy8gdGhpcy5vbkFkZFZpZXdFZGl0UmVjb3JkLmVtaXQoeyByZWNvcmQsIG9ubHlWaWV3IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBkdXBsaWNhcmUgdW4gcmVjb3JkIGRlbGxhIGZvcm0uXHJcbiAgICogQHBhcmFtIHJlY29yZCBSZWNvcmQgZGEgZHVwbGljYXJlLlxyXG4gICAqL1xyXG4gIGR1cGxpY2F0ZVJlY29yZChyZWNvcmQ6IFJlY29yZCwgZXY6IEV2ZW50KSB7ICAgIFxyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vbkR1cGxpY2F0ZVJlY29yZC5lbWl0KHJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGVsaW1pbmFyZSB1biByZWNvcmQgZGFsbGEgbGlzdGEuXHJcbiAgICogQHBhcmFtIHJlY29yZCBSZWNvcmQgZGEgZWxpbWluYXJlIHNlbGV6aW9uYXRvIHN1bGxhIGVxcC10YWJsZS5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmQocmVjb3JkOiBSZWNvcmQsIGV2OiBFdmVudCkgeyAgICBcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMub25EZWxldGVSZWNvcmQuZW1pdChyZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgbGEgY29uZmlndXJhemlvbmUgZGVsbGUgY29sb25uZSBwZXIgbGEgZXFwLXRhYmxlLlxyXG4gICAqIEluZGl2aWR1YSBpIEJhc2VGaWVsZCBkYSBtb3N0cmFyZSBlIGxpIHVzYSBwZXIgY3JlYXJlIGxlIENvbmZpZ0NvbHVtbi5cclxuICAgKiBMZSBjb2xvbm5lIHZlbmdvbm8gY3JlYXRlIHBlciBpIEJhc2VGaWVsZCBjb24gaWwgZmxhZyBJbkxpc3RWaWV3IGEgVFJVRVxyXG4gICAqIG9wcHVyZSwgbmVsIGNhc28gbm9uIHNpYW5vIHN0YXRpIHNwZWNpZmljYXRpIGkgY2FtcGkgZGEgdmlzdWFsaXp6YXJlLFxyXG4gICAqIHNlbGV6aW9uYSBpIHByaW1pIDYuXHJcbiAgICovXHJcbiAgLy8gcHJpdmF0ZSBjcmVhdGVDb2x1bW5zRnJvbUZvcm1GaWVsZHMoKSB7XHJcbiAgLy8gICB2YXIgZmllbGRzRm9yQ29sdW1uczogQXJyYXk8QmFzZUZpZWxkPjtcclxuICAvLyAgIGlmICh0aGlzLmZvcm0uRmllbGRzLmZpbmQoKGYpID0+IGYuSW5MaXN0VmlldykpIHtcclxuICAvLyAgICAgZmllbGRzRm9yQ29sdW1ucyA9IHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKChmKSA9PiBmLkluTGlzdFZpZXcpO1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgZmllbGRzRm9yQ29sdW1ucyA9IHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKChmKSA9PiBmLk9yZGluYWxQb3NpdGlvbiA8IDYpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZmllbGRzRm9yQ29sdW1uc1xyXG4gIC8vICAgICAuc29ydCgoYSwgYikgPT5cclxuICAvLyAgICAgICBhLk9yZGluYWxQb3NpdGlvbiA+IGIuT3JkaW5hbFBvc2l0aW9uXHJcbiAgLy8gICAgICAgICA/IDFcclxuICAvLyAgICAgICAgIDogYi5PcmRpbmFsUG9zaXRpb24gPiBhLk9yZGluYWxQb3NpdGlvblxyXG4gIC8vICAgICAgICAgPyAtMVxyXG4gIC8vICAgICAgICAgOiAwXHJcbiAgLy8gICAgIClcclxuICAvLyAgICAgLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5jb2x1bW5zLnB1c2godGhpcy5jcmVhdGVGaWVsZENvbHVtbihmaWVsZCkpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIGwnb2dnZXR0byBDb25maWd1cmVDb2x1bW4gY2hlIHJhcHByZXNlbnRhIGlsIEJhc2VGaWVsZCBwYXNzYXRvIGluIGlucHV0LlxyXG4gICAqIEBwYXJhbSBmaWVsZCBCYXNlRmllbGQgcGVyIGN1aSBjcmVhcmUgbGEgY29sb25uYSBuZWxsYSBlcXAtdGFibGVcclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1bmEgQ29uZmlnQ29sdW1uIHBlciBsYSBlcXAtdGFibGVcclxuICAgKi9cclxuICAvLyBwcml2YXRlIGNyZWF0ZUZpZWxkQ29sdW1uKGZpZWxkOiBCYXNlRmllbGQpOiBDb25maWdDb2x1bW4ge1xyXG4gIC8vICAgdmFyIGNvbHVtbjogQ29uZmlnQ29sdW1uID0geyBrZXk6IGZpZWxkLk5hbWUsIGRpc3BsYXk6IGZpZWxkLkxhYmVsIH07XHJcbiAgLy8gICBzd2l0Y2ggKGZpZWxkLkZpZWxkVHlwZSkge1xyXG4gIC8vICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJCb29sZWFub1wiXTpcclxuICAvLyAgICAgICBjb2x1bW4udHlwZSA9IFR5cGVDb2x1bW4uQm9vbGVhbjtcclxuICAvLyAgICAgICBjb2x1bW4uYm9vbGVhblZhbHVlcyA9IHtcclxuICAvLyAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS10aW1lcyBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gIC8vICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgICAgY29sdW1uLnN0eWxlcyA9IHtcclxuICAvLyAgICAgICAgIGZsZXg6IFwiMCAwIDclXCIsXHJcbiAgLy8gICAgICAgICBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIsXHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRGF0YSBlL28gb3JhXCJdOlxyXG4gIC8vICAgICAgIGlmIChcclxuICAvLyAgICAgICAgIChmaWVsZCBhcyBEYXRlRmllbGQpLklzT25seURhdGUgIT0gRGF0ZVRpbWVUeXBlRW51bVtcIlNvbG8gb3JhcmlvXCJdXHJcbiAgLy8gICAgICAgKSB7XHJcbiAgLy8gICAgICAgICBjb2x1bW4udHlwZSA9IFR5cGVDb2x1bW4uRGF0ZTtcclxuICAvLyAgICAgICAgIGlmIChcclxuICAvLyAgICAgICAgICAgKGZpZWxkIGFzIERhdGVGaWVsZCkuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtW1wiRGF0YSBlIG9yYVwiXVxyXG4gIC8vICAgICAgICAgKSB7XHJcbiAgLy8gICAgICAgICAgIGNvbHVtbi5mb3JtYXQgPSBcImRkL01NL3l5eXkgSEg6bW1cIjtcclxuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgLy8gICAgICAgICAgIChmaWVsZCBhcyBEYXRlRmllbGQpLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVtcIlNvbG8gZGF0YVwiXVxyXG4gIC8vICAgICAgICAgKSB7XHJcbiAgLy8gICAgICAgICAgIGNvbHVtbi5mb3JtYXQgPSAoZmllbGQgYXMgRGF0ZUZpZWxkKS5EYXRlRm9ybWF0XHJcbiAgLy8gICAgICAgICAgICAgPyAoZmllbGQgYXMgRGF0ZUZpZWxkKS5EYXRlRm9ybWF0LnJlcGxhY2UoXCJERFwiLCBcImRkXCIpXHJcbiAgLy8gICAgICAgICAgICAgOiBcImRkL01NL3l5eXlcIjtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdOlxyXG4gIC8vICAgICAgIGlmICgoZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5DdXJyZW5jeVN5bWJvbCkge1xyXG4gIC8vICAgICAgICAgY29sdW1uLm51bWJlclBpcGUgPSBOdW1iZXJDb2x1bW5QaXBlLkNVUlJFTkNZO1xyXG4gIC8vICAgICAgICAgY29sdW1uLmN1cnJlbmN5UGlwZUNvZGUgPSAoZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5DdXJyZW5jeVN5bWJvbDtcclxuICAvLyAgICAgICB9IGVsc2UgaWYgKCEoZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5Jc0ludGVnZXIpIHtcclxuICAvLyAgICAgICAgIGNvbHVtbi5udW1iZXJQaXBlID0gTnVtYmVyQ29sdW1uUGlwZS5ERUNJTUFMO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQWxsZWdhdG9cIl06XHJcbiAgLy8gICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lXCJdOlxyXG4gIC8vICAgICAgIGNvbHVtbi52YWx1ZSA9IChlbGVtZW50OiBSZWNvcmQpID0+IHtcclxuICAvLyAgICAgICAgIGlmIChcclxuICAvLyAgICAgICAgICAgKGZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZCkuSXNNdWx0aUF0dGFjaCB8fFxyXG4gIC8vICAgICAgICAgICAoKGZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24gJiZcclxuICAvLyAgICAgICAgICAgICAoZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5Jc011bHRpQXR0YWNoKVxyXG4gIC8vICAgICAgICAgKSB7XHJcbiAgLy8gICAgICAgICAgIHJldHVybiBlbGVtZW50W2ZpZWxkLk5hbWVdICE9IG51bGwgJiYgZWxlbWVudFtmaWVsZC5OYW1lXS5sZW5ndGggPiAwXHJcbiAgLy8gICAgICAgICAgICAgPyAoZWxlbWVudFtmaWVsZC5OYW1lXSBhcyBBcnJheTxJQXR0YWNobWVudERUTz4pXHJcbiAgLy8gICAgICAgICAgICAgICAgIC5tYXAoKGEpID0+IGEuRmlsZU5hbWUpXHJcbiAgLy8gICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIilcclxuICAvLyAgICAgICAgICAgICA6IG51bGw7XHJcbiAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gZWxlbWVudFtmaWVsZC5OYW1lXSAhPSBudWxsICYmIGVsZW1lbnRbZmllbGQuTmFtZV0ubGVuZ3RoID4gMFxyXG4gIC8vICAgICAgICAgICAgID8gKGVsZW1lbnRbZmllbGQuTmFtZV0gYXMgQXJyYXk8SUF0dGFjaG1lbnREVE8+KVswXS5GaWxlTmFtZVxyXG4gIC8vICAgICAgICAgICAgIDogbnVsbDtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9O1xyXG4gIC8vICAgICAgIGNvbHVtbi5pc1NvcnRhYmxlID0gZmFsc2U7XHJcbiAgLy8gICAgICAgY29sdW1uLmlzU2VhcmNoYWJsZSA9IGZhbHNlO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgLy8gICAgICAgY29sdW1uLnZhbHVlID0gKGVsZW1lbnQ6IFJlY29yZCkgPT4ge1xyXG4gIC8vICAgICAgICAgaWYgKChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSXNNdWx0aUNob2ljaGUpIHtcclxuICAvLyAgICAgICAgICAgaWYgKCFlbGVtZW50W2ZpZWxkLk5hbWVdIHx8IGVsZW1lbnRbZmllbGQuTmFtZV0ubGVuZ3RoID09IDApIHtcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAvLyAgICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoKGZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKVxyXG4gIC8vICAgICAgICAgICAgICAgLmZpbHRlcigoaykgPT5cclxuICAvLyAgICAgICAgICAgICAgICAgZWxlbWVudFtmaWVsZC5OYW1lXS5pbmNsdWRlcyhcclxuICAvLyAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnNba11cclxuICAvLyAgICAgICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykuZmluZChcclxuICAvLyAgICAgICAgICAgICAoaykgPT5cclxuICAvLyAgICAgICAgICAgICAgIChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trXSA9PSBlbGVtZW50W2ZpZWxkLk5hbWVdXHJcbiAgLy8gICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfTtcclxuICAvLyAgICAgICBjb2x1bW4uaXNTb3J0YWJsZSA9IGZhbHNlO1xyXG4gIC8vICAgICAgIGNvbHVtbi5pc1NlYXJjaGFibGUgPSBmYWxzZTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiTG9va3VwXCJdOlxyXG4gIC8vICAgICAgIC8vIFRPRE9cclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBjb2x1bW47XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpY2FyaWNhcmUgaSBkYXRpIGRlbGxhIGVxcC10YWJsZS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZFRhYmxlcygpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlUmVjb3Jkcykge1xyXG4gICAgICB0aGlzLnRhYmxlUmVjb3Jkcy5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBpIGRhdGkgaW5zZXJpdGkgZGFsbCd1dGVudGUgdW5hIHZvbHRhIGNvbmNsdXNhIGxhIGNvbXBpbGF6aW9uZSBkZWxsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHNhdmVPckV4aXRGb3JtKHJlY29yZDogUmVjb3JkKSB7XHJcbiAgICB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KHJlY29yZCk7XHJcbiAgfVxyXG4gIG9uQWZ0ZXJTYXZlUmVjb3JkKCRldmVudCkge1xyXG4gICAgdGhpcy5zYXZlUmVjb3JkRXZlbnQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIHF1YW5kbyBzaSB2dW9sZSBhZ2dpdW5nZXJlLCB2aXN1YWxpenphcmUgbyBtb2RpZmljYXJlIHVuIHJlY29yZC5cclxuICAgKiBTZSBsJ2V2ZW50byDDqCBudWxsIHZ1b2wgZGlyZSBjaGUgc3RpYW1vIGFnZ2l1bmdlbmRvIHVuIG51b3ZvIHJlY29yZCBhbHRyaW1lbnRpIHNpYW1vIGluIG1vZGlmaWNhXHJcbiAgICogbyB2aXN1YWxpenphemlvbmUuIEluIHF1ZXN0aSB1bHRpbWkgZHVlIGNhc2ksIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIHVuIGVuZHBvaW50IHBlciBpbCByZWN1cGVyb1xyXG4gICAqIGRlbCByZWNvcmQgY29tcGxldG8gYWxsb3JhIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciwgYWx0cmltZW50aSB2aWVuZSB1c2F0byBsJ29nZ2V0dG8gc2VsZXppb25hdG8uXHJcbiAgICogQHBhcmFtIGV2ZW50IE9nZ2V0dG8gY29uIGR1ZSBwcm9wcmlldMOgOlxyXG4gICAqIFwicmVjb3JkXCIgPSBvZ2dldHRvIGRhIG1vZGlmaWNhcmUvdmlzdWFsaXp6YXJlLFxyXG4gICAqIFwib25seVZpZXdcIiA9IGJvb2xlYW5vIChzZSBUUlVFIHNpYW1vIGluIHZpc3VhbGl6emF6aW9uZSBhbHRyaW1lbnRpIGluIG1vZGlmaWNhKVxyXG4gICAqL1xyXG4gIG9uQWRkVmlld0VkaXRSZWNvcmQyKGV2ZW50OiB7IHJlY29yZDogUmVjb3JkOyBvbmx5VmlldzogYm9vbGVhbiB9KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5vbmx5VmlldyA9IGV2ZW50Lm9ubHlWaWV3O1xyXG5cclxuICAgIHRoaXMub3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dCYWNrQnV0dG9uID0gZmFsc2U7XHJcbiAgICB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucy5zaG93U2F2ZUJ1dHRvbiA9ICFldmVudC5vbmx5VmlldztcclxuICAgIHRoaXMub3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dUaXRsZSA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChldmVudCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiZcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5SURFbmRQb2ludFxyXG4gICAgICApIHtcclxuICAgICAgICAvLyBwcmVwYXJvIGxhIHZlcnNpb25lIGNvcnJldHRhIGRlbCBmb3JtXHJcbiAgICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuRW50SUQsXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgUGFyYW1OYW1lOiBcIlZlcnNpb25cIixcclxuICAgICAgICAgICAgUGFyYW1WYWx1ZTogZXZlbnQucmVjb3JkLlZlcnNpb24sXHJcbiAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludCxcclxuICAgICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybSA9IHJlcztcclxuXHJcbiAgICAgICAgICAgIC8vIHByZXBhcm8gaSBkYXRpIGRlbCByZWNvcmRcclxuICAgICAgICAgICAgdmFyIGR5bmFtaWNSZWNvcmRQYXJhbXMgPSBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuSUQsXHJcbiAgICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLkdldEJ5SURFbmRQb2ludCxcclxuICAgICAgICAgICAgICBkeW5hbWljUmVjb3JkUGFyYW1zLFxyXG4gICAgICAgICAgICAgIChyZXM6IER5blJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IEpTT04ucGFyc2UocmVzLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZC5JRCA9IHJlcy5JRDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmQuRW50SUQgPSByZXMuRW50SUQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkLnVzZXJJRCA9IHJlcy51c2VySUQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkLlZlcnNpb24gPSByZXMuVmVyc2lvbjtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXZlbnQucmVjb3JkKSk7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybUlELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLm9ubHlWaWV3ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7fVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZFJlY29yZCA9IG51bGw7XHJcbiAgICAgIC8vIHRoaXMub25seVZpZXcgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy52aWV3TW9kZSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uQ09NUElMRTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxtYXQtY2FyZCBjbGFzcz1cImxpc3Qtdmlldy1mb3JtLXJlY29yZFwiPlxyXG4gIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJsb2FkZXIgJiYgKHNob3dUaXRsZSB8fCBkZWZhdWx0TGlzdEFjdGlvbnMuYWRkKVwiIGNsYXNzPVwiYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICA8bWF0LWNhcmQtdGl0bGUgKm5nSWY9XCJzaG93VGl0bGVcIj5FbGVuY28ge3sgZm9ybS5OYW1lIH19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwhLS0gPG1hdC1jYXJkLXN1YnRpdGxlPlN0YXJ0PC9tYXQtY2FyZC1zdWJ0aXRsZT4gLS0+XHJcbiAgICA8bWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAqbmdJZj1cImRlZmF1bHRMaXN0QWN0aW9ucy5hZGRcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b24gXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWRkVmlld0VkaXRSZWNvcmQuZW1pdChudWxsKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtYnV0dG9uPkxJS0U8L2J1dHRvbj4gLS0+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtYnV0dG9uPlNIQVJFPC9idXR0b24+IC0tPlxyXG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICBcclxuICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtYWNjb3JkaW9uIFtoaWRlVG9nZ2xlXT1cInRlc3RcIiBbbXVsdGldPVwidHJ1ZVwiPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgcGFuZWxzOyBpbmRleCBhcyBpXCIgXHJcbiAgICAgICAgW2V4cGFuZGVkXT1cInBhbmVsLmlzT3BlblwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIjFcIiBcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVQYW5lbChwYW5lbClcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgIHt7IGZvcm0uTmFtZSB9fSB2Lnt7IHBhbmVsLnJlY29yZC5WZXJzaW9uIH19IC0ge3sgcGFuZWwucmVjb3JkLkFuc3dlckRhdGUgfCBkYXRlIDogXCJFRUVFLCBkIE1NTU0geSwgSDptbTpzc1wiIH19XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDwhLS0jcmVnaW9uIEJPVFRPTkkgUEVSIExFIEFaSU9OSSAtLT5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicmVjb3JkLWljb24gdmlldy1idXR0b24taWNvblwiIGFyaWEtbGFiZWw9XCJWaXN1YWxpenphXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJkZWZhdWx0TGlzdEFjdGlvbnMudmlldyA9PSB0cnVlICYmIChkZWZhdWx0TGlzdEFjdGlvbnMuZWRpdCA9PSB0cnVlIHx8IGRlZmF1bHRMaXN0QWN0aW9ucy5kdXBsaWNhdGUgPT0gdHJ1ZSB8fCBkZWZhdWx0TGlzdEFjdGlvbnMuZGVsZXRlID09IHRydWUpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidmlld1JlY29yZChwYW5lbCwgdHJ1ZSwgaSwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicmVjb3JkLWljb24gZWRpdC1idXR0b24taWNvblwiIGFyaWEtbGFiZWw9XCJNb2RpZmljYVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdExpc3RBY3Rpb25zLmVkaXQgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkVkaXRSZWNvcmQocGFuZWwsIGZhbHNlLCBpLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyZWNvcmQtaWNvbiBkdXBsaWNhdGUtYnV0dG9uLWljb25cIiBhcmlhLWxhYmVsPVwiRHVwbGljYVwiIFxyXG4gICAgICAgICAgICAqbmdJZj1cImRlZmF1bHRMaXN0QWN0aW9ucy5kdXBsaWNhdGUgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkdXBsaWNhdGVSZWNvcmQocGFuZWwucmVjb3JkLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInJlY29yZC1pY29uIGRlbGV0ZS1idXR0b24taWNvblwiIGFyaWEtbGFiZWw9XCJFbGltaW5hXCIgXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGVmYXVsdExpc3RBY3Rpb25zLmRlbGV0ZSA9PSB0cnVlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlY29yZChwYW5lbC5yZWNvcmQsICRldmVudClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhhbXBsZS1zcGFjZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBCT1RUT05JIFBFUiBMRSBBWklPTkkgLS0+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIENPTlRFTlVUTyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFuZWwucGFnZVN0YXRlICE9IG51bGxcIj5cclxuICAgICAgICAgIDxsaWItc2luZ2xlLXJlY29yZFxyXG4gICAgICAgICAgICBbZGVidWdNb2RlXT1cImRlYnVnTW9kZVwiXHJcbiAgICAgICAgICAgIFtyZWNvcmRdID0gXCJwYW5lbC5yZWNvcmRcIiBcclxuICAgICAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl0gPSBcImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgICAgICBbdXNlcklEXT1cInVzZXJJRFwiXHJcbiAgICAgICAgICAgIFtvdXRDb21waWxlQ29uZmlndXJhdGlvbnNdPVwib3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zXCJcclxuICAgICAgICAgICAgW3BhZ2VTdGF0ZV09XCJwYW5lbC5wYWdlU3RhdGVcIlxyXG4gICAgICAgICAgPlxyXG5cclxuICAgICAgICAgIDwvbGliLXNpbmdsZS1yZWNvcmQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSW5kZXggPT0gaVwiPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aXN1YWxpenphQ29udGVudXRvXCI+XHJcbiAgICAgICAgICAgIDx2aWV3LWZvcm0tcmVjb3JkIFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwibG9hZGVyICYmIHNlbGVjdGVkUmVjb3JkXCIgXHJcbiAgICAgICAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgICAgICAgIFtyZWNvcmRdPVwic2VsZWN0ZWRSZWNvcmQuSURcIiBcclxuICAgICAgICAgICAgICBbc2hvd0JhY2tCdXR0b25dPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPC92aWV3LWZvcm0tcmVjb3JkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGlmaWNhQ29udGVudXRvXCI+XHJcbiAgICAgICAgICAgIDxhZGQtZm9ybS1yZWNvcmRcclxuICAgICAgICAgICAgICAqbmdJZj1cImxvYWRlciAmJiBzZWxlY3RlZFJlY29yZFwiXHJcbiAgICAgICAgICAgICAgW29ubHlWaWV3XT1cIm9ubHlWaWV3XCJcclxuICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgICBbcmVjb3JkXT1cInNlbGVjdGVkUmVjb3JkXCJcclxuICAgICAgICAgICAgICBbdXNlcklEXT1cInVzZXJJRFwiXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb25zXT1cIm91dENvbXBpbGVDb25maWd1cmF0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgIChzYXZlUmVjb3JkRXZlbnQpPVwic2F2ZU9yRXhpdEZvcm0oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGFmdGVyU2F2ZVJlY29yZEV2ZW50KT1cIm9uQWZ0ZXJTYXZlUmVjb3JkKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2FkZC1mb3JtLXJlY29yZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0jZW5kcmVnaW9uIENPTlRFTlVUTyAtLT5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgPC9tYXQtYWNjb3JkaW9uPlxyXG5cclxuXHJcbiAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICA8IS0tIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPiAtLT5cclxuICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuPC9tYXQtY2FyZD5cclxuXHJcbjwhLS0jcmVnaW9uIG9sZCAtLT5cclxuPCEtLSAgXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBlcXAtZHluYW1pYy1tb2R1bGUtdGl0bGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICA8aDQgKm5nSWY9XCJzaG93VGl0bGVcIj5cclxuICAgICAgICA8Yj5FbGVuY28ge3sgZm9ybS5OYW1lIH19PC9iPlxyXG4gICAgICA8L2g0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1yaWdodCBwYi0zXCIgKm5nSWY9XCJkZWZhdWx0TGlzdEFjdGlvbnMuYWRkXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkFkZFZpZXdFZGl0UmVjb3JkLmVtaXQobnVsbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PiBcclxuICAtLT5cclxuXHJcbjwhLS0gPGVxcC10YWJsZSAjdGFibGVSZWNvcmRzIFtkYXRhXT1cImNvbmZpZ3VyYXRpb25zLnZhbHVlc1wiIFtjb2x1bW5zXT1cImNvbHVtbnNcIj48L2VxcC10YWJsZT4gLS0+XHJcblxyXG48IS0tIFxyXG4gIDxtYXQtYWNjb3JkaW9uIFtoaWRlVG9nZ2xlXT1cInRlc3RcIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RDb25maWd1cmF0aW9ucy52YWx1ZXM7IGluZGV4IGFzIGlcIlxyXG4gICAgICBbZXhwYW5kZWRdPVwicGFuZWxPcGVuU3RhdGVbaV1cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiMVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAge3sgaXRlbS5BbnN3ZXJEYXRlIHwgZGF0ZSA6IFwiRUVFRSwgZCBNTU1NIHksIEg6bW06c3NcIiB9fVxyXG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInJlY29yZC1pY29uXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vZGlmaWNhXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdPckVkaXRSZWNvcmQoaXRlbSwgdHJ1ZSwgaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVjb3JkLWljb25cIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW9kaWZpY2FcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidmlld09yRWRpdFJlY29yZChpdGVtLCBmYWxzZSwgaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVjb3JkLWljb25cIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRHVwbGljYVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkdXBsaWNhdGVSZWNvcmQoaXRlbSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmlsZV9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJyZWNvcmQtaWNvblwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFbGltaW5hXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlY29yZChpdGVtKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4YW1wbGUtc3BhY2VyXCI+PC9zcGFuPlxyXG4gICAgICAgICAge3sgZm9ybS5OYW1lIH19XHJcbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICA8YWRkLWZvcm0tcmVjb3JkXHJcbiAgICAgICAgKm5nSWY9XCJsb2FkZXIgJiYgc2VsZWN0ZWRSZWNvcmQgJiYgcGFuZWxPcGVuU3RhdGVbaV0gPT0gdHJ1ZVwiXHJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgW3JlY29yZF09XCJzZWxlY3RlZFJlY29yZFwiXHJcbiAgICAgICAgW29ubHlWaWV3XT1cIm9ubHlWaWV3XCJcclxuICAgICAgICBbY29uZmlndXJhdGlvbnNdPVwib3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zXCJcclxuICAgICAgICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgICAgICAgW3VzZXJJRF09XCJ1c2VySURcIlxyXG4gICAgICAgIChzYXZlUmVjb3JkRXZlbnQpPVwic2F2ZU9yRXhpdEZvcm0oJGV2ZW50KVwiXHJcbiAgICAgICAgKGFmdGVyU2F2ZVJlY29yZEV2ZW50KT1cIm9uQWZ0ZXJTYXZlUmVjb3JkKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvYWRkLWZvcm0tcmVjb3JkPlxyXG5cclxuICAgICAgPHZpZXctZm9ybS1yZWNvcmRcclxuICAgICAgICAqbmdJZj1cImxvYWRlciAmJiBzZWxlY3RlZFJlY29yZCAmJiBwYW5lbE9wZW5TdGF0ZVtpXSA9PSB0cnVlXCJcclxuICAgICAgICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXHJcbiAgICAgICAgW3JlY29yZF09XCJzZWxlY3RlZFJlY29yZC5JRFwiXHJcbiAgICAgICAgW3Nob3dCYWNrQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgPlxyXG4gICAgICA8L3ZpZXctZm9ybS1yZWNvcmQ+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgPC9tYXQtYWNjb3JkaW9uPiBcclxuICAtLT5cclxuPCEtLSNlbmRyZWdpb24gb2xkIC0tPiJdfQ==
@@ -5,6 +5,11 @@ import * as i2 from "@angular/common";
5
5
  import * as i3 from "../../add-form-record/add-form-record.component";
6
6
  import * as i4 from "../../view-form-record/view-form-record.component";
7
7
  export class SingleRecordComponent {
8
+ debugLog(message, element) {
9
+ if (this.debugMode) {
10
+ console.log(message, element);
11
+ }
12
+ }
8
13
  constructor(utilityHelperService) {
9
14
  this.utilityHelperService = utilityHelperService;
10
15
  this.debugMode = false;
@@ -15,11 +20,6 @@ export class SingleRecordComponent {
15
20
  this.onlyView = true;
16
21
  this.loaded = false;
17
22
  }
18
- debugLog(message, element) {
19
- if (this.debugMode) {
20
- console.log(message, element);
21
- }
22
- }
23
23
  ngOnInit() {
24
24
  this.loaded = true;
25
25
  }
@@ -33,9 +33,9 @@ export class SingleRecordComponent {
33
33
  this.saveRecordEvent.emit($event);
34
34
  }
35
35
  }
36
- SingleRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SingleRecordComponent, deps: [{ token: i1.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
37
- SingleRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SingleRecordComponent, selector: "lib-single-record", inputs: { debugMode: "debugMode", endPointConfiguration: "endPointConfiguration", record: "record", pageState: "pageState", userID: "userID", form: "form", showBackButton: "showBackButton", outCompileConfigurations: "outCompileConfigurations" }, outputs: { saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, ngImport: i0, template: "<ng-container *ngIf=\"loaded && record && pageState\">\n\n <ng-container *ngIf=\"pageState == 'visualizzaContenuto'\">\n <view-form-record \n [debugMode]=\"debugMode\"\n [endPointConfiguration]=\"endPointConfiguration\"\n [record]=\"record\" \n [showBackButton]=\"false\">\n </view-form-record>\n </ng-container>\n\n <ng-container *ngIf=\"pageState == 'modificaContenuto'\">\n <add-form-record\n [debugMode]=\"debugMode\"\n [onlyView]=\"onlyView\"\n [form]=\"form\"\n [userID]=\"userID\"\n [record]=\"record\"\n\n [configurations]=\"outCompileConfigurations\"\n [endPointConfiguration]=\"endPointConfiguration\"\n\n (saveRecordEvent)=\"saveOrExitForm($event)\"\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\n >\n </add-form-record>\n </ng-container>\n\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.AddFormRecordComponent, selector: "add-form-record", inputs: ["debugMode", "configurations", "endPointConfiguration", "userID", "formID", "form", "record", "onlyView"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "component", type: i4.ViewFormRecordComponent, selector: "view-form-record", inputs: ["debugMode", "endPointConfiguration", "record", "showBackButton"], outputs: ["goBackEvent"] }] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SingleRecordComponent, decorators: [{
36
+ SingleRecordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SingleRecordComponent, deps: [{ token: i1.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
37
+ SingleRecordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SingleRecordComponent, selector: "lib-single-record", inputs: { debugMode: "debugMode", endPointConfiguration: "endPointConfiguration", record: "record", pageState: "pageState", userID: "userID", form: "form", showBackButton: "showBackButton", outCompileConfigurations: "outCompileConfigurations" }, outputs: { saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent" }, ngImport: i0, template: "<ng-container *ngIf=\"loaded && record && pageState\">\n\n <ng-container *ngIf=\"pageState == 'visualizzaContenuto'\">\n <view-form-record \n [debugMode]=\"debugMode\"\n [endPointConfiguration]=\"endPointConfiguration\"\n [record]=\"record\" \n [showBackButton]=\"false\">\n </view-form-record>\n </ng-container>\n\n <ng-container *ngIf=\"pageState == 'modificaContenuto'\">\n <add-form-record\n [debugMode]=\"debugMode\"\n [onlyView]=\"onlyView\"\n [form]=\"form\"\n [userID]=\"userID\"\n [record]=\"record\"\n\n [configurations]=\"outCompileConfigurations\"\n [endPointConfiguration]=\"endPointConfiguration\"\n\n (saveRecordEvent)=\"saveOrExitForm($event)\"\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\n >\n </add-form-record>\n </ng-container>\n\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.AddFormRecordComponent, selector: "add-form-record", inputs: ["debugMode", "configurations", "endPointConfiguration", "userID", "formID", "form", "record", "onlyView"], outputs: ["saveRecordEvent", "afterSaveRecordEvent"] }, { kind: "component", type: i4.ViewFormRecordComponent, selector: "view-form-record", inputs: ["debugMode", "endPointConfiguration", "record", "showBackButton"], outputs: ["goBackEvent"] }] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SingleRecordComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'lib-single-record', template: "<ng-container *ngIf=\"loaded && record && pageState\">\n\n <ng-container *ngIf=\"pageState == 'visualizzaContenuto'\">\n <view-form-record \n [debugMode]=\"debugMode\"\n [endPointConfiguration]=\"endPointConfiguration\"\n [record]=\"record\" \n [showBackButton]=\"false\">\n </view-form-record>\n </ng-container>\n\n <ng-container *ngIf=\"pageState == 'modificaContenuto'\">\n <add-form-record\n [debugMode]=\"debugMode\"\n [onlyView]=\"onlyView\"\n [form]=\"form\"\n [userID]=\"userID\"\n [record]=\"record\"\n\n [configurations]=\"outCompileConfigurations\"\n [endPointConfiguration]=\"endPointConfiguration\"\n\n (saveRecordEvent)=\"saveOrExitForm($event)\"\n (afterSaveRecordEvent)=\"onAfterSaveRecord($event)\"\n >\n </add-form-record>\n </ng-container>\n\n</ng-container>" }]
41
41
  }], ctorParameters: function () { return [{ type: i1.UtilityHelperService }]; }, propDecorators: { debugMode: [{
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
59
59
  }], afterSaveRecordEvent: [{
60
60
  type: Output
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXJlY29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2xpc3Qtdmlldy1mb3JtLXJlY29yZC9zaW5nbGUtcmVjb3JkL3NpbmdsZS1yZWNvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tcmVjb3Jkcy9saXN0LXZpZXctZm9ybS1yZWNvcmQvc2luZ2xlLXJlY29yZC9zaW5nbGUtcmVjb3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWMvRSxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxZQUNVLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdkIzQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBUzNCLGNBQVMsR0FBYyxxQkFBcUIsQ0FBQztRQUc3QyxtQkFBYyxHQUFHLElBQUksQ0FBQztRQUdyQixvQkFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25FLHlCQUFvQixHQUM1QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsV0FBTSxHQUFHLEtBQUssQ0FBQztJQUlYLENBQUM7SUF2QkwsUUFBUSxDQUFDLE9BQWUsRUFBRSxPQUFhO1FBQ3JDLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUM5QjtJQUNILENBQUM7SUFxQkQsUUFBUTtRQUVOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxNQUFjO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxNQUFNO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O21IQXpDVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4WUNkbEMsNjhCQTRCZTs0RkRkRixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzJHQU1wQixTQUFTO3NCQUFqQixLQUFLO2dCQU9HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBEeW5SZWNvcmQsIFJlY29yZCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsXCI7XG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xuXG50eXBlIFBhZ2VTdGF0ZSA9IG51bGwgfCAndmlzdWFsaXp6YUNvbnRlbnV0bycgfCAnbW9kaWZpY2FDb250ZW51dG8nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zaW5nbGUtcmVjb3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbmdsZS1yZWNvcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW5nbGUtcmVjb3JkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2luZ2xlUmVjb3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBkZWJ1Z01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGVidWdMb2cobWVzc2FnZTogc3RyaW5nLCBlbGVtZW50PzogYW55KXtcbiAgICBpZih0aGlzLmRlYnVnTW9kZSl7XG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBlbGVtZW50KVxuICAgIH1cbiAgfVxuICBcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XG4gIEBJbnB1dCgpIHJlY29yZDtcbiAgQElucHV0KCkgcGFnZVN0YXRlOiBQYWdlU3RhdGUgPSAndmlzdWFsaXp6YUNvbnRlbnV0byc7XG4gIEBJbnB1dCgpIHVzZXJJRDogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIG91dENvbXBpbGVDb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XG5cbiAgQE91dHB1dCgpIHNhdmVSZWNvcmRFdmVudDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZVJlY29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XG5cbiAgb25seVZpZXcgPSB0cnVlO1xuICBsb2FkZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTsgICAgXG4gIH1cblxuICAvKipcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGkgZGF0aSBpbnNlcml0aSBkYWxsJ3V0ZW50ZSB1bmEgdm9sdGEgY29uY2x1c2EgbGEgY29tcGlsYXppb25lIGRlbGxhIGZvcm0uXG4gICAqL1xuICBzYXZlT3JFeGl0Rm9ybShyZWNvcmQ6IFJlY29yZCkge1xuICAgIHRoaXMuc2F2ZVJlY29yZEV2ZW50LmVtaXQocmVjb3JkKTtcbiAgfVxuICBvbkFmdGVyU2F2ZVJlY29yZCgkZXZlbnQpIHtcbiAgICB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KCRldmVudCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBNZXRvZG8gaW52b2NhdG8gcXVhbmRvIHNpIHZ1b2xlIGFnZ2l1bmdlcmUsIHZpc3VhbGl6emFyZSBvIG1vZGlmaWNhcmUgdW4gcmVjb3JkLlxuICAgKiBTZSBsJ2V2ZW50byDDqCBudWxsIHZ1b2wgZGlyZSBjaGUgc3RpYW1vIGFnZ2l1bmdlbmRvIHVuIG51b3ZvIHJlY29yZCBhbHRyaW1lbnRpIHNpYW1vIGluIG1vZGlmaWNhXG4gICAqIG8gdmlzdWFsaXp6YXppb25lLiBJbiBxdWVzdGkgdWx0aW1pIGR1ZSBjYXNpLCBzZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRwb2ludCBwZXIgaWwgcmVjdXBlcm9cbiAgICogZGVsIHJlY29yZCBjb21wbGV0byBhbGxvcmEgdmllbmUgZWZmZXR0dWF0YSB1bmEgY2hpYW1hdGEgYWwgc2VydmVyLCBhbHRyaW1lbnRpIHZpZW5lIHVzYXRvIGwnb2dnZXR0byBzZWxlemlvbmF0by5cbiAgICogQHBhcmFtIGV2ZW50IE9nZ2V0dG8gY29uIGR1ZSBwcm9wcmlldMOgOlxuICAgKiBcInJlY29yZFwiID0gb2dnZXR0byBkYSBtb2RpZmljYXJlL3Zpc3VhbGl6emFyZSxcbiAgICogXCJvbmx5Vmlld1wiID0gYm9vbGVhbm8gKHNlIFRSVUUgc2lhbW8gaW4gdmlzdWFsaXp6YXppb25lIGFsdHJpbWVudGkgaW4gbW9kaWZpY2EpXG4gICAqL1xuICAvLyBvbkFkZFZpZXdFZGl0UmVjb3JkMihldmVudDogeyByZWNvcmQ6IFJlY29yZDsgb25seVZpZXc6IGJvb2xlYW4gfSkge1xuICAvLyAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gIC8vICAgdGhpcy5yZWNvcmQgPSBudWxsO1xuXG4gIC8vICAgdGhpcy5vbmx5VmlldyA9IGV2ZW50Lm9ubHlWaWV3O1xuXG4gIC8vICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd0JhY2tCdXR0b24gPSBmYWxzZTtcbiAgLy8gICB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucy5zaG93U2F2ZUJ1dHRvbiA9ICFldmVudC5vbmx5VmlldztcbiAgLy8gICB0aGlzLm91dENvbXBpbGVDb25maWd1cmF0aW9ucy5zaG93VGl0bGUgPSBmYWxzZTtcblxuICAvLyAgIGlmIChldmVudCAhPSBudWxsKSB7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXG4gIC8vICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgJiZcbiAgLy8gICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICAvLyBwcmVwYXJvIGxhIHZlcnNpb25lIGNvcnJldHRhIGRlbCBmb3JtXG4gIC8vICAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxuICAvLyAgICAgICAgICAgUGFyYW1WYWx1ZTogZXZlbnQucmVjb3JkLkVudElELFxuICAvLyAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgICB7XG4gIC8vICAgICAgICAgICBQYXJhbU5hbWU6IFwiVmVyc2lvblwiLFxuICAvLyAgICAgICAgICAgUGFyYW1WYWx1ZTogZXZlbnQucmVjb3JkLlZlcnNpb24sXG4gIC8vICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICBdO1xuICAvLyAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcbiAgLy8gICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlEQW5kVmVyc2lvbkVuZFBvaW50LFxuICAvLyAgICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXG4gIC8vICAgICAgICAgKHJlczogRm9ybSkgPT4ge1xuICAvLyAgICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xuXG4gIC8vICAgICAgICAgICAvLyBwcmVwYXJvIGkgZGF0aSBkZWwgcmVjb3JkXG4gIC8vICAgICAgICAgICB2YXIgZHluYW1pY1JlY29yZFBhcmFtcyA9IFtcbiAgLy8gICAgICAgICAgICAge1xuICAvLyAgICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxuICAvLyAgICAgICAgICAgICAgIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5JRCxcbiAgLy8gICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcbiAgLy8gICAgICAgICAgICAgfSxcbiAgLy8gICAgICAgICAgIF07XG4gIC8vICAgICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcbiAgLy8gICAgICAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsXG4gIC8vICAgICAgICAgICAgIGR5bmFtaWNSZWNvcmRQYXJhbXMsXG4gIC8vICAgICAgICAgICAgIChyZXM6IER5blJlY29yZCkgPT4ge1xuICAvLyAgICAgICAgICAgICAgIHRoaXMucmVjb3JkID0gSlNPTi5wYXJzZShyZXMuU2VyaWFsaXplZFZhbHVlcyk7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5yZWNvcmQuSUQgPSByZXMuSUQ7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5yZWNvcmQuRW50SUQgPSByZXMuRW50SUQ7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5yZWNvcmQudXNlcklEID0gcmVzLnVzZXJJRDtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnJlY29yZC5WZXJzaW9uID0gcmVzLlZlcnNpb247XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5yZWNvcmQuSFRNTHJlYWRhYmxlVmFsdWVzID0gcmVzLkhUTUxyZWFkYWJsZVZhbHVlc1xuXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAvLyAgICAgICAgICAgICB9XG4gIC8vICAgICAgICAgICApO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIHRoaXMucmVjb3JkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShldmVudC5yZWNvcmQpKTtcbiAgLy8gICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cbiAgLy8gICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcbiAgLy8gICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XG4gIC8vICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxuICAvLyAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uSUQsXG4gIC8vICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxuICAvLyAgICAgfSk7XG4gIC8vICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcbiAgLy8gICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LFxuICAvLyAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxuICAvLyAgICAgICAocmVzOiBGb3JtKSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xuICAvLyAgICAgICAgIHRoaXMucmVjb3JkID0gbnVsbDtcbiAgLy8gICAgICAgICB0aGlzLm9ubHlWaWV3ID0gZmFsc2U7XG4gIC8vICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAvLyAgICAgICB9LFxuICAvLyAgICAgICAoZXJyKSA9PiB7fVxuICAvLyAgICAgKTtcblxuICAvLyAgICAgLy8gdGhpcy5yZWNvcmQgPSBudWxsO1xuICAvLyAgICAgLy8gdGhpcy5vbmx5VmlldyA9IGZhbHNlO1xuICAvLyAgICAgLy8gdGhpcy52aWV3TW9kZSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uQ09NUElMRTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVkICYmIHJlY29yZCAmJiBwYWdlU3RhdGVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU3RhdGUgPT0gJ3Zpc3VhbGl6emFDb250ZW51dG8nXCI+XG4gICAgICAgIDx2aWV3LWZvcm0tcmVjb3JkIFxuICAgICAgICAgICAgW2RlYnVnTW9kZV09XCJkZWJ1Z01vZGVcIlxuICAgICAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgW3JlY29yZF09XCJyZWNvcmRcIiBcbiAgICAgICAgICAgIFtzaG93QmFja0J1dHRvbl09XCJmYWxzZVwiPlxuICAgICAgICA8L3ZpZXctZm9ybS1yZWNvcmQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVN0YXRlID09ICdtb2RpZmljYUNvbnRlbnV0bydcIj5cbiAgICAgICAgPGFkZC1mb3JtLXJlY29yZFxuICAgICAgICAgICAgW2RlYnVnTW9kZV09XCJkZWJ1Z01vZGVcIlxuICAgICAgICAgICAgW29ubHlWaWV3XT1cIm9ubHlWaWV3XCJcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgICAgW3VzZXJJRF09XCJ1c2VySURcIlxuICAgICAgICAgICAgW3JlY29yZF09XCJyZWNvcmRcIlxuXG4gICAgICAgICAgICBbY29uZmlndXJhdGlvbnNdPVwib3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zXCJcbiAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCJcblxuICAgICAgICAgICAgKHNhdmVSZWNvcmRFdmVudCk9XCJzYXZlT3JFeGl0Rm9ybSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChhZnRlclNhdmVSZWNvcmRFdmVudCk9XCJvbkFmdGVyU2F2ZVJlY29yZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9hZGQtZm9ybS1yZWNvcmQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctY29udGFpbmVyPiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXJlY29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2xpc3Qtdmlldy1mb3JtLXJlY29yZC9zaW5nbGUtcmVjb3JkL3NpbmdsZS1yZWNvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2Zvcm0tcmVjb3Jkcy9saXN0LXZpZXctZm9ybS1yZWNvcmQvc2luZ2xlLXJlY29yZC9zaW5nbGUtcmVjb3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWMvRSxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFFBQVEsQ0FBQyxPQUFlLEVBQUUsT0FBYTtRQUNyQyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FDOUI7SUFDSCxDQUFDO0lBaUJELFlBQ1Usb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUF2QjNDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFTM0IsY0FBUyxHQUFjLHFCQUFxQixDQUFDO1FBRzdDLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBR3JCLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUseUJBQW9CLEdBQzVCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFN0IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixXQUFNLEdBQUcsS0FBSyxDQUFDO0lBSVgsQ0FBQztJQUVMLFFBQVE7UUFFTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsTUFBTTtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOzttSEF6Q1UscUJBQXFCO3VHQUFyQixxQkFBcUIsOFlDZGxDLDY4QkE0QmU7NEZEZEYscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjsyR0FNcEIsU0FBUztzQkFBakIsS0FBSztnQkFPRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgRHluUmVjb3JkLCBSZWNvcmQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbFwiO1xuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcblxudHlwZSBQYWdlU3RhdGUgPSBudWxsIHwgJ3Zpc3VhbGl6emFDb250ZW51dG8nIHwgJ21vZGlmaWNhQ29udGVudXRvJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2luZ2xlLXJlY29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtcmVjb3JkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2luZ2xlLXJlY29yZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNpbmdsZVJlY29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIGRlYnVnTG9nKG1lc3NhZ2U6IHN0cmluZywgZWxlbWVudD86IGFueSl7XG4gICAgaWYodGhpcy5kZWJ1Z01vZGUpe1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgZWxlbWVudClcbiAgICB9XG4gIH1cbiAgXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xuICBASW5wdXQoKSByZWNvcmQ7XG4gIEBJbnB1dCgpIHBhZ2VTdGF0ZTogUGFnZVN0YXRlID0gJ3Zpc3VhbGl6emFDb250ZW51dG8nO1xuICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBvdXRDb21waWxlQ29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnO1xuXG4gIEBPdXRwdXQoKSBzYXZlUmVjb3JkRXZlbnQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XG4gIEBPdXRwdXQoKSBhZnRlclNhdmVSZWNvcmRFdmVudDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xuXG4gIG9ubHlWaWV3ID0gdHJ1ZTtcbiAgbG9hZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICB0aGlzLmxvYWRlZCA9IHRydWU7ICAgIFxuICB9XG5cbiAgLyoqXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBpIGRhdGkgaW5zZXJpdGkgZGFsbCd1dGVudGUgdW5hIHZvbHRhIGNvbmNsdXNhIGxhIGNvbXBpbGF6aW9uZSBkZWxsYSBmb3JtLlxuICAgKi9cbiAgc2F2ZU9yRXhpdEZvcm0ocmVjb3JkOiBSZWNvcmQpIHtcbiAgICB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KHJlY29yZCk7XG4gIH1cbiAgb25BZnRlclNhdmVSZWNvcmQoJGV2ZW50KSB7XG4gICAgdGhpcy5zYXZlUmVjb3JkRXZlbnQuZW1pdCgkZXZlbnQpO1xuICB9XG4gIFxuICAvKipcbiAgICogTWV0b2RvIGludm9jYXRvIHF1YW5kbyBzaSB2dW9sZSBhZ2dpdW5nZXJlLCB2aXN1YWxpenphcmUgbyBtb2RpZmljYXJlIHVuIHJlY29yZC5cbiAgICogU2UgbCdldmVudG8gw6ggbnVsbCB2dW9sIGRpcmUgY2hlIHN0aWFtbyBhZ2dpdW5nZW5kbyB1biBudW92byByZWNvcmQgYWx0cmltZW50aSBzaWFtbyBpbiBtb2RpZmljYVxuICAgKiBvIHZpc3VhbGl6emF6aW9uZS4gSW4gcXVlc3RpIHVsdGltaSBkdWUgY2FzaSwgc2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kcG9pbnQgcGVyIGlsIHJlY3VwZXJvXG4gICAqIGRlbCByZWNvcmQgY29tcGxldG8gYWxsb3JhIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciwgYWx0cmltZW50aSB2aWVuZSB1c2F0byBsJ29nZ2V0dG8gc2VsZXppb25hdG8uXG4gICAqIEBwYXJhbSBldmVudCBPZ2dldHRvIGNvbiBkdWUgcHJvcHJpZXTDoDpcbiAgICogXCJyZWNvcmRcIiA9IG9nZ2V0dG8gZGEgbW9kaWZpY2FyZS92aXN1YWxpenphcmUsXG4gICAqIFwib25seVZpZXdcIiA9IGJvb2xlYW5vIChzZSBUUlVFIHNpYW1vIGluIHZpc3VhbGl6emF6aW9uZSBhbHRyaW1lbnRpIGluIG1vZGlmaWNhKVxuICAgKi9cbiAgLy8gb25BZGRWaWV3RWRpdFJlY29yZDIoZXZlbnQ6IHsgcmVjb3JkOiBSZWNvcmQ7IG9ubHlWaWV3OiBib29sZWFuIH0pIHtcbiAgLy8gICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAvLyAgIHRoaXMucmVjb3JkID0gbnVsbDtcblxuICAvLyAgIHRoaXMub25seVZpZXcgPSBldmVudC5vbmx5VmlldztcblxuICAvLyAgIHRoaXMub3V0Q29tcGlsZUNvbmZpZ3VyYXRpb25zLnNob3dCYWNrQnV0dG9uID0gZmFsc2U7XG4gIC8vICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd1NhdmVCdXR0b24gPSAhZXZlbnQub25seVZpZXc7XG4gIC8vICAgdGhpcy5vdXRDb21waWxlQ29uZmlndXJhdGlvbnMuc2hvd1RpdGxlID0gZmFsc2U7XG5cbiAgLy8gICBpZiAoZXZlbnQgIT0gbnVsbCkge1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxuICAvLyAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzICYmXG4gIC8vICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50XG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgLy8gcHJlcGFybyBsYSB2ZXJzaW9uZSBjb3JyZXR0YSBkZWwgZm9ybVxuICAvLyAgICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcbiAgLy8gICAgICAgICB7XG4gIC8vICAgICAgICAgICBQYXJhbU5hbWU6IFwiRW50SURcIixcbiAgLy8gICAgICAgICAgIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5FbnRJRCxcbiAgLy8gICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgUGFyYW1OYW1lOiBcIlZlcnNpb25cIixcbiAgLy8gICAgICAgICAgIFBhcmFtVmFsdWU6IGV2ZW50LnJlY29yZC5WZXJzaW9uLFxuICAvLyAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgXTtcbiAgLy8gICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXG4gIC8vICAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludCxcbiAgLy8gICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxuICAvLyAgICAgICAgIChyZXM6IEZvcm0pID0+IHtcbiAgLy8gICAgICAgICAgIHRoaXMuZm9ybSA9IHJlcztcblxuICAvLyAgICAgICAgICAgLy8gcHJlcGFybyBpIGRhdGkgZGVsIHJlY29yZFxuICAvLyAgICAgICAgICAgdmFyIGR5bmFtaWNSZWNvcmRQYXJhbXMgPSBbXG4gIC8vICAgICAgICAgICAgIHtcbiAgLy8gICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcbiAgLy8gICAgICAgICAgICAgICBQYXJhbVZhbHVlOiBldmVudC5yZWNvcmQuSUQsXG4gIC8vICAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXG4gIC8vICAgICAgICAgICAgIH0sXG4gIC8vICAgICAgICAgICBdO1xuICAvLyAgICAgICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXG4gIC8vICAgICAgICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50LFxuICAvLyAgICAgICAgICAgICBkeW5hbWljUmVjb3JkUGFyYW1zLFxuICAvLyAgICAgICAgICAgICAocmVzOiBEeW5SZWNvcmQpID0+IHtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnJlY29yZCA9IEpTT04ucGFyc2UocmVzLlNlcmlhbGl6ZWRWYWx1ZXMpO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMucmVjb3JkLklEID0gcmVzLklEO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMucmVjb3JkLkVudElEID0gcmVzLkVudElEO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMucmVjb3JkLnVzZXJJRCA9IHJlcy51c2VySUQ7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5yZWNvcmQuVmVyc2lvbiA9IHJlcy5WZXJzaW9uO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMucmVjb3JkLkhUTUxyZWFkYWJsZVZhbHVlcyA9IHJlcy5IVE1McmVhZGFibGVWYWx1ZXNcblxuICAvLyAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgICAgfVxuICAvLyAgICAgICAgICAgKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICB0aGlzLnJlY29yZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXZlbnQucmVjb3JkKSk7XG4gIC8vICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgLy8gICAgIH1cbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XG4gIC8vICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XG4gIC8vICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xuICAvLyAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcbiAgLy8gICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLklELFxuICAvLyAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXG4gIC8vICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludCxcbiAgLy8gICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcbiAgLy8gICAgICAgKHJlczogRm9ybSkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuZm9ybSA9IHJlcztcbiAgLy8gICAgICAgICB0aGlzLnJlY29yZCA9IG51bGw7XG4gIC8vICAgICAgICAgdGhpcy5vbmx5VmlldyA9IGZhbHNlO1xuICAvLyAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgLy8gICAgICAgfSxcbiAgLy8gICAgICAgKGVycikgPT4ge31cbiAgLy8gICAgICk7XG5cbiAgLy8gICAgIC8vIHRoaXMucmVjb3JkID0gbnVsbDtcbiAgLy8gICAgIC8vIHRoaXMub25seVZpZXcgPSBmYWxzZTtcbiAgLy8gICAgIC8vIHRoaXMudmlld01vZGUgPSBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtLkNPTVBJTEU7XG4gIC8vICAgfVxuICAvLyB9XG4gIFxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlZCAmJiByZWNvcmQgJiYgcGFnZVN0YXRlXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVN0YXRlID09ICd2aXN1YWxpenphQ29udGVudXRvJ1wiPlxuICAgICAgICA8dmlldy1mb3JtLXJlY29yZCBcbiAgICAgICAgICAgIFtkZWJ1Z01vZGVdPVwiZGVidWdNb2RlXCJcbiAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCJcbiAgICAgICAgICAgIFtyZWNvcmRdPVwicmVjb3JkXCIgXG4gICAgICAgICAgICBbc2hvd0JhY2tCdXR0b25dPVwiZmFsc2VcIj5cbiAgICAgICAgPC92aWV3LWZvcm0tcmVjb3JkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VTdGF0ZSA9PSAnbW9kaWZpY2FDb250ZW51dG8nXCI+XG4gICAgICAgIDxhZGQtZm9ybS1yZWNvcmRcbiAgICAgICAgICAgIFtkZWJ1Z01vZGVdPVwiZGVidWdNb2RlXCJcbiAgICAgICAgICAgIFtvbmx5Vmlld109XCJvbmx5Vmlld1wiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgIFt1c2VySURdPVwidXNlcklEXCJcbiAgICAgICAgICAgIFtyZWNvcmRdPVwicmVjb3JkXCJcblxuICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb25zXT1cIm91dENvbXBpbGVDb25maWd1cmF0aW9uc1wiXG4gICAgICAgICAgICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiXG5cbiAgICAgICAgICAgIChzYXZlUmVjb3JkRXZlbnQpPVwic2F2ZU9yRXhpdEZvcm0oJGV2ZW50KVwiXG4gICAgICAgICAgICAoYWZ0ZXJTYXZlUmVjb3JkRXZlbnQpPVwib25BZnRlclNhdmVSZWNvcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgIDwvYWRkLWZvcm0tcmVjb3JkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L25nLWNvbnRhaW5lcj4iXX0=