UNPKG

mss-engine-forms

Version:

A simple typehead library developed by MSS development team to be used for dynamic forms

30 lines 16.3 kB
import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@angular/common"; import * as i3 from "@ng-bootstrap/ng-bootstrap"; export class DynamicTextareaComponent { constructor(formgroupDirective) { this.formgroupDirective = formgroupDirective; this.tempType = ""; this.formName = formgroupDirective.control; } ngOnChanges() { console.log({ DynamicInputComponentField: this.field }); this.tempType = this.field.type; } getFieldClassname() { return { [this.field.customClass]: this.field?.customClass }; } } DynamicTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicTextareaComponent, deps: [{ token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component }); DynamicTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicTextareaComponent, selector: "app-dynamic-textarea", inputs: { field: "field" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formName\">\n <div class=\"form-group\" [ngClass]=\"getFieldClassname()\">\n <label>{{field.label}} <span *ngIf=\"field?.rules?.required\" class=\"red-asterisk\">*</span>\n <button *ngIf=\"field.is_info\" class=\"mss-label-info\" placement=\"top\" [ngbTooltip]=\"field.info_txt\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_617_5380)\">\n <path\n d=\"M8 0C6.41775 0 4.87104 0.469192 3.55544 1.34824C2.23985 2.22729 1.21447 3.47672 0.608967 4.93853C0.00346629 6.40034 -0.15496 8.00887 0.153721 9.56072C0.462403 11.1126 1.22433 12.538 2.34315 13.6569C3.46197 14.7757 4.88743 15.5376 6.43928 15.8463C7.99113 16.155 9.59966 15.9965 11.0615 15.391C12.5233 14.7855 13.7727 13.7602 14.6518 12.4446C15.5308 11.129 16 9.58225 16 8C15.9977 5.87897 15.1541 3.84547 13.6543 2.34568C12.1545 0.845886 10.121 0.00229405 8 0V0ZM8 14.6667C6.68146 14.6667 5.39253 14.2757 4.2962 13.5431C3.19987 12.8106 2.34539 11.7694 1.84081 10.5512C1.33622 9.33305 1.2042 7.99261 1.46144 6.6994C1.71867 5.40619 2.35361 4.21831 3.28596 3.28596C4.21831 2.35361 5.4062 1.71867 6.6994 1.46143C7.99261 1.2042 9.33305 1.33622 10.5512 1.8408C11.7694 2.34539 12.8106 3.19987 13.5431 4.2962C14.2757 5.39253 14.6667 6.68146 14.6667 8C14.6647 9.76752 13.9617 11.4621 12.7119 12.7119C11.4621 13.9617 9.76752 14.6647 8 14.6667Z\"\n fill=\"#0B487F\" />\n <path\n d=\"M7.99983 6.66699H7.33317C7.15636 6.66699 6.98679 6.73723 6.86177 6.86225C6.73674 6.98728 6.6665 7.15685 6.6665 7.33366C6.6665 7.51047 6.73674 7.68004 6.86177 7.80506C6.98679 7.93009 7.15636 8.00033 7.33317 8.00033H7.99983V12.0003C7.99983 12.1771 8.07007 12.3467 8.1951 12.4717C8.32012 12.5968 8.48969 12.667 8.6665 12.667C8.84331 12.667 9.01288 12.5968 9.1379 12.4717C9.26293 12.3467 9.33317 12.1771 9.33317 12.0003V8.00033C9.33317 7.6467 9.19269 7.30757 8.94264 7.05752C8.69259 6.80747 8.35346 6.66699 7.99983 6.66699Z\"\n fill=\"#0B487F\" />\n <path\n d=\"M8 5.33301C8.55228 5.33301 9 4.88529 9 4.33301C9 3.78072 8.55228 3.33301 8 3.33301C7.44772 3.33301 7 3.78072 7 4.33301C7 4.88529 7.44772 5.33301 8 5.33301Z\"\n fill=\"#0B487F\" />\n </g>\n <defs>\n <clipPath id=\"clip0_617_5380\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </button> </label>\n <textarea name=\"field.fieldName\" [formControlName]=\"field.fieldName\"\n [ngClass]=\"{'is-invalid':formName.controls[field.fieldName]?.invalid && (formName.controls[field.fieldName]?.dirty || formName.controls[field.fieldName]?.touched)}\"\n [placeholder]=\"field.placeholder ? field.placeholder : ''\"></textarea>\n </div>\n</form>", styles: [".password-eye{position:absolute}\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: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicTextareaComponent, decorators: [{ type: Component, args: [{ selector: "app-dynamic-textarea", changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"formName\">\n <div class=\"form-group\" [ngClass]=\"getFieldClassname()\">\n <label>{{field.label}} <span *ngIf=\"field?.rules?.required\" class=\"red-asterisk\">*</span>\n <button *ngIf=\"field.is_info\" class=\"mss-label-info\" placement=\"top\" [ngbTooltip]=\"field.info_txt\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_617_5380)\">\n <path\n d=\"M8 0C6.41775 0 4.87104 0.469192 3.55544 1.34824C2.23985 2.22729 1.21447 3.47672 0.608967 4.93853C0.00346629 6.40034 -0.15496 8.00887 0.153721 9.56072C0.462403 11.1126 1.22433 12.538 2.34315 13.6569C3.46197 14.7757 4.88743 15.5376 6.43928 15.8463C7.99113 16.155 9.59966 15.9965 11.0615 15.391C12.5233 14.7855 13.7727 13.7602 14.6518 12.4446C15.5308 11.129 16 9.58225 16 8C15.9977 5.87897 15.1541 3.84547 13.6543 2.34568C12.1545 0.845886 10.121 0.00229405 8 0V0ZM8 14.6667C6.68146 14.6667 5.39253 14.2757 4.2962 13.5431C3.19987 12.8106 2.34539 11.7694 1.84081 10.5512C1.33622 9.33305 1.2042 7.99261 1.46144 6.6994C1.71867 5.40619 2.35361 4.21831 3.28596 3.28596C4.21831 2.35361 5.4062 1.71867 6.6994 1.46143C7.99261 1.2042 9.33305 1.33622 10.5512 1.8408C11.7694 2.34539 12.8106 3.19987 13.5431 4.2962C14.2757 5.39253 14.6667 6.68146 14.6667 8C14.6647 9.76752 13.9617 11.4621 12.7119 12.7119C11.4621 13.9617 9.76752 14.6647 8 14.6667Z\"\n fill=\"#0B487F\" />\n <path\n d=\"M7.99983 6.66699H7.33317C7.15636 6.66699 6.98679 6.73723 6.86177 6.86225C6.73674 6.98728 6.6665 7.15685 6.6665 7.33366C6.6665 7.51047 6.73674 7.68004 6.86177 7.80506C6.98679 7.93009 7.15636 8.00033 7.33317 8.00033H7.99983V12.0003C7.99983 12.1771 8.07007 12.3467 8.1951 12.4717C8.32012 12.5968 8.48969 12.667 8.6665 12.667C8.84331 12.667 9.01288 12.5968 9.1379 12.4717C9.26293 12.3467 9.33317 12.1771 9.33317 12.0003V8.00033C9.33317 7.6467 9.19269 7.30757 8.94264 7.05752C8.69259 6.80747 8.35346 6.66699 7.99983 6.66699Z\"\n fill=\"#0B487F\" />\n <path\n d=\"M8 5.33301C8.55228 5.33301 9 4.88529 9 4.33301C9 3.78072 8.55228 3.33301 8 3.33301C7.44772 3.33301 7 3.78072 7 4.33301C7 4.88529 7.44772 5.33301 8 5.33301Z\"\n fill=\"#0B487F\" />\n </g>\n <defs>\n <clipPath id=\"clip0_617_5380\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </button> </label>\n <textarea name=\"field.fieldName\" [formControlName]=\"field.fieldName\"\n [ngClass]=\"{'is-invalid':formName.controls[field.fieldName]?.invalid && (formName.controls[field.fieldName]?.dirty || formName.controls[field.fieldName]?.touched)}\"\n [placeholder]=\"field.placeholder ? field.placeholder : ''\"></textarea>\n </div>\n</form>", styles: [".password-eye{position:absolute}\n"] }] }], ctorParameters: function () { return [{ type: i1.FormGroupDirective }]; }, propDecorators: { field: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3MtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmllbGQvZHluYW1pYy10ZXh0YXJlYS9keW5hbWljLXRleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zcy1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZC9keW5hbWljLXRleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7OztBQVM1RyxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRDFELGFBQVEsR0FBVyxFQUFFLENBQUE7UUFFbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUMsMEJBQTBCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtJQUNqQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTztZQUNMLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7U0FDbEQsQ0FBQTtJQUNILENBQUM7O3NIQWpCVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qiw2R0NUckMsc2tHQTJCTzs0RkRsQk0sd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTt5R0FHckMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtZHluYW1pYy10ZXh0YXJlYVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50LmNzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOkNoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBmaWVsZDogYW55O1xuICBmb3JtTmFtZTogRm9ybUdyb3VwO1xuICB0ZW1wVHlwZTogc3RyaW5nID0gXCJcIlxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1ncm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5mb3JtTmFtZSA9IGZvcm1ncm91cERpcmVjdGl2ZS5jb250cm9sO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coe0R5bmFtaWNJbnB1dENvbXBvbmVudEZpZWxkOnRoaXMuZmllbGR9KVxuICAgIHRoaXMudGVtcFR5cGUgPSB0aGlzLmZpZWxkLnR5cGVcbiAgfVxuXG4gIGdldEZpZWxkQ2xhc3NuYW1lKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5maWVsZC5jdXN0b21DbGFzc106IHRoaXMuZmllbGQ/LmN1c3RvbUNsYXNzXG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1OYW1lXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJnZXRGaWVsZENsYXNzbmFtZSgpXCI+XG4gICAgICAgIDxsYWJlbD57e2ZpZWxkLmxhYmVsfX0gPHNwYW4gKm5nSWY9XCJmaWVsZD8ucnVsZXM/LnJlcXVpcmVkXCIgY2xhc3M9XCJyZWQtYXN0ZXJpc2tcIj4qPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZpZWxkLmlzX2luZm9cIiBjbGFzcz1cIm1zcy1sYWJlbC1pbmZvXCIgcGxhY2VtZW50PVwidG9wXCIgW25nYlRvb2x0aXBdPVwiZmllbGQuaW5mb190eHRcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82MTdfNTM4MClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04IDBDNi40MTc3NSAwIDQuODcxMDQgMC40NjkxOTIgMy41NTU0NCAxLjM0ODI0QzIuMjM5ODUgMi4yMjcyOSAxLjIxNDQ3IDMuNDc2NzIgMC42MDg5NjcgNC45Mzg1M0MwLjAwMzQ2NjI5IDYuNDAwMzQgLTAuMTU0OTYgOC4wMDg4NyAwLjE1MzcyMSA5LjU2MDcyQzAuNDYyNDAzIDExLjExMjYgMS4yMjQzMyAxMi41MzggMi4zNDMxNSAxMy42NTY5QzMuNDYxOTcgMTQuNzc1NyA0Ljg4NzQzIDE1LjUzNzYgNi40MzkyOCAxNS44NDYzQzcuOTkxMTMgMTYuMTU1IDkuNTk5NjYgMTUuOTk2NSAxMS4wNjE1IDE1LjM5MUMxMi41MjMzIDE0Ljc4NTUgMTMuNzcyNyAxMy43NjAyIDE0LjY1MTggMTIuNDQ0NkMxNS41MzA4IDExLjEyOSAxNiA5LjU4MjI1IDE2IDhDMTUuOTk3NyA1Ljg3ODk3IDE1LjE1NDEgMy44NDU0NyAxMy42NTQzIDIuMzQ1NjhDMTIuMTU0NSAwLjg0NTg4NiAxMC4xMjEgMC4wMDIyOTQwNSA4IDBWMFpNOCAxNC42NjY3QzYuNjgxNDYgMTQuNjY2NyA1LjM5MjUzIDE0LjI3NTcgNC4yOTYyIDEzLjU0MzFDMy4xOTk4NyAxMi44MTA2IDIuMzQ1MzkgMTEuNzY5NCAxLjg0MDgxIDEwLjU1MTJDMS4zMzYyMiA5LjMzMzA1IDEuMjA0MiA3Ljk5MjYxIDEuNDYxNDQgNi42OTk0QzEuNzE4NjcgNS40MDYxOSAyLjM1MzYxIDQuMjE4MzEgMy4yODU5NiAzLjI4NTk2QzQuMjE4MzEgMi4zNTM2MSA1LjQwNjIgMS43MTg2NyA2LjY5OTQgMS40NjE0M0M3Ljk5MjYxIDEuMjA0MiA5LjMzMzA1IDEuMzM2MjIgMTAuNTUxMiAxLjg0MDhDMTEuNzY5NCAyLjM0NTM5IDEyLjgxMDYgMy4xOTk4NyAxMy41NDMxIDQuMjk2MkMxNC4yNzU3IDUuMzkyNTMgMTQuNjY2NyA2LjY4MTQ2IDE0LjY2NjcgOEMxNC42NjQ3IDkuNzY3NTIgMTMuOTYxNyAxMS40NjIxIDEyLjcxMTkgMTIuNzExOUMxMS40NjIxIDEzLjk2MTcgOS43Njc1MiAxNC42NjQ3IDggMTQuNjY2N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMEI0ODdGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03Ljk5OTgzIDYuNjY2OTlINy4zMzMxN0M3LjE1NjM2IDYuNjY2OTkgNi45ODY3OSA2LjczNzIzIDYuODYxNzcgNi44NjIyNUM2LjczNjc0IDYuOTg3MjggNi42NjY1IDcuMTU2ODUgNi42NjY1IDcuMzMzNjZDNi42NjY1IDcuNTEwNDcgNi43MzY3NCA3LjY4MDA0IDYuODYxNzcgNy44MDUwNkM2Ljk4Njc5IDcuOTMwMDkgNy4xNTYzNiA4LjAwMDMzIDcuMzMzMTcgOC4wMDAzM0g3Ljk5OTgzVjEyLjAwMDNDNy45OTk4MyAxMi4xNzcxIDguMDcwMDcgMTIuMzQ2NyA4LjE5NTEgMTIuNDcxN0M4LjMyMDEyIDEyLjU5NjggOC40ODk2OSAxMi42NjcgOC42NjY1IDEyLjY2N0M4Ljg0MzMxIDEyLjY2NyA5LjAxMjg4IDEyLjU5NjggOS4xMzc5IDEyLjQ3MTdDOS4yNjI5MyAxMi4zNDY3IDkuMzMzMTcgMTIuMTc3MSA5LjMzMzE3IDEyLjAwMDNWOC4wMDAzM0M5LjMzMzE3IDcuNjQ2NyA5LjE5MjY5IDcuMzA3NTcgOC45NDI2NCA3LjA1NzUyQzguNjkyNTkgNi44MDc0NyA4LjM1MzQ2IDYuNjY2OTkgNy45OTk4MyA2LjY2Njk5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwQjQ4N0ZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTggNS4zMzMwMUM4LjU1MjI4IDUuMzMzMDEgOSA0Ljg4NTI5IDkgNC4zMzMwMUM5IDMuNzgwNzIgOC41NTIyOCAzLjMzMzAxIDggMy4zMzMwMUM3LjQ0NzcyIDMuMzMzMDEgNyAzLjc4MDcyIDcgNC4zMzMwMUM3IDQuODg1MjkgNy40NDc3MiA1LjMzMzAxIDggNS4zMzMwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMEI0ODdGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzYxN181MzgwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPiA8L2xhYmVsPlxuICAgICAgICA8dGV4dGFyZWEgbmFtZT1cImZpZWxkLmZpZWxkTmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQuZmllbGROYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6Zm9ybU5hbWUuY29udHJvbHNbZmllbGQuZmllbGROYW1lXT8uaW52YWxpZCAmJiAoZm9ybU5hbWUuY29udHJvbHNbZmllbGQuZmllbGROYW1lXT8uZGlydHkgfHwgZm9ybU5hbWUuY29udHJvbHNbZmllbGQuZmllbGROYW1lXT8udG91Y2hlZCl9XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IGZpZWxkLnBsYWNlaG9sZGVyIDogJydcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuPC9mb3JtPiJdfQ==