UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

40 lines 15.9 kB
import { Component, Inject, Input, Optional } from '@angular/core'; import { AbstractFieldComponentResolverComponent, DateField, DateTimeField, EnumerationField, FileField, FileListField, MultichoiceField, NAE_INFORM_ABOUT_INVALID_DATA } from '@netgrif/components-core'; import * as i0 from "@angular/core"; import * as i1 from "@netgrif/components-core"; import * as i2 from "@angular/common"; import * as i3 from "@ngbracket/ngx-layout"; import * as i4 from "@ngbracket/ngx-layout/extended"; import * as i5 from "../../data-fields/data-field-template/data-field-template.component"; export class FieldComponentResolverComponent extends AbstractFieldComponentResolverComponent { taskContentComponentClassReference; constructor(taskContentService, _informAboutInvalidData) { super(taskContentService, _informAboutInvalidData); } isEnumOrMulti() { return this.getDataField() instanceof EnumerationField || this.getDataField() instanceof MultichoiceField; } isDateType() { return this.getDataField() instanceof DateField || this.getDataField() instanceof DateTimeField; } isDateTimeType() { return this.getDataField() instanceof DateTimeField; } isFileType() { return this.getDataField() instanceof FileField || this.getDataField() instanceof FileListField; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldComponentResolverComponent, deps: [{ token: i1.TaskContentService }, { token: NAE_INFORM_ABOUT_INVALID_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FieldComponentResolverComponent, selector: "nc-field-component-resolver", inputs: { taskContentComponentClassReference: "taskContentComponentClassReference" }, usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input\" [ngClass]=\"{'min-row-height': isField() && !isCustomHeight()}\" [ngSwitch]=\"getElementType()\">\n\n <div *ngSwitchCase=\"taskElementEnum.DATA_GROUP_TITLE\" fxFlex fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div fxFlex=\"20\" class=\"line-datagroup\"></div>\n <span [ngClass]=\"{'margin-default': getDataGroupTitle() !== ''}\">{{getDataGroupTitle()}}</span>\n <div fxFlex class=\"line-datagroup\"></div>\n </div>\n\n <div *ngSwitchCase=\"taskElementEnum.LOADER\" class=\"min-row-height\" fxFlex fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div class=\"phl-item\">\n <div class=\"phl-row\" fxLayoutAlign=\"center center\">\n <div class=\"phl-col\">\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"taskElementEnum.BLANK\"></div>\n\n <div *ngSwitchDefault fxFlex [ngClass]=\"{'div-overflow': isEnumOrMulti(), 'date-field-fix': isDateType(), 'date-time-fix': isDateTimeType(), 'width-100': isFileType()}\">\n <nc-data-field-template *ngIf=\"!!getDataField()?.behavior && !getDataField().behavior.hidden\"\n [_additionalFieldProperties]=\"{taskId: getTaskId(), taskContentComponentClassReference}\"\n [dataField]=\"getDataField()\"\n [offset]=\"getFieldOffset()\">\n </nc-data-field-template>\n </div>\n</div>\n", styles: [".line-datagroup{height:1px;background:#0000001f}.margin-default{margin-right:8px;margin-left:8px}.min-row-height{min-height:67px}.phl-row{width:100%;flex-wrap:wrap}.phl-col{height:70px;flex:0 0 90%;background-color:#ced4da;border-radius:8px}.phl-item{width:100%;position:relative;display:flex;flex-wrap:wrap;overflow:hidden;background-color:#fff}.phl-item:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:shimmer 1s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.phl-item,.phl-item *,.phl-item:after,.phl-item:before{box-sizing:border-box}.full-width{display:block;margin:0 auto;width:100%}.width-100{width:100%}.padding-bottom-4px{padding-bottom:4px}.div-overflow{overflow-y:hidden;white-space:nowrap;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.DataFieldTemplateComponent, selector: "nc-data-field-template" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldComponentResolverComponent, decorators: [{ type: Component, args: [{ selector: 'nc-field-component-resolver', template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input\" [ngClass]=\"{'min-row-height': isField() && !isCustomHeight()}\" [ngSwitch]=\"getElementType()\">\n\n <div *ngSwitchCase=\"taskElementEnum.DATA_GROUP_TITLE\" fxFlex fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div fxFlex=\"20\" class=\"line-datagroup\"></div>\n <span [ngClass]=\"{'margin-default': getDataGroupTitle() !== ''}\">{{getDataGroupTitle()}}</span>\n <div fxFlex class=\"line-datagroup\"></div>\n </div>\n\n <div *ngSwitchCase=\"taskElementEnum.LOADER\" class=\"min-row-height\" fxFlex fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div class=\"phl-item\">\n <div class=\"phl-row\" fxLayoutAlign=\"center center\">\n <div class=\"phl-col\">\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"taskElementEnum.BLANK\"></div>\n\n <div *ngSwitchDefault fxFlex [ngClass]=\"{'div-overflow': isEnumOrMulti(), 'date-field-fix': isDateType(), 'date-time-fix': isDateTimeType(), 'width-100': isFileType()}\">\n <nc-data-field-template *ngIf=\"!!getDataField()?.behavior && !getDataField().behavior.hidden\"\n [_additionalFieldProperties]=\"{taskId: getTaskId(), taskContentComponentClassReference}\"\n [dataField]=\"getDataField()\"\n [offset]=\"getFieldOffset()\">\n </nc-data-field-template>\n </div>\n</div>\n", styles: [".line-datagroup{height:1px;background:#0000001f}.margin-default{margin-right:8px;margin-left:8px}.min-row-height{min-height:67px}.phl-row{width:100%;flex-wrap:wrap}.phl-col{height:70px;flex:0 0 90%;background-color:#ced4da;border-radius:8px}.phl-item{width:100%;position:relative;display:flex;flex-wrap:wrap;overflow:hidden;background-color:#fff}.phl-item:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:shimmer 1s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.phl-item,.phl-item *,.phl-item:after,.phl-item:before{box-sizing:border-box}.full-width{display:block;margin:0 auto;width:100%}.width-100{width:100%}.padding-bottom-4px{padding-bottom:4px}.div-overflow{overflow-y:hidden;white-space:nowrap;text-overflow:ellipsis}\n"] }] }], ctorParameters: () => [{ type: i1.TaskContentService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_INFORM_ABOUT_INVALID_DATA] }] }], propDecorators: { taskContentComponentClassReference: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL3Rhc2stY29udGVudC9maWVsZC1jb21wb25lbnQtcmVzb2x2ZXIvZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL3Rhc2stY29udGVudC9maWVsZC1jb21wb25lbnQtcmVzb2x2ZXIvZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUNILHVDQUF1QyxFQUN2QyxTQUFTLEVBQ1QsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsYUFBYSxFQUNiLGdCQUFnQixFQUNoQiw2QkFBNkIsRUFFaEMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQU9sQyxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsdUNBQXVDO0lBRS9FLGtDQUFrQyxDQUFZO0lBRXZELFlBQVksa0JBQXNDLEVBQ2EsdUJBQXVDO1FBQ2xHLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksZ0JBQWdCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLGdCQUFnQixDQUFDO0lBQzlHLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxhQUFhLENBQUM7SUFDcEcsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxhQUFhLENBQUM7SUFDeEQsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLGFBQWEsQ0FBQztJQUNwRyxDQUFDO3dHQXZCUSwrQkFBK0Isb0RBS1IsNkJBQTZCOzRGQUxwRCwrQkFBK0IsZ0xDbEI1QywyL0NBMkJBOzs0RkRUYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0ksNkJBQTZCOzswQkFTMUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7eUNBSHBELGtDQUFrQztzQkFBMUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0RmllbGRDb21wb25lbnRSZXNvbHZlckNvbXBvbmVudCxcbiAgICBEYXRlRmllbGQsXG4gICAgRGF0ZVRpbWVGaWVsZCxcbiAgICBFbnVtZXJhdGlvbkZpZWxkLFxuICAgIEZpbGVGaWVsZCxcbiAgICBGaWxlTGlzdEZpZWxkLFxuICAgIE11bHRpY2hvaWNlRmllbGQsXG4gICAgTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEsXG4gICAgVGFza0NvbnRlbnRTZXJ2aWNlXG59IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtZmllbGQtY29tcG9uZW50LXJlc29sdmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWVsZC1jb21wb25lbnQtcmVzb2x2ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZENvbXBvbmVudFJlc29sdmVyQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZENvbXBvbmVudFJlc29sdmVyQ29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpIHRhc2tDb250ZW50Q29tcG9uZW50Q2xhc3NSZWZlcmVuY2U6IFR5cGU8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHRhc2tDb250ZW50U2VydmljZTogVGFza0NvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEpIF9pbmZvcm1BYm91dEludmFsaWREYXRhOiBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICBzdXBlcih0YXNrQ29udGVudFNlcnZpY2UsIF9pbmZvcm1BYm91dEludmFsaWREYXRhKTtcbiAgICB9XG5cbiAgICBpc0VudW1Pck11bHRpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhRmllbGQoKSBpbnN0YW5jZW9mIEVudW1lcmF0aW9uRmllbGQgfHwgdGhpcy5nZXREYXRhRmllbGQoKSBpbnN0YW5jZW9mIE11bHRpY2hvaWNlRmllbGQ7XG4gICAgfVxuXG4gICAgaXNEYXRlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkKCkgaW5zdGFuY2VvZiBEYXRlRmllbGQgfHwgdGhpcy5nZXREYXRhRmllbGQoKSBpbnN0YW5jZW9mIERhdGVUaW1lRmllbGQ7XG4gICAgfVxuXG4gICAgaXNEYXRlVGltZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGFGaWVsZCgpIGluc3RhbmNlb2YgRGF0ZVRpbWVGaWVsZDtcbiAgICB9XG5cbiAgICBpc0ZpbGVUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhRmllbGQoKSBpbnN0YW5jZW9mIEZpbGVGaWVsZCB8fCB0aGlzLmdldERhdGFGaWVsZCgpIGluc3RhbmNlb2YgRmlsZUxpc3RGaWVsZDtcbiAgICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwibmV0Z3JpZi1pbnB1dFwiIFtuZ0NsYXNzXT1cInsnbWluLXJvdy1oZWlnaHQnOiBpc0ZpZWxkKCkgJiYgIWlzQ3VzdG9tSGVpZ2h0KCl9XCIgW25nU3dpdGNoXT1cImdldEVsZW1lbnRUeXBlKClcIj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInRhc2tFbGVtZW50RW51bS5EQVRBX0dST1VQX1RJVExFXCIgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIyMFwiIGNsYXNzPVwibGluZS1kYXRhZ3JvdXBcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydtYXJnaW4tZGVmYXVsdCc6IGdldERhdGFHcm91cFRpdGxlKCkgIT09ICcnfVwiPnt7Z2V0RGF0YUdyb3VwVGl0bGUoKX19PC9zcGFuPlxuICAgICAgICA8ZGl2IGZ4RmxleCBjbGFzcz1cImxpbmUtZGF0YWdyb3VwXCI+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJ0YXNrRWxlbWVudEVudW0uTE9BREVSXCIgY2xhc3M9XCJtaW4tcm93LWhlaWdodFwiIGZ4RmxleCBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaGwtaXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBobC1yb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaGwtY29sXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJ0YXNrRWxlbWVudEVudW0uQkxBTktcIj48L2Rpdj5cblxuICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdCBmeEZsZXggW25nQ2xhc3NdPVwieydkaXYtb3ZlcmZsb3cnOiBpc0VudW1Pck11bHRpKCksICdkYXRlLWZpZWxkLWZpeCc6IGlzRGF0ZVR5cGUoKSwgJ2RhdGUtdGltZS1maXgnOiBpc0RhdGVUaW1lVHlwZSgpLCAnd2lkdGgtMTAwJzogaXNGaWxlVHlwZSgpfVwiPlxuICAgICAgICA8bmMtZGF0YS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cIiEhZ2V0RGF0YUZpZWxkKCk/LmJlaGF2aW9yICYmICFnZXREYXRhRmllbGQoKS5iZWhhdmlvci5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2FkZGl0aW9uYWxGaWVsZFByb3BlcnRpZXNdPVwie3Rhc2tJZDogZ2V0VGFza0lkKCksIHRhc2tDb250ZW50Q29tcG9uZW50Q2xhc3NSZWZlcmVuY2V9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZF09XCJnZXREYXRhRmllbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZzZXRdPVwiZ2V0RmllbGRPZmZzZXQoKVwiPlxuICAgICAgICA8L25jLWRhdGEtZmllbGQtdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==