UNPKG

ng-devui

Version:

DevUI components based on Angular

76 lines 16.9 kB
import { Component, Input, ViewChild } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { ModalComponent } from './modal.component'; import { ModalContentDirective } from './modal.directive'; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; import * as i2 from "./modal.component"; import * as i3 from "@angular/common"; import * as i4 from "@angular/cdk/scrolling"; import * as i5 from "./modal.directive"; import * as i6 from "./modal-header.component"; import * as i7 from "./modal-footer.component"; export class ModalContainerComponent { constructor(sanitizer, modalInstance) { this.sanitizer = sanitizer; this.modalInstance = modalInstance; this.dialogtype = 'standard'; } ngOnInit() { if (this.html) { this.content = this.sanitizer.bypassSecurityTrustHtml(this.content); } } close(event) { this.onClose(event); } maximize(maximized) { if (this.onMaximize) { this.onMaximize(maximized); } if (maximized) { this._oldMaxHeight = this.maxHeight; this.maxHeight = '100vh'; } else { this.maxHeight = this._oldMaxHeight; } } updateButtonOptions(buttonOptions = []) { this.buttons = this.buttons.map((button, index) => { return { ...button, ...buttonOptions[index] }; }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalContainerComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.ModalComponent }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalContainerComponent, selector: "d-modal-container", inputs: { maxHeight: "maxHeight", data: "data", title: "title", content: "content", showMaximizeBtn: "showMaximizeBtn", buttons: "buttons", html: "html", onClose: "onClose", onMaximize: "onMaximize", dialogtype: "dialogtype", showCloseBtn: "showCloseBtn" }, viewQueries: [{ propertyName: "modalContentHost", first: true, predicate: ModalContentDirective, descendants: true, static: true }], ngImport: i0, template: "<div>\n <d-modal-header\n id=\"d-modal-header\"\n [title]=\"title\"\n (closeEvent)=\"close($event)\"\n (maximizeEvent)=\"maximize($event)\"\n [dialogtype]=\"dialogtype\"\n [showMaximizeBtn]=\"showMaximizeBtn\"\n [showCloseBtn]=\"showCloseBtn\"\n ></d-modal-header>\n <div\n class=\"modal-body devui-scrollbar\"\n [ngClass]=\"{\n 'flex-content': dialogtype === 'warning' || dialogtype === 'failed' || dialogtype === 'success' || dialogtype === 'info'\n }\"\n [ngStyle]=\"{ maxHeight: maxHeight, 'overflow-y': 'auto' }\"\n cdkScrollable\n >\n <div\n [ngClass]=\"{\n 'display-flex': dialogtype !== '' && dialogtype !== 'standard'\n }\"\n >\n <div class=\"content\" [style.max-height]=\"maxHeight\" *ngIf=\"!!content && !html\">{{ content }}</div>\n <div class=\"content\" [style.max-height]=\"maxHeight\" *ngIf=\"!!content && html\" [innerHTML]=\"content\"></div>\n <div class=\"content\" *ngIf=\"contentTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"contentTemplate\"\n [ngTemplateOutletContext]=\"{ modalInstance: modalInstance, modalContentInstance: this }\"\n ></ng-template>\n </div>\n <ng-template dModalContentHost></ng-template>\n </div>\n </div>\n\n <d-modal-footer [buttons]=\"buttons\"></d-modal-footer>\n</div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.modal-body{padding:12px 32px;overflow-y:hidden;scrollbar-gutter:stable}.modal-body:hover{overflow-y:auto}.display-flex{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;max-width:100%}div.content{word-break:normal;word-wrap:break-word;width:100%}.flex-content ::ng-deep div.content{font-size:var(--devui-font-size, 12px);word-break:normal;word-wrap:break-word;white-space:pre-wrap}.flex-content{display:flex;justify-content:left;align-items:center}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i5.ModalContentDirective, selector: "[dModalContentHost]" }, { kind: "component", type: i6.ModalHeaderComponent, selector: "d-modal-header", inputs: ["title", "dialogtype", "showCloseBtn", "showMaximizeBtn"], outputs: ["closeEvent", "maximizeEvent"] }, { kind: "component", type: i7.ModalFooterComponent, selector: "d-modal-footer", inputs: ["buttons"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalContainerComponent, decorators: [{ type: Component, args: [{ selector: 'd-modal-container', preserveWhitespaces: false, template: "<div>\n <d-modal-header\n id=\"d-modal-header\"\n [title]=\"title\"\n (closeEvent)=\"close($event)\"\n (maximizeEvent)=\"maximize($event)\"\n [dialogtype]=\"dialogtype\"\n [showMaximizeBtn]=\"showMaximizeBtn\"\n [showCloseBtn]=\"showCloseBtn\"\n ></d-modal-header>\n <div\n class=\"modal-body devui-scrollbar\"\n [ngClass]=\"{\n 'flex-content': dialogtype === 'warning' || dialogtype === 'failed' || dialogtype === 'success' || dialogtype === 'info'\n }\"\n [ngStyle]=\"{ maxHeight: maxHeight, 'overflow-y': 'auto' }\"\n cdkScrollable\n >\n <div\n [ngClass]=\"{\n 'display-flex': dialogtype !== '' && dialogtype !== 'standard'\n }\"\n >\n <div class=\"content\" [style.max-height]=\"maxHeight\" *ngIf=\"!!content && !html\">{{ content }}</div>\n <div class=\"content\" [style.max-height]=\"maxHeight\" *ngIf=\"!!content && html\" [innerHTML]=\"content\"></div>\n <div class=\"content\" *ngIf=\"contentTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"contentTemplate\"\n [ngTemplateOutletContext]=\"{ modalInstance: modalInstance, modalContentInstance: this }\"\n ></ng-template>\n </div>\n <ng-template dModalContentHost></ng-template>\n </div>\n </div>\n\n <d-modal-footer [buttons]=\"buttons\"></d-modal-footer>\n</div>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.modal-body{padding:12px 32px;overflow-y:hidden;scrollbar-gutter:stable}.modal-body:hover{overflow-y:auto}.display-flex{display:flex;display:-ms-flexbox;align-items:center;-ms-flex-align:center;max-width:100%}div.content{word-break:normal;word-wrap:break-word;width:100%}.flex-content ::ng-deep div.content{font-size:var(--devui-font-size, 12px);word-break:normal;word-wrap:break-word;white-space:pre-wrap}.flex-content{display:flex;justify-content:left;align-items:center}\n"] }] }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.ModalComponent }], propDecorators: { maxHeight: [{ type: Input }], data: [{ type: Input }], title: [{ type: Input }], content: [{ type: Input }], showMaximizeBtn: [{ type: Input }], buttons: [{ type: Input }], html: [{ type: Input }], onClose: [{ type: Input }], onMaximize: [{ type: Input }], modalContentHost: [{ type: ViewChild, args: [ModalContentDirective, { static: true }] }], dialogtype: [{ type: Input }], showCloseBtn: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL21vZGFsL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZ1aS9tb2RhbC9tb2RhbC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sdUJBQXVCO0lBd0JsQyxZQUFvQixTQUF1QixFQUFTLGFBQTZCO1FBQTdELGNBQVMsR0FBVCxTQUFTLENBQWM7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFMeEUsZUFBVSxHQUFHLFVBQVUsQ0FBQztJQUttRCxDQUFDO0lBRXJGLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLEdBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBa0I7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLGFBQWEsR0FBRyxFQUFFO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEQsT0FBTyxFQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXBEVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2V0FrQnZCLHFCQUFxQiw4RENuQ2xDLDQwQ0FxQ0E7OzRGRHBCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UsbUJBQW1CLHVCQUdSLEtBQUs7OEdBR2pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUM4QyxnQkFBZ0I7c0JBQW5FLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUN6QyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IElCdXR0b25TdHlsZSB9IGZyb20gJ25nLWRldnVpL2J1dHRvbic7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwuZGlyZWN0aXZlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtbW9kYWwtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBtYXhIZWlnaHQ6IHN0cmluZztcbiAgQElucHV0KCkgZGF0YTogYW55O1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcbiAgQElucHV0KCkgc2hvd01heGltaXplQnRuOiBib29sZWFuO1xuICBASW5wdXQoKSBidXR0b25zOiBBcnJheTx7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgY3NzQ2xhc3M/OiBJQnV0dG9uU3R5bGU7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGhhbmRsZXI6ICgkZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICAgIGJ0bndpZHRoPzogc3RyaW5nO1xuICAgIGF1dG9mb2N1cz86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIH0+O1xuICBASW5wdXQoKSBodG1sOiBib29sZWFuO1xuICBASW5wdXQoKSBvbkNsb3NlOiAoJGV2ZW50PzogRXZlbnQpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uTWF4aW1pemU6IChtYXhpbWl6ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIEBWaWV3Q2hpbGQoTW9kYWxDb250ZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbENvbnRlbnRIb3N0OiBNb2RhbENvbnRlbnREaXJlY3RpdmU7XG4gIEBJbnB1dCgpIGRpYWxvZ3R5cGUgPSAnc3RhbmRhcmQnO1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdG46IGJvb2xlYW47XG4gIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgX29sZE1heEhlaWdodDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHB1YmxpYyBtb2RhbEluc3RhbmNlOiBNb2RhbENvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5odG1sKSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSA8SFRNTEVsZW1lbnQ+dGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoPHN0cmluZz50aGlzLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKGV2ZW50KSB7XG4gICAgdGhpcy5vbkNsb3NlKGV2ZW50KTtcbiAgfVxuXG4gIG1heGltaXplKG1heGltaXplZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm9uTWF4aW1pemUpIHtcbiAgICAgIHRoaXMub25NYXhpbWl6ZShtYXhpbWl6ZWQpO1xuICAgIH1cbiAgICBpZiAobWF4aW1pemVkKSB7XG4gICAgICB0aGlzLl9vbGRNYXhIZWlnaHQgPSB0aGlzLm1heEhlaWdodDtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gJzEwMHZoJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLl9vbGRNYXhIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQnV0dG9uT3B0aW9ucyhidXR0b25PcHRpb25zID0gW10pIHtcbiAgICB0aGlzLmJ1dHRvbnMgPSB0aGlzLmJ1dHRvbnMubWFwKChidXR0b24sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gey4uLmJ1dHRvbiwgLi4uYnV0dG9uT3B0aW9uc1tpbmRleF19O1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZC1tb2RhbC1oZWFkZXJcbiAgICBpZD1cImQtbW9kYWwtaGVhZGVyXCJcbiAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgIChjbG9zZUV2ZW50KT1cImNsb3NlKCRldmVudClcIlxuICAgIChtYXhpbWl6ZUV2ZW50KT1cIm1heGltaXplKCRldmVudClcIlxuICAgIFtkaWFsb2d0eXBlXT1cImRpYWxvZ3R5cGVcIlxuICAgIFtzaG93TWF4aW1pemVCdG5dPVwic2hvd01heGltaXplQnRuXCJcbiAgICBbc2hvd0Nsb3NlQnRuXT1cInNob3dDbG9zZUJ0blwiXG4gID48L2QtbW9kYWwtaGVhZGVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb2RhbC1ib2R5IGRldnVpLXNjcm9sbGJhclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2ZsZXgtY29udGVudCc6IGRpYWxvZ3R5cGUgPT09ICd3YXJuaW5nJyB8fCBkaWFsb2d0eXBlID09PSAnZmFpbGVkJyB8fCBkaWFsb2d0eXBlID09PSAnc3VjY2VzcycgfHwgZGlhbG9ndHlwZSA9PT0gJ2luZm8nXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCwgJ292ZXJmbG93LXknOiAnYXV0bycgfVwiXG4gICAgY2RrU2Nyb2xsYWJsZVxuICA+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGlzcGxheS1mbGV4JzogZGlhbG9ndHlwZSAhPT0gJycgJiYgZGlhbG9ndHlwZSAhPT0gJ3N0YW5kYXJkJ1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIiAqbmdJZj1cIiEhY29udGVudCAmJiAhaHRtbFwiPnt7IGNvbnRlbnQgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCIgKm5nSWY9XCIhIWNvbnRlbnQgJiYgaHRtbFwiIFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAqbmdJZj1cImNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG1vZGFsSW5zdGFuY2U6IG1vZGFsSW5zdGFuY2UsIG1vZGFsQ29udGVudEluc3RhbmNlOiB0aGlzIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlIGRNb2RhbENvbnRlbnRIb3N0PjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkLW1vZGFsLWZvb3RlciBbYnV0dG9uc109XCJidXR0b25zXCI+PC9kLW1vZGFsLWZvb3Rlcj5cbjwvZGl2PlxuIl19