UNPKG

kwikid-components

Version:
153 lines 25.6 kB
import { __decorate } from "tslib"; import { Component, Inject, Input, ViewChild, EventEmitter, Output } from "@angular/core"; import { logMethod } from "kwikid-toolkit"; import { TuiPreviewDialogService } from "@taiga-ui/addon-preview"; import { TuiDialogService } from "@taiga-ui/core"; import { DEFAULT_CONFIG__WAITING_PAGE } from "./waiting.config"; import * as i0 from "@angular/core"; import * as i1 from "../../components/page-header/page-header.component"; import * as i2 from "kwikid-camera"; import * as i3 from "kwikui"; import * as i4 from "../../components/page-footer/page-footer.component"; import * as i5 from "@angular/common"; import * as i6 from "@taiga-ui/addon-preview"; import * as i7 from "@taiga-ui/core"; export class KwikIDWaitingPageComponent { constructor(hostElement, cdr, previewDialogService, dialogService) { this.hostElement = hostElement; this.cdr = cdr; this.previewDialogService = previewDialogService; this.dialogService = dialogService; this.config = DEFAULT_CONFIG__WAITING_PAGE; this.onClickButton = new EventEmitter(); } ngOnInit() { var _a, _b; this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG__WAITING_PAGE), this.config); if (this.currentWaitingTime === undefined) { this.currentWaitingTime = ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.waitingTime) === null || _b === void 0 ? void 0 : _b.maxWaitingTime) || 0; } if (this.currentQueuePosition === undefined) { this.currentQueuePosition = 0; } this.showPopupAfterDelay(); } ngOnChanges(changes) { if (changes.config && !changes.config.firstChange) { this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG__WAITING_PAGE), changes.config.currentValue); } if (changes.currentWaitingTime && !changes.currentWaitingTime.firstChange) { this.currentWaitingTime = changes.currentWaitingTime.currentValue; } if (changes.currentQueuePosition && !changes.currentQueuePosition.firstChange) { this.currentQueuePosition = changes.currentQueuePosition.currentValue; } } ngOnDestroy() { if (this.popupTimer) { clearTimeout(this.popupTimer); this.popupTimer = null; } } handleOnActionShowPopupForm(e, content) { var _a; console.log("e", content); const popupType = (_a = e === null || e === void 0 ? void 0 : e.popupType) !== null && _a !== void 0 ? _a : "DIALOG"; switch (popupType) { case "DIALOG": this.previewDialogRef = this.dialogService .open(content, { closeable: true, dismissible: true, size: "s", required: false }) .subscribe({ next: () => { console.info("Dialog closed"); this.previewDialogRef.complete(); }, complete: () => { console.info("Dialog closed"); } }); break; } } showPopupAfterDelay() { var _a, _b, _c; if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.preview)) { return; } this.popupTimer = setTimeout(() => { var _a, _b; const event = { popupType: (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.preview) === null || _b === void 0 ? void 0 : _b.type }; this.handleOnActionShowPopupForm(event, this.preview); }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.utilityFlags) === null || _c === void 0 ? void 0 : _c.maxWaitingTime) * 1000); } handleOnClickButton(key) { switch (key) { case "WAIT": this.closePreviewDialog(); this.onClickButton.emit(key); break; case "RESCHEDULE": this.onClickButton.emit(key); break; default: this.onClickButton.emit(key); break; } } closePreviewDialog() { if (this.previewDialogRef) { try { this.previewDialogRef.unsubscribe(); this.previewDialogRef = null; } catch (error) { console.error("Error closing dialog:", error); } } } } /** @nocollapse */ KwikIDWaitingPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDWaitingPageComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: TuiPreviewDialogService }, { token: TuiDialogService }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ KwikIDWaitingPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDWaitingPageComponent, selector: "kwikid-components-page-waiting", inputs: { config: "config", currentWaitingTime: "currentWaitingTime", currentQueuePosition: "currentQueuePosition" }, outputs: { onClickButton: "onClickButton" }, viewQueries: [{ propertyName: "preview", first: true, predicate: ["preview"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <kwikid-components-page-header\n *ngIf=\"config?.headerConfig\"\n [config]=\"config.headerConfig\"\n >\n </kwikid-components-page-header>\n\n <main>\n <div\n *ngIf=\"config?.html?.before\"\n [innerHtml]=\"config?.html?.before | kwikuiSafeHtml\"\n >\n </div>\n\n <div id=\"waiting-camera-view-container\">\n <kwikid-camera\n [type]=\"'VIEW'\"\n [config]=\"config?.cameraConfig\"\n >\n </kwikid-camera>\n </div>\n\n <div\n *ngIf=\"config?.html?.middle\"\n [innerHtml]=\"config?.html?.middle | kwikuiSafeHtml\"\n >\n </div>\n\n <div id=\"waiting-time-progress-container\">\n <kwikui-progress-bar\n id=\"waiting-time-progress-bar\"\n [color]=\"'var(--kwikui-color-primary-hover)'\"\n [max]=\"config?.utilityFlags?.maxWaitingTime\"\n [size]=\"'s'\"\n [value]=\"config?.utilityFlags?.maxWaitingTime - currentWaitingTime\"\n [isShowLabel]=\"false\"\n ></kwikui-progress-bar>\n </div>\n\n <div\n *ngIf=\"config?.html?.after\"\n [innerHtml]=\"config?.html?.after | kwikuiSafeHtml\"\n >\n </div>\n </main>\n\n <kwikid-components-page-footer\n *ngIf=\"config?.footerConfig\"\n [config]=\"config.footerConfig\"\n >\n </kwikid-components-page-footer>\n</div>\n\n<div id=\"preview-wrapper\">\n <ng-template\n #preview\n let-preview\n >\n <div id=\"preview-container\">\n <div\n *ngIf=\"config?.preview?.html?.before\"\n [innerHtml]=\"config?.preview?.html?.before | kwikuiSafeHtml\"\n >\n </div>\n <div\n *ngIf=\"config?.preview?.html?.after\"\n [innerHtml]=\"config?.preview?.html?.after | kwikuiSafeHtml\"\n >\n </div>\n <div id=\"preview-button-container\">\n <div *ngFor=\"let button of config?.preview?.button\">\n <kwikui-button\n [id]=\"button?.key\"\n [appearance]=\"button.appearance\"\n [label]=\"button?.text\"\n [size]=\"'m'\"\n [styles]=\"button?.styles\"\n (onClick)=\"handleOnClickButton(button?.key)\"\n ></kwikui-button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%}.container{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;overflow:auto}.container>*:not(:last-child){margin-bottom:.8rem}.container main{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:center;padding:0 1rem}.container main>*:not(:last-child){margin-bottom:1rem}.container main #waiting-camera-view-container{width:100%;height:100%;min-width:200px;min-height:200px;border-radius:50%;overflow:hidden;min-height:12rem}.container main #waiting-camera-view-container ::ng-deep kwikid-camera-view>video{border-radius:50%;object-fit:cover;width:100%;height:100%}.container main #waiting-time-progress-container{width:100%}.container main #waiting-time-progress-container #waiting-time-progress-bar{width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}#preview-container{display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;z-index:9999!important}#preview-button-container{display:flex!important;grid-gap:1rem!important;gap:1rem!important;z-index:9999!important;margin-top:3%}\n"], components: [{ type: i1.KwikIDPageHeaderComponent, selector: "kwikid-components-page-header", inputs: ["config"] }, { type: i2.KwikIDCameraComponent, selector: "kwikid-camera", inputs: ["type", "config", "data", "image", "video"], outputs: ["onClickBack", "onClickClose", "getImage", "onClickSave", "getVideo"] }, { type: i3.KwikUIProgressBarComponent, selector: "kwikui-progress-bar", inputs: ["color", "id", "isShowLabel", "max", "size", "value"] }, { type: i4.KwikIDPageFooterComponent, selector: "kwikid-components-page-footer", inputs: ["config"] }, { type: i3.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "kwikuiSafeHtml": i3.KwikUISafeHtmlPipe } }); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "handleOnActionShowPopupForm", null); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "showPopupAfterDelay", null); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "handleOnClickButton", null); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDWaitingPageComponent, decorators: [{ type: Component, args: [{ selector: "kwikid-components-page-waiting", templateUrl: "./waiting.component.html", styleUrls: ["./waiting.component.scss"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i6.TuiPreviewDialogService, decorators: [{ type: Inject, args: [TuiPreviewDialogService] }] }, { type: i7.TuiDialogService, decorators: [{ type: Inject, args: [TuiDialogService] }] }]; }, propDecorators: { config: [{ type: Input }], currentWaitingTime: [{ type: Input }], currentQueuePosition: [{ type: Input }], onClickButton: [{ type: Output }], preview: [{ type: ViewChild, args: ["preview"] }], handleOnActionShowPopupForm: [], showPopupAfterDelay: [], handleOnClickButton: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL3dhaXRpbmcvd2FpdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL3dhaXRpbmcvd2FpdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7QUFPaEUsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFDVSxXQUF1QixFQUN2QixHQUFzQixFQUViLG9CQUE2QyxFQUNuQixhQUErQjtRQUpsRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUViLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBcEJuRSxXQUFNLEdBQVEsNEJBQTRCLENBQUM7UUFNMUMsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWU3RCxDQUFDO0lBRUosUUFBUTs7UUFDTixJQUFJLENBQUMsTUFBTSxtQ0FDTiw0QkFBNEIsR0FDNUIsSUFBSSxDQUFDLE1BQU0sQ0FDZixDQUFDO1FB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LHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXBCakIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFHVSxPQUFPO3NCQUR2QixTQUFTO3VCQUFDLFNBQVM7Z0JBMkRwQiwyQkFBMkIsTUEyQjNCLG1CQUFtQixNQWFuQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGxvZ01ldGhvZCwgaXNFbXB0eVZhbHVlLCBtZXJnZU9iamVjdHMgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIkB0YWlnYS11aS9hZGRvbi1wcmV2aWV3XCI7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0LCBUdWlEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIkB0YWlnYS11aS9jb3JlXCI7XG5pbXBvcnQgeyBERUZBVUxUX0NPTkZJR19fV0FJVElOR19QQUdFIH0gZnJvbSBcIi4vd2FpdGluZy5jb25maWdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImt3aWtpZC1jb21wb25lbnRzLXBhZ2Utd2FpdGluZ1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3dhaXRpbmcuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3dhaXRpbmcuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEV2FpdGluZ1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55ID0gREVGQVVMVF9DT05GSUdfX1dBSVRJTkdfUEFHRTtcblxuICBASW5wdXQoKSBjdXJyZW50V2FpdGluZ1RpbWU6IG51bWJlcjtcblxuICBASW5wdXQoKSBjdXJyZW50UXVldWVQb3NpdGlvbjogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvbkNsaWNrQnV0dG9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKFwicHJldmlld1wiKVxuICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXc6IFRlbXBsYXRlUmVmPFR1aURpYWxvZ0NvbnRleHQ8dm9pZD4+O1xuXG4gIHByaXZhdGUgcHJldmlld0RpYWxvZ1JlZjogYW55O1xuXG4gIHByaXZhdGUgcG9wdXBUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBob3N0RWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChUdWlQcmV2aWV3RGlhbG9nU2VydmljZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdEaWFsb2dTZXJ2aWNlOiBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSxcbiAgICBASW5qZWN0KFR1aURpYWxvZ1NlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogVHVpRGlhbG9nU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5ERUZBVUxUX0NPTkZJR19fV0FJVElOR19QQUdFLFxuICAgICAgLi4udGhpcy5jb25maWdcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFdhaXRpbmdUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFdhaXRpbmdUaW1lID0gdGhpcy5jb25maWc/LndhaXRpbmdUaW1lPy5tYXhXYWl0aW5nVGltZSB8fCAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRRdWV1ZVBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXVlUG9zaXRpb24gPSAwO1xuICAgIH1cbiAgICB0aGlzLnNob3dQb3B1cEFmdGVyRGVsYXkoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcgJiYgIWNoYW5nZXMuY29uZmlnLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgLi4uREVGQVVMVF9DT05GSUdfX1dBSVRJTkdfUEFHRSxcbiAgICAgICAgLi4uY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmN1cnJlbnRXYWl0aW5nVGltZSAmJiAhY2hhbmdlcy5jdXJyZW50V2FpdGluZ1RpbWUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY3VycmVudFdhaXRpbmdUaW1lID0gY2hhbmdlcy5jdXJyZW50V2FpdGluZ1RpbWUuY3VycmVudFZhbHVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuY3VycmVudFF1ZXVlUG9zaXRpb24gJiZcbiAgICAgICFjaGFuZ2VzLmN1cnJlbnRRdWV1ZVBvc2l0aW9uLmZpcnN0Q2hhbmdlXG4gICAgKSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWV1ZVBvc2l0aW9uID0gY2hhbmdlcy5jdXJyZW50UXVldWVQb3NpdGlvbi5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9wdXBUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucG9wdXBUaW1lcik7XG4gICAgICB0aGlzLnBvcHVwVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25BY3Rpb25TaG93UG9wdXBGb3JtKGU6IGFueSwgY29udGVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJlXCIsIGNvbnRlbnQpO1xuICAgIGNvbnN0IHBvcHVwVHlwZSA9IGU/LnBvcHVwVHlwZSA/PyBcIkRJQUxPR1wiO1xuXG4gICAgc3dpdGNoIChwb3B1cFR5cGUpIHtcbiAgICAgIGNhc2UgXCJESUFMT0dcIjpcbiAgICAgICAgdGhpcy5wcmV2aWV3RGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlXG4gICAgICAgICAgLm9wZW4oY29udGVudCwge1xuICAgICAgICAgICAgY2xvc2VhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZGlzbWlzc2libGU6IHRydWUsXG4gICAgICAgICAgICBzaXplOiBcInNcIixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkRpYWxvZyBjbG9zZWRcIik7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1JlZi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkRpYWxvZyBjbG9zZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgc2hvd1BvcHVwQWZ0ZXJEZWxheSgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5wcmV2aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucG9wdXBUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIHBvcHVwVHlwZTogdGhpcy5jb25maWc/LnByZXZpZXc/LnR5cGVcbiAgICAgIH07XG4gICAgICB0aGlzLmhhbmRsZU9uQWN0aW9uU2hvd1BvcHVwRm9ybShldmVudCwgdGhpcy5wcmV2aWV3KTtcbiAgICB9LCB0aGlzLmNvbmZpZz8udXRpbGl0eUZsYWdzPy5tYXhXYWl0aW5nVGltZSAqIDEwMDApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrQnV0dG9uKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgXCJXQUlUXCI6XG4gICAgICAgIHRoaXMuY2xvc2VQcmV2aWV3RGlhbG9nKCk7XG4gICAgICAgIHRoaXMub25DbGlja0J1dHRvbi5lbWl0KGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlJFU0NIRURVTEVcIjpcbiAgICAgICAgdGhpcy5vbkNsaWNrQnV0dG9uLmVtaXQoa2V5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLm9uQ2xpY2tCdXR0b24uZW1pdChrZXkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZVByZXZpZXdEaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJldmlld0RpYWxvZ1JlZikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5wcmV2aWV3RGlhbG9nUmVmLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1JlZiA9IG51bGw7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgY2xvc2luZyBkaWFsb2c6XCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGt3aWtpZC1jb21wb25lbnRzLXBhZ2UtaGVhZGVyXG4gICAgKm5nSWY9XCJjb25maWc/LmhlYWRlckNvbmZpZ1wiXG4gICAgW2NvbmZpZ109XCJjb25maWcuaGVhZGVyQ29uZmlnXCJcbiAgPlxuICA8L2t3aWtpZC1jb21wb25lbnRzLXBhZ2UtaGVhZGVyPlxuXG4gIDxtYWluPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29uZmlnPy5odG1sPy5iZWZvcmVcIlxuICAgICAgW2lubmVySHRtbF09XCJjb25maWc/Lmh0bWw/LmJlZm9yZSB8IGt3aWt1aVNhZmVIdG1sXCJcbiAgICA+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwid2FpdGluZy1jYW1lcmEtdmlldy1jb250YWluZXJcIj5cbiAgICAgIDxrd2lraWQtY2FtZXJhXG4gICAgICAgIFt0eXBlXT1cIidWSUVXJ1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy5jYW1lcmFDb25maWdcIlxuICAgICAgPlxuICAgICAgPC9rd2lraWQtY2FtZXJhPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb25maWc/Lmh0bWw/Lm1pZGRsZVwiXG4gICAgICBbaW5uZXJIdG1sXT1cImNvbmZpZz8uaHRtbD8ubWlkZGxlIHwga3dpa3VpU2FmZUh0bWxcIlxuICAgID5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJ3YWl0aW5nLXRpbWUtcHJvZ3Jlc3MtY29udGFpbmVyXCI+XG4gICAgICA8a3dpa3VpLXByb2dyZXNzLWJhclxuICAgICAgICBpZD1cIndhaXRpbmctdGltZS1wcm9ncmVzcy1iYXJcIlxuICAgICAgICBbY29sb3JdPVwiJ3ZhcigtLWt3aWt1aS1jb2xvci1wcmltYXJ5LWhvdmVyKSdcIlxuICAgICAgICBbbWF4XT1cImNvbmZpZz8udXRpbGl0eUZsYWdzPy5tYXhXYWl0aW5nVGltZVwiXG4gICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgIFt2YWx1ZV09XCJjb25maWc/LnV0aWxpdHlGbGFncz8ubWF4V2FpdGluZ1RpbWUgLSBjdXJyZW50V2FpdGluZ1RpbWVcIlxuICAgICAgICBbaXNTaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgPjwva3dpa3VpLXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29uZmlnPy5odG1sPy5hZnRlclwiXG4gICAgICBbaW5uZXJIdG1sXT1cImNvbmZpZz8uaHRtbD8uYWZ0ZXIgfCBrd2lrdWlTYWZlSHRtbFwiXG4gICAgPlxuICAgIDwvZGl2PlxuICA8L21haW4+XG5cbiAgPGt3aWtpZC1jb21wb25lbnRzLXBhZ2UtZm9vdGVyXG4gICAgKm5nSWY9XCJjb25maWc/LmZvb3RlckNvbmZpZ1wiXG4gICAgW2NvbmZpZ109XCJjb25maWcuZm9vdGVyQ29uZmlnXCJcbiAgPlxuICA8L2t3aWtpZC1jb21wb25lbnRzLXBhZ2UtZm9vdGVyPlxuPC9kaXY+XG5cbjxkaXYgaWQ9XCJwcmV2aWV3LXdyYXBwZXJcIj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI3ByZXZpZXdcbiAgICBsZXQtcHJldmlld1xuICA+XG4gICAgPGRpdiBpZD1cInByZXZpZXctY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29uZmlnPy5wcmV2aWV3Py5odG1sPy5iZWZvcmVcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cImNvbmZpZz8ucHJldmlldz8uaHRtbD8uYmVmb3JlIHwga3dpa3VpU2FmZUh0bWxcIlxuICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29uZmlnPy5wcmV2aWV3Py5odG1sPy5hZnRlclwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiY29uZmlnPy5wcmV2aWV3Py5odG1sPy5hZnRlciB8IGt3aWt1aVNhZmVIdG1sXCJcbiAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cInByZXZpZXctYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY29uZmlnPy5wcmV2aWV3Py5idXR0b25cIj5cbiAgICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICAgW2lkXT1cImJ1dHRvbj8ua2V5XCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImJ1dHRvbi5hcHBlYXJhbmNlXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b24/LnRleHRcIlxuICAgICAgICAgICAgW3NpemVdPVwiJ20nXCJcbiAgICAgICAgICAgIFtzdHlsZXNdPVwiYnV0dG9uPy5zdHlsZXNcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja0J1dHRvbihidXR0b24/LmtleSlcIlxuICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==