fabrikantencore 1.3.2 → 1.3.4

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 (26) hide show
  1. package/esm2020/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.mjs +3 -3
  2. package/esm2020/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.mjs +2 -2
  3. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.mjs +5 -5
  4. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.mjs +7 -6
  5. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +20 -18
  6. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.mjs +2 -2
  7. package/esm2020/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.mjs +2 -2
  8. package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +19 -12
  9. package/esm2020/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.mjs +16 -31
  10. package/esm2020/src/app/modules/fabrikantencore/services/mobile.service.mjs +3 -2
  11. package/esm2020/src/app/modules/fabrikantencore/services/svg.service.mjs +15 -1
  12. package/esm2020/src/app/modules/fabrikantencore/services/webgl.service.mjs +16 -1
  13. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +11 -1
  14. package/fesm2015/fabrikantencore.mjs +144 -112
  15. package/fesm2015/fabrikantencore.mjs.map +1 -1
  16. package/fesm2020/fabrikantencore.mjs +141 -112
  17. package/fesm2020/fabrikantencore.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.d.ts +3 -2
  20. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +3 -1
  21. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.d.ts +2 -1
  22. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.d.ts +1 -3
  23. package/src/app/modules/fabrikantencore/services/mobile.service.d.ts +2 -1
  24. package/src/app/modules/fabrikantencore/services/svg.service.d.ts +4 -0
  25. package/src/app/modules/fabrikantencore/services/webgl.service.d.ts +2 -0
  26. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +10 -0
@@ -6,9 +6,14 @@ import * as i3 from "../../services/translate.service";
6
6
  import * as i4 from "@angular/platform-browser";
7
7
  import * as i5 from "../../services/mobile.service";
8
8
  import * as i6 from "@angular/common";
9
- import * as i7 from "@angular/material/button";
10
- import * as i8 from "@angular/material/icon";
11
- import * as i9 from "../fab-loader/fab-loader.component";
9
+ import * as i7 from "@angular/material/form-field";
10
+ import * as i8 from "@angular/forms";
11
+ import * as i9 from "@angular/material/button";
12
+ import * as i10 from "@angular/material/card";
13
+ import * as i11 from "@angular/material/icon";
14
+ import * as i12 from "@angular/material/select";
15
+ import * as i13 from "@angular/material/core";
16
+ import * as i14 from "../fab-loader/fab-loader.component";
12
17
  export class FabSvgViewerComponent {
13
18
  constructor(FabrikantenService, SVGService, TranslateService, sanitization, MobileService, ChangeDetectorRef) {
14
19
  this.FabrikantenService = FabrikantenService;
@@ -44,7 +49,6 @@ export class FabSvgViewerComponent {
44
49
  this.FabrikantenService.OpenBCBLink(this.SVGService.FabrikantenSVGViewModel.wuid + "");
45
50
  }
46
51
  UpdateSize() {
47
- this.MobileService.UpdateScreenSize(window.innerWidth, window.innerHeight);
48
52
  if (this.svgcontainer != undefined) {
49
53
  var width = this.svgcontainer.nativeElement.offsetWidth - 6;
50
54
  var height = this.svgcontainer.nativeElement.offsetHeight - 6;
@@ -56,19 +60,22 @@ export class FabSvgViewerComponent {
56
60
  }
57
61
  }
58
62
  }
59
- GetHeight() {
60
- var height = 0;
61
- if (this.header != undefined) {
62
- height += this.header.nativeElement.offsetHeight;
63
+ RefreshSnede() {
64
+ if (this.FabrikantenService?.FabrikantenViewModel?.sessionId != null) {
65
+ this.SVGService.LoadFabrikantenSVGViewModel(this.FabrikantenService.FabrikantenViewModel.sessionId, this.ChangeDetectorRef);
66
+ }
67
+ }
68
+ RefreshSchaal() {
69
+ if (this.FabrikantenService?.FabrikantenViewModel?.sessionId != null) {
70
+ this.SVGService.LoadFabrikantenSVGViewModel(this.FabrikantenService.FabrikantenViewModel.sessionId, this.ChangeDetectorRef);
63
71
  }
64
- return "calc(100% - " + height + "px)";
65
72
  }
66
73
  }
67
74
  FabSvgViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabSvgViewerComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.SVGService }, { token: i3.TranslateService }, { token: i4.DomSanitizer }, { token: i5.MobileService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
68
- FabSvgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabSvgViewerComponent, selector: "app-fab-svg-viewer", viewQueries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "svgcontainer", first: true, predicate: ["svgcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"SVGService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n \n <div class=\"main-window\" *ngIf=\"ShowSVG()\">\n <div #header [ngClass]=\"{ 'toolbar': !MobileService.MobileInterface, 'toolbar-mobile': MobileService.MobileInterface }\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"SVGService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button autocad-2d-button\" (click)=\"FabrikantenService.Download2DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-2d-button\" (click)=\"FabrikantenService.Download2DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #svgcontainer class=\"svg-container\" [style.height]=\"GetHeight()\">\n <object class=\"svg-object\" *ngIf=\"ShowSVG()\" type=\"image/svg+xml\" [attr.data]=\"GetSafeURL()\"></object>\n </div>\n </div>\n</div>\n", styles: [".row{display:flex;line-height:37px}.icon{margin-right:3px}.row-icon{align-items:center;display:flex}.rfa-button{width:91px}.arkey-adomi-button{width:244px}.ifc-button{width:80px}.revit-plugin-button{width:143px}.autocad-2d-button{width:168px}.dxf-2d-button{width:101px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-title{flex:auto}.loader{position:absolute;width:100%;height:100%;justify-content:center}.main-window{height:100%;overflow:hidden}.toolbar{display:flex;padding:3px}.toolbar-mobile{padding-bottom:5px}.svg-container{overflow:auto;background-color:#f1eeeb}.toolbar-actions{flex:auto}.svg-object{cursor:grab}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }] });
75
+ FabSvgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabSvgViewerComponent, selector: "app-fab-svg-viewer", viewQueries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "svgcontainer", first: true, predicate: ["svgcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"SVGService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n \n <div class=\"main-window flex-col\" *ngIf=\"ShowSVG()\">\n <div #header [ngClass]=\"{ 'toolbar': !MobileService.MobileInterface, 'toolbar-mobile': MobileService.MobileInterface }\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"SVGService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button autocad-2d-button\" (click)=\"FabrikantenService.Download2DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-2d-button\" (click)=\"FabrikantenService.Download2DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #svgcontainer class=\"svg-container\">\n <object class=\"svg-object\" *ngIf=\"ShowSVG()\" type=\"image/svg+xml\" [attr.data]=\"GetSafeURL()\"></object>\n </div>\n\n <div class=\"svg-settings\">\n <div class=\"flex-auto\"></div>\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <mat-form-field appearance=\"fill\">\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(\"Common\", \"Snede\") }}</mat-label>\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\n {{ TranslateService.GetActiveValue(\"Common\", snede) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(\"Common\", \"Schaal\") }}</mat-label>\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\n <mat-option [value]=\"'0'\">1:1</mat-option>\n <mat-option [value]=\"'1'\">1:2</mat-option>\n <mat-option [value]=\"'2'\">1:5</mat-option>\n <mat-option [value]=\"'3'\">1:10</mat-option>\n <mat-option [value]=\"'4'\">1:20</mat-option>\n <mat-option [value]=\"'5'\">1:50</mat-option>\n <mat-option [value]=\"'6'\">1:100</mat-option>\n <mat-option [value]=\"'7'\">1:200</mat-option>\n <mat-option [value]=\"'8'\">1:500</mat-option>\n <mat-option [value]=\"'9'\">1:1000</mat-option>\n <mat-option [value]=\"'10'\">1:2000</mat-option>\n <mat-option [value]=\"'11'\">1:5000</mat-option>\n <mat-option [value]=\"'12'\">1:10000</mat-option>\n <mat-option [value]=\"'13'\">1:20000</mat-option>\n <mat-option [value]=\"'14'\">1:50000</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n", styles: [".row{display:flex;line-height:37px}.icon{margin-right:3px}.row-icon{align-items:center;display:flex}.flex-auto{flex:auto}.column{display:flex;flex-direction:column}.rfa-button{width:91px}.svg-settings{position:absolute;top:60px;right:10px;width:100%;display:flex}.arkey-adomi-button{width:244px}.ifc-button{width:80px}.revit-plugin-button{width:143px}.autocad-2d-button{width:168px}.dxf-2d-button{width:101px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-title{flex:auto}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.main-window{height:100%;overflow:hidden}.toolbar{display:flex;padding:3px}.toolbar-mobile{padding-bottom:5px}.svg-container{overflow:auto;background-color:#f1eeeb;height:100%}.toolbar-actions{flex:auto}.svg-object{cursor:grab}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.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: i10.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.FabLoaderComponent, selector: "app-fab-loader" }] });
69
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabSvgViewerComponent, decorators: [{
70
77
  type: Component,
71
- args: [{ selector: 'app-fab-svg-viewer', template: "<div class=\"loader\" *ngIf=\"SVGService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n \n <div class=\"main-window\" *ngIf=\"ShowSVG()\">\n <div #header [ngClass]=\"{ 'toolbar': !MobileService.MobileInterface, 'toolbar-mobile': MobileService.MobileInterface }\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"SVGService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button autocad-2d-button\" (click)=\"FabrikantenService.Download2DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-2d-button\" (click)=\"FabrikantenService.Download2DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #svgcontainer class=\"svg-container\" [style.height]=\"GetHeight()\">\n <object class=\"svg-object\" *ngIf=\"ShowSVG()\" type=\"image/svg+xml\" [attr.data]=\"GetSafeURL()\"></object>\n </div>\n </div>\n</div>\n", styles: [".row{display:flex;line-height:37px}.icon{margin-right:3px}.row-icon{align-items:center;display:flex}.rfa-button{width:91px}.arkey-adomi-button{width:244px}.ifc-button{width:80px}.revit-plugin-button{width:143px}.autocad-2d-button{width:168px}.dxf-2d-button{width:101px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-title{flex:auto}.loader{position:absolute;width:100%;height:100%;justify-content:center}.main-window{height:100%;overflow:hidden}.toolbar{display:flex;padding:3px}.toolbar-mobile{padding-bottom:5px}.svg-container{overflow:auto;background-color:#f1eeeb}.toolbar-actions{flex:auto}.svg-object{cursor:grab}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"] }]
78
+ args: [{ selector: 'app-fab-svg-viewer', template: "<div class=\"loader\" *ngIf=\"SVGService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n \n <div class=\"main-window flex-col\" *ngIf=\"ShowSVG()\">\n <div #header [ngClass]=\"{ 'toolbar': !MobileService.MobileInterface, 'toolbar-mobile': MobileService.MobileInterface }\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"SVGService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button autocad-2d-button\" (click)=\"FabrikantenService.Download2DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-2d-button\" (click)=\"FabrikantenService.Download2DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download2DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download2DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"2D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #svgcontainer class=\"svg-container\">\n <object class=\"svg-object\" *ngIf=\"ShowSVG()\" type=\"image/svg+xml\" [attr.data]=\"GetSafeURL()\"></object>\n </div>\n\n <div class=\"svg-settings\">\n <div class=\"flex-auto\"></div>\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <mat-form-field appearance=\"fill\">\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(\"Common\", \"Snede\") }}</mat-label>\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\n {{ TranslateService.GetActiveValue(\"Common\", snede) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(\"Common\", \"Schaal\") }}</mat-label>\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\n <mat-option [value]=\"'0'\">1:1</mat-option>\n <mat-option [value]=\"'1'\">1:2</mat-option>\n <mat-option [value]=\"'2'\">1:5</mat-option>\n <mat-option [value]=\"'3'\">1:10</mat-option>\n <mat-option [value]=\"'4'\">1:20</mat-option>\n <mat-option [value]=\"'5'\">1:50</mat-option>\n <mat-option [value]=\"'6'\">1:100</mat-option>\n <mat-option [value]=\"'7'\">1:200</mat-option>\n <mat-option [value]=\"'8'\">1:500</mat-option>\n <mat-option [value]=\"'9'\">1:1000</mat-option>\n <mat-option [value]=\"'10'\">1:2000</mat-option>\n <mat-option [value]=\"'11'\">1:5000</mat-option>\n <mat-option [value]=\"'12'\">1:10000</mat-option>\n <mat-option [value]=\"'13'\">1:20000</mat-option>\n <mat-option [value]=\"'14'\">1:50000</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n", styles: [".row{display:flex;line-height:37px}.icon{margin-right:3px}.row-icon{align-items:center;display:flex}.flex-auto{flex:auto}.column{display:flex;flex-direction:column}.rfa-button{width:91px}.svg-settings{position:absolute;top:60px;right:10px;width:100%;display:flex}.arkey-adomi-button{width:244px}.ifc-button{width:80px}.revit-plugin-button{width:143px}.autocad-2d-button{width:168px}.dxf-2d-button{width:101px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-title{flex:auto}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.main-window{height:100%;overflow:hidden}.toolbar{display:flex;padding:3px}.toolbar-mobile{padding-bottom:5px}.svg-container{overflow:auto;background-color:#f1eeeb;height:100%}.toolbar-actions{flex:auto}.svg-object{cursor:grab}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"] }]
72
79
  }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.SVGService }, { type: i3.TranslateService }, { type: i4.DomSanitizer }, { type: i5.MobileService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{
73
80
  type: ViewChild,
74
81
  args: ['header']
@@ -76,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
76
83
  type: ViewChild,
77
84
  args: ['svgcontainer']
78
85
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXN2Zy12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1zdmctdmlld2VyL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItc3ZnLXZpZXdlci9mYWItc3ZnLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBMEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVkvSCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQ1Msa0JBQXNDLEVBQ3RDLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNqQyxZQUEwQixFQUMzQixhQUE0QixFQUMzQixpQkFBb0M7UUFMckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLElBQUksU0FBUyxFQUFFO2dCQUN4RCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNFLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTLEVBQUU7WUFFbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBRTlELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRTtnQkFDbEYsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDNUIsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztTQUNsRDtRQUVELE9BQU8sY0FBYyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQzs7a0hBMUVVLHFCQUFxQjtzR0FBckIscUJBQXFCLDJQQ1psQyxzMElBMEZBOzJGRDlFYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usb0JBQW9CO3dQQU1ULE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVkdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ZnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItc3ZnLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItc3ZnLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiU3ZnVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcblxuICBAVmlld0NoaWxkKCdoZWFkZXInKSBoZWFkZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N2Z2NvbnRhaW5lcicpIHN2Z2NvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIHRpbWVvdXRJZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgU1ZHU2VydmljZTogU1ZHU2VydmljZSxcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5VcGRhdGVTaXplKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlVwZGF0ZVNpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlVwZGF0ZVNpemUoKTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5VcGRhdGVTaXplKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTaG93U1ZHKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLkZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKSkge1xyXG4gICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0U2FmZVVSTCgpOiBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemF0aW9uLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuc3ZnICsgXCJcIik7XHJcbiAgfVxuXG4gIHB1YmxpYyBPcGVuQkNCTGluaygpOiB2b2lkIHtcclxuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW5CQ0JMaW5rKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC53dWlkICsgXCJcIik7XHJcbiAgfVxuXG4gIHB1YmxpYyBVcGRhdGVTaXplKCk6IHZvaWQge1xuICAgIHRoaXMuTW9iaWxlU2VydmljZS5VcGRhdGVTY3JlZW5TaXplKHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQpO1xyXG5cclxuICAgIGlmICh0aGlzLnN2Z2NvbnRhaW5lciAhPSB1bmRlZmluZWQpIHtcclxuXHJcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMuc3ZnY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA2O1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5zdmdjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSA2O1xyXG5cclxuICAgICAgaWYgKHRoaXMuU1ZHU2VydmljZS5WaWV3ZXJXaWR0aCAhPSB3aWR0aCB8fCB0aGlzLlNWR1NlcnZpY2UuVmlld2VySGVpZ2h0ICE9IGhlaWdodCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XHJcblxyXG4gICAgICAgIHRoaXMudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlNWR1NlcnZpY2UuVXBkYXRlVmlld2VyU2l6ZSh3aWR0aCwgaGVpZ2h0LCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICB9LCAzMDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBHZXRIZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIHZhciBoZWlnaHQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaGVpZ2h0ICs9IHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcImNhbGMoMTAwJSAtIFwiICsgaGVpZ2h0ICsgXCJweClcIjtcclxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyXCIgKm5nSWY9XCJTVkdTZXJ2aWNlLkxvYWRpbmdcIj5cbiAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1haW4td2luZG93XCI+XG4gIDxkaXYgKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKClcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiTXVsdGlwbGUgdmFyaWFudHNcIikgfX1cbiAgICA8ZGl2PlxuICAgICAgPHVsPlxuICAgICAgICA8bGkgY2xhc3M9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nRm9yPVwibGV0IGJjYnByb2R1Y3Qgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzXCI+XG4gICAgICAgICAge3sgYmNicHJvZHVjdC5uYW1lIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgY2xhc3M9XCJtYWluLXdpbmRvd1wiICpuZ0lmPVwiU2hvd1NWRygpXCI+XG4gICAgPGRpdiAjaGVhZGVyIFtuZ0NsYXNzXT1cInsgJ3Rvb2xiYXInOiAhTW9iaWxlU2VydmljZS5Nb2JpbGVJbnRlcmZhY2UsICd0b29sYmFyLW1vYmlsZSc6IE1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlIH1cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZmEtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQSgpXCIgKm5nSWY9XCJTVkdTZXJ2aWNlLkhhc05hdGl2ZVJGQSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiUmV2aXRcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gYXJrZXktYWRvbWktYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEFSS0VZQWRvbWkoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQVJLRVkgQWRvbWlcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gaWZjLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkMoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIklGQ1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhdXRvY2FkLTJkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2coKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIjJEIEF1dG9DQUQgRHdnXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGR4Zi0yZC1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkMkREeGYoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyRER4ZkxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDJERHhmTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIyRCBEeGZcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiT3BlbkJDQkxpbmsoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJCQ0JcIikgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI3N2Z2NvbnRhaW5lciBjbGFzcz1cInN2Zy1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0XT1cIkdldEhlaWdodCgpXCI+XG4gICAgICA8b2JqZWN0IGNsYXNzPVwic3ZnLW9iamVjdFwiICpuZ0lmPVwiU2hvd1NWRygpXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBbYXR0ci5kYXRhXT1cIkdldFNhZmVVUkwoKVwiPjwvb2JqZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXN2Zy12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1zdmctdmlld2VyL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItc3ZnLXZpZXdlci9mYWItc3ZnLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBMEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBWS9ILE1BQU0sT0FBTyxxQkFBcUI7SUFPaEMsWUFDUyxrQkFBc0MsRUFDdEMsVUFBc0IsRUFDdEIsZ0JBQWtDLEVBQ2pDLFlBQTBCLEVBQzNCLGFBQTRCLEVBQzNCLGlCQUFvQztRQUxyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQzVDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsSUFBSSxTQUFTLEVBQUU7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTLEVBQUU7WUFFbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBRTlELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRTtnQkFDbEYsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM3SDtJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzdIO0lBQ0gsQ0FBQzs7a0hBMUVVLHFCQUFxQjtzR0FBckIscUJBQXFCLDJQQ1psQyxrME1BZ0lBOzJGRHBIYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usb0JBQW9CO3dQQU1ULE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVkdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ZnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItc3ZnLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItc3ZnLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiU3ZnVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcblxuICBAVmlld0NoaWxkKCdoZWFkZXInKSBoZWFkZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N2Z2NvbnRhaW5lcicpIHN2Z2NvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIHRpbWVvdXRJZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgU1ZHU2VydmljZTogU1ZHU2VydmljZSxcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5VcGRhdGVTaXplKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlVwZGF0ZVNpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlVwZGF0ZVNpemUoKTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5VcGRhdGVTaXplKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTaG93U1ZHKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLkZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKSkge1xyXG4gICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgR2V0U2FmZVVSTCgpOiBTYWZlUmVzb3VyY2VVcmwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemF0aW9uLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuc3ZnICsgXCJcIik7XHJcbiAgfVxuXG4gIHB1YmxpYyBPcGVuQkNCTGluaygpOiB2b2lkIHtcclxuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW5CQ0JMaW5rKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC53dWlkICsgXCJcIik7XHJcbiAgfVxuXG4gIHB1YmxpYyBVcGRhdGVTaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc3ZnY29udGFpbmVyICE9IHVuZGVmaW5lZCkge1xyXG5cclxuICAgICAgdmFyIHdpZHRoID0gdGhpcy5zdmdjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDY7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnN2Z2NvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDY7XHJcblxyXG4gICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLlZpZXdlcldpZHRoICE9IHdpZHRoIHx8IHRoaXMuU1ZHU2VydmljZS5WaWV3ZXJIZWlnaHQgIT0gaGVpZ2h0KSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElkKTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuU1ZHU2VydmljZS5VcGRhdGVWaWV3ZXJTaXplKHdpZHRoLCBoZWlnaHQsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgIH0sIDMwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFJlZnJlc2hTbmVkZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2U/LkZhYnJpa2FudGVuVmlld01vZGVsPy5zZXNzaW9uSWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNWR1NlcnZpY2UuTG9hZEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9XHJcbiAgfVxuXG4gIHB1YmxpYyBSZWZyZXNoU2NoYWFsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZT8uRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlc3Npb25JZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU1ZHU2VydmljZS5Mb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyXCIgKm5nSWY9XCJTVkdTZXJ2aWNlLkxvYWRpbmdcIj5cbiAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1haW4td2luZG93XCI+XG4gIDxkaXYgKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKClcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiTXVsdGlwbGUgdmFyaWFudHNcIikgfX1cbiAgICA8ZGl2PlxuICAgICAgPHVsPlxuICAgICAgICA8bGkgY2xhc3M9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nRm9yPVwibGV0IGJjYnByb2R1Y3Qgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzXCI+XG4gICAgICAgICAge3sgYmNicHJvZHVjdC5uYW1lIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgY2xhc3M9XCJtYWluLXdpbmRvdyBmbGV4LWNvbFwiICpuZ0lmPVwiU2hvd1NWRygpXCI+XG4gICAgPGRpdiAjaGVhZGVyIFtuZ0NsYXNzXT1cInsgJ3Rvb2xiYXInOiAhTW9iaWxlU2VydmljZS5Nb2JpbGVJbnRlcmZhY2UsICd0b29sYmFyLW1vYmlsZSc6IE1vYmlsZVNlcnZpY2UuTW9iaWxlSW50ZXJmYWNlIH1cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZmEtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQSgpXCIgKm5nSWY9XCJTVkdTZXJ2aWNlLkhhc05hdGl2ZVJGQSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiUmV2aXRcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gYXJrZXktYWRvbWktYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEFSS0VZQWRvbWkoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQVJLRVkgQWRvbWlcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gaWZjLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkMoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIklGQ1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhdXRvY2FkLTJkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2coKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyREF1dG9DQUREd2dMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIjJEIEF1dG9DQUQgRHdnXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGR4Zi0yZC1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkMkREeGYoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQyRER4ZkxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDJERHhmTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIyRCBEeGZcIikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiT3BlbkJDQkxpbmsoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJCQ0JcIikgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI3N2Z2NvbnRhaW5lciBjbGFzcz1cInN2Zy1jb250YWluZXJcIj5cbiAgICAgIDxvYmplY3QgY2xhc3M9XCJzdmctb2JqZWN0XCIgKm5nSWY9XCJTaG93U1ZHKClcIiB0eXBlPVwiaW1hZ2Uvc3ZnK3htbFwiIFthdHRyLmRhdGFdPVwiR2V0U2FmZVVSTCgpXCI+PC9vYmplY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3ZnLXNldHRpbmdzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1hdXRvXCI+PC9kaXY+XG4gICAgICA8bWF0LWNhcmQ+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwic2VsZWN0LW1hdC1sYWJlbFwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJTbmVkZVwiKSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNWR1NlcnZpY2UuU25lZGVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlJlZnJlc2hTbmVkZSgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNuZWRlIG9mIFNWR1NlcnZpY2UuU25lZGVzXCIgW3ZhbHVlXT1cInNuZWRlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIHNuZWRlKSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwic2VsZWN0LW1hdC1sYWJlbFwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJTY2hhYWxcIikgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTVkdTZXJ2aWNlLlNjaGFhbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiUmVmcmVzaFNjaGFhbCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicwJ1wiPjE6MTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEnXCI+MToyPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMidcIj4xOjU8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIiczJ1wiPjE6MTA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic0J1wiPjE6MjA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic1J1wiPjE6NTA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic2J1wiPjE6MTAwPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNydcIj4xOjIwMDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzgnXCI+MTo1MDA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic5J1wiPjE6MTAwMDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEwJ1wiPjE6MjAwMDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzExJ1wiPjE6NTAwMDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEyJ1wiPjE6MTAwMDA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMydcIj4xOjIwMDAwPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMTQnXCI+MTo1MDAwMDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -15,7 +15,7 @@ export class FabWebglViewerComponent {
15
15
  this.TranslateService = TranslateService;
16
16
  this.MobileService = MobileService;
17
17
  this.ChangeDetectorRef = ChangeDetectorRef;
18
- this.viewerInitialised = false;
18
+ this.Height = "calc(100% - 0px)";
19
19
  this.WebGLService.FabWebglViewerComponent = this;
20
20
  this.RefreshViewerSize();
21
21
  }
@@ -24,6 +24,7 @@ export class FabWebglViewerComponent {
24
24
  }
25
25
  ngAfterViewInit() {
26
26
  this.RefreshViewerSize();
27
+ this.RefreshViewer();
27
28
  this.ChangeDetectorRef.detectChanges();
28
29
  }
29
30
  ngDoCheck() {
@@ -44,58 +45,42 @@ export class FabWebglViewerComponent {
44
45
  if (!this.WebGLService.Loading && this.WebGLService.Fabrikanten3DViewModel != null) {
45
46
  var viewer = ModuleViewer3DLight.get("viewerCanvas");
46
47
  if (viewer != null) {
47
- if (this.viewerInitialised) {
48
- var belichting = viewer.belichting;
49
- belichting.toonSlagschaduw = true;
50
- belichting.slagschaduwVerzadiging = 0.5;
51
- belichting.lichtbronSterkte = 0.4;
52
- belichting.lichtSchittering = 0.333;
53
- belichting.isCameraLicht = false;
54
- belichting.omgevinglichtSterkte = 0.8;
55
- belichting.lichtval = [-1.0, 0.5, -1.2];
56
- viewer.orthografischeProjectie = false;
57
- viewer.kijkrichting = [0.56777614549287847, 0.69328989820855813, -0.44382357491599833];
58
- this.viewerInitialised = true;
59
- }
48
+ var belichting = viewer.belichting;
49
+ belichting.toonSlagschaduw = true;
50
+ belichting.slagschaduwVerzadiging = 0.5;
51
+ belichting.lichtbronSterkte = 0.8;
52
+ belichting.lichtSchittering = 0.333;
53
+ belichting.isCameraLicht = false;
54
+ belichting.omgevinglichtSterkte = 0.4;
55
+ belichting.lichtval = [-1.0, 0.5, -1.2];
56
+ viewer.orthografischeProjectie = false;
57
+ viewer.kijkrichting = [0.50023241910093, 0.7443600526604934, -0.4423749980318723];
60
58
  viewer.clear();
61
59
  viewer.add(this.WebGLService.Fabrikanten3DViewModel.webGLJSON, function () {
62
60
  viewer.zetZoomGeheel();
63
61
  viewer.toonModel();
64
62
  });
65
63
  }
66
- console.log("refresh viewer");
67
64
  }
68
65
  }
69
- GetHeight() {
70
- var height = 0;
71
- if (this.header != undefined) {
72
- height += this.header.nativeElement.offsetHeight;
73
- }
74
- return "calc(100% - " + height + "px)";
75
- }
76
66
  RefreshViewerSize() {
77
- this.MobileService.UpdateScreenSize(window.innerWidth, window.innerHeight);
78
67
  if (this.viewercontainer != undefined) {
79
68
  var width = this.viewercontainer.nativeElement.offsetWidth - 6;
80
69
  var height = this.viewercontainer.nativeElement.offsetHeight - 6;
81
70
  if (this.WebGLService.ViewerWidth != width || this.WebGLService.ViewerHeight != height) {
82
- clearTimeout(this.timeoutId);
83
71
  this.WebGLService.ViewerWidth = width;
84
72
  this.WebGLService.ViewerHeight = height;
85
73
  this.ChangeDetectorRef.detectChanges();
86
- console.log("width:" + width + " height: " + height);
87
- this.timeoutId = setTimeout(() => {
88
- this.RefreshViewer();
89
- }, 300);
74
+ this.RefreshViewer();
90
75
  }
91
76
  }
92
77
  }
93
78
  }
94
79
  FabWebglViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabWebglViewerComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.WebGLService }, { token: i3.TranslateService }, { token: i4.MobileService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
95
- FabWebglViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabWebglViewerComponent, selector: "app-fab-webgl-viewer", viewQueries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "viewercontainer", first: true, predicate: ["viewercontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window\">\n <div #header class=\"toolbar\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #viewercontainer class=\"viewer-container\" [style.height]=\"GetHeight()\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.loader{position:absolute;width:100%;height:100%;justify-content:center}.icon{margin-right:3px}.viewer-container{overflow:auto}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }] });
80
+ FabWebglViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabWebglViewerComponent, selector: "app-fab-webgl-viewer", viewQueries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "viewercontainer", first: true, predicate: ["viewercontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #header class=\"toolbar\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }] });
96
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabWebglViewerComponent, decorators: [{
97
82
  type: Component,
98
- args: [{ selector: 'app-fab-webgl-viewer', template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window\">\n <div #header class=\"toolbar\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #viewercontainer class=\"viewer-container\" [style.height]=\"GetHeight()\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.loader{position:absolute;width:100%;height:100%;justify-content:center}.icon{margin-right:3px}.viewer-container{overflow:auto}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"] }]
83
+ args: [{ selector: 'app-fab-webgl-viewer', template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #header class=\"toolbar\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-right:5px;flex:auto;padding:0 3px}.button{margin:5px;width:100%}\n"] }]
99
84
  }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.WebGLService }, { type: i3.TranslateService }, { type: i4.MobileService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{
100
85
  type: ViewChild,
101
86
  args: ['header']
@@ -103,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
103
88
  type: ViewChild,
104
89
  args: ['viewercontainer']
105
90
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXdlYmdsLXZpZXdlci9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItd2ViZ2wtdmlld2VyL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQWNsSSxNQUFNLE9BQU8sdUJBQXVCO0lBUWxDLFlBQ1Msa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUMzQixpQkFBb0M7UUFKckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFYdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBYXhDLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLElBQUksU0FBUyxFQUFFO2dCQUN6RCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixJQUFJLElBQUksRUFBRTtZQUNsRixJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFckQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO2dCQUNsQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDMUIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztvQkFDbkMsVUFBVSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ2xDLFVBQVUsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUM7b0JBQ3hDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7b0JBQ2xDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7b0JBQ3BDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUNqQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDO29CQUN0QyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBRXZGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7aUJBQy9CO2dCQUVELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFO29CQUM3RCxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWYsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUM1QixNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxjQUFjLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0UsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVMsRUFBRTtZQUVyQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7WUFFakUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksTUFBTSxFQUFFO2dCQUN0RixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUU3QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUV2QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUVyRCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUM7O29IQTlHVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixtUUNkcEMsK3ZKQXNHQTsyRkR4RmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjsrTkFTWCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ1csZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9iaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vYmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ViR0xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2ViZ2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuQXBpQ2xpZW50LCBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwsIEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxuZGVjbGFyZSB2YXIgTW9kdWxlVmlld2VyM0RMaWdodDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmFiLXdlYmdsLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZhYldlYmdsVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcblxuICBwdWJsaWMgdmlld2VySW5pdGlhbGlzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lb3V0SWQ6IGFueTtcblxuICBAVmlld0NoaWxkKCdoZWFkZXInKSBoZWFkZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlcmNvbnRhaW5lcicpIHZpZXdlcmNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFdlYkdMU2VydmljZTogV2ViR0xTZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYldlYmdsVmlld2VyQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXJTaXplKCk7XHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcclxuICB9XG5cbiAgcHVibGljIE9wZW5CQ0JMaW5rKCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuT3BlbkJDQkxpbmsodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC53dWlkICsgXCJcIik7XHJcbiAgfVxuXG4gIHB1YmxpYyBTaG93V2ViR0woKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlNob3dWYXJpYW50cygpKSB7XHJcbiAgICAgIGlmICh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cblxuICBwdWJsaWMgUmVmcmVzaFZpZXdlcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5XZWJHTFNlcnZpY2UuTG9hZGluZyAmJiB0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIHZpZXdlciA9IE1vZHVsZVZpZXdlcjNETGlnaHQuZ2V0KFwidmlld2VyQ2FudmFzXCIpO1xyXG5cclxuICAgICAgaWYgKHZpZXdlciAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld2VySW5pdGlhbGlzZWQpIHtcclxuICAgICAgICAgIHZhciBiZWxpY2h0aW5nID0gdmlld2VyLmJlbGljaHRpbmc7XHJcbiAgICAgICAgICBiZWxpY2h0aW5nLnRvb25TbGFnc2NoYWR1dyA9IHRydWU7XHJcbiAgICAgICAgICBiZWxpY2h0aW5nLnNsYWdzY2hhZHV3VmVyemFkaWdpbmcgPSAwLjU7XHJcbiAgICAgICAgICBiZWxpY2h0aW5nLmxpY2h0YnJvblN0ZXJrdGUgPSAwLjQ7XHJcbiAgICAgICAgICBiZWxpY2h0aW5nLmxpY2h0U2NoaXR0ZXJpbmcgPSAwLjMzMztcclxuICAgICAgICAgIGJlbGljaHRpbmcuaXNDYW1lcmFMaWNodCA9IGZhbHNlO1xyXG4gICAgICAgICAgYmVsaWNodGluZy5vbWdldmluZ2xpY2h0U3Rlcmt0ZSA9IDAuODtcclxuICAgICAgICAgIGJlbGljaHRpbmcubGljaHR2YWwgPSBbLTEuMCwgMC41LCAtMS4yXTtcclxuICAgICAgICAgIHZpZXdlci5vcnRob2dyYWZpc2NoZVByb2plY3RpZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdmlld2VyLmtpamtyaWNodGluZyA9IFswLjU2Nzc3NjE0NTQ5Mjg3ODQ3LCAwLjY5MzI4OTg5ODIwODU1ODEzLCAtMC40NDM4MjM1NzQ5MTU5OTgzM107XHJcblxyXG4gICAgICAgICAgdGhpcy52aWV3ZXJJbml0aWFsaXNlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2aWV3ZXIuY2xlYXIoKTtcclxuICAgICAgICB2aWV3ZXIuYWRkKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwud2ViR0xKU09OLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB2aWV3ZXIuemV0Wm9vbUdlaGVlbCgpO1xyXG4gICAgICAgICAgdmlld2VyLnRvb25Nb2RlbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcInJlZnJlc2ggdmlld2VyXCIpO1xyXG4gICAgfVxyXG4gIH1cblxuICBwdWJsaWMgR2V0SGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICB2YXIgaGVpZ2h0ID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5oZWFkZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGhlaWdodCArPSB0aGlzLmhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJjYWxjKDEwMCUgLSBcIiArIGhlaWdodCArIFwicHgpXCI7XHJcbiAgfVxuXG4gIHByaXZhdGUgUmVmcmVzaFZpZXdlclNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5Nb2JpbGVTZXJ2aWNlLlVwZGF0ZVNjcmVlblNpemUod2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7XHJcblxyXG4gICAgaWYgKHRoaXMudmlld2VyY29udGFpbmVyICE9IHVuZGVmaW5lZCkge1xyXG5cclxuICAgICAgdmFyIHdpZHRoID0gdGhpcy52aWV3ZXJjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDY7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnZpZXdlcmNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDY7XHJcblxyXG4gICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuVmlld2VyV2lkdGggIT0gd2lkdGggfHwgdGhpcy5XZWJHTFNlcnZpY2UuVmlld2VySGVpZ2h0ICE9IGhlaWdodCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7XHJcblxyXG4gICAgICAgIHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlcldpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5XZWJHTFNlcnZpY2UuVmlld2VySGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIndpZHRoOlwiICsgd2lkdGggKyBcIiBoZWlnaHQ6IFwiICsgaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuUmVmcmVzaFZpZXdlcigpO1xyXG4gICAgICAgIH0sIDMwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyXCIgKm5nSWY9XCJXZWJHTFNlcnZpY2UuTG9hZGluZ1wiPlxuICA8YXBwLWZhYi1sb2FkZXI+PC9hcHAtZmFiLWxvYWRlcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWFpbi13aW5kb3dcIj5cbiAgPGRpdiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKVwiPlxuICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJNdWx0aXBsZSB2YXJpYW50c1wiKSB9fVxuICAgIDxkaXY+XG4gICAgICA8dWw+XG4gICAgICAgIDxsaSBjbGFzcz1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdGb3I9XCJsZXQgYmNicHJvZHVjdCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNcIj5cbiAgICAgICAgICB7eyBiY2Jwcm9kdWN0Lm5hbWUgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiU2hvd1dlYkdMKClcIiBjbGFzcz1cIm1haW4td2luZG93XCI+XG4gICAgPGRpdiAjaGVhZGVyIGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZmEtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQSgpXCIgKm5nSWY9XCJXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUkZBTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiUmV2aXRcIikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGFya2V5LWFkb21pLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJBUktFWSBBZG9taVwiKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gaWZjLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkMoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJJRkNcIikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZXZpdC1wbHVnaW4tYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJldml0UGx1Z2luKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIlJldml0IChwbHVnaW4pXCIpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPi0tPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhdXRvY2FkLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2coKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkM0RBdXRvQ0FERHdnTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBBdXRvQ0FEIER3Z1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gZHhmLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzRER4ZigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBEeGZcIikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5CQ0JMaW5rKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQkNCXCIpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICN2aWV3ZXJjb250YWluZXIgY2xhc3M9XCJ2aWV3ZXItY29udGFpbmVyXCIgW3N0eWxlLmhlaWdodF09XCJHZXRIZWlnaHQoKVwiPlxuICAgICAgPGNhbnZhcyBpZD1cInZpZXdlckNhbnZhc1wiIGNsYXNzPVwidmlld2VyLWNhbnZhc1wiIFthdHRyLndpZHRoXT1cIldlYkdMU2VydmljZS5WaWV3ZXJXaWR0aFwiIFthdHRyLmhlaWdodF09XCJXZWJHTFNlcnZpY2UuVmlld2VySGVpZ2h0XCI+PC9jYW52YXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXdlYmdsLXZpZXdlci9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItd2ViZ2wtdmlld2VyL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzRCxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQWNwSixNQUFNLE9BQU8sdUJBQXVCO0lBT2xDLFlBQ1Msa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUMzQixpQkFBb0M7UUFKckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFWdkMsV0FBTSxHQUFXLGtCQUFrQixDQUFDO1FBWXpDLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixJQUFJLFNBQVMsRUFBRTtnQkFDekQsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLEVBQUU7WUFDbEYsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXJELElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtnQkFFbEIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDbkMsVUFBVSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUM7Z0JBQ3hDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3BDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDO2dCQUN0QyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBRWxGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFO29CQUM3RCxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksU0FBUyxFQUFFO1lBRXJDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDL0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUVqRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUU7Z0JBRXRGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRXZDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQzs7b0hBeEZVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLG1RQ2RwQyxpc0pBc0dBOzJGRHhGYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCOytOQVFYLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDVyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWJHTFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWJnbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5BcGlDbGllbnQsIEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCwgRmFicmlrYW50ZW5GaWxlVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXG5kZWNsYXJlIHZhciBNb2R1bGVWaWV3ZXIzRExpZ2h0OiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItd2ViZ2wtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiV2ViZ2xWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIERvQ2hlY2sge1xuXG4gIHB1YmxpYyBIZWlnaHQ6IHN0cmluZyA9IFwiY2FsYygxMDAlIC0gMHB4KVwiO1xuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpIGhlYWRlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndmlld2VyY29udGFpbmVyJykgdmlld2VyY29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgV2ViR0xTZXJ2aWNlOiBXZWJHTFNlcnZpY2UsXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIE1vYmlsZVNlcnZpY2U6IE1vYmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5XZWJHTFNlcnZpY2UuRmFiV2ViZ2xWaWV3ZXJDb21wb25lbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5SZWZyZXNoVmlld2VyU2l6ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5SZWZyZXNoVmlld2VyU2l6ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcclxuICAgIHRoaXMuUmVmcmVzaFZpZXdlcigpO1xyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXJTaXplKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBPcGVuQkNCTGluaygpOiB2b2lkIHtcclxuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW5CQ0JMaW5rKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwud3VpZCArIFwiXCIpO1xyXG4gIH1cblxuICBwdWJsaWMgU2hvd1dlYkdMKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLkZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKSkge1xyXG4gICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XG5cbiAgcHVibGljIFJlZnJlc2hWaWV3ZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuV2ViR0xTZXJ2aWNlLkxvYWRpbmcgJiYgdGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciB2aWV3ZXIgPSBNb2R1bGVWaWV3ZXIzRExpZ2h0LmdldChcInZpZXdlckNhbnZhc1wiKTtcclxuXHJcbiAgICAgIGlmICh2aWV3ZXIgIT0gbnVsbCkge1xyXG5cclxuICAgICAgICB2YXIgYmVsaWNodGluZyA9IHZpZXdlci5iZWxpY2h0aW5nO1xyXG4gICAgICAgIGJlbGljaHRpbmcudG9vblNsYWdzY2hhZHV3ID0gdHJ1ZTtcclxuICAgICAgICBiZWxpY2h0aW5nLnNsYWdzY2hhZHV3VmVyemFkaWdpbmcgPSAwLjU7XHJcbiAgICAgICAgYmVsaWNodGluZy5saWNodGJyb25TdGVya3RlID0gMC44O1xyXG4gICAgICAgIGJlbGljaHRpbmcubGljaHRTY2hpdHRlcmluZyA9IDAuMzMzO1xyXG4gICAgICAgIGJlbGljaHRpbmcuaXNDYW1lcmFMaWNodCA9IGZhbHNlO1xyXG4gICAgICAgIGJlbGljaHRpbmcub21nZXZpbmdsaWNodFN0ZXJrdGUgPSAwLjQ7XHJcbiAgICAgICAgYmVsaWNodGluZy5saWNodHZhbCA9IFstMS4wLCAwLjUsIC0xLjJdO1xyXG4gICAgICAgIHZpZXdlci5vcnRob2dyYWZpc2NoZVByb2plY3RpZSA9IGZhbHNlO1xyXG4gICAgICAgIHZpZXdlci5raWprcmljaHRpbmcgPSBbMC41MDAyMzI0MTkxMDA5MywgMC43NDQzNjAwNTI2NjA0OTM0LCAtMC40NDIzNzQ5OTgwMzE4NzIzXTtcclxuXHJcbiAgICAgICAgdmlld2VyLmNsZWFyKCk7XHJcbiAgICAgICAgdmlld2VyLmFkZCh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLndlYkdMSlNPTiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdmlld2VyLnpldFpvb21HZWhlZWwoKTtcclxuICAgICAgICAgIHZpZXdlci50b29uTW9kZWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cblxuICBwcml2YXRlIFJlZnJlc2hWaWV3ZXJTaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmlld2VyY29udGFpbmVyICE9IHVuZGVmaW5lZCkge1xyXG5cclxuICAgICAgdmFyIHdpZHRoID0gdGhpcy52aWV3ZXJjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDY7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnZpZXdlcmNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDY7XHJcblxyXG4gICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuVmlld2VyV2lkdGggIT0gd2lkdGggfHwgdGhpcy5XZWJHTFNlcnZpY2UuVmlld2VySGVpZ2h0ICE9IGhlaWdodCkge1xyXG5cclxuICAgICAgICB0aGlzLldlYkdMU2VydmljZS5WaWV3ZXJXaWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodCA9IGhlaWdodDtcclxuICAgICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5SZWZyZXNoVmlld2VyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGVyXCIgKm5nSWY9XCJXZWJHTFNlcnZpY2UuTG9hZGluZ1wiPlxuICA8YXBwLWZhYi1sb2FkZXI+PC9hcHAtZmFiLWxvYWRlcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWFpbi13aW5kb3dcIj5cbiAgPGRpdiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKVwiPlxuICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJNdWx0aXBsZSB2YXJpYW50c1wiKSB9fVxuICAgIDxkaXY+XG4gICAgICA8dWw+XG4gICAgICAgIDxsaSBjbGFzcz1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdGb3I9XCJsZXQgYmNicHJvZHVjdCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNcIj5cbiAgICAgICAgICB7eyBiY2Jwcm9kdWN0Lm5hbWUgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiU2hvd1dlYkdMKClcIiBjbGFzcz1cIm1haW4td2luZG93IGZsZXgtY29sXCI+XG4gICAgPGRpdiAjaGVhZGVyIGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZmEtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQSgpXCIgKm5nSWY9XCJXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUkZBTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiUmV2aXRcIikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGFya2V5LWFkb21pLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRBUktFWUFkb21pTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJBUktFWSBBZG9taVwiKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gaWZjLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkMoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRJRkNMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJJRkNcIikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiByZXZpdC1wbHVnaW4tYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJldml0UGx1Z2luKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSZXZpdFBsdWdpbkxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiUmV2aXQgKHBsdWdpbilcIikgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+LS0+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGF1dG9jYWQtM2QtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNEQXV0b0NBRER3ZygpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNEQXV0b0NBRER3Z0xvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIjNEIEF1dG9DQUQgRHdnXCIpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkeGYtM2QtYnV0dG9uXCIgKGNsaWNrKT1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkM0REeGZMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkM0REeGZMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIjNEIER4ZlwiKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiT3BlbkJDQkxpbmsoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCJCQ0JcIikgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI3ZpZXdlcmNvbnRhaW5lciBjbGFzcz1cInZpZXdlci1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgaWQ9XCJ2aWV3ZXJDYW52YXNcIiBjbGFzcz1cInZpZXdlci1jYW52YXNcIiBbYXR0ci53aWR0aF09XCJXZWJHTFNlcnZpY2UuVmlld2VyV2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodFwiPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbiJdfQ==
@@ -9,7 +9,7 @@ export class MobileService {
9
9
  OpenNav() {
10
10
  this.NavOpened = true;
11
11
  }
12
- UpdateScreenSize(width, height) {
12
+ UpdateScreenSize(width, height, ChangeDetector) {
13
13
  if (this.ScreenWidth != width || this.ScreenHeight != height) {
14
14
  this.ScreenWidth = width;
15
15
  this.ScreenHeight = height;
@@ -22,6 +22,7 @@ export class MobileService {
22
22
  this.NavMode = "side";
23
23
  this.NavOpened = true;
24
24
  }
25
+ ChangeDetector.detectChanges();
25
26
  }
26
27
  }
27
28
  }
@@ -31,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
31
32
  type: Injectable,
32
33
  args: [{ providedIn: 'root' }]
33
34
  }], ctorParameters: function () { return []; } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL21vYmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxhQUFhO0lBVXhCO1FBTE8sb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsWUFBTyxHQUFrQixNQUFNLENBQUM7UUFDaEMsY0FBUyxHQUFZLElBQUksQ0FBQztJQUdqQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsTUFBYztRQUNuRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxFQUFFO1lBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1lBRTNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFFOUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDeEI7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1NBQ0Y7SUFDSCxDQUFDOzswR0FqQ1UsYUFBYTs4R0FBYixhQUFhLGNBREEsTUFBTTsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERyYXdlck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNb2JpbGVTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIFNjcmVlbldpZHRoOiBudW1iZXI7XHJcbiAgcHVibGljIFNjcmVlbkhlaWdodDogbnVtYmVyO1xyXG5cclxuICBwdWJsaWMgTW9iaWxlSW50ZXJmYWNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBOYXZNb2RlOiBNYXREcmF3ZXJNb2RlID0gXCJzaWRlXCI7XHJcbiAgcHVibGljIE5hdk9wZW5lZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE9wZW5OYXYoKTogdm9pZCB7XHJcbiAgICB0aGlzLk5hdk9wZW5lZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlU2NyZWVuU2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuU2NyZWVuV2lkdGggIT0gd2lkdGggfHwgdGhpcy5TY3JlZW5IZWlnaHQgIT0gaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuU2NyZWVuV2lkdGggPSB3aWR0aDtcclxuICAgICAgdGhpcy5TY3JlZW5IZWlnaHQgPSBoZWlnaHQ7XHJcblxyXG4gICAgICB0aGlzLk1vYmlsZUludGVyZmFjZSA9IHRoaXMuU2NyZWVuV2lkdGggPCA3NTA7XHJcblxyXG4gICAgICBpZiAodGhpcy5Nb2JpbGVJbnRlcmZhY2UpIHtcclxuICAgICAgICB0aGlzLk5hdk1vZGUgPSBcIm92ZXJcIjtcclxuICAgICAgICB0aGlzLk5hdk9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuTmF2TW9kZSA9IFwic2lkZVwiO1xyXG4gICAgICAgIHRoaXMuTmF2T3BlbmVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL21vYmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUk5RCxNQUFNLE9BQU8sYUFBYTtJQVV4QjtRQUxPLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLFlBQU8sR0FBa0IsTUFBTSxDQUFDO1FBQ2hDLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFHakMsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxjQUFpQztRQUN0RixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxFQUFFO1lBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1lBRTNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFFOUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDeEI7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1lBRUQsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7MEdBbkNVLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RHJhd2VyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE1vYmlsZVNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgU2NyZWVuV2lkdGg6IG51bWJlcjtcclxuICBwdWJsaWMgU2NyZWVuSGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBNb2JpbGVJbnRlcmZhY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIE5hdk1vZGU6IE1hdERyYXdlck1vZGUgPSBcInNpZGVcIjtcclxuICBwdWJsaWMgTmF2T3BlbmVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3Blbk5hdigpOiB2b2lkIHtcclxuICAgIHRoaXMuTmF2T3BlbmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVTY3JlZW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBDaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLlNjcmVlbldpZHRoICE9IHdpZHRoIHx8IHRoaXMuU2NyZWVuSGVpZ2h0ICE9IGhlaWdodCkge1xyXG4gICAgICB0aGlzLlNjcmVlbldpZHRoID0gd2lkdGg7XHJcbiAgICAgIHRoaXMuU2NyZWVuSGVpZ2h0ID0gaGVpZ2h0O1xyXG5cclxuICAgICAgdGhpcy5Nb2JpbGVJbnRlcmZhY2UgPSB0aGlzLlNjcmVlbldpZHRoIDwgNzUwO1xyXG5cclxuICAgICAgaWYgKHRoaXMuTW9iaWxlSW50ZXJmYWNlKSB7XHJcbiAgICAgICAgdGhpcy5OYXZNb2RlID0gXCJvdmVyXCI7XHJcbiAgICAgICAgdGhpcy5OYXZPcGVuZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLk5hdk1vZGUgPSBcInNpZGVcIjtcclxuICAgICAgICB0aGlzLk5hdk9wZW5lZCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIENoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -8,6 +8,9 @@ export class SVGService {
8
8
  this.Loading = false;
9
9
  this.ViewerWidth = 101;
10
10
  this.ViewerHeight = 101;
11
+ this.Schaal = "2";
12
+ this.Snede = "";
13
+ this.Snedes = new Array();
11
14
  }
12
15
  LoadFabrikantenSVGViewModel(sessionid, ChangeDetectorRef) {
13
16
  this.Loading = true;
@@ -16,9 +19,12 @@ export class SVGService {
16
19
  request.sessionId = sessionid;
17
20
  request.width = this.ViewerWidth;
18
21
  request.height = this.ViewerHeight;
22
+ request.schaal = this.Schaal;
23
+ request.snede = this.Snede;
19
24
  console.log('get width:' + request.width + " height: " + request.height);
20
25
  this.FabrikantenApiClient.getFabrikantenSVGViewModel(request).subscribe((model) => {
21
26
  this.FabrikantenSVGViewModel = model;
27
+ this.CollectSnedes();
22
28
  this.Loading = false;
23
29
  ChangeDetectorRef.detectChanges();
24
30
  }, (error) => {
@@ -46,6 +52,14 @@ export class SVGService {
46
52
  }
47
53
  return false;
48
54
  }
55
+ CollectSnedes() {
56
+ if (this.FabrikantenSVGViewModel?.snedes != null) {
57
+ this.Snedes = this.FabrikantenSVGViewModel.snedes.split("|");
58
+ if (this.Snede == "" && this.Snedes.length > 0) {
59
+ this.Snede = this.Snedes[0];
60
+ }
61
+ }
62
+ }
49
63
  }
50
64
  SVGService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SVGService, deps: [{ token: i1.FabrikantenApiClient }], target: i0.ɵɵFactoryTarget.Injectable });
51
65
  SVGService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: SVGService, providedIn: 'root' });
@@ -53,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
53
67
  type: Injectable,
54
68
  args: [{ providedIn: 'root' }]
55
69
  }], ctorParameters: function () { return [{ type: i1.FabrikantenApiClient }]; } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3N2Zy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBaUQsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS3JILE1BQU0sT0FBTyxVQUFVO0lBVXJCLFlBQW9CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBUnZELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFLekIsZ0JBQVcsR0FBVyxHQUFHLENBQUM7UUFDMUIsaUJBQVksR0FBVyxHQUFHLENBQUM7SUFHbEMsQ0FBQztJQUVNLDJCQUEyQixDQUFDLFNBQWlCLEVBQUUsaUJBQW9DO1FBQ3hGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWxDLElBQUksT0FBTyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUUvQyxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUU5QixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDakMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRW5DLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBOEIsRUFBRSxFQUFFO1lBQ3pHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ3ZCO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsaUJBQW9DO1FBQ3pGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQztZQUM1RCxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFO2dCQUNwRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2FBQzdHO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO1NBQy9DO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzt1R0ExRFUsVUFBVTsyR0FBVixVQUFVLGNBREcsTUFBTTsyRkFDbkIsVUFBVTtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkFwaUNsaWVudCwgRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwsIEZhYnJpa2FudGVuU1ZHUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9iaWxlU2VydmljZSB9IGZyb20gJy4vbW9iaWxlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFNWR1NlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBGYWJyaWthbnRlblNWR1ZpZXdNb2RlbDogRmFicmlrYW50ZW5TVkdWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZTtcclxuXHJcbiAgcHVibGljIFZpZXdlcldpZHRoOiBudW1iZXIgPSAxMDE7XHJcbiAgcHVibGljIFZpZXdlckhlaWdodDogbnVtYmVyID0gMTAxO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRGYWJyaWthbnRlblNWR1ZpZXdNb2RlbChzZXNzaW9uaWQ6IHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuU1ZHUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSBzZXNzaW9uaWQ7XHJcblxyXG4gICAgcmVxdWVzdC53aWR0aCA9IHRoaXMuVmlld2VyV2lkdGg7XHJcbiAgICByZXF1ZXN0LmhlaWdodCA9IHRoaXMuVmlld2VySGVpZ2h0O1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdnZXQgd2lkdGg6JyArIHJlcXVlc3Qud2lkdGggKyBcIiBoZWlnaHQ6IFwiICsgcmVxdWVzdC5oZWlnaHQpO1xyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5TVkdWaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVWaWV3ZXJTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICgodGhpcy5WaWV3ZXJXaWR0aCAhPSB3aWR0aCB8fCB0aGlzLlZpZXdlckhlaWdodCAhPSBoZWlnaHQpICYmXHJcbiAgICAgICh3aWR0aCA+IDApICYmIChoZWlnaHQgPiAwKSkge1xyXG4gICAgICB0aGlzLlZpZXdlcldpZHRoID0gd2lkdGg7XHJcbiAgICAgIHRoaXMuVmlld2VySGVpZ2h0ID0gaGVpZ2h0O1xyXG5cclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlPy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2Vzc2lvbklkICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLkxvYWRGYWJyaWthbnRlblNWR1ZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQsIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEhhc05hdGl2ZVJGQSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwubmF0aXZlUkZBO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3N2Zy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBaUQsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS3JILE1BQU0sT0FBTyxVQUFVO0lBY3JCLFlBQW9CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBWnZELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFLekIsZ0JBQVcsR0FBVyxHQUFHLENBQUM7UUFDMUIsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFFM0IsV0FBTSxHQUFXLEdBQUcsQ0FBQztRQUNyQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLFdBQU0sR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUduRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsU0FBaUIsRUFBRSxpQkFBb0M7UUFDeEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFbEMsSUFBSSxPQUFPLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBRS9DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNqQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDbkMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUzQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtZQUN6RyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkI7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxpQkFBb0M7UUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDO1lBQzVELENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1lBRTNCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUM7YUFDN0c7U0FDRjtJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUM7U0FDL0M7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU3RCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDOzt1R0EzRVUsVUFBVTsyR0FBVixVQUFVLGNBREcsTUFBTTsyRkFDbkIsVUFBVTtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGYWJTdmdWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZhYi1zdmctdmlld2VyL2ZhYi1zdmctdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuQXBpQ2xpZW50LCBGYWJyaWthbnRlblNWR1ZpZXdNb2RlbCwgRmFicmlrYW50ZW5TVkdSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi9tb2JpbGUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgU1ZHU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEZhYnJpa2FudGVuU1ZHVmlld01vZGVsOiBGYWJyaWthbnRlblNWR1ZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlO1xyXG5cclxuICBwdWJsaWMgVmlld2VyV2lkdGg6IG51bWJlciA9IDEwMTtcclxuICBwdWJsaWMgVmlld2VySGVpZ2h0OiBudW1iZXIgPSAxMDE7XHJcblxyXG4gIHB1YmxpYyBTY2hhYWw6IHN0cmluZyA9IFwiMlwiO1xyXG4gIHB1YmxpYyBTbmVkZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgU25lZGVzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBGYWJyaWthbnRlbkFwaUNsaWVudDogRmFicmlrYW50ZW5BcGlDbGllbnQpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwoc2Vzc2lvbmlkOiBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlblNWR1JlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gc2Vzc2lvbmlkO1xyXG5cclxuICAgIHJlcXVlc3Qud2lkdGggPSB0aGlzLlZpZXdlcldpZHRoO1xyXG4gICAgcmVxdWVzdC5oZWlnaHQgPSB0aGlzLlZpZXdlckhlaWdodDtcclxuICAgIHJlcXVlc3Quc2NoYWFsID0gdGhpcy5TY2hhYWw7XHJcbiAgICByZXF1ZXN0LnNuZWRlID0gdGhpcy5TbmVkZTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnZ2V0IHdpZHRoOicgKyByZXF1ZXN0LndpZHRoICsgXCIgaGVpZ2h0OiBcIiArIHJlcXVlc3QuaGVpZ2h0KTtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Db2xsZWN0U25lZGVzKCk7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZVZpZXdlclNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKCh0aGlzLlZpZXdlcldpZHRoICE9IHdpZHRoIHx8IHRoaXMuVmlld2VySGVpZ2h0ICE9IGhlaWdodCkgJiZcclxuICAgICAgKHdpZHRoID4gMCkgJiYgKGhlaWdodCA+IDApKSB7XHJcbiAgICAgIHRoaXMuVmlld2VyV2lkdGggPSB3aWR0aDtcclxuICAgICAgdGhpcy5WaWV3ZXJIZWlnaHQgPSBoZWlnaHQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2U/LkZhYnJpa2FudGVuVmlld01vZGVsPy5zZXNzaW9uSWQgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuTG9hZEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCwgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSGFzTmF0aXZlUkZBKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5uYXRpdmVSRkE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBDb2xsZWN0U25lZGVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWw/LnNuZWRlcyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU25lZGVzID0gdGhpcy5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5zbmVkZXMuc3BsaXQoXCJ8XCIpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuU25lZGUgPT0gXCJcIiAmJiB0aGlzLlNuZWRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5TbmVkZSA9IHRoaXMuU25lZGVzWzBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==