UNPKG

@ng-matero/extensions

Version:
43 lines 16.4 kB
import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core'; import { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatIcon } from '@angular/material/icon'; import { MtxToObservablePipe } from '@ng-matero/extensions/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; export class MtxDialogContainer { constructor(dialogRef, data) { this.dialogRef = dialogRef; this.data = data; } _onClick(fn) { if (fn) { fn.call(this); } this._onClose(); } _onClose() { this.dialogRef.close(); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxDialogContainer, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); } /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxDialogContainer, isStandalone: true, selector: "mtx-dialog-container", host: { classAttribute: "mtx-dialog-container" }, exportAs: ["mtxDialogContainer"], ngImport: i0, template: "@if (data.title) {\n <h1 class=\"mtx-dialog-title\">\n <span>{{data.title | toObservable | async}}</span>\n @if (data.showCloseIcon) {\n <button mat-icon-button (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </h1>\n}\n@if (data.description) {\n <div class=\"mtx-dialog-content\">\n <p>{{data.description | toObservable | async}}</p>\n </div>\n}\n<div class=\"mtx-dialog-actions\">\n @for (btn of data.buttons; track btn) {\n @switch (btn.type) {\n @case ('raised') {\n @if (btn.focusInitial) {\n <button mat-raised-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-raised-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @case ('stroked') {\n @if (btn.focusInitial) {\n <button mat-stroked-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-stroked-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @case ('flat') {\n @if (btn.focusInitial) {\n <button mat-flat-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-flat-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @default {\n @if (btn.focusInitial) {\n <button mat-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n }\n }\n</div>\n", styles: [".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;margin:0;line-height:48px;font-weight:500;font-size:20px}.mtx-dialog-title .mat-mdc-button-base{margin-right:-16px}[dir=rtl] .mtx-dialog-title .mat-mdc-button-base{margin-right:0;margin-left:-16px}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-content p{margin-top:0}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:8px}.mtx-dialog-actions .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mtx-dialog-actions .mat-mdc-button-base{margin-left:0;margin-right:8px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: MtxToObservablePipe, name: "toObservable" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxDialogContainer, decorators: [{ type: Component, args: [{ selector: 'mtx-dialog-container', exportAs: 'mtxDialogContainer', host: { class: 'mtx-dialog-container', }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ AsyncPipe, MatButton, MatIconButton, MatFabButton, MatMiniFabButton, MatIcon, MtxToObservablePipe, ], template: "@if (data.title) {\n <h1 class=\"mtx-dialog-title\">\n <span>{{data.title | toObservable | async}}</span>\n @if (data.showCloseIcon) {\n <button mat-icon-button (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </h1>\n}\n@if (data.description) {\n <div class=\"mtx-dialog-content\">\n <p>{{data.description | toObservable | async}}</p>\n </div>\n}\n<div class=\"mtx-dialog-actions\">\n @for (btn of data.buttons; track btn) {\n @switch (btn.type) {\n @case ('raised') {\n @if (btn.focusInitial) {\n <button mat-raised-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-raised-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @case ('stroked') {\n @if (btn.focusInitial) {\n <button mat-stroked-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-stroked-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @case ('flat') {\n @if (btn.focusInitial) {\n <button mat-flat-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-flat-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n @default {\n @if (btn.focusInitial) {\n <button mat-button cdkFocusInitial\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n } @else {\n <button mat-button\n [color]=\"btn.color\" [class]=\"btn.class\" (click)=\"_onClick(btn.onClick!)\">\n {{btn.text | toObservable | async}}\n </button>\n }\n }\n }\n }\n</div>\n", styles: [".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;margin:0;line-height:48px;font-weight:500;font-size:20px}.mtx-dialog-title .mat-mdc-button-base{margin-right:-16px}[dir=rtl] .mtx-dialog-title .mat-mdc-button-base{margin-right:0;margin-left:-16px}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-content p{margin-top:0}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:8px}.mtx-dialog-actions .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mtx-dialog-actions .mat-mdc-button-base{margin-left:0;margin-right:8px}\n"] }] }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZGlhbG9nL2RpYWxvZy1jb250YWluZXIudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2RpYWxvZy9kaWFsb2ctY29udGFpbmVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUF3QmpFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDUyxTQUEyQyxFQUNsQixJQUFtQjtRQUQ1QyxjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFlO0lBQ2xELENBQUM7SUFFSixRQUFRLENBQUMsRUFBYztRQUNyQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO2lJQWZVLGtCQUFrQiw4Q0FHbkIsZUFBZTtxSEFIZCxrQkFBa0Isb0tDOUIvQixxZ0ZBeUVBLG11QkRwREksU0FBUyw4Q0FDVCxTQUFTLGlMQUNULGFBQWEsNkZBR2IsT0FBTyxzSUFDUCxtQkFBbUI7OzJGQUdWLGtCQUFrQjtrQkFyQjlCLFNBQVM7K0JBQ0Usc0JBQXNCLFlBQ3RCLG9CQUFvQixRQUd4Qjt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxtQkFBbUI7cUJBQ3BCOzswQkFLRSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uLCBNYXRGYWJCdXR0b24sIE1hdEljb25CdXR0b24sIE1hdE1pbmlGYWJCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBNdHhUb09ic2VydmFibGVQaXBlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2NvcmUnO1xuaW1wb3J0IHsgTXR4RGlhbG9nRGF0YSB9IGZyb20gJy4vZGlhbG9nLWNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1kaWFsb2ctY29udGFpbmVyJyxcbiAgZXhwb3J0QXM6ICdtdHhEaWFsb2dDb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLWNvbnRhaW5lci5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy1jb250YWluZXIuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1kaWFsb2ctY29udGFpbmVyJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTWF0QnV0dG9uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0RmFiQnV0dG9uLFxuICAgIE1hdE1pbmlGYWJCdXR0b24sXG4gICAgTWF0SWNvbixcbiAgICBNdHhUb09ic2VydmFibGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhEaWFsb2dDb250YWluZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TXR4RGlhbG9nQ29udGFpbmVyPixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IE10eERpYWxvZ0RhdGFcbiAgKSB7fVxuXG4gIF9vbkNsaWNrKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBmbi5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLl9vbkNsb3NlKCk7XG4gIH1cblxuICBfb25DbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG59XG4iLCJAaWYgKGRhdGEudGl0bGUpIHtcbiAgPGgxIGNsYXNzPVwibXR4LWRpYWxvZy10aXRsZVwiPlxuICAgIDxzcGFuPnt7ZGF0YS50aXRsZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgQGlmIChkYXRhLnNob3dDbG9zZUljb24pIHtcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJfb25DbG9zZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvaDE+XG59XG5AaWYgKGRhdGEuZGVzY3JpcHRpb24pIHtcbiAgPGRpdiBjbGFzcz1cIm10eC1kaWFsb2ctY29udGVudFwiPlxuICAgIDxwPnt7ZGF0YS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3A+XG4gIDwvZGl2PlxufVxuPGRpdiBjbGFzcz1cIm10eC1kaWFsb2ctYWN0aW9uc1wiPlxuICBAZm9yIChidG4gb2YgZGF0YS5idXR0b25zOyB0cmFjayBidG4pIHtcbiAgICBAc3dpdGNoIChidG4udHlwZSkge1xuICAgICAgQGNhc2UgKCdyYWlzZWQnKSB7XG4gICAgICAgIEBpZiAoYnRuLmZvY3VzSW5pdGlhbCkge1xuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2RrRm9jdXNJbml0aWFsXG4gICAgICAgICAgICBbY29sb3JdPVwiYnRuLmNvbG9yXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiIChjbGljayk9XCJfb25DbGljayhidG4ub25DbGljayEpXCI+XG4gICAgICAgICAgICB7e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICBbY29sb3JdPVwiYnRuLmNvbG9yXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiIChjbGljayk9XCJfb25DbGljayhidG4ub25DbGljayEpXCI+XG4gICAgICAgICAgICB7e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ3N0cm9rZWQnKSB7XG4gICAgICAgIEBpZiAoYnRuLmZvY3VzSW5pdGlhbCkge1xuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgICAgW2NvbG9yXT1cImJ0bi5jb2xvclwiIFtjbGFzc109XCJidG4uY2xhc3NcIiAoY2xpY2spPVwiX29uQ2xpY2soYnRuLm9uQ2xpY2shKVwiPlxuICAgICAgICAgICAge3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgIFtjb2xvcl09XCJidG4uY29sb3JcIiBbY2xhc3NdPVwiYnRuLmNsYXNzXCIgKGNsaWNrKT1cIl9vbkNsaWNrKGJ0bi5vbkNsaWNrISlcIj5cbiAgICAgICAgICAgIHt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnZmxhdCcpIHtcbiAgICAgICAgQGlmIChidG4uZm9jdXNJbml0aWFsKSB7XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY2RrRm9jdXNJbml0aWFsXG4gICAgICAgICAgICBbY29sb3JdPVwiYnRuLmNvbG9yXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiIChjbGljayk9XCJfb25DbGljayhidG4ub25DbGljayEpXCI+XG4gICAgICAgICAgICB7e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICAgICAgW2NvbG9yXT1cImJ0bi5jb2xvclwiIFtjbGFzc109XCJidG4uY2xhc3NcIiAoY2xpY2spPVwiX29uQ2xpY2soYnRuLm9uQ2xpY2shKVwiPlxuICAgICAgICAgICAge3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGRlZmF1bHQge1xuICAgICAgICBAaWYgKGJ0bi5mb2N1c0luaXRpYWwpIHtcbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2RrRm9jdXNJbml0aWFsXG4gICAgICAgICAgICBbY29sb3JdPVwiYnRuLmNvbG9yXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiIChjbGljayk9XCJfb25DbGljayhidG4ub25DbGljayEpXCI+XG4gICAgICAgICAgICB7e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b25cbiAgICAgICAgICAgIFtjb2xvcl09XCJidG4uY29sb3JcIiBbY2xhc3NdPVwiYnRuLmNsYXNzXCIgKGNsaWNrKT1cIl9vbkNsaWNrKGJ0bi5vbkNsaWNrISlcIj5cbiAgICAgICAgICAgIHt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbjwvZGl2PlxuIl19