verben-workflow-ui 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form-control/form-control.component.mjs +3 -3
- package/esm2022/lib/components/form-group/form-fields/form-fields.component.mjs +17 -14
- package/esm2022/lib/components/form-group/form-group..component.mjs +5 -5
- package/esm2022/lib/components/form-group/helper.mjs +2 -2
- package/esm2022/lib/components/forms/forms.component.mjs +14 -4
- package/esm2022/lib/components/workflow/workflow.component.mjs +1 -1
- package/esm2022/lib/models/FormProperty.mjs +1 -1
- package/fesm2022/verben-workflow-ui.mjs +36 -23
- package/fesm2022/verben-workflow-ui.mjs.map +1 -1
- package/lib/components/form-group/form-group..component.d.ts +0 -1
- package/lib/components/workflow/workflow.component.d.ts +1 -1
- package/lib/models/FormProperty.d.ts +1 -1
- package/package.json +2 -2
|
@@ -26,11 +26,11 @@ export class FormControlComponent {
|
|
|
26
26
|
property.Value = files.length > 1 ? Array.from(files) : files[0];
|
|
27
27
|
}
|
|
28
28
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormControlComponent, selector: "form-control", inputs: { dataType: "dataType", value: "value", boolInputType: "boolInputType", formProperties: "formProperties" }, ngImport: i0, template: "<div *ngFor=\"let property of formProperties\">\n
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormControlComponent, selector: "form-control", inputs: { dataType: "dataType", value: "value", boolInputType: "boolInputType", formProperties: "formProperties" }, ngImport: i0, template: "<div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n\n <!-- Text input for String and URL -->\n <verbena-input *ngSwitchCase=\"'String'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'URL'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'url'\"\n [placeHolder]=\"'Enter URL'\"></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input *ngSwitchCase=\"'Int'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\" [max]=\"property.MaxValue\" [min]=\"property.MinValue\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'Decimal'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'Float'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter float value'\"></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'Bool'\">\n <label [htmlFor]=\"property.Id\" class=\"block mb-2\">{{property.Name}}</label>\n <verbena-switch [label]=\"property.Name\" [(ngModel)]=\"property.Value\"></verbena-switch>\n </ng-container>\n\n <!-- File selection for Video, Audio -->\n <div *ngSwitchCase=\"'Video'\">\n <file-upload [label]=\"property.Name\" [accept]=\"'video/*'\" [multiple]=\"false\"\n [label]=\"property.Name\"></file-upload>\n </div>\n\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload [label]=\"property.Name\" [accept]=\"'audio/*'\" [multiple]=\"false\"\n [label]=\"property.Name\"></file-upload>\n\n </div>\n\n <!-- Single and Multi file selection -->\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload [multiple]=\"false\" [label]=\"property.Name\"></file-upload>\n </div>\n\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload [multiple]=\"true\" [label]=\"property.Name\"></file-upload>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>\n Unsupported data type: {{ property.DataType }}\n </div>\n\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.VerbenaSwitchComponent, selector: "verbena-switch", inputs: ["label", "checked", "disabled", "offColor", "onColor", "onText", "offText", "width", "height", "customStyles"], outputs: ["change"] }, { kind: "component", type: i3.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "fontSize", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.FileUploadComponent, selector: "file-upload", inputs: ["multiple", "label", "accept", "selectedFiles"], outputs: ["selectedFilesChange"] }] });
|
|
30
30
|
}
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlComponent, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
|
-
args: [{ selector: 'form-control', template: "<div *ngFor=\"let property of formProperties\">\n
|
|
33
|
+
args: [{ selector: 'form-control', template: "<div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n\n <!-- Text input for String and URL -->\n <verbena-input *ngSwitchCase=\"'String'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'URL'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'url'\"\n [placeHolder]=\"'Enter URL'\"></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input *ngSwitchCase=\"'Int'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\" [max]=\"property.MaxValue\" [min]=\"property.MinValue\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'Decimal'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"></verbena-input>\n <verbena-input *ngSwitchCase=\"'Float'\" [label]=\"property.Name\" [(ngModel)]=\"property.Value\" [type]=\"'text'\"\n [placeHolder]=\"'Enter float value'\"></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'Bool'\">\n <label [htmlFor]=\"property.Id\" class=\"block mb-2\">{{property.Name}}</label>\n <verbena-switch [label]=\"property.Name\" [(ngModel)]=\"property.Value\"></verbena-switch>\n </ng-container>\n\n <!-- File selection for Video, Audio -->\n <div *ngSwitchCase=\"'Video'\">\n <file-upload [label]=\"property.Name\" [accept]=\"'video/*'\" [multiple]=\"false\"\n [label]=\"property.Name\"></file-upload>\n </div>\n\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload [label]=\"property.Name\" [accept]=\"'audio/*'\" [multiple]=\"false\"\n [label]=\"property.Name\"></file-upload>\n\n </div>\n\n <!-- Single and Multi file selection -->\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload [multiple]=\"false\" [label]=\"property.Name\"></file-upload>\n </div>\n\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload [multiple]=\"true\" [label]=\"property.Name\"></file-upload>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>\n Unsupported data type: {{ property.DataType }}\n </div>\n\n </ng-container>\n</div>\n" }]
|
|
34
34
|
}], propDecorators: { dataType: [{
|
|
35
35
|
type: Input
|
|
36
36
|
}], value: [{
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40
40
|
}], formProperties: [{
|
|
41
41
|
type: Input
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFXakQsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixRQUFRLENBQVk7SUFDcEIsS0FBSyxHQUFRLEVBQUUsQ0FBQztJQUNoQixhQUFhLEdBQWtCLFVBQVUsQ0FBQztJQUMxQyxjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUM3QyxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVUsRUFBRSxRQUFzQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQzt3R0FuQlUsb0JBQW9COzRGQUFwQixvQkFBb0Isd0tDYmpDLG16RUFtREE7OzRGRHRDYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsY0FBYzs4QkFLZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Qcm9wZXJ0eSB9IGZyb20gJy4uLy4uL21vZGVscy9Gb3JtUHJvcGVydHknO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvRGF0YVR5cGUnO1xuXG5cblxuZXhwb3J0IHR5cGUgQm9vbElucHV0VHlwZSA9ICdzd2l0Y2gnIHwgJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YVR5cGUhOiBEYXRhVHlwZTtcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9ICcnO1xuICBASW5wdXQoKSBib29sSW5wdXRUeXBlOiBCb29sSW5wdXRUeXBlID0gJ2NoZWNrYm94JztcbiAgQElucHV0KCkgZm9ybVByb3BlcnRpZXM6IEZvcm1Qcm9wZXJ0eVtdID0gW107XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURlZmF1bHRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5kYXRhVHlwZSA9PT0gRGF0YVR5cGUuQm9vbCAmJiB0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cbiAgb25GaWxlU2VsZWN0KGV2ZW50OiBhbnksIHByb3BlcnR5OiBGb3JtUHJvcGVydHkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICBwcm9wZXJ0eS5WYWx1ZSA9IGZpbGVzLmxlbmd0aCA+IDEgPyBBcnJheS5mcm9tKGZpbGVzKSA6IGZpbGVzWzBdO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBmb3JtUHJvcGVydGllc1wiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5EYXRhVHlwZVwiPlxuXG4gICAgPCEtLSBUZXh0IGlucHV0IGZvciBTdHJpbmcgYW5kIFVSTCAtLT5cbiAgICA8dmVyYmVuYS1pbnB1dCAqbmdTd2l0Y2hDYXNlPVwiJ1N0cmluZydcIiBbbGFiZWxdPVwicHJvcGVydHkuTmFtZVwiIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIiBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbnRlciB0ZXh0J1wiPjwvdmVyYmVuYS1pbnB1dD5cbiAgICA8dmVyYmVuYS1pbnB1dCAqbmdTd2l0Y2hDYXNlPVwiJ1VSTCdcIiBbbGFiZWxdPVwicHJvcGVydHkuTmFtZVwiIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIiBbdHlwZV09XCIndXJsJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VudGVyIFVSTCdcIj48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8IS0tIE51bWVyaWMgaW5wdXRzIC0tPlxuICAgIDx2ZXJiZW5hLWlucHV0ICpuZ1N3aXRjaENhc2U9XCInSW50J1wiIFtsYWJlbF09XCJwcm9wZXJ0eS5OYW1lXCIgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgYW4gaW50ZWdlcidcIiBbbWF4XT1cInByb3BlcnR5Lk1heFZhbHVlXCIgW21pbl09XCJwcm9wZXJ0eS5NaW5WYWx1ZVwiPjwvdmVyYmVuYS1pbnB1dD5cbiAgICA8dmVyYmVuYS1pbnB1dCAqbmdTd2l0Y2hDYXNlPVwiJ0RlY2ltYWwnXCIgW2xhYmVsXT1cInByb3BlcnR5Lk5hbWVcIiBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCIgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgZGVjaW1hbCB2YWx1ZSdcIj48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgPHZlcmJlbmEtaW5wdXQgKm5nU3dpdGNoQ2FzZT1cIidGbG9hdCdcIiBbbGFiZWxdPVwicHJvcGVydHkuTmFtZVwiIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIiBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbnRlciBmbG9hdCB2YWx1ZSdcIj48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8IS0tIEJvb2xlYW4gaW5wdXQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0Jvb2wnXCI+XG4gICAgICA8bGFiZWwgW2h0bWxGb3JdPVwicHJvcGVydHkuSWRcIiBjbGFzcz1cImJsb2NrIG1iLTJcIj57e3Byb3BlcnR5Lk5hbWV9fTwvbGFiZWw+XG4gICAgICA8dmVyYmVuYS1zd2l0Y2ggW2xhYmVsXT1cInByb3BlcnR5Lk5hbWVcIiBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCI+PC92ZXJiZW5hLXN3aXRjaD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmlsZSBzZWxlY3Rpb24gZm9yIFZpZGVvLCBBdWRpbyAtLT5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInVmlkZW8nXCI+XG4gICAgICA8ZmlsZS11cGxvYWQgW2xhYmVsXT1cInByb3BlcnR5Lk5hbWVcIiBbYWNjZXB0XT1cIid2aWRlby8qJ1wiIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgIFtsYWJlbF09XCJwcm9wZXJ0eS5OYW1lXCI+PC9maWxlLXVwbG9hZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBdWRpbydcIj5cbiAgICAgIDxmaWxlLXVwbG9hZCBbbGFiZWxdPVwicHJvcGVydHkuTmFtZVwiIFthY2NlcHRdPVwiJ2F1ZGlvLyonXCIgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgW2xhYmVsXT1cInByb3BlcnR5Lk5hbWVcIj48L2ZpbGUtdXBsb2FkPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNpbmdsZSBhbmQgTXVsdGkgZmlsZSBzZWxlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1NpbmdsZUZpbGVTZWxlY3Rpb24nXCI+XG4gICAgICA8ZmlsZS11cGxvYWQgW211bHRpcGxlXT1cImZhbHNlXCIgW2xhYmVsXT1cInByb3BlcnR5Lk5hbWVcIj48L2ZpbGUtdXBsb2FkPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ011bHRpRmlsZVNlbGVjdGlvbidcIj5cbiAgICAgIDxmaWxlLXVwbG9hZCBbbXVsdGlwbGVdPVwidHJ1ZVwiIFtsYWJlbF09XCJwcm9wZXJ0eS5OYW1lXCI+PC9maWxlLXVwbG9hZD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRmFsbGJhY2sgZm9yIHVuc3VwcG9ydGVkIHR5cGVzIC0tPlxuICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIFVuc3VwcG9ydGVkIGRhdGEgdHlwZToge3sgcHJvcGVydHkuRGF0YVR5cGUgfX1cbiAgICA8L2Rpdj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|