@smartbit4all/ng-client 4.2.95 → 4.2.97

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.
@@ -67,15 +67,19 @@ export class SmartIconComponent {
67
67
  this.changeDetector.markForCheck();
68
68
  }
69
69
  getImageResourceStyle(resource) {
70
- console.log(resource.style);
70
+ if (!resource)
71
+ return undefined;
71
72
  return SmartStyleUtility.getNgStyles(resource.style);
72
73
  }
74
+ mergeStyles(...styles) {
75
+ return Object.assign({}, ...styles.filter(Boolean));
76
+ }
73
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, deps: [{ token: i1.SmartIconService }, { token: i0.ChangeDetectorRef }, { token: i2.DomSanitizer }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div class=\"imageResourceIcon\" [smartTooltip]=\"imageResource.tooltip\">\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n *ngTemplateOutlet=\"normalIcon\"\r\n ></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i class=\"pi custom-prime-icon\" [ngStyle]=\"getStyle(color)\">\r\n @if(iconHtml){\r\n <span [innerHTML]=\"iconHtml\"></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i [ngClass]=\"getIcon(icon)\" [ngStyle]=\"getStyle(color)\"></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon [color]=\"color ?? 'primary'\" svgIcon=\"{{ icon }}\"></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [color]=\"color ?? 'primary'\"> {{ icon }} </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div class=\"imageResourceIcon\" [smartTooltip]=\"imageResource.tooltip\">\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
75
79
  }
76
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, decorators: [{
77
81
  type: Component,
78
- args: [{ selector: 'smart-icon', template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div class=\"imageResourceIcon\" [smartTooltip]=\"imageResource.tooltip\">\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n *ngTemplateOutlet=\"normalIcon\"\r\n ></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i class=\"pi custom-prime-icon\" [ngStyle]=\"getStyle(color)\">\r\n @if(iconHtml){\r\n <span [innerHTML]=\"iconHtml\"></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i [ngClass]=\"getIcon(icon)\" [ngStyle]=\"getStyle(color)\"></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon [color]=\"color ?? 'primary'\" svgIcon=\"{{ icon }}\"></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [color]=\"color ?? 'primary'\"> {{ icon }} </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"] }]
82
+ args: [{ selector: 'smart-icon', template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div class=\"imageResourceIcon\" [smartTooltip]=\"imageResource.tooltip\">\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"] }]
79
83
  }], ctorParameters: () => [{ type: i1.SmartIconService }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: i6.ComponentLibrary, decorators: [{
80
84
  type: Inject,
81
85
  args: [COMPONENT_LIBRARY]
@@ -87,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
87
91
  }], imageResource: [{
88
92
  type: Input
89
93
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1pY29uL3NtYXJ0LWljb24vc21hcnQtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1pY29uL3NtYXJ0LWljb24vc21hcnQtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFpQixxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQU85RSxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCLFlBQ1UsT0FBeUIsRUFDMUIsY0FBaUMsRUFDaEMsU0FBdUIsRUFDRyxPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNHLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBVDdELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxrQ0FBa0M7UUFDdkUsc0JBQWlCLEdBQUcscUJBQXFCLENBQUM7SUFPdkMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdC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aGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtaWNvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5pbXBvcnQgeyBJbWFnZVJlc291cmNlLCBJbWFnZVJlc291cmNlS2luZEVudW0gfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvYXBpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtaWNvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWljb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWljb24uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoJ2ljb24nKSBpY29uV2l0aG91dE5hbWVzcGFjZT86IHN0cmluZztcclxuICBASW5wdXQoKSBjb2xvcj86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgaW1hZ2VSZXNvdXJjZT86IEltYWdlUmVzb3VyY2U7XHJcblxyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaWNvbkh0bWw/OiBTYWZlSHRtbDtcclxuICBpc0N1c3RvbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTsgLy8gRXhwb3NlIHRoZSBlbnVtIHRvIHRoZSB0ZW1wbGF0ZVxyXG4gIGltYWdlUmVzb3VyY2VLaW5kID0gSW1hZ2VSZXNvdXJjZUtpbmRFbnVtO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogU21hcnRJY29uU2VydmljZSxcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgcHVibGljIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VSZXNvdXJjZSkge1xyXG4gICAgICBpZiAodGhpcy5pbWFnZVJlc291cmNlLmNvbG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IHRoaXMuaW1hZ2VSZXNvdXJjZS5jb2xvcjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pbWFnZVJlc291cmNlLmlkZW50aWZpZXIpIHtcclxuICAgICAgICB0aGlzLmNoZWNrSWNvbih0aGlzLmltYWdlUmVzb3VyY2UuaWRlbnRpZmllciEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQ3VzdG9tID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLmljb25XaXRob3V0TmFtZXNwYWNlICYmIHRoaXMuaW1hZ2VSZXNvdXJjZSAmJiB0aGlzLmltYWdlUmVzb3VyY2UuaWRlbnRpZmllcikge1xyXG4gICAgICBpZiAoIXRoaXMuY29sb3IpIHtcclxuICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5pbWFnZVJlc291cmNlLmNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hlY2tJY29uKHRoaXMuaW1hZ2VSZXNvdXJjZS5pZGVudGlmaWVyISk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaWNvbldpdGhvdXROYW1lc3BhY2UpIHtcclxuICAgICAgdGhpcy5jaGVja0ljb24odGhpcy5pY29uV2l0aG91dE5hbWVzcGFjZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKGljb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJ3BpIHBpLScgKyBpY29uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGUoaWNvbmNvbG9yPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4geyBjb2xvcjogaWNvbmNvbG9yLCBkaXNwbGF5OiAnZmxleCcsIGZpbGw6IGljb25jb2xvciB9O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2hlY2tJY29uKGljb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBmdWxseVF1YWxpZmllZEljb24gPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0RnVsbHlRdWFsaWZpZWRJY29uKGljb25OYW1lKTtcclxuXHJcbiAgICBjb25zdCByYXdTdmcgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0U3ZnRnJvbUljb25SZWdpc3RyeShpY29uTmFtZSk7XHJcbiAgICBpZiAocmF3U3ZnKSB7XHJcbiAgICAgIHRoaXMuaWNvbkh0bWwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChyYXdTdmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pY29uSHRtbCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZnVsbHlRdWFsaWZpZWRJY29uKSB7XHJcbiAgICAgIHRoaXMuaXNDdXN0b20gPSB0cnVlO1xyXG4gICAgICB0aGlzLmljb24gPSBmdWxseVF1YWxpZmllZEljb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzQ3VzdG9tID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaWNvbiA9IGljb25OYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlU3R5bGUocmVzb3VyY2U6IEltYWdlUmVzb3VyY2UpOiBhbnkge1xyXG4gICAgY29uc29sZS5sb2cocmVzb3VyY2Uuc3R5bGUpO1xyXG5cclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhyZXNvdXJjZS5zdHlsZSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihpbWFnZVJlc291cmNlKXtcclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlUmVzb3VyY2VJY29uXCIgLz5cclxufSBAZWxzZSBpZihpY29uV2l0aG91dE5hbWVzcGFjZSl7XHJcbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3JtYWxJY29uXCIgLz5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVJlc291cmNlSWNvbj5cclxuICBAaWYoaW1hZ2VSZXNvdXJjZSl7XHJcbiAgPGRpdiBjbGFzcz1cImltYWdlUmVzb3VyY2VJY29uXCIgW3NtYXJ0VG9vbHRpcF09XCJpbWFnZVJlc291cmNlLnRvb2x0aXBcIj5cclxuICAgIEBpZihpbWFnZVJlc291cmNlLmtpbmQgPT09IGltYWdlUmVzb3VyY2VLaW5kLlVSTCl7XHJcbiAgICA8aW1nXHJcbiAgICAgIFtuZ1N0eWxlXT1cImdldEltYWdlUmVzb3VyY2VTdHlsZShpbWFnZVJlc291cmNlKVwiXHJcbiAgICAgIGNsYXNzPVwiaW1hZ2VJY29uXCJcclxuICAgICAgW3NyY109XCJpbWFnZVJlc291cmNlLnNvdXJjZVwiXHJcbiAgICAgIFthbHRdPVwiaW1hZ2VSZXNvdXJjZS5pZGVudGlmaWVyXCJcclxuICAgIC8+XHJcbiAgICB9IEBlbHNlIGlmKGltYWdlUmVzb3VyY2UuaWRlbnRpZmllcil7XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgIFtuZ1N0eWxlXT1cImdldEltYWdlUmVzb3VyY2VTdHlsZShpbWFnZVJlc291cmNlKVwiXHJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9ybWFsSWNvblwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNub3JtYWxJY29uPlxyXG4gIEBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpe1xyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmltZUljb25cIiAvPlxyXG4gIH1AZWxzZSB7XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdGVyaWFsSWNvblwiIC8+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwcmltZUljb24+XHJcbiAgQGlmIChpc0N1c3RvbSkge1xyXG4gIDxpIGNsYXNzPVwicGkgY3VzdG9tLXByaW1lLWljb25cIiBbbmdTdHlsZV09XCJnZXRTdHlsZShjb2xvcilcIj5cclxuICAgIEBpZihpY29uSHRtbCl7XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImljb25IdG1sXCI+PC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvaT5cclxuICB9QGVsc2UgaWYoaWNvbikge1xyXG4gIDxpIFtuZ0NsYXNzXT1cImdldEljb24oaWNvbilcIiBbbmdTdHlsZV09XCJnZXRTdHlsZShjb2xvcilcIj48L2k+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtYXRlcmlhbEljb24+XHJcbiAgQGlmIChpc0N1c3RvbSkge1xyXG4gIDxtYXQtaWNvbiBbY29sb3JdPVwiY29sb3IgPz8gJ3ByaW1hcnknXCIgc3ZnSWNvbj1cInt7IGljb24gfX1cIj48L21hdC1pY29uPlxyXG4gIH1AZWxzZSBpZihpY29uKSB7XHJcbiAgPG1hdC1pY29uIFtjb2xvcl09XCJjb2xvciA/PyAncHJpbWFyeSdcIj4ge3sgaWNvbiB9fSA8L21hdC1pY29uPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1pY29uL3NtYXJ0LWljb24vc21hcnQtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1pY29uL3NtYXJ0LWljb24vc21hcnQtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFpQixxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQU85RSxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCLFlBQ1UsT0FBeUIsRUFDMUIsY0FBaUMsRUFDaEMsU0FBdUIsRUFDRyxPQUF5QjtRQUhuRCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNHLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBVDdELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxrQ0FBa0M7UUFDdkUsc0JBQWlCLEdBQUcscUJBQXFCLENBQUM7SUFPdkMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdC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Qlosb0JBQW9CO3NCQUFsQyxLQUFLO3VCQUFDLE1BQU07Z0JBQ0osS0FBSztzQkFBYixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0SWNvblNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1pY29uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNtYXJ0U3R5bGVVdGlsaXR5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvc21hcnQtc3R5bGUtdXRpbGl0eSc7XHJcbmltcG9ydCB7IEltYWdlUmVzb3VyY2UsIEltYWdlUmVzb3VyY2VLaW5kRW51bSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1pY29uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtaWNvbi5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgnaWNvbicpIGljb25XaXRob3V0TmFtZXNwYWNlPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbG9yPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBpbWFnZVJlc291cmNlPzogSW1hZ2VSZXNvdXJjZTtcclxuXHJcbiAgaWNvbj86IHN0cmluZztcclxuICBpY29uSHRtbD86IFNhZmVIdG1sO1xyXG4gIGlzQ3VzdG9tOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5OyAvLyBFeHBvc2UgdGhlIGVudW0gdG8gdGhlIHRlbXBsYXRlXHJcbiAgaW1hZ2VSZXNvdXJjZUtpbmQgPSBJbWFnZVJlc291cmNlS2luZEVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBTbWFydEljb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pbWFnZVJlc291cmNlKSB7XHJcbiAgICAgIGlmICh0aGlzLmltYWdlUmVzb3VyY2UuY29sb3IpIHtcclxuICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5pbWFnZVJlc291cmNlLmNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmltYWdlUmVzb3VyY2UuaWRlbnRpZmllcikge1xyXG4gICAgICAgIHRoaXMuY2hlY2tJY29uKHRoaXMuaW1hZ2VSZXNvdXJjZS5pZGVudGlmaWVyISk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNDdXN0b20gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaWNvbldpdGhvdXROYW1lc3BhY2UgJiYgdGhpcy5pbWFnZVJlc291cmNlICYmIHRoaXMuaW1hZ2VSZXNvdXJjZS5pZGVudGlmaWVyKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb2xvcikge1xyXG4gICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLmltYWdlUmVzb3VyY2UuY29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0ljb24odGhpcy5pbWFnZVJlc291cmNlLmlkZW50aWZpZXIhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pY29uV2l0aG91dE5hbWVzcGFjZSkge1xyXG4gICAgICB0aGlzLmNoZWNrSWNvbih0aGlzLmljb25XaXRob3V0TmFtZXNwYWNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEljb24oaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAncGkgcGktJyArIGljb247XHJcbiAgfVxyXG5cclxuICBnZXRTdHlsZShpY29uY29sb3I/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB7IGNvbG9yOiBpY29uY29sb3IsIGRpc3BsYXk6ICdmbGV4JywgZmlsbDogaWNvbmNvbG9yIH07XHJcbiAgfVxyXG5cclxuICBhc3luYyBjaGVja0ljb24oaWNvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGZ1bGx5UXVhbGlmaWVkSWNvbiA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRGdWxseVF1YWxpZmllZEljb24oaWNvbk5hbWUpO1xyXG5cclxuICAgIGNvbnN0IHJhd1N2ZyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRTdmdGcm9tSWNvblJlZ2lzdHJ5KGljb25OYW1lKTtcclxuICAgIGlmIChyYXdTdmcpIHtcclxuICAgICAgdGhpcy5pY29uSHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJhd1N2Zyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmljb25IdG1sID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmdWxseVF1YWxpZmllZEljb24pIHtcclxuICAgICAgdGhpcy5pc0N1c3RvbSA9IHRydWU7XHJcbiAgICAgIHRoaXMuaWNvbiA9IGZ1bGx5UXVhbGlmaWVkSWNvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNDdXN0b20gPSBmYWxzZTtcclxuICAgICAgdGhpcy5pY29uID0gaWNvbk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VTdHlsZShyZXNvdXJjZT86IEltYWdlUmVzb3VyY2UpOiBhbnkge1xyXG4gICAgaWYgKCFyZXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhyZXNvdXJjZS5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVN0eWxlcyguLi5zdHlsZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHwgdW5kZWZpbmVkPik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLnN0eWxlcy5maWx0ZXIoQm9vbGVhbikpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYoaW1hZ2VSZXNvdXJjZSl7XHJcbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZVJlc291cmNlSWNvblwiIC8+XHJcbn0gQGVsc2UgaWYoaWNvbldpdGhvdXROYW1lc3BhY2Upe1xyXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9ybWFsSWNvblwiIC8+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VSZXNvdXJjZUljb24+XHJcbiAgQGlmKGltYWdlUmVzb3VyY2Upe1xyXG4gIDxkaXYgY2xhc3M9XCJpbWFnZVJlc291cmNlSWNvblwiIFtzbWFydFRvb2x0aXBdPVwiaW1hZ2VSZXNvdXJjZS50b29sdGlwXCI+XHJcbiAgICBAaWYoaW1hZ2VSZXNvdXJjZS5raW5kID09PSBpbWFnZVJlc291cmNlS2luZC5VUkwpe1xyXG4gICAgPGltZ1xyXG4gICAgICBbbmdTdHlsZV09XCJnZXRJbWFnZVJlc291cmNlU3R5bGUoaW1hZ2VSZXNvdXJjZSlcIlxyXG4gICAgICBjbGFzcz1cImltYWdlSWNvblwiXHJcbiAgICAgIFtzcmNdPVwiaW1hZ2VSZXNvdXJjZS5zb3VyY2VcIlxyXG4gICAgICBbYWx0XT1cImltYWdlUmVzb3VyY2UuaWRlbnRpZmllclwiXHJcbiAgICAvPlxyXG4gICAgfSBAZWxzZSBpZihpbWFnZVJlc291cmNlLmlkZW50aWZpZXIpe1xyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vcm1hbEljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25vcm1hbEljb24+XHJcbiAgQGlmKGNvbXBMaWIgPT09IGNvbXBvbmVudExpYnJhcnkuUFJJTUVORyl7XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByaW1lSWNvblwiIC8+XHJcbiAgfUBlbHNlIHtcclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0ZXJpYWxJY29uXCIgLz5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3ByaW1lSWNvbj5cclxuICBAaWYgKGlzQ3VzdG9tKSB7XHJcbiAgPGlcclxuICAgIGNsYXNzPVwicGkgY3VzdG9tLXByaW1lLWljb25cIlxyXG4gICAgW25nU3R5bGVdPVwibWVyZ2VTdHlsZXMoZ2V0SW1hZ2VSZXNvdXJjZVN0eWxlKGltYWdlUmVzb3VyY2UpLCBnZXRTdHlsZShjb2xvcikpXCJcclxuICA+XHJcbiAgICBAaWYoaWNvbkh0bWwpe1xyXG4gICAgPHNwYW5cclxuICAgICAgW25nU3R5bGVdPVwibWVyZ2VTdHlsZXMoZ2V0SW1hZ2VSZXNvdXJjZVN0eWxlKGltYWdlUmVzb3VyY2UpLCBnZXRTdHlsZShjb2xvcikpXCJcclxuICAgICAgW2lubmVySFRNTF09XCJpY29uSHRtbFwiXHJcbiAgICA+PC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvaT5cclxuICB9QGVsc2UgaWYoaWNvbikge1xyXG4gIDxpXHJcbiAgICBbbmdTdHlsZV09XCJtZXJnZVN0eWxlcyhnZXRJbWFnZVJlc291cmNlU3R5bGUoaW1hZ2VSZXNvdXJjZSksIGdldFN0eWxlKGNvbG9yKSlcIlxyXG4gICAgW25nQ2xhc3NdPVwiZ2V0SWNvbihpY29uKVwiXHJcbiAgPjwvaT5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI21hdGVyaWFsSWNvbj5cclxuICBAaWYgKGlzQ3VzdG9tKSB7XHJcbiAgPG1hdC1pY29uXHJcbiAgICBbbmdTdHlsZV09XCJnZXRJbWFnZVJlc291cmNlU3R5bGUoaW1hZ2VSZXNvdXJjZSlcIlxyXG4gICAgW2NvbG9yXT1cImNvbG9yID8/ICdwcmltYXJ5J1wiXHJcbiAgICBzdmdJY29uPVwie3sgaWNvbiB9fVwiXHJcbiAgPjwvbWF0LWljb24+XHJcbiAgfUBlbHNlIGlmKGljb24pIHtcclxuICA8bWF0LWljb24gW25nU3R5bGVdPVwiZ2V0SW1hZ2VSZXNvdXJjZVN0eWxlKGltYWdlUmVzb3VyY2UpXCIgW2NvbG9yXT1cImNvbG9yID8/ICdwcmltYXJ5J1wiPlxyXG4gICAge3sgaWNvbiB9fVxyXG4gIDwvbWF0LWljb24+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=