@wizishop/img-manager 14.0.9 → 14.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -161,10 +161,10 @@ export class WzImgManagerComponent {
161
161
  }
162
162
  }
163
163
  WzImgManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: i1.ImgSelectionService }, { token: i2.ImgManagerConfigService }, { token: i3.UserSettingsService }, { token: i4.CanvaService }, { token: i5.ImgEventService }, { token: i6.DomService }], target: i0.ɵɵFactoryTarget.Component });
164
- WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", externalConfig: "externalConfig", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: i9.ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] });
164
+ WzImgManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: WzImgManagerComponent, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", externalConfig: "externalConfig", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: i9.ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] });
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: WzImgManagerComponent, decorators: [{
166
166
  type: Component,
167
- args: [{ selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n" }]
167
+ args: [{ selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n" }]
168
168
  }], ctorParameters: function () { return [{ type: i1.ImgSelectionService }, { type: i2.ImgManagerConfigService }, { type: i3.UserSettingsService }, { type: i4.CanvaService }, { type: i5.ImgEventService }, { type: i6.DomService }]; }, propDecorators: { stateDisplayed: [{
169
169
  type: Input
170
170
  }], showSelection: [{
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
183
183
  type: HostListener,
184
184
  args: ['document:keydown.escape', ['$event']]
185
185
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3otaW1nLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi93ei1pbWctbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL3d6LWltZy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0MsTUFBTSxPQUFPLHFCQUFxQjtJQXdEaEMsWUFDVSxtQkFBd0MsRUFDeEMscUJBQThDLEVBQzlDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxVQUFzQjtRQUx0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBeUI7UUFDOUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxpQkFBWSxH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ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1nU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEltZ01hbmFnZXJDb25maWdEdG8gfSBmcm9tICcuL2R0by9jb25maWcvZXh0ZXJuYWwvZXh0ZXJuYWwtY29uZmlnLmR0byc7XG5pbXBvcnQgeyBJbWdNYW5hZ2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENhbnZhU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmEuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ltZy1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcbmltcG9ydCB7IEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3RhdGVEaXNwbGF5ZWQgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFdpemlCbG9ja01lZGlhRHRvIH0gZnJvbSAnLi9kdG8vd2l6aS1ibG9jay1tZWRpYS5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3ei1pbWctbWFuYWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93ei1pbWctbWFuYWdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3pJbWdNYW5hZ2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc3RhdGVEaXNwbGF5ZWQ6IHN0YXRlRGlzcGxheWVkO1xuICBASW5wdXQoKSBzaG93U2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGV4dGVybmFsQ29uZmlnOiBJbWdNYW5hZ2VyQ29uZmlnRHRvO1xuXG4gIC8vIElmIGZvcmNlVG9PcGVuQ2FudmEgaXMgdHJ1ZSA6IENhbnZhIHdpbGwgb3BlbiB3aXRoIHRoZSBjYW52YVNlcnZpY2UuZXhwZWN0ZWRJbWdTaXplc0NoYW5nZVxuICAvLyBJZiBmb3JjZVRvT3BlbkNhbnZhIGlzIGEgV2l6aUJsb2NrTWVkaWFEdG8sIENhbnZhIG9wZW4gaW1tZWRpYXRseVxuICBASW5wdXQoKSBzZXQgZm9yY2VUb09wZW5DYW52YShmb3JjZVRvT3BlbkNhbnZhOiBib29sZWFufFdpemlCbG9ja01lZGlhRHRvKSB7XG4gICAgdGhpcy5jYW52YVNlcnZpY2UuZm9yY2VUb09wZW5DYW52YSA9ICEhZm9yY2VUb09wZW5DYW52YTtcblxuICAgIGlmICh0eXBlb2YgZm9yY2VUb09wZW5DYW52YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW52YVNlcnZpY2UuZXhwZWN0ZWRJbWdTaXplc0NoYW5nZShmb3JjZVRvT3BlbkNhbnZhKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpbWdNYW5hZ2VyQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIF9tdWx0aXBsZUltZ01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgbXVsdGlwbGVJbWdNb2RlKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGVJbWdNb2RlID0gYWN0aXZhdGU7XG4gICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnNldE11bHRpcGxlSW1nTW9kZSh0aGlzLl9tdWx0aXBsZUltZ01vZGUpO1xuICB9XG5cbiAgZ2V0IG11bHRpcGxlSW1nTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGVJbWdNb2RlO1xuICB9XG5cbiAgX3Nob3dJbWdNYW5hZ2VyTW9kdWxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzaG93SW1nTWFuYWdlck1vZHVsZShhY3RpdmF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dJbWdNYW5hZ2VyTW9kdWxlID0gYWN0aXZhdGU7XG4gICAgaWYgKGFjdGl2YXRlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlTbWFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93SW1nTWFuYWdlck1vZHVsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGVJbWdNb2RlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhdGVEaXNwbGF5ZWQgJiYgdGhpcy5zdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdycpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlOiBib29sZWFuID0gZmFsc2VcbiAgc2VsZWN0SW1nRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgbGlzdERpc3BsYXllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0RGlzcGxheWVkRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZVRhYjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBTYXZlIHRoZSBkZWZhdXQgb3ZlcmZsb3cgYXBwbHkgdG8gaHRtbCB0YWcsIHdoZW4gdGhlIG1vZHVsZSBpcyBmdWxsIG9wZW5cbiAgcHJpdmF0ZSBvdmVyZmxvd0hUTUw6IHN0cmluZztcbiAgcHJpdmF0ZSBib2R5UGFkZGluZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW1nU2VsZWN0aW9uU2VydmljZTogSW1nU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogSW1nTWFuYWdlckNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FudmFTZXJ2aWNlOiBDYW52YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWdFdmVudFNlcnZpY2U6IEltZ0V2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLnNldEV4dGVybmFsQ29uZmlnKHRoaXMuZXh0ZXJuYWxDb25maWcpO1xuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5zZXRNdWx0aXBsZUltZ01vZGUodGhpcy5fbXVsdGlwbGVJbWdNb2RlKTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2UuaW5pdEltZ1NlbGVjdGVkTGlzdChudWxsKTtcbiAgICB0aGlzLnNlbGVjdEltZ0V2ZW50ID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmdldEltZ1NlbGVjdGlvbkNoYW5nZSgpLnN1YnNjcmliZShpbWdTbGVjdGlvbiA9PntcblxuICAgICAgaWYgKGltZ1NsZWN0aW9uICYmIGltZ1NsZWN0aW9uLmxlbmd0aCAmJiB0aGlzLmNoZWNrQ2xvc2VJbWdNYW5hZ2VyKCkpIHtcbiAgICAgICAgLy8gQ2xvc2UgdGhlIGltZyBtYW5hZ2VyXG4gICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2hlY2tVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICAvLyBVc2Ugd2hlbiB0aGUgaW1nIG1hbmFnZXIgaXMgZnVsbCBvcGVuIG9yIG9wZW4gaW4gcGFnZS4gVGhpcyBkaXNwbGF5IHRoZSB1c2VyIHByZWZlcmVuY2UgZGlzcGxheSwgbW9zYWljIG9yIGxpc3QuXG4gICAgdGhpcy5saXN0RGlzcGxheWVkRXZlbnQgPSB0aGlzLmltZ0V2ZW50U2VydmljZS5nZXRsaXN0RGlzcGxheWVkQ2hhbmdlKCkuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMubGlzdERpc3BsYXllZCA9IHZhbHVlKTtcbiAgICAvLyBSZWdpc3RlciBkb20gc2VydmljZSB0byBsaXN0ZW4gb24gYWxsIGV2ZW50IG9uIHRoZSBib2R5IHRvIGF2b2lkIGhhdmluZyBtdWx0aXBsZSBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0aGluZyBldmVyeSB3aGVyZVxuICAgIHRoaXMuZG9tU2VydmljZS5zZXREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTtcbiAgfVxuXG4gIGNoZWNrVXNlckRpc3BsYXlQcmVmZXJlbmNlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlRGlzcGxheWVkID09PSAnd2luZG93JyB8fCB0aGlzLnN0YXRlRGlzcGxheWVkID09PSAnZnVsbCcpIHtcbiAgICAgIHRoaXMubGlzdERpc3BsYXllZCA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXRVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICB9XG4gIH1cblxuICBzZXRDdXJyZW50VGFiKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ID09PSAnaW1nLWVkaXRpb24nKSB7XG4gICAgICB0aGlzLmhpZGVUYWIgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhpZGVUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIGRpc3BsYXlTbWFsbCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdycpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ3NtYWxsJztcbiAgICAgICAgdGhpcy5hZGRCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpO1xuICAgICAgfSwgMTApO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TbWFsbCgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ3NtYWxsJztcbiAgICB0aGlzLnNldEJvZHlNYWluU2Nyb2xsKCk7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkID0gZmFsc2U7XG4gIH1cblxuICBvcGVuRnVsbCgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Z1bGwnO1xuICAgIHRoaXMuY2hlY2tVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICB0aGlzLmhpZGVCb2R5TWFpblNjcm9sbCgpO1xuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlVGFiID0gZmFsc2U7XG4gICAgdGhpcy5zZXRCb2R5TWFpblNjcm9sbCgpO1xuICAgIHRoaXMucmVtb3ZlQm9keUJvdHRvbVBhZGRpbmdGb3JNb2R1bGUoKTtcbiAgICAvLyBXYWl0IHRoZSBlbmQgb2YgdGhlIGNsb3NpbmcgYW5uaW1hdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbWdNYW5hZ2VyQ2xvc2VkLmVtaXQoKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgb25JbWdNYW5hZ2VyQ2xvc2VkKCkge1xuICAgIHRoaXMub25DbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBpbWcgbWFuYWdlciBhZnRlciBvbmUgaW1nIGlzIHNlbGVjdGVkLCBpZiBub3QgaW4gbXVsdGlwbGUgaW1nIHRvIHNlbGVjdFxuICAgKi9cbiAgY2hlY2tDbG9zZUltZ01hbmFnZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLm11bHRpcGxlSW1nTW9kZSAmJiB0aGlzLnN0YXRlRGlzcGxheWVkICE9PSAnd2luZG93JyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGhpZGVCb2R5TWFpblNjcm9sbCgpIHtcbiAgICBjb25zdCBodG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcblxuICAgIGlmICghdGhpcy5vdmVyZmxvd0hUTUwpIHtcbiAgICAgIHRoaXMub3ZlcmZsb3dIVE1MID0gaHRtbC5zdHlsZS5vdmVyZmxvd1k7XG4gICAgfVxuXG4gICAgaHRtbC5zdHlsZS5vdmVyZmxvd1kgPSBcImhpZGRlblwiO1xuICB9XG5cbiAgc2V0Qm9keU1haW5TY3JvbGwoKSB7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgaHRtbC5zdHlsZS5vdmVyZmxvd1kgPSB0aGlzLm92ZXJmbG93SFRNTCA/IHRoaXMub3ZlcmZsb3dIVE1MIDogXCJzY3JvbGxcIjtcbiAgfVxuXG4gIGFkZEJvZHlCb3R0b21QYWRkaW5nRm9yTW9kdWxlKCkge1xuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO1xuICAgIHRoaXMuYm9keVBhZGRpbmcgPSB0aGlzLmJvZHlQYWRkaW5nID8gcGFyc2VJbnQoYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tKSA6IDA7XG4gICAgYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tID0gdGhpcy5ib2R5UGFkZGluZyArIDMwMCArICdweCc7XG4gIH1cblxuICByZW1vdmVCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuYm9keVBhZGRpbmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTtcbiAgICAgIGJvZHkuc3R5bGUucGFkZGluZ0JvdHRvbSA9IHRoaXMuYm9keVBhZGRpbmcgKyAncHgnO1xuICAgICAgdGhpcy5ib2R5UGFkZGluZyA9IDA7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRGlzcGxheVRhYigpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Z1bGwnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWxlY3RJbWdFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FudmFTZXJ2aWNlLmV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInd6LWltZy1tYW5hZ2VyXCI+XG4gIDwhLS0gSW1nIHNsZWN0aW9uIGhhbmRsZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fc2VsZWN0aW9uSGFuZGxlclwiICpuZ0lmPVwic2hvd1NlbGVjdGlvblwiPlxuICAgIDxpbWctc2VsZWN0aW9uPjwvaW1nLXNlbGVjdGlvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBJbWcgbWFuYWdlciBtb2R1bGUgLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cIl9zaG93SW1nTWFuYWdlck1vZHVsZVwiXG4gICAgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fbW9kdWxlXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0tc21hbGwnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3NtYWxsJyxcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS1mdWxsJzogc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJyxcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS13aW5kb3cnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdycsXG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0tZWRpdCc6IGhpZGVUYWJ9XCJcbiAgPlxuXG4gICAgPGRpdiBjbGFzcz1cInd6LWltZy1tYW5hZ2VyX19tb2R1bGVfX2hlYWRlclwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgIT09ICd3aW5kb3cnXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuU21hbGwoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJ1wiPjxzcGFuPkV4cGFuZDwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS1jb21wcmVzcy1hbHRcIj48L2k+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuU21hbGwoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgPT09ICdjbG9zZWQnXCI+PHNwYW4+RXhwYW5kPC9zcGFuPjxpIGNsYXNzPVwiZmFsIGZhLWV4cGFuZC1hbHRcIj48L2k+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRnVsbCgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCA9PT0gJ3NtYWxsJ1wiPjxzcGFuPkV4cGFuZDwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS1leHBhbmQtYWx0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DbG9zZSgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCAhPT0gJ2Nsb3NlZCdcIj48c3Bhbj5DbG9zZTwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid3otaW1nLW1hbmFnZXJfX21vZHVsZV9fY29udGVudCB3ei1ibG9ja1wiXG4gICAgICBbbmdDbGFzc109XCJ7J3d6LWJsb2NrLS13aW5kb3cnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdyd9XCI+XG4gICAgICA8aW1nLXRhYnNcbiAgICAgICAgW3N0YXRlRGlzcGxheWVkXT1cInN0YXRlRGlzcGxheWVkXCJcbiAgICAgICAgW211bHRpcGxlSW1nTW9kZV09XCJtdWx0aXBsZUltZ01vZGVcIlxuICAgICAgICBbbGlzdERpc3BsYXllZF09XCJsaXN0RGlzcGxheWVkXCJcbiAgICAgICAgKGltZ01hbmFnZXJDbG9zZWQpPVwib25JbWdNYW5hZ2VyQ2xvc2VkKClcIlxuICAgICAgICAoc3dpdGNoRGlzcGxheVdpbmRvdyk9XCJjaGFuZ2VEaXNwbGF5VGFiKClcIlxuICAgICAgICAoY3VycmVudFRhYik9XCJzZXRDdXJyZW50VGFiKCRldmVudClcIj5cbiAgICAgIDwvaW1nLXRhYnM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3otaW1nLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi93ei1pbWctbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL3d6LWltZy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0MsTUFBTSxPQUFPLHFCQUFxQjtJQXdEaEMsWUFDVSxtQkFBd0MsRUFDeEMscUJBQThDLEVBQzlDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxVQUFzQjtRQUx0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBeUI7UUFDOUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxpQkFBWSxH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ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1nU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEltZ01hbmFnZXJDb25maWdEdG8gfSBmcm9tICcuL2R0by9jb25maWcvZXh0ZXJuYWwvZXh0ZXJuYWwtY29uZmlnLmR0byc7XG5pbXBvcnQgeyBJbWdNYW5hZ2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENhbnZhU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmEuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ltZy1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcbmltcG9ydCB7IEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3RhdGVEaXNwbGF5ZWQgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFdpemlCbG9ja01lZGlhRHRvIH0gZnJvbSAnLi9kdG8vd2l6aS1ibG9jay1tZWRpYS5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3ei1pbWctbWFuYWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93ei1pbWctbWFuYWdlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3pJbWdNYW5hZ2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc3RhdGVEaXNwbGF5ZWQ6IHN0YXRlRGlzcGxheWVkO1xuICBASW5wdXQoKSBzaG93U2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGV4dGVybmFsQ29uZmlnOiBJbWdNYW5hZ2VyQ29uZmlnRHRvO1xuXG4gIC8vIElmIGZvcmNlVG9PcGVuQ2FudmEgaXMgdHJ1ZSA6IENhbnZhIHdpbGwgb3BlbiB3aXRoIHRoZSBjYW52YVNlcnZpY2UuZXhwZWN0ZWRJbWdTaXplc0NoYW5nZVxuICAvLyBJZiBmb3JjZVRvT3BlbkNhbnZhIGlzIGEgV2l6aUJsb2NrTWVkaWFEdG8sIENhbnZhIG9wZW4gaW1tZWRpYXRseVxuICBASW5wdXQoKSBzZXQgZm9yY2VUb09wZW5DYW52YShmb3JjZVRvT3BlbkNhbnZhOiBib29sZWFufFdpemlCbG9ja01lZGlhRHRvKSB7XG4gICAgdGhpcy5jYW52YVNlcnZpY2UuZm9yY2VUb09wZW5DYW52YSA9ICEhZm9yY2VUb09wZW5DYW52YTtcblxuICAgIGlmICh0eXBlb2YgZm9yY2VUb09wZW5DYW52YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW52YVNlcnZpY2UuZXhwZWN0ZWRJbWdTaXplc0NoYW5nZShmb3JjZVRvT3BlbkNhbnZhKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpbWdNYW5hZ2VyQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIF9tdWx0aXBsZUltZ01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgbXVsdGlwbGVJbWdNb2RlKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGVJbWdNb2RlID0gYWN0aXZhdGU7XG4gICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnNldE11bHRpcGxlSW1nTW9kZSh0aGlzLl9tdWx0aXBsZUltZ01vZGUpO1xuICB9XG5cbiAgZ2V0IG11bHRpcGxlSW1nTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGVJbWdNb2RlO1xuICB9XG5cbiAgX3Nob3dJbWdNYW5hZ2VyTW9kdWxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzaG93SW1nTWFuYWdlck1vZHVsZShhY3RpdmF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dJbWdNYW5hZ2VyTW9kdWxlID0gYWN0aXZhdGU7XG4gICAgaWYgKGFjdGl2YXRlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlTbWFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93SW1nTWFuYWdlck1vZHVsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGVJbWdNb2RlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhdGVEaXNwbGF5ZWQgJiYgdGhpcy5zdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdycpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlOiBib29sZWFuID0gZmFsc2VcbiAgc2VsZWN0SW1nRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgbGlzdERpc3BsYXllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0RGlzcGxheWVkRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgaGlkZVRhYjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBTYXZlIHRoZSBkZWZhdXQgb3ZlcmZsb3cgYXBwbHkgdG8gaHRtbCB0YWcsIHdoZW4gdGhlIG1vZHVsZSBpcyBmdWxsIG9wZW5cbiAgcHJpdmF0ZSBvdmVyZmxvd0hUTUw6IHN0cmluZztcbiAgcHJpdmF0ZSBib2R5UGFkZGluZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW1nU2VsZWN0aW9uU2VydmljZTogSW1nU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogSW1nTWFuYWdlckNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FudmFTZXJ2aWNlOiBDYW52YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWdFdmVudFNlcnZpY2U6IEltZ0V2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLnNldEV4dGVybmFsQ29uZmlnKHRoaXMuZXh0ZXJuYWxDb25maWcpO1xuICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5zZXRNdWx0aXBsZUltZ01vZGUodGhpcy5fbXVsdGlwbGVJbWdNb2RlKTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2UuaW5pdEltZ1NlbGVjdGVkTGlzdChudWxsKTtcbiAgICB0aGlzLnNlbGVjdEltZ0V2ZW50ID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmdldEltZ1NlbGVjdGlvbkNoYW5nZSgpLnN1YnNjcmliZShpbWdTbGVjdGlvbiA9PntcblxuICAgICAgaWYgKGltZ1NsZWN0aW9uICYmIGltZ1NsZWN0aW9uLmxlbmd0aCAmJiB0aGlzLmNoZWNrQ2xvc2VJbWdNYW5hZ2VyKCkpIHtcbiAgICAgICAgLy8gQ2xvc2UgdGhlIGltZyBtYW5hZ2VyXG4gICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2hlY2tVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICAvLyBVc2Ugd2hlbiB0aGUgaW1nIG1hbmFnZXIgaXMgZnVsbCBvcGVuIG9yIG9wZW4gaW4gcGFnZS4gVGhpcyBkaXNwbGF5IHRoZSB1c2VyIHByZWZlcmVuY2UgZGlzcGxheSwgbW9zYWljIG9yIGxpc3QuXG4gICAgdGhpcy5saXN0RGlzcGxheWVkRXZlbnQgPSB0aGlzLmltZ0V2ZW50U2VydmljZS5nZXRsaXN0RGlzcGxheWVkQ2hhbmdlKCkuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMubGlzdERpc3BsYXllZCA9IHZhbHVlKTtcbiAgICAvLyBSZWdpc3RlciBkb20gc2VydmljZSB0byBsaXN0ZW4gb24gYWxsIGV2ZW50IG9uIHRoZSBib2R5IHRvIGF2b2lkIGhhdmluZyBtdWx0aXBsZSBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0aGluZyBldmVyeSB3aGVyZVxuICAgIHRoaXMuZG9tU2VydmljZS5zZXREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTtcbiAgfVxuXG4gIGNoZWNrVXNlckRpc3BsYXlQcmVmZXJlbmNlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlRGlzcGxheWVkID09PSAnd2luZG93JyB8fCB0aGlzLnN0YXRlRGlzcGxheWVkID09PSAnZnVsbCcpIHtcbiAgICAgIHRoaXMubGlzdERpc3BsYXllZCA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXRVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICB9XG4gIH1cblxuICBzZXRDdXJyZW50VGFiKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ID09PSAnaW1nLWVkaXRpb24nKSB7XG4gICAgICB0aGlzLmhpZGVUYWIgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhpZGVUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIGRpc3BsYXlTbWFsbCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZURpc3BsYXllZCAhPT0gJ3dpbmRvdycpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ3NtYWxsJztcbiAgICAgICAgdGhpcy5hZGRCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpO1xuICAgICAgfSwgMTApO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TbWFsbCgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ3NtYWxsJztcbiAgICB0aGlzLnNldEJvZHlNYWluU2Nyb2xsKCk7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkID0gZmFsc2U7XG4gIH1cblxuICBvcGVuRnVsbCgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Z1bGwnO1xuICAgIHRoaXMuY2hlY2tVc2VyRGlzcGxheVByZWZlcmVuY2UoKTtcbiAgICB0aGlzLmhpZGVCb2R5TWFpblNjcm9sbCgpO1xuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlVGFiID0gZmFsc2U7XG4gICAgdGhpcy5zZXRCb2R5TWFpblNjcm9sbCgpO1xuICAgIHRoaXMucmVtb3ZlQm9keUJvdHRvbVBhZGRpbmdGb3JNb2R1bGUoKTtcbiAgICAvLyBXYWl0IHRoZSBlbmQgb2YgdGhlIGNsb3NpbmcgYW5uaW1hdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbWdNYW5hZ2VyQ2xvc2VkLmVtaXQoKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgb25JbWdNYW5hZ2VyQ2xvc2VkKCkge1xuICAgIHRoaXMub25DbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBpbWcgbWFuYWdlciBhZnRlciBvbmUgaW1nIGlzIHNlbGVjdGVkLCBpZiBub3QgaW4gbXVsdGlwbGUgaW1nIHRvIHNlbGVjdFxuICAgKi9cbiAgY2hlY2tDbG9zZUltZ01hbmFnZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLm11bHRpcGxlSW1nTW9kZSAmJiB0aGlzLnN0YXRlRGlzcGxheWVkICE9PSAnd2luZG93JyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGhpZGVCb2R5TWFpblNjcm9sbCgpIHtcbiAgICBjb25zdCBodG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcblxuICAgIGlmICghdGhpcy5vdmVyZmxvd0hUTUwpIHtcbiAgICAgIHRoaXMub3ZlcmZsb3dIVE1MID0gaHRtbC5zdHlsZS5vdmVyZmxvd1k7XG4gICAgfVxuXG4gICAgaHRtbC5zdHlsZS5vdmVyZmxvd1kgPSBcImhpZGRlblwiO1xuICB9XG5cbiAgc2V0Qm9keU1haW5TY3JvbGwoKSB7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgaHRtbC5zdHlsZS5vdmVyZmxvd1kgPSB0aGlzLm92ZXJmbG93SFRNTCA/IHRoaXMub3ZlcmZsb3dIVE1MIDogXCJzY3JvbGxcIjtcbiAgfVxuXG4gIGFkZEJvZHlCb3R0b21QYWRkaW5nRm9yTW9kdWxlKCkge1xuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO1xuICAgIHRoaXMuYm9keVBhZGRpbmcgPSB0aGlzLmJvZHlQYWRkaW5nID8gcGFyc2VJbnQoYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tKSA6IDA7XG4gICAgYm9keS5zdHlsZS5wYWRkaW5nQm90dG9tID0gdGhpcy5ib2R5UGFkZGluZyArIDMwMCArICdweCc7XG4gIH1cblxuICByZW1vdmVCb2R5Qm90dG9tUGFkZGluZ0Zvck1vZHVsZSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuYm9keVBhZGRpbmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTtcbiAgICAgIGJvZHkuc3R5bGUucGFkZGluZ0JvdHRvbSA9IHRoaXMuYm9keVBhZGRpbmcgKyAncHgnO1xuICAgICAgdGhpcy5ib2R5UGFkZGluZyA9IDA7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRGlzcGxheVRhYigpIHtcbiAgICB0aGlzLnN0YXRlRGlzcGxheWVkID0gJ2Z1bGwnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWxlY3RJbWdFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FudmFTZXJ2aWNlLmV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInd6LWltZy1tYW5hZ2VyXCI+XG4gIDwhLS0gSW1nIHNsZWN0aW9uIGhhbmRsZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fc2VsZWN0aW9uSGFuZGxlclwiICpuZ0lmPVwic2hvd1NlbGVjdGlvblwiPlxuICAgIDxpbWctc2VsZWN0aW9uPjwvaW1nLXNlbGVjdGlvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBJbWcgbWFuYWdlciBtb2R1bGUgLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cIl9zaG93SW1nTWFuYWdlck1vZHVsZVwiXG4gICAgY2xhc3M9XCJ3ei1pbWctbWFuYWdlcl9fbW9kdWxlXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0tc21hbGwnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3NtYWxsJyxcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS1mdWxsJzogc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJyxcbiAgICAgICd3ei1pbWctbWFuYWdlcl9fbW9kdWxlLS13aW5kb3cnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdycsXG4gICAgICAnd3otaW1nLW1hbmFnZXJfX21vZHVsZS0tZWRpdCc6IGhpZGVUYWJ9XCJcbiAgPlxuXG4gICAgPGRpdiBjbGFzcz1cInd6LWltZy1tYW5hZ2VyX19tb2R1bGVfX2hlYWRlclwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgIT09ICd3aW5kb3cnXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuU21hbGwoKVwiICpuZ0lmPVwic3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJ1wiIHR5cGU9XCJidXR0b25cIj48c3Bhbj5FeHBhbmQ8L3NwYW4+PGkgY2xhc3M9XCJmYWwgZmEtY29tcHJlc3MtYWx0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlblNtYWxsKClcIiAqbmdJZj1cInN0YXRlRGlzcGxheWVkID09PSAnY2xvc2VkJ1wiIHR5cGU9XCJidXR0b25cIj48c3Bhbj5FeHBhbmQ8L3NwYW4+PGkgY2xhc3M9XCJmYWwgZmEtZXhwYW5kLWFsdFwiPjwvaT48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5GdWxsKClcIiAqbmdJZj1cInN0YXRlRGlzcGxheWVkID09PSAnc21hbGwnXCIgdHlwZT1cImJ1dHRvblwiPjxzcGFuPkV4cGFuZDwvc3Bhbj48aSBjbGFzcz1cImZhbCBmYS1leHBhbmQtYWx0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DbG9zZSgpXCIgKm5nSWY9XCJzdGF0ZURpc3BsYXllZCAhPT0gJ2Nsb3NlZCdcIiB0eXBlPVwiYnV0dG9uXCI+PHNwYW4+Q2xvc2U8L3NwYW4+PGkgY2xhc3M9XCJmYWwgZmEtdGltZXNcIj48L2k+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInd6LWltZy1tYW5hZ2VyX19tb2R1bGVfX2NvbnRlbnQgd3otYmxvY2tcIlxuICAgICAgW25nQ2xhc3NdPVwieyd3ei1ibG9jay0td2luZG93Jzogc3RhdGVEaXNwbGF5ZWQgPT09ICd3aW5kb3cnfVwiPlxuICAgICAgPGltZy10YWJzXG4gICAgICAgIFtzdGF0ZURpc3BsYXllZF09XCJzdGF0ZURpc3BsYXllZFwiXG4gICAgICAgIFttdWx0aXBsZUltZ01vZGVdPVwibXVsdGlwbGVJbWdNb2RlXCJcbiAgICAgICAgW2xpc3REaXNwbGF5ZWRdPVwibGlzdERpc3BsYXllZFwiXG4gICAgICAgIChpbWdNYW5hZ2VyQ2xvc2VkKT1cIm9uSW1nTWFuYWdlckNsb3NlZCgpXCJcbiAgICAgICAgKHN3aXRjaERpc3BsYXlXaW5kb3cpPVwiY2hhbmdlRGlzcGxheVRhYigpXCJcbiAgICAgICAgKGN1cnJlbnRUYWIpPVwic2V0Q3VycmVudFRhYigkZXZlbnQpXCI+XG4gICAgICA8L2ltZy10YWJzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=