UNPKG

@craftsjs/alert

Version:
74 lines 16.8 kB
import { Component, ChangeDetectionStrategy, Inject, ViewEncapsulation, Injector, InjectionToken, ViewChildren, TemplateRef } from '@angular/core'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { alertComponents } from './components/components'; import { DynamicDirective } from '@craftsjs/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "@angular/common"; import * as i3 from "@craftsjs/core"; import * as i4 from "./components/buttons/alert-ok-button/alert-ok-button.component"; import * as i5 from "./components/buttons/alert-cancel-button/alert-cancel-button.component"; import * as i6 from "@ngx-translate/core"; export const CRAFTSJS_ALERT_DATA = new InjectionToken('CraftsjsAlertData'); export class DialogAlertComponent { constructor(dialogRef, data) { this.dialogRef = dialogRef; this.data = data; } ngOnInit() { } ngAfterViewInit() { this.loadComponents(); } loadComponents() { const itemComponent = alertComponents.find(x => x.type === this.data.type); const component = itemComponent && itemComponent.component; this.resolveComponent(component, this.appDynamic.find(x => x.name === 'alert-icon').viewContainerRef); this.resolveComponent(this.data.customBody, this.appDynamic.find(x => x.name === 'alert-body').viewContainerRef); this.resolveComponent(this.data.customButtonComponent, this.appDynamic.find(x => x.name === 'alert-buttons').viewContainerRef); } resolveComponent(component, viewContainerRef) { if (!component) { return; } viewContainerRef.clear(); if (component instanceof TemplateRef) { viewContainerRef.createEmbeddedView(component, { $implicit: this.data, dialogRef: this.dialogRef }); } else { const injector = this.createInjector(viewContainerRef.injector); viewContainerRef.createComponent(component, { injector }); } } createInjector(injector) { return Injector.create({ providers: [{ provide: CRAFTSJS_ALERT_DATA, useValue: this.data }, { provide: MatDialogRef, useValue: this.dialogRef }], parent: injector }); } buttonClick(result) { this.dialogRef.close({ data: this.data, result }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogAlertComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DialogAlertComponent, selector: "dialog-alert", viewQueries: [{ propertyName: "appDynamic", predicate: DynamicDirective, descendants: true }], ngImport: i0, template: "<ng-template craftsjsDynamic name=\"alert-icon\"></ng-template>\r\n<div *ngIf=\"data?.title\" class=\"alert-title\">\r\n <span>\r\n {{data.title | translate}}\r\n </span>\r\n</div>\r\n<div *ngIf=\"data?.text\" class=\"alert-text\">\r\n <span>\r\n {{data.text | translate}}\r\n </span>\r\n</div>\r\n<ng-template craftsjsDynamic name=\"alert-body\"></ng-template>\r\n<div class=\"alert-footer\" *ngIf=\"!data?.hiddenButtons\">\r\n <alert-ok-button *ngIf=\"!data?.customButtonComponent\" (click)=\"buttonClick('ok')\">\r\n </alert-ok-button>\r\n <alert-cancel-button *ngIf=\"!data?.customButtonComponent && data?.showCancelButton\"\r\n (click)=\"buttonClick('cancel')\">\r\n </alert-cancel-button>\r\n</div>\r\n<ng-template craftsjsDynamic name=\"alert-buttons\"></ng-template>", styles: [".alert-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.alert-icon-custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.alert-icon img{max-width:100%;max-height:100%}.alert-title{color:#000000a6;font-weight:600;text-transform:none;position:relative;display:block;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.alert-title:first-child{margin-top:26px}.alert-title:not(:first-child){padding-bottom:0}.alert-title:not(:last-child){margin-bottom:13px}.alert-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:center;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:#000000a3;overflow-wrap:break-word;box-sizing:border-box;width:100%}.alert-text:first-child{margin-top:45px}.alert-text:last-child{margin-bottom:45px}.alert-footer{text-align:right;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.alert-footer-button-container{margin:5px;display:inline-block;position:relative}.alert-footer>*{display:inline-block;margin-right:.5em}.alert-footer>:last-child{margin-right:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DynamicDirective, selector: "[craftsjsDynamic]", inputs: ["name"] }, { kind: "component", type: i4.AlertOkButtonComponent, selector: "alert-ok-button", outputs: ["click"] }, { kind: "component", type: i5.AlertCancelButtonComponent, selector: "alert-cancel-button", outputs: ["click"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogAlertComponent, decorators: [{ type: Component, args: [{ selector: 'dialog-alert', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template craftsjsDynamic name=\"alert-icon\"></ng-template>\r\n<div *ngIf=\"data?.title\" class=\"alert-title\">\r\n <span>\r\n {{data.title | translate}}\r\n </span>\r\n</div>\r\n<div *ngIf=\"data?.text\" class=\"alert-text\">\r\n <span>\r\n {{data.text | translate}}\r\n </span>\r\n</div>\r\n<ng-template craftsjsDynamic name=\"alert-body\"></ng-template>\r\n<div class=\"alert-footer\" *ngIf=\"!data?.hiddenButtons\">\r\n <alert-ok-button *ngIf=\"!data?.customButtonComponent\" (click)=\"buttonClick('ok')\">\r\n </alert-ok-button>\r\n <alert-cancel-button *ngIf=\"!data?.customButtonComponent && data?.showCancelButton\"\r\n (click)=\"buttonClick('cancel')\">\r\n </alert-cancel-button>\r\n</div>\r\n<ng-template craftsjsDynamic name=\"alert-buttons\"></ng-template>", styles: [".alert-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.alert-icon-custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.alert-icon img{max-width:100%;max-height:100%}.alert-title{color:#000000a6;font-weight:600;text-transform:none;position:relative;display:block;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.alert-title:first-child{margin-top:26px}.alert-title:not(:first-child){padding-bottom:0}.alert-title:not(:last-child){margin-bottom:13px}.alert-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:center;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:#000000a3;overflow-wrap:break-word;box-sizing:border-box;width:100%}.alert-text:first-child{margin-top:45px}.alert-text:last-child{margin-bottom:45px}.alert-footer{text-align:right;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.alert-footer-button-container{margin:5px;display:inline-block;position:relative}.alert-footer>*{display:inline-block;margin-right:.5em}.alert-footer>:last-child{margin-right:inherit}\n"] }] }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }], propDecorators: { appDynamic: [{ type: ViewChildren, args: [DynamicDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyYWZ0c2pzL2FsZXJ0L3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2ctYWxlcnQvZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyYWZ0c2pzL2FsZXJ0L3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2ctYWxlcnQvZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixpQkFBaUIsRUFFakIsUUFBUSxFQUNSLGNBQWMsRUFJZCxZQUFZLEVBRVosV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUVsRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBTSxtQkFBbUIsQ0FBQyxDQUFDO0FBU2hGLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFDUyxTQUE2QyxFQUNwQixJQUFnQjtRQUR6QyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBRWxELENBQUM7SUFFRCxRQUFRO0lBRVIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxNQUFNLFNBQVMsR0FBRyxhQUFhLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBdUMsRUFBRSxnQkFBa0M7UUFDbEcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDM0IsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxTQUFTLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDckMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO2dCQUMxQyxRQUFRO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxtQkFBbUI7b0JBQzVCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDcEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztpQkFDekIsQ0FBQztZQUNGLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0F4RFUsb0JBQW9CLDhDQU9yQixlQUFlO21HQVBkLG9CQUFvQixtRkFFakIsZ0JBQWdCLGdEQy9CaEMscXpCQW1CZ0U7OzRGRFVuRCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFTbEMsTUFBTTsyQkFBQyxlQUFlO3lDQUp6QixVQUFVO3NCQURULFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSW5qZWN0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxuICBJbmplY3RvcixcclxuICBJbmplY3Rpb25Ub2tlbixcclxuICBUeXBlLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIFRlbXBsYXRlUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWxlcnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9hbGVydC5tb2RlbCc7XHJcbmltcG9ydCB7IGFsZXJ0Q29tcG9uZW50cyB9IGZyb20gJy4vY29tcG9uZW50cy9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpcmVjdGl2ZSB9IGZyb20gJ0BjcmFmdHNqcy9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBDUkFGVFNKU19BTEVSVF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0NyYWZ0c2pzQWxlcnREYXRhJyk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RpYWxvZy1hbGVydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1hbGVydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLWFsZXJ0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkcmVuKER5bmFtaWNEaXJlY3RpdmUpXHJcbiAgYXBwRHluYW1pYzogUXVlcnlMaXN0PER5bmFtaWNEaXJlY3RpdmU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dBbGVydENvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IEFsZXJ0TW9kZWwsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRDb21wb25lbnRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRDb21wb25lbnRzKCkge1xyXG4gICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IGFsZXJ0Q29tcG9uZW50cy5maW5kKHggPT4geC50eXBlID09PSB0aGlzLmRhdGEudHlwZSk7XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSBpdGVtQ29tcG9uZW50ICYmIGl0ZW1Db21wb25lbnQuY29tcG9uZW50O1xyXG4gICAgdGhpcy5yZXNvbHZlQ29tcG9uZW50KGNvbXBvbmVudCwgdGhpcy5hcHBEeW5hbWljLmZpbmQoeCA9PiB4Lm5hbWUgPT09ICdhbGVydC1pY29uJykudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB0aGlzLnJlc29sdmVDb21wb25lbnQodGhpcy5kYXRhLmN1c3RvbUJvZHksIHRoaXMuYXBwRHluYW1pYy5maW5kKHggPT4geC5uYW1lID09PSAnYWxlcnQtYm9keScpLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5yZXNvbHZlQ29tcG9uZW50KHRoaXMuZGF0YS5jdXN0b21CdXR0b25Db21wb25lbnQsIHRoaXMuYXBwRHluYW1pYy5maW5kKHggPT4geC5uYW1lID09PSAnYWxlcnQtYnV0dG9ucycpLnZpZXdDb250YWluZXJSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgaWYgKCFjb21wb25lbnQpIHsgcmV0dXJuOyB9XHJcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcclxuICAgICAgdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcoY29tcG9uZW50LCB7ICRpbXBsaWNpdDogdGhpcy5kYXRhLCBkaWFsb2dSZWY6IHRoaXMuZGlhbG9nUmVmIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKHZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IpO1xyXG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcclxuICAgICAgICBpbmplY3RvclxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IENSQUZUU0pTX0FMRVJUX0RBVEEsXHJcbiAgICAgICAgdXNlVmFsdWU6IHRoaXMuZGF0YVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogTWF0RGlhbG9nUmVmLFxyXG4gICAgICAgIHVzZVZhbHVlOiB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICB9XSxcclxuICAgICAgcGFyZW50OiBpbmplY3RvclxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKHJlc3VsdDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IGRhdGE6IHRoaXMuZGF0YSwgcmVzdWx0IH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlIGNyYWZ0c2pzRHluYW1pYyBuYW1lPVwiYWxlcnQtaWNvblwiPjwvbmctdGVtcGxhdGU+XHJcbjxkaXYgKm5nSWY9XCJkYXRhPy50aXRsZVwiIGNsYXNzPVwiYWxlcnQtdGl0bGVcIj5cclxuICAgIDxzcGFuPlxyXG4gICAgICAgIHt7ZGF0YS50aXRsZSB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L3NwYW4+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGF0YT8udGV4dFwiIGNsYXNzPVwiYWxlcnQtdGV4dFwiPlxyXG4gICAgPHNwYW4+XHJcbiAgICAgICAge3tkYXRhLnRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9zcGFuPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlIGNyYWZ0c2pzRHluYW1pYyBuYW1lPVwiYWxlcnQtYm9keVwiPjwvbmctdGVtcGxhdGU+XHJcbjxkaXYgY2xhc3M9XCJhbGVydC1mb290ZXJcIiAqbmdJZj1cIiFkYXRhPy5oaWRkZW5CdXR0b25zXCI+XHJcbiAgICA8YWxlcnQtb2stYnV0dG9uICpuZ0lmPVwiIWRhdGE/LmN1c3RvbUJ1dHRvbkNvbXBvbmVudFwiIChjbGljayk9XCJidXR0b25DbGljaygnb2snKVwiPlxyXG4gICAgPC9hbGVydC1vay1idXR0b24+XHJcbiAgICA8YWxlcnQtY2FuY2VsLWJ1dHRvbiAqbmdJZj1cIiFkYXRhPy5jdXN0b21CdXR0b25Db21wb25lbnQgJiYgZGF0YT8uc2hvd0NhbmNlbEJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKCdjYW5jZWwnKVwiPlxyXG4gICAgPC9hbGVydC1jYW5jZWwtYnV0dG9uPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlIGNyYWZ0c2pzRHluYW1pYyBuYW1lPVwiYWxlcnQtYnV0dG9uc1wiPjwvbmctdGVtcGxhdGU+Il19