fx-form-builder-wrapper 0.0.63 → 0.0.65
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.
|
@@ -30,10 +30,14 @@ export class ConfigurationPanelComponent {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
ngOnChanges(changes) {
|
|
33
|
-
console.log("insideconfigpane;", this.tableConfigData);
|
|
34
33
|
}
|
|
35
34
|
ngOnInit() {
|
|
36
|
-
this.
|
|
35
|
+
if (this.tableConfigData && Array.isArray(this.tableConfigData) && this.tableConfigData.length > 0) {
|
|
36
|
+
this.patchData(); // If data exists, patch it into the form
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.addColumn(); // Otherwise, add a default column
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
get columns() {
|
|
39
43
|
return this.dynamicForm.get('columns');
|
|
@@ -106,6 +110,26 @@ export class ConfigurationPanelComponent {
|
|
|
106
110
|
onSubmit() {
|
|
107
111
|
console.log("Value columns formArray", this.dynamicForm.value);
|
|
108
112
|
}
|
|
113
|
+
patchData() {
|
|
114
|
+
this.tableConfigData.columns.forEach((column) => {
|
|
115
|
+
// Creating the FormGroup for each column
|
|
116
|
+
const columnFormGroup = this.fb.group({
|
|
117
|
+
header: [column.header || '', Validators.required],
|
|
118
|
+
cellType: [column.cellType || '', Validators.required],
|
|
119
|
+
placeholder: [column.placeholder || ''],
|
|
120
|
+
options: this.fb.array(column.options ? column.options.map((option) => this.fb.group({
|
|
121
|
+
optionName: [option.optionName, Validators.required],
|
|
122
|
+
optionValue: [option.optionValue, Validators.required]
|
|
123
|
+
})) : []),
|
|
124
|
+
apiUrl: [column.apiUrl || ''],
|
|
125
|
+
valueKey: [column.valueKey || ''],
|
|
126
|
+
labelKey: [column.labelKey || ''],
|
|
127
|
+
className: [column.className || ''],
|
|
128
|
+
apiKey: [column.apiKey || '']
|
|
129
|
+
});
|
|
130
|
+
this.columns.push(columnFormGroup);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
109
133
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationPanelComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
134
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ConfigurationPanelComponent, isStandalone: true, selector: "fx-configuration-panel", inputs: { visible: "visible", configs: "configs", tableConfigData: "tableConfigData" }, outputs: { isVisible: "isVisible", configuration: "configuration" }, usesOnChanges: true, ngImport: i0, template: "<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\" (onHide)=\"closeDialog()\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n \u2795\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n \u274C\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".p-overflow-hidden{overflow:hidden;padding-right:var(--scrollbar-width)}@layer primeng{.p-component,.p-component *{box-sizing:border-box}.p-hidden{display:none}.p-hidden-space{visibility:hidden}.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0)}.p-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.p-disabled,.p-disabled *{cursor:default!important;pointer-events:none}.p-component-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.p-unselectable-text{-webkit-user-select:none;user-select:none}.p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}@-webkit-keyframes p-fadein{0%{opacity:0}to{opacity:1}}@keyframes p-fadein{0%{opacity:0}to{opacity:1}}input[type=button],input[type=submit],input[type=reset],input[type=file]::-webkit-file-upload-button,button{border-radius:0}.p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:0;cursor:pointer;-webkit-user-select:none;user-select:none}.p-link:disabled{cursor:default}.p-sr-only{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.p-connected-overlay{opacity:0;transform:scaleY(.8);transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1)}.p-connected-overlay-visible{opacity:1;transform:scaleY(1)}.p-connected-overlay-hidden{opacity:0;transform:scaleY(1);transition:opacity .1s linear}.p-toggleable-content.ng-animating{overflow:hidden}.p-icon-wrapper{display:inline-flex}.p-icon{display:inline-block}.p-icon-spin{-webkit-animation:p-icon-spin 2s infinite linear;animation:p-icon-spin 2s infinite linear}}@-webkit-keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-button-group .p-button{margin:0}.p-button-group .p-button:focus,.p-button-group p-button:focus .p-button,.p-buttonset .p-button:focus,.p-buttonset p-button:focus .p-button{position:relative;z-index:1}.p-button-group .p-button:not(:last-child),.p-button-group .p-button:not(:last-child):hover,.p-button-group p-button:not(:last-child) .p-button,.p-button-group p-button:not(:last-child) .p-button:hover,.p-buttonset .p-button:not(:last-child),.p-buttonset .p-button:not(:last-child):hover,.p-buttonset p-button:not(:last-child) .p-button,.p-buttonset p-button:not(:last-child) .p-button:hover{border-right:0 none}.p-button-group .p-button:not(:first-of-type):not(:last-of-type),.p-button-group p-button:not(:first-of-type):not(:last-of-type) .p-button,.p-buttonset .p-button:not(:first-of-type):not(:last-of-type),.p-buttonset p-button:not(:first-of-type):not(:last-of-type) .p-button{border-radius:0}.p-button-group .p-button:first-of-type:not(:only-of-type),.p-button-group p-button:first-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:first-of-type:not(:only-of-type),.p-buttonset p-button:first-of-type:not(:only-of-type) .p-button{border-top-right-radius:0;border-bottom-right-radius:0}.p-button-group .p-button:last-of-type:not(:only-of-type),.p-button-group p-button:last-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:last-of-type:not(:only-of-type),.p-buttonset p-button:last-of-type:not(:only-of-type) .p-button{border-top-left-radius:0;border-bottom-left-radius:0}p-button[iconpos=right] spinnericon{order:1}}@layer primeng{.p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}}.p-colorpicker-panel .p-colorpicker-color{background:transparent url('data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\\fffd\\0\\0\\0\\fffd\b\u0006\\0\\0\\0<\u0001q\\fffd\\0\\0\\0%09pHYs\\0\\0\v\u0013\\0\\0\v\u0013\u0001\\0\\fffd\\fffd\u0018\\0\\0\\0 cHRM\\0\\0z-\\0\\0\\fffd\\fffd\\0\\0\\fffd\\fffd\\0\\0\\fffdR\\0\\0qE\\0\\0\\fffd f\\0\\0 9\u0007\\0\\0!\\fffd\u0003\\'\\fffdV\\0\\0\\'\\fffdIDATx\\fffd\\fffd}\\2ce\\fffdH\\fffd\\fffd\u001A\\'\\fffd\\fffd\u001E\\fffdO\\fffd;\\fffd\u000F\\fffd 8\\fffdn\\fffd\\fffd]\\755Y\\fffd\\fffd\u000F\\fffd=\u0014\\fffd%\u0014\\fffd\\fffd\\fffd\\fffdG\\fffd\u0002\\fffd%09 \u0010\\fffdN:\\fffd\\fffd(T\u0011\u0015U36w\\fffd/3\\fffd\\fffd f\\fffd 03\\fffd\\fffd\\fffd\u001B=\\fffd\\fffd\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd 6w/\\fffdW=\\fffdx\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\1e2\\fffd\\fffd\\c?\\fffd\\fffd\\fffd\\fffd\\fffdw\u001C\\fffd\\fffdZ\\fffd\\fffd\\77d\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\77f}\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\fffd cf\\fffdk\u0007\\fffd\\fffdy\u0016O\\fffdl@\" \\fffdN\\533z\\fffd\\fffd\\f203\\fffd\\fffd 1\u0012\\fffd\\fffd\\fffd\\0\u0010\\fffd\u0018\\fffd\\fffd\\fffdyvq\\fffd\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\7fad\\fffd\\fffd\\6ce\\fffd\u0006\\fffd\\fffdx<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001F\u001F\u001F\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd_\\fffd\\fffdW\\fffd\\fffd{\\fffdz|\\fffdI\\fffd\\640\\fffds\\fffd^<\\fffd\\fffd/\\\\\\fffdo\\fffd\\fffd\\fffdN?\\fffdo23\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 9?v<\\fffd\\fffd\\fffd\\fffdo\\fffd\\fffdv\u0010\\fffd\\5cf}v\\fffdl;\\fffd\\fffdk\\fffd|>\\fffd\\fffd|\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffdn7\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd d\\7fe}\\fffd/\\fffd\u000F\\fffd~h\\fffd ffm\\fffd\\1035\\fffdV\\fffd\\fffd\\fffd\\7381%0D\u001E\\fffd\u0006=\\fffd\\fffd\\fffd*\\fffd}\\fffd\\\\<\\fffd\\fffd\\fffdm\u0007>\\fffd\\fffd\u0005\\fffd\u0018\u001C\v\\fffdy\\fffdG\\fffd 7\\0\\fffd F\\0r\\0V\u001B@\\fffd\\fffdt\\fffd\\fffd\\fffd\\fffd\\fffd|Z\\ff4d\\fffd\\fffd\\1e3=\u001E\\fffd\\fffd~\\fffd\\fffd\\fffdv\\cf3cf\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffd[\\fffd\\fffd\\fffd_\\fffd?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffdx<\\697\\fffd\\fffd\\289\\fffd\\fffd\u0015\\fffd\u0004\\'o%0A\u0010\\fffdl\\fffd\\fffdr\u0002\\fffd\\0\\fffd\\fffd D\\fffd\\58e\u0013\\fffd\u0017B\\fffdY\\c\u0012\\fffd\u0001\\fffd\\fffd\\fffd\\fffd\\fffd 6xlj\\fffd\\fffd[km\\fffd[k\\fffd\\fffd[\\fffd=\u0004\u0016E\\fffd%23R\\fffd\\fffd\u0007\\fffd\\fffds~\u0002\\448R;\\fffd|\\fffdP}\\fffd\\6de\\fffdg\\fffd\\fffd\\fffd\\fffdn;\u0005\\fffd\\5ef_\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd/\\fffd\\fffd\\5ef_\\fffd\\fffd|\\fffd\u0014X00)\\fffd\\fffd\u0011&\u0004g!\\fffd\\fffd\\'^\\0I\\fffdM\u0015\\fffd a$%0A\\fffd\\fffd\u0001\\fffd\\fffd\\fffd FA\\fffd 9\\fffd\\fffd\\fffd A\\fffd 0\\fffd\\fffd c\\fffd\u0011\\fffdN\\fffd 6\\fffd\\fffd\u0007\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd{\\fffd\\fffd`rw{<\u001E\u0003X\\fffd|>}\\0\\fffdv\\fffd\\fffd\\fffd\\fffd f\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdo\\fffd\u001D\\fffd\\fffd\\fffd\\fffd_\\fffd\\fffd\\5ef\\fffd\\fffdo\\fffdY\\fffd}%0A\\fffd\\fffd\\fffd\"m\\fffd\"[\\fffd\\fffd\\1a0\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd\\fffd DT\\fffd\\fffd.\u0003V\\fffdx\u0003$\\fffd\\fffd\\fffd.`\"\\fffd 4\\0\\519\\fffd\\fffdl\\fffd\u0019\u0002\\fffd 0B\\fffd\\fffd\\fffd\\7fe\\fffd 6\u0004\\fffd\\fffd{?\"\u0016\u0002\v5\\fffd\\fffd~\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffdG\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdv\\fffd\\fffd\u000E\\fffd(RT\u0001\\fffd\\fffdg\"N\\fffdH\\fffd\\fffd*\\fffd\\fffd|\\fffd\b \\fffd\\fffd\\fffd\\fffd\\fffdZ\\d3\\fffd\\fffd 5\\cb\u0011%23z\\0\\fffd\\fffdG\u0001Pf\\fffdr\u0012\\5ca\\fffd\u001A\\fffd\\fffd\u001E\\fffd\u0006x\u001AF,\\fffdQ\\fffd\\fffd\\fffd\\fffd\\fffdv\u001D5@5\\fffd\\6ee\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\\7ff\\fffd\\fffd~\\fffd\\fffd}||\\c\\fffd\\fffd~\\fffd\\fffd\\fffdn\\fffd\\fffd=\u001E\\fffd ffZcU\\fffd 5\\fffd d+\\0\\fffd-\\fffd\\b20e<H *\\fffdNQ\\fffd\\fffd D^\\fffdK\u0006\u0011\\fffdG\\fffd\"\\0!\\fffdu\\fffd/\\fffdK\\fffd\\fffd f`\\fffd\\fffd\\fffd D\\fffd\\fffd\b\\fffd A\\fffd%23za\\fffd\u001AT\\fffdk\\fffd\\fffd\\fffd\\fffd\\fffd,pD,\\fffd\\fffd\\fffd\\fffdo\\7fe%0D!o?~\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd B\\fffd\u001E\\\\\\fffd/\\464 8\\fffd>\\fffdt\u0019\\fffdI\\fffd(\\fffd)@\\fffd 1[!\\fffd\\fffd\u0019\u0015\\fffd\\fffd\\fffd\u001E\\fffd\\fffd\\fffd\u0016\\0\\fffd\\fffd\\fffd\\fffd`\\fffd\bu\\fffdk\\fffd\\fffd&\\fffd\\fffd d{;\\fffd a\u0004\\6d0\\fffd\bL\u0003h\\fffd\\fffd\\fffd\\0\\fffd\\fffd\\fffd\\fffd]S\\fffd\\fffd\\fffd@\\fffd\\fffd\u0001*\u0004\\fffd\\0\\4b7o\\fffd\\fffd\\fffd\\fffd\\1f6\\fffd\u0001,\\fffdP\\fffd\\cO\\fffdZHRs\\fffd e\\fffd\u00118\\fffd 82\\fffd\u0005\\78fGQ\\fffd\\fffd=ff\u0002\u0014\\fffd\u0017X\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 5p\\fffd\u0018t\\fffd\\f0$]u\\fffd\\fffd a\u001B\\c:DKa\\8a9d\\fffdl\\fffd\\fffd\u0013\\fffd=\\fffd\\3f6G\\fffdv\\fffd\\fffd\\6ee\\fffdNT\\fffd\\fffd?>>\\fffd\\fffd\\1c7=\u001E\\fffd\\fffd\\fffdx\\fffd\u0011\u00199bM\\fffd\\fffd,J\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\u0001\\fffd\"\\a2f2 1\\fffdG\\fffd|\u0011y\u001C\\fffdsa\u0007x$\\4154h\\fffd)\\fffd@6\u001Cn\\fffdT\\fffd^\"1\\0 b%23\\fffd\\fffd%0D\\fffd\\fffd\\fffd\\fffds\\fffd d\\fffd%0D-\\fffd\\fffd@\u0007\\fffdj\u0018\\fffdGd\\fffd\u001F\\fffd}\\fffdVv\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffd%0DSt\b\\fffd}\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdw{<\u001EG\\fffd\\fffdh\\fffd\\fffdQ\\fffd\\fffd*\u0003TK\"Oh\\fffd\\fffd\\c\\c897\\fffd\\fffdv\\fffd\\fffd\\fffd\\fffd\\fffd\\4f6\b\\fffdM\\0 FzP\\fffd\\fffd 5\u0006\\c\u001CsS\u0019\u001D\\fffd\u0001\\200\\fffd\\cJ.hn\\fffd 7\\fffdQ\\fffd\\fffd@C a&\\fffd\\fffdWuP\\fffdn\\fffdn\u0002Xv\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\u001Bf\\fffd\\fffd\u0003qd\\fffd>\\fffd}\u0002\u0016g<\\fffdl+\\fffdrHApB\\fffd\\fffdw\\fffd\\fffd\\fffdV\\0\\fffd\u0005\\11c(\\fffd\\fffd m\u0001\\fffd\\fffdy\u0014\\fffd.\u0011p\\fffd\\fffd\u0010\\fffd\\fffd\\fffd.2-\\fffd c\u0016\\fffd\\'\\fffd\\fffd`\u0002 %0DZ\\fffd\u001C\\fffd\\fffd(\\fffd\\fffdj\\0iD)\\736!\\fffd\u0006\\fffd\\fffd\\235\\fffdQh\\0i\\0\\c\\fffd\\fffd\u0003\\fffd\u001F\u001F\u001F\u000E\u0011\\fffd\\fffd\\fffd^\\0U\\fffd\u001F\\'W\\42d\\fffd\\fffd\u001A\\9ca2\\fffd\\ch\u0002\\517\\c\u000F\\fffd\\fffd B^\u0001\\fffdu\\fffd\\fffd\u000EX\\fffd\\fffd\\fffd\u0011\\fffd\\fffd\u0003\\0N\\fffd\\fffd\\fffd\\fffd 9\u0007\\fffd\\fffd\u0013\\fffd\\fffd\u0001L\\fffd\\fffd\u001BF\\fffd\\fffd\\fffdyl{>\\fffd\\fffd\\78dpD\\fffd\\fffd%09\u000E\\fffdt\\fffd\\fffd\u0007\\fffd\\fffd\u000E\\fffd\\fffdG\\fffd~\\fffd\\fffd}\\fffd am\u0007\\fffd A\\fffd\\fffd\\fffd\\73d\\fffd\\fffdp\\fffd\\fffd%0A(-\u0013\\fffdx\\fffdK\u0003\\fffd 4\\fffd\\fffd 2\\fffd\\fffd 2\u001D%\u0004\\fffd\\6b6\u0012\\fffd\"\\fffdi\u0013T\\fffd\\fffd\u001A@\\fffd}\\fffd\\fffd\\fffd\u0001F\\fffd\\fffd F\\fffd\"\\fffd a\\fffd 2\\fffd\\fffd\\fffd\u001C\\fffd F&xh\\fffd\\fffd\\fffd\u0013\\fffd\\fffdY\\fffd 6\"\\fffd\u000E0\\fffd\\fffdn\u000E\\fffd\\fffd\\fffd 4k\\fffd\u000Ek\\fffd%0A\u0003\u0010\\fffdh\\fffd E\\fffd\b \u0015\\fffd E\u0011\\154\\fffd\\'\\fffd\\fffd 2NU\\fffd\\'\"\\fffd\u0001\u0005JG=+\\fffd 2x\\fffd\\fffd CJ\u001BB\u001E\\fffd\u0015\\fffd\u0012\\fffd\\fffd\bL\\fffd-\u0005\u0004\\fffd\\fffdU\\fffdu\\fffd\u0014 \v\\fffd\\fffd\\7cf9{\\fffd[_\\fffd\\fffd\\fffdw%0A\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffdG\\fffd C[\\fffdv\\fffd\\fffd\\fffd\\3c61 E1>c\\fffd\\fffd\\fffd\\fffdP\\fffd\\'\u0002ODm\\fffd\\fffd\u001F\\fffd\u0012E8\u00052\\fffdh\\fffd(\\303\\fffd\u0001E\\fffd\\fffdQ\b\\fffd\u0017\u0001K\\fffd:%09E\\fffd 38\\fffd\\fffdr\\fffdo?a\u0017K\u0001\\fffdU\u001F\\fffdR\\8d33w\u0005\u001D\vH\\fffd\u0007\\fffd=\u001E\u000Fw\\fffd\\fffdn\u0018\\fffdgv\\fffd\\fffdmG\u0007\u0004GO3\\fffd\\4c8U\\fffd`\u0013\\fffdXf!\\43e\\fffd\\fffd\\fffd\u0010\\fffd\\fffd\\fffd\\fffd\\fffd 6p\\fffd\u0011L\u001C\\fffd\\fffd\\fffd\u0002U\\fffd\u0013\\fffdm\\fffd\\fffd 9eyG$\u001A\\fffd\u0003\\fffd\\fffd&\u0011\\fffd\u001D\\fffdN\\0;\\fffd\\fffd\\fffdkX%0A\\0\\fffd\\fffd\\fffduw\u001F\u0002\u001E;\u001A\u001A\\fffd`%0D=\\fffd\\fffd\\fffd\\fffdk\\fffd\\fffd\u0001;,\u000E3\\fffd\u0010XQ%09\\fffdR\\fffd\\fffd,\"%09cRQ!\\fffd)O\\fffd\\fffd)@\\fffd\\fffd\\fffd\\fffd 3\u0016\\0\\fffd\\fffd 1\\fffd&g\\fffd\u0007\\fffd\\0\v4\\fffd\\27b\\fffdl\u000FLOI\\fffd\\0\\fffd\u0011\\fffd\u0018d\\6fe\\fffd@\u0018\\fffd\\fffd+w}\\fffdg\u001B\\fffd f\\fffdX{\\fffdr\\fffd\u0018\\fffd\\fffdv\\fffd\\fffd|h*\u0004\\fffd\\0\\fffd\\fffd\\fffd_T\\fffd 4\u0003L\\fffd\\761\\fffd\\fffd\b\\fffd\\fffdkG\\fffd\\fffd[\u0007\\fffd\\fffd\\fffd\u0006\\fffd\u0003?\u001F \\fffd\\fffd\\fffd\u0014\\fffd 8%23\\fffdHo\u0011\\fffd 5\\fffd_\\fffdw\\0\\fffdO\u0004\\fffd 1\u001E\u0004,n\\fffds\\fffd\\fffd 9\\fffd\\fffd\\fffd)\\fffd\\fffd\\fffd\u00151\\fffd\\fffdx\\fffdH\\fffd\\fffd\\0\\fffd]C%0D\\fffd\\fffd 9\\fffd\\fffd\\fffd a3\\fffd%23\\fffd\\0\\fffd\\fffd[?\u001Cx,V\\fffd\\c;+\u000E\\\\|\u0011\\fffd\\fffd)5\u0006\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\u0018\\fffd\\fffd\\452P\\fffd\\251OR+\\fffdL8JBC\\fffd\\fffd\\fffd 1a\u0013\\\\\\fffd 1\\fffd\u0006\bt\\fffd\\fffduA\\fffd\\708g\\0\\fffd%23\u0019\u0018\\fffd%09\\fffd\\13b C\u001B\\320\\fffd\u000E\\fffd\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffdx\u000E\\fffd\\fffd\\fffd\\fffd\\686\\fffd\\fffd%23\\fffd 6\\fffd 8\\fffd\u0012[\\fffdGd\\fffd\u00028S\\fffdL_)\\fffd[=\\fffd\\fffd\u000E\\fffd\\fffd\\fffd>\\fffd@\\fffd\u001F\\eda0IE}\u001BL\u001C\\fffd D/\\fffd\\fffd dZ2H&\\fffd\\fffd E\\723\\fffd\u0010\u0018\\fffdln\"5\"-np\\fffd\\fffd F\\fffd\\fffd\\3b6SZC\\fffd\u0014\\fffd f\\0.\\fffd\u001B:P\\fffd\\fffd\\fffdl\\fffd\\fffd@\\fffd\u001F\\fffd\\fffd\\fffd\\6a7\\fffd\\fffd\\430U`\\fffd\\fffd]\\fffd\\\\Y\u0011-\u0002P\\fffd\\fffd\\fffd\\fffd b\\fffd\\fffd\\fffd\\fffdXD\\fffd.\\fffd 9\u0017\\fffdO\\fffdu\\fffd\\fffd\u0016\\fffd\\fffd\\fffd\\fffdX7\\fffd\\fffd\\fffd\u0003\\fffd 5\u0002\\fffd 6a1t0E\u0011dR\\fffd\u000F\\fffd\\fffd\\fffd 3\u0004{\\fffd c\\fffd\\fffd\\fffd\\fffd\u0004b\\fffd\\fffdlX\\1b9 D,\\fffd\\fffd*-& \\fffd\\fffd\\fffd\\fffd%09\\fffdy@\\fffd\\fffd\\fffdvn\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd-\\fffd\\fffd\\fffd\\fffdLX\u0003\u0017\u001D\u0015\\fffd\\c362\\560x\\9f23\\740\\fffd%0A\\0\\fffd\u001A\vg\\fffd 86\\fffd=\\fffdO7\\fffd\\fffd\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\u0003\\fffd\\fffdn%\u001C\u0019\\fffd\\fffd\\432\\fffd D\\fffd%0A\\fffdg\\fffd 5\\fffd\u00120d%\u0016\\fffdT\\fffdRJD\\fffd\"\\fffd;\\fffd\u0006Aq\\fffdj\\fffd\\fffdY\\fffd\\fffdp\\fffd\\fffd\\fffd\\fffdV\\fffd\\fffd^\\fffd\\fffd\u0003\\fffd d\\fffd\\fffd 8*\\fffdZ\\fffd\\0@\\fffd\\fffd Zu(\\fffd\\c \u001ETH\\fffdx\\fffd 6\\cR\\fffd\\fffdm\u001Cs\\fffdt%23J\\fffdN\\fffd\u001B\\0\\fffdl7\\fffd\"V5Z\u00118<q\\fffd%23\\fffd 5u\\fffd@S\\fffd\\fffdP\\fffd(\u001F\u0003%23\\fffd*Bg\\fffdS\\fffd 7z\\fffd\\fffd\\fffd aL\\\\ \\fffd D\\fffd\\b92b:Lv8m\\fffd\\fffd\u001D\\fffd\\fffdN\\fffd\\fffd\u0007\\fffd\\fffd~\\fffd\\ced08%\u001Ep\\d3d2\\fffd\u001E\u0001\u001D\\fffd\u0006O\\fffd!\u0005\u0002\\6d4\\fffd\\fffd\u0005\\fffd\vr?\\232\\fffd\\fffd|X\u0012`G\\\\\\fffd\\fffd\u0001\\fffd\\fffd\\fffd\u0005\\fffd\\fffd D6AiFB\\fffd\\fffd\u0004\u001B\\fffd\\fffd\\'\\fffd\\fffdhnP\u000E|\\fffd%{\u0004%0As\\fffd^XXv\u0010\\fffd\\fffd\\fffd|\\fffd%0D\\fffd\u0016\\fffd\\fffdN\\fffd\\fffd C\\fffd\u001Ct\\fffd\\fffd\\fffdU0\\fffd 8\\fffdg\u0014\\fffd\\fffdR84\\fffdN\\fffd\\fffdj=0\\fffd\\fffdv\u0003\\fffd\\fffd\\fffd\b\u0015i\\fffd\u0006\\fffdM\\fffd\vk\u0019\u0004\b\\fffd C\\fffdUu\u0015\u0011Y\u0007\u0005\\fffd\\525\\fffd\"\\fffd%09m\\fffd\\fffd a\u0013\\fffd\\fffd%09\\fffd\u0001=\\fffd\\fffd\\fffd>\\fffd\u0019\\fffd\\fffdT$\\fffd\\8166(D\\fffd F\u0011kc*\\fffd%23%0DRacZ\\729\\fffd-\u000E\\fffd\\fffd\\fffdp\u0007S\\fffd f\\fffd\\164d\\fffd\u0012\\fffd\\fffd\\fffdJ:E\\fffdj\\fffd%\\fffd E49\\fffdL\\fffd\u0005\u000E\\fffd\\fffdY!\\fffd\\'},\u0006\u001A\u001B\\fffd\\fffd\\cp\\fffd\u001A\u0003\\fffd\\fffd\\fffd\\fffd\\fffd@@\\fffdJc\\fffd\\fffd@\\fffd\\fffd\u001F\u001F\\fffd ?\u0006\\fffd\u001DA7<*\u0006]\\fffd\\fffd 5\\fffdt48\\fffd\\fffd cB\\fffd\\fffd\\fffd\u0019\\fffd,\u0001U\\fffd\\fffd-\u0002\\fffd\u0005`\\fffd 3\\fffd\u0002\v\\fffd\\fffd\\5dc 3\u0016*\\fffd 8\\fffd\\fffdM\\fffd\\fffd<\u0002\u001B\u0014\\fffd%2309\u001B\\fffdH\\fffd\\fffd\\fffd]\\fffd\\fffd\\fffd\\fffd\u000E\\fffd;e\\fffd\u001B\\fffd\\1a0\\fffd\u0015\\0\\fffd!%0A\\fffd\\fffdwJ\\0\\fffd}+\u0004\u0013\\fffd*\\fffd\u001B\\fffd\\fffd\\fffd\u0017\\0 7\\fffd f\\fffdg\v y2\\fffd!r\\fffd%23\\fffd D\\fffd\\3c0v\\fffd\\fffd\u0011\\65e\\fffdRN\u0016\\fffd\\fffd\u0016M4\\fffd\u0019\\fffd\u0003\\fffd\\fffd\u0006|\\fffd\\fffd%0A\\7c7Z\\a939\\fffd\u001Ey\\fffd\u001EPP\\fffd\\fffd\\fffd\\fffd 9b\\fffd\\fffd\\fffdX\u0017\\fffd@\\fffd\\fffd%\\fffd\\fffd\\fffd\\fffd\\fffd E\\fffd\\fffd d\\fffdKDc\\fffd 8\\fffd dQ\\fffd\u0010\u0017\\410\u0016\u0003\\fffd\\fffd\\227\\fffdP\\fffdx\\fffd\\fffd\u001D\\fffd\\fffd\\fffd-\\fffd%0Aw0cI\\fffd\\fffdy\\fffdP\u001B\\fffdp\\fffdg\\fffd\\1e7\\206\\fffdr\\406 \\fffd\u001E\\fffd\u000E-3\u0016\\fffd%0D\u0013\\fffd\\fffd E\\fffd\v8\\fffd\\fffdR\\0$ps\\fffd E\\fffdVMQ\\fffd\u0010\\fffd 3-e\\fffd\\fffdoA\\fffd\\fffd\u0016\\fffd\\fffdT\u001F\u001F\\fffdh\\fffd%0AB\\fffd c%09\\fffd c\\fffd\u0006\\fffd\\fffd\\fffd\\fffd@\\fffd\\fffd\\fffdz<\u001E\\fffd%0A\\fffd B@\\fffd\\5415\\fffd\\fffd\u000Ei\u0012\\5cb\\fffd\\fffdo\\fffd\\fffd\\fffd%0AK`\"1\u001F%09\\fffdW(\\3c2\u0006\\fffd\u0019x<\\fffd@\\fffdKwL\\fffd\u0013J<\\fffd=\\fffd\u0010\\fffdN\\fffdI\\fffd\\fffd\\fffd_\\fffd\\fffd\\fffd\\fffd\u0019\\fffd\v@?&\\fffd\\fffdQc96\\fffd%0D\\fffd Bz\u001B6\\fffd\u0018Kl\\fffd\\fffd\\fffdjRk\\fffd\\fffd\\0\\517\\fffd 1b\\fffd\\fffd\u0006\\fffdL\\fffd c\\fffdh\\fffdzG\\fffdz\u0001\\fffd\\1b5\\fffd\u0004H\\c^\\fffd\\fffdW\\fffd\\fffd\u0005B\u001C\\fffd-\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd:E/\\fffd\\fffd^\\fffd\\fffd\\4a1\\fffd}2A\\fffd\u0010\\fffd\\0\"\\'*<(%0D%23\u0014\\0\\fffd\\fffd\\fffd\\fffd\"\\fffd\\fffd\\293!z\\\\W\\fffdTh\\fffd\\c aE[*\\fffd\\fffd\u0017\u0001Id\u00195^@\\fffdm\\fffd\\1ee\\fffd\\fffdY\\fffdr\\1f8\\fffdX\\fffd\u0006\\fffd\\fffd \u0007\\fffd\\fffd\\fffd eC\\\\\\fffd 1\\40f\u0012\\fffdh8\u0013\\fffd\\fffd\\fffdMQ!f\\fffd\u0004\\fffd\\fffd\\fffd\\fffd\\fffd A6\\fffd\\fffd\\fffd e*3\u0004\\fffd\\373\\fffd%09\\fffd\\fffd\u001A\\fffd\\fffd\\fffd\\7dd\\fffd\\fffd_i\u001B\\fffd%0DLM\u0014\\fffd\\fffd\\245Q{\\fffd\\1ad\\fffd%23\\fffdp\\fffdQY\u0014Q4\\fffd\\fffd*\u0002\\fffd E\\fffd\\fffd 1\\fffdm\b:\\fffd\u0002\\fffd 6t\\fffd\\fffd\\fffd:\\fffd~Fd\":D\\fffdw\\fffdn\\fffd\u001Bv%23\\fffd\u0001\\fffd\\ecG\\fffdl{\\fffd\\fffdG+\\fffdX\\fffdnS\\1c1\u0005QLE=W\\fffd-\\fffd 2@\\fffdl\\fffd\\fffd A\\fffd\\fffdz\\fffdR\u001D\\fffdm\\fffd\\fffd\\fffd\\fffdh8\\fffd(\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\u0001\\fffd/\\fffdn\\'K\u0002t\\fffd\\fffd 4ee h\\9f3e\\fffd\\fffd\\fffd\\fffd at\\fffd EKJ\u0013\u0019\\fffd\u0005`\\fffd\\fffd\b\\fffd\\'\\fffd E\u0007CF\\fffdlZ\\fffd\\fffdp\\fffdh\\fffd E\\fffd\u001A\\fffd\\66e 4V\\fffd\\fffd\\fffd%\\fffd\\fffd\\'\\fffd+\\fffd\\fffd\\fffd\u001E,\\fffd\\fffd\v\\fffd!-\\fffd\\fffd\\fffd\\fffd=\\fffd\\fffd\v\\fffd\\fffd/\\fffd 28z\u0011%0D\\fffdI\\fffd\\fffd]\\fffd\bj:\\56cw*\\fffd\u001F<\\fffdG\u001Eh,~\\fffd\\fffd\\fffdK\u0003E\\fffd\\fffd(\\3d5\\fffdN\\fffd\u0007K1\\fffd\\fffd C\\fffdO\\fffd%0A&Y\\fffd\\fffd>\u001C\\fffd-8\\fffd\\']\u00056\u0004>o\\\\;\\fffd\\fffdM\\fffd\u0002$\\fffd)\u0016\\fffdT\\fffd\\fffd\u0015\\fffds\\fffd 5\\fffd|P\\fffd\\1fe`-\\fffd\\0 FF\\fffd\\fffd\b.\\fffd\\fffd`\\fffdK1\\fffdq\u0001=\\fffdX\\fffd\u0016\\fffd\\fffdL\v\\fffd\u0006\\'\\fffd\\fffd\\fffd\\fffd)Z\u0002\u001D\\fffd\\fffdp\u0012\\fffd\u0001M\\fffd 1\u0010\\fffdl%23\\fffd\\fffd:\\fffd\\fffdha\\fffd\\fffd\\fffd\\fffd\\fffd\u001C\\fffd\\fffdV\u0018\u0001`%\\fffd\\fffd\\cr\\fffd\\fffd\u0014\\fffd 1\\fffd\u0016\\fffd\\fffd\u0002-\\fffdR!;\\fffd{A\\fffd\\fffdy\\fffdHg@o\\fffd\\0\\fffd\u0004\u0005Z%0A\u0018^ +D\\fffd\\fffd~,SV\\fffd\\fffd%0A\\fffdn8\\fffd)D&\\fffd\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd\\fffdq\\fffd\\fffdmI\\fffd\u0007-1\\fffd^\\fffd\\360\\fffd\"W\\fffdK\\fffd\u00010\\fffd\u0014\\\\\\fffd\u0004\\fffd)]\\49fRB?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0006*\\fffd X\\fffdm\\fffdP&\\4d6\\fffd F\\fffd\\fffd\\fffd\\fffdG\u0006\u0007\\fffd A\\0\\fffd\\fffd\\fffd(\u0012=-\u0004\\fffd\\fffdqS\u0004\u00137O\\fffdR\\fffd<3k\\fffd\\0 Fs%0DG\\fffd_&\\fffd\\fffd}hI\u0018\\fffd\\fffd\\fffd*5Mt0\\fffd\\fffd 2\\fffdh\u001E!w%\\fffd\\fffd~\\fffd\\fffd\\fffd}hU \\fffd\\fffd\\fffd\\'\\fffd\u001E\\fffd 2\\fffd\u001B\\fffd 5v\\fffd\u000Fw\u001DW\\fffd a\u001A\\fffd)\\fffd\\fffd\u0012\\fffdw\\fffdI7:\\fffd\u0016\\fffdz\\70f\\fffdX\\420\\fffd\\a8}f\\fffd\\fffd\\fffd\\4da\\fffd C\\fffdW\\fffd;j\\fffd\\fffd/S\u0016\u0003\\4df\\fffdx\\fffd F>\u0017\\fffd\\fffd FEh\\fffd\\fffd\\fffd D\b\\fffdT\u001ED\\fffd\\fffd\\0\\36d 2\\fffd)rC F,%23?%0A\\fffd\\fffd Fm\\fffd\u0018\\fffd\u001C\\fffd\\fffd c\\fffd\\fffdX\\fffd\\fffd\\fffd[\\fffd)\\fffdJ\\fffd\\fffd\\aa a\u001A\\fffdlR%0D\\fffd\\fffd|Iw\u0001x,\\fffd\u0002G\\742\\fffd>K(2+\\fffd\\\\\\fffd\u0016\\fffdw\\fffd\\fffd DGe\u0011\\fffd Ep\\439\\fffd\\d153\\fffd\\507\\fffd 9fw\\fffdq\\fffd\\fffd\u0012\\fffdo\\c@<\\fffd\u0003\\fffd\\fffd\\0+[\\fffd\\fffd&\\fffdS\\fffdy\\fffd\\fffd\u0016\\fffdo.V\\0\\fffd\u0011Jg%09\\fffd\\542\\fffd:\u0015\\fffd\\fffd\\fffd 3\\fffd\u0014\\fffdv\"a4\\fffd 4\u001BD%09\\fffd\\fffd\\125\u001B\\fffd\"\\fffd\u001C=\\fffd%09t\\fffd\\fffd\\fffd\\fffd++\u000F\\0\\fffd?\\fffd\\fffd\u0006\\fffd:i\\fffd\u0011\\fffd\\fffd\\fffd\\55d2\\18a\"\\fffd,\\fffd]\\0\\fffdh%23\\fffd.\u0006\u0019\\fffd\\fffdq\u0014\\fffdR\\fffdV\\fffdz\u0003\u0007\\fffd Df\\fffd 4\\fffd\\fffd\u0005\\173\\fffd\u0010\\fffd~g \\fffd\\fffd\\fffd\\fffd\\fffd_JC\\fffd\\fffd\u001B\\356\\fffd(\\fffd\\fffdo\\fffd\\fffd\\10b\\fffd?0\\fffdrU\\fffd%\\fffdU\\fffd b!\\fffd\\fffd\\fffdq\\fffd fU\\fffd\\2e5\\fffd=\\2e8QD3~=r\\fffdM\\462z\\fffd\\fffd e[\\fffd B\\fffd\\fffd\\fffd\u0001\\fffds\\fffd$a`\\fffd\\fffd\u0017g\\fffd\\fffd\\fffd\\fffd 85\\fffdm\u000E^\\\\\\fffd\\fffd[\\fffd%0D\\fffd\\fffd 6n\\fffd\\fffd\\fffd\\'&\\0\\fffd\\fffdK\\fffd\\fffd\\0\\fffd\\fffd\u0011\\fffd eQ%09\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\689\\fffd\\fffdr\\5c9\\fffdN\\fffd\u0005-\\fffd a\\fffdqQ%0D\\fffd\\fffd(\\b2H\\fffd\\fffd D\\50a\\fffd\\fffd\\fffd%0D\\fffdLP\\fffd e\\fffd\\fffd\\fffd\\fffd 6\\fffdz\\fffdg\\fffdl!3T\\fffd~\\fffd@g\\fffd!\u0012\\fffd\u0016L\\fffdp%\\fffd\\fffdmKT&xq\\fffd%098\\fffd\u000E\\fffd\\fffd\\fffd\\606\\fffd\\fffd.Z\u001Dv\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\u001FN\\fffdw\\fffd\\fffdwv\\133\\fffd?\\fffd\\fffd\")\\fffdt2Xt\\fffd(\u001AMh0\\fffd\\fffd\u0015i\\c\u000F\\fffdk\\fffd\\fffd*\\fffd D\u0004\\fffdL\\fffd\\fffdp\\5d5\\fffd\\fffd\\fffd\u0019\\fffdJ\\fffd\\fffd~\\fffd\u0005\u0006\v\\5e7 cPM\\fffd\u0014\\fffd\\fffd\\fffdp1J\\fffd|\\fffd\\fffd\\5f2\\a4\\fffd 8\\fffd F\\fffd\\fffd d\\fffd\\fffd\\262\\fffd\\8a72\u0002E\\fffd\\fffd b\\fffd\\fffd\\fffd)\\fffd b\u0002@\\fffd 8Lw\\fffd\\fffd$\\310 9\u0001\\fffdO2\u0003\\fffd\\c193>\"Q\\fffd\\fffd{\\fffdUo6A\\fffdNEg\\fffd\\fffdO9\\fffd\u0012X\\fffd\\fffd\\3a2Rd+\\cg=\\fffd\\fffd\\fffd\\fffd\u001E\u0002dL\\147\\fffd 2\v|,\\fffd 271\\fffd\\fffd\\fffd\\fffd\\fffdu\\fffd\\fffd\\fffd\u0010XL\u0015bf\\fffd)+B\\fffd%23\\fffdmF\\0\\fffd\\fffdO\\fffd\\fffd\\0\\fffd\\fffd\\fffdt|\\fffd\\fffd]|\u0007\\fffd\\fffd\\fffd \\fffd;\\108c4f\\fffd\\fffd;\u0015\\fffd\\fffd\u001A\\fffdR;\\fffdJ7j\\fffd\\fffd\\fffd>\u0018\\fffd\u0006\\fffd\u001D\\fffd\\fffd\\fffd\u0001\\fffdyf\\fffd\\fffd\\fffd \u001B\\fffd\u0010\\fffd B\\fffd\\fffd\\fffd\u001E\u0019\\fffdQD\u0013 \\fffd\\fffd<\\fffd%23\\fffd`\\fffd\\fffd 7A\\fffd\\fffd,\\fffd\\fffd>\\fffdg\\fffd b\\fffdr\\fffd\\6f3\u0015\u001DYb(\\fffd!+\u0004O\\17b\\fffdJ%09(e\u0017gFwB\\fffd](\\fffd%23\\fffdj+N\"]4\\fffd>\\fffd=a?\\fffd@\\fffd\\fffd\\382e\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\vo\\54b%\u001D\u0013\\fffd\\fffd\\fffd\\fffd\\fffd D\\fffd\u0003|Js\\fffd\\586\\fffd\\fffdZk\u000E\\fffd\\fffd 0J\\fffd\u001A\\fffd\\6a6\\fffd\\fffd<\\fffd\u0002\\355\\fffd\u000El%09\\fffd\\fffd|\u0005\\fffd\\fffd b\\fffd\u00065\\fffdw\\fffd%\\fffd{\u0015d \\fffd;\\fffd\u001D\\fffd\\fffd\\fffd\\fffd D\\588\\fffd}\v\\0\\fffdhE\\fffdN\\fffdnJ7\\fffd~\\fffd\\fffd\"(W\u000E\u000F+\\fffd\u001B^\\fffd\u001F\u0012\u0003U\\fffd D\\fffdV\\fffd\\fffd\\271\\fffd br\\fffd b_T\\fffd\\fffdh\u000E\\fffd\\fffdrDwJ\\fffd\\fffd \\fffd\\fffd\\fffd&\u001A\u0003\\fffd\\fffd_I\\fffd\\fffd\u0014\\fffd\\fffd\u0007\\fffd\\fffd\\fffd@fs\u0013\\53c\u00015\\fffd\\fffd\\fffd\\fffd_\u0014\\fffd\\fffd\u0014x\u0012\\fffdm\u0012\\fffd f\u0013S-\\fffdyc*\\c3\\fffd+\\'\\fffd\\fffd\\fffd\\fffd\u001B\\fffdNL\\fffd\\\\-c4\\fffd b+\\fffd\\6a0>7\\fffd\\490\\fffd,\\fffd\u0012MQ!\\fffd\\fffd,\\fffd\\fffd\\fffd\\fffdNY\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdx<\u001A\\fffd \\fffd-\\fffdX\u0015K!\\\\p6\\fffd 5\u0016g\\fffd(@N\u0001\\fffd\\0\\fffd(Z\\fffd\u0019:8w\\fffd\u0005\u001A\\fffd\\fffd-\\fffd\\fffd\\fffd 1\\22epe\u00130\u0010\\fffd/w\\fffd\\fffd\u0006\\fffd\u0006\\fffd\\fffd\u0016u\u001A\\41cQ\\fffd\\fffdtZ\\fffd\\fffd 0\\fffd~n\\fffdUc2\\0 Fkf\u0005\\fffd F\u0013=@\\fffdk\\fffd E5\\fffd\\fffd\u001A\\fffd 0sY\\fffdOL\\fffdp\\fffd$\u0011\\fffd\v*\\6e6\u0012Pd-\\fffd\\fffd\u0011\\fffd Dq\u0017*\\fffd=V\\fffd\\fffd\\218\\fffd 2\\fffdS\\fffd%{\\fffd\u0015\\fffd=\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd~\\fffd\\fffd f\\fffd(\\fffd\u0014\\fffd\\fffd\u0019\\39eP\\fffd\\fffd D{E\\333w\\fffd\u0012\\fffd\\fffd\u0018\\fffd\\fffd\\fffdM\\fffdj\u001BL\\fffd 8E\\fffd\\fffd\\fffdqvJ\\fffd\\1d9\\fffd\\fffd\\539\\248\\fffd\u000E\u0015~\\fffd_e+\\fffd\\44c 4\\fffd%\\fffdTC\\fffdl{EO\\fffd\u0017\\fffd\\fffd\\fffd\\fffd\u0006\\fffd 6\\fffd{u0?\\fffd 0B\\6cc\u0016\\fffd 5\u0004%0A\\fffd bE?\\fffd\\fffd\\536 2\\fffdV\\fffdV\u0004%0A\\55c\\'\\fffd;\\fffdX\\276hMv\v\\0\\fffdHc\\fffd\\fffd\u001F~%0A\\fffd\\fffd\b5\\fffd&\\fffd B\\fffd\u0006\\fffd\\fffd\u0006\\fffd&:\u0014\\fffd`\\fffd{\\fffdP\\fffdG\u0011*\\fffd%23^\\fffd\u001B^\\fffdj?\\fffd(1\u0015\\fffd 7E\\fffd*\\fffd E\\fffd\\fffd\\fffdx\\fffd>\u0010\\fffd\\fffd%\\fffd\\322\\fffd d\\fffd\\fffd\\10aW\\fffd)\\fffdQ\\fffd\\fffd`\\fffd 8\\fffd\\fffd \\fffd\\fffd Ep\\fffd_)+\\fffd\b\\fffd\v%\\fffd\u0019\\fffd\u0015\\fffd(\\fffd 3xO\u0018\\fffd\\412\\fffd\\fffdj^\\fffd\"Z\\fffd\\fffd\u001C\\fffd-\\fffd\\fffd\\489\\fffd\u000F\\fffd\u0013\vq\\fffd\\fffdv>\\fffd 2R\\fffdT\\fffd\\fffd\u000E4\\fffd\\fffd\\fffd\u0014\\fffd|\\fffd-\\fffd 0!u\\fffd+T\\fffd@\\fffd\\fffd\\fffd%\\fffd\u0011Qa\\fffd\\fffd\\fffd\\fffdx\u0017\u0011\\292\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdMe\\fffd\\fffdp\u0017\\fffd\u001A\u0005\\fffd-0_\\fffdM\\fffd\\fffd-1 \\fffdYOD\\fffd\\fffd e\u001D\\fffd\\fffd F\\fffd\u0010\\fffd 7\u0017\\fffd\\fffd\\fffd]\\fffd 8\\fffd-\\fffdiw\\fffd\\fffdl\u0004\\fffd 2\\fffd\u0005\\fffd 6\\fffd\u0016\\fffdH\\'\\a456,Y\\fffdu\\fffdj\\fffd\\fffd\\fffd\\fffd 3\\fffdwU\\fffd F\\fffd_L\\fffd\\fffd\\fffd\\fffd&\u0013<fe/y\\fffd\\fffd\\4deQe\\fffd%0A\\fffd\"t\u0006%0A\\fffd\\152~*S\\fffdZ\\fffd\\fffd\\fffd?18-\u001B\\fffdJ&X}\\fffd\\fffd\\fffd`\\fffd e\\fffd 2\u0010\\fffdX\\fffdi/\\fffd(J\\fffd 356\\fffd\\fffd\\fffd\u0014.\u0014\\fffd\u001BOk\\fffd\\fffdV\\fffd\u0016\\fffd\\fffd\\fffd\\fffd F(\\fffd\u0017O\u0013\\fffd\\fffdP\\fffdG\\fffdw(\\fffd\\fffd\\385\\fffd\\fffd\\fffd\\fffdWy\u0002\\fffd\\655\\768 3!\u0003W\\fffd\u0014\\fffd%0D\\fffd\\fffd\u0010h\\fffd 0\\fffd\u0013\\fffd\\fffd\\fffd\\fffdKt\u0017/K\u0010Y%0D6J:aV8\u0003\\fffdh\\fffd\\fffdQ\u0018\\fffd\u0007\\fffd\u001BY\\fffd\\fffdT;\\fffdXa\u0016\\fffdk\\fffdr\\fffdW\\fffd\\fffd\u0004S\\fffd$\\fffd(2f \\fffd\\fffd\u0015f\u0013`/\u001A\b\u0016\\fffdU\\fffd+\\fffd B\\fffdz\u0002O\\fffd d\\fffd\\fffd\\fffd\u0019;\\fffdyM\\fffd\u0010%23\\fffd\\fffdl7$\\fffdx\\fffd(Ri\\fffd\\fffd\\fffd\\fffd\\fffd 4\u0013\\fffd 3$\\fffd e\\689V\u0001\\c=.\\fffd\\fffd \\fffd\u0011-j\\fffd\\fffd\u0004`V\\fffdN*\bV\\fffd\\fffd%0A\\\\u5\\fffd\u0019?g%23\u0001o\\fffd\\109\\fffd\\fffd 7\\fffd\\fffd\\fffd%0DoN\u0001\\fffd\\fffd 9\\fffd\\fffdRTr\\fffd\\fffdl`?\\fffd\\fffd\vRa$h+\\fffd*x.\\fffd\bf\\fffd\u0005\\fffdt\u001A\\fffd\\fffd\\fffd\u0003\u0016\u001E\\fffd:\\fffd\\fffd\\fffd\\fffd&/\\fffdKL\\fffdP\\fffd\u001C/S\\fffdg\\fffd-\\fffdza*\\fffd$\\fffdx\\fffdYB-\\fffd.\u0015\\fffd\\fffdR\\fffd\\fffd\\fffd&\\fffd\\fffdq\\fffd\\fffd\\'\\fffd\\fffdl=\u0014\\fffd\\fffd=&S\u0002]\\fffd\\fffd&GDu\\9c%0A+\\fffd\\fffdH1\\fffdG\\fffd:%0D\\fffdt1\\fffdX\\fffdm\u0019e\\fffdu\\fffd\\fffdp\\fffd\\fffd d\\fffd\\fffd\\fffd\\fffd 9\\fffd\\fffd d\\fffd\\fffd%09\u001B,/X\\fffd%0A\\0\\fffd 4b\\fffdMD\\fffd\\fffd{\\fffdyI\\fffd\u0003P\\fffdn\\fffd\\fffd;\u0015\\fffd\u0013\\fffdV%23\\fffd\\'kh}f\\fffdR\\0\\fffd\\fffd\\fffd\\fffd*UR\\fffd\\fffd F\\fffdI\\fffd\\fffd\\fffd\\fffdnVt\\fffd\\fffd(%\\fffdtYR\v\\fffd dj\\fffdYc}2\\fffdJ\u001AK\\fffd\v>\\fffd\\fffd:;~\\fffd\\fffdM\\fffdw\\fffdM\\fffd(\\fffd]-\\fffdX\\fffdUO\\fffd\\1d0\\fffd\\fffd%\u0002`\\fffd\\fffd\\fffd\\fffd\u001A\\fffd\\fffd\u0018j\u000E!\\fffdi\\fffd\\fffd B*\\fffd\\fffd\\fffd\u0011\\a569\\fffd dC\\fffdYa\\fffd\\fffd_\"\\fffd\\fffdy\\fffd\\fffd\\fffd?\\fffdI\\fffdY\\fffd BV\\fffdylaVX\\fffdl\\fffdw)+\\fffd\v\\fffd%23V\\fffd ;8\\fffd(\\21f\\fffdWk\\fffd\\'\\fffd\\fffd\\fffd\\fffd&\\fffd\\fffd+Y\\fffd\\fffd\\fffd\\fffd`F\\fffd\\fffd 3\"\\fffdhFl\u0013\\3ebM&\u0017\\30e!\\fffd\\fffdg\\fffd&@\\fffd\\fffd\\fffd fT\\fffds\u0004X+%09\\fffd 3\\fffdK\\fffdN\\fffd\\fffd|Mh\\fffd\\fffd\\fffd 7\\c\\fffdhq\\fffd\\fffdx\\fffd\\fffd\u0017uE\\fffd\\fffdO\\fffdz\\fffd\\fffd \\c\\426&a&\\fffd%0D\\fffd\\fffdr0\\fffd\\fffd%23T\\fffd%0A\\fffd\\35fi)5\\fffd\\fffd\\fffdk\\fffd\\fffd\\fffd\\fffdN\\fffd%0D\\fffd\\fffd\\fffd\\fffd\\fffd\u0005M\\fffd\\fffd\\fffd\u0004\u0005^^\\fffd 2=\\fffd\\5a2\\fffdMO2\\116%09v1\\fffdT\\fffd a\\fffdzE\\fffdO(\\fffdo\\fffd b\\fffd`\\fffdtX+\b\\fffd\u0006s\\fffdTdkB\\fffd 7\\fffdX\\fffd b!\u0002D\\fffd\\'h\\fffd\\fffd\u0011k\\fffd\\fffd f\\65c\\fffd[\\fffdU\\fffd\\fffdlE\\fffd&f\\fffd dV\\fffd\u0005\\fffd%09\\fffd\\fffd\\fffd EQw\\fffdO\\fffd\\fffd\u0007\\3be)-\u00164\u0014Z4\\3cf\\fffdZq\\fffdi\\fffdZxT\\fffd\u0004vI\\fffdy\\fffd>40>\\fffd\\727\\fffd\\fffd\\fffd\\fffd\"U\\fffd\"\\fffdI\\fffdi\u0013+\\fffd D\\'>\\fffd\\fffd\\fffd\\fffdz[\\fffd 6\\'\\0\\fffd\\fffdW:(\\fffd 4\\fffd DHh\\fffd e\\fffdh\u0012\\fffd\u0018\u0014HmM\\fffd\\fffd 1\\6d8\"\u000F\u0013eO\\fffd\u001E\\fffd\\fffd 7a\\fffd\\fffdI\\fffdZ\\fffdX\\fffd\\fffd\u000Ez\\6e3\\fffd\\fffd 6Y\\fffd-j9\\fffd\\fffdX\\fffd(\\fffdK,\\fffdi\\fffdtq\u0006P\\fffd\u0019\\fffd\\fffd\\fffd 7\\fffd\u000F\\fffd 2U\u0012\\fffd f\\9eu\\fffd\\fffd\\fffdR\\fffd\u0011\\fffd Aj)\\fffd\\\\\\fffd%0D\u0004\\fffd\\fffd\u0006\u0017\\fffd\u000EU\\fffd\\fffd\u0017W\\fffd\\fffd\\fffd\\fffd\\13c\\fffd 6\\fffd e\\fffd\u001C\\fffd BJ\\fffd 4)V\\fffd\\fffd 6\\fffdt2\\fffd\\c b*z\\fffd^t\\fffd\\382\\fffdwJ\\fffd\\fffd\\fffd\\fffd A\\fffd=\\fffd\\fffd\\fffdv\\fffd e-\\fffdWg\\fffd>OfXK\\fffd\\fffdNT\\fffd 9a\\fffd\\fffd\v=\\fffd>\\fffd 4+)LPZ\\fffd\u001D\\fffd\u0006/YetQr\\fffdh\\76ca^\\c\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffdWT\\fffd\\fffd\\cX3A\\fffd\u0005\u001D\\fffd f\\fffd(\\fffd 6\\fffd d\\fffd\b9k:Z=&Z\u000Fbe\\fffd\\42b\u0019cbI\\fffd\\fffdSY\u0003\\fffd\\fffdR\\fffd\u0018$d\\fffd*\\fffd<e\\fffd\b&Q\\fffdi\\285\\fffdm\\fffd\\fffd\\fffd\\cQ\\fffdw\\fffd\\74dcN,-\\fffdq\u000F\\fffdW\\fffdz\u0016\\fffdQ\\1e2\u0015\\fffdZ\u001B\\fffd\u0013z\u0006*g\u001D\\fffd,d\u0012&%0A\\fffd\u0004\\0\\fffd 9\u0011\\fffd|\u0002\\fffd\u0016h\\fffd\\2f9`-\\fffd\\fffdU;2\\fffd\u000F\\fffd\\fffd\\fffd\\fffd\\fffd%0D\u0001\\fffd\\fffd\\fffd\u0012\\fffd\\fffd\\fffdkfk7$\v\\fffd\\fffd\b\u0010m3\\fffd fW\\fffd\\fffd dD\\c5\\26f\\fffd\\fffd\\fffd,]\\fffd F\\fffdL%0ADS\\fffdx\\fffdR\\fffd.\\fffd\\fffd\\fffd@\\fffd^G;\\cg\\fffd\\fffd\\fffdJ\\fffd\\fffdZ\\fffd\\fffd\\fffd 5\\fffd\\fffd\\fffd_\u0011(%09\\fffd\\fffd 8O\\443h\\fffd\u0005p\u001C\\fffd_\\424\\fffdl!\\fffd\\fffd c\\fffd{D\\3e2YvO\\fffdSv&tXD\\fffd\u0017%0A%\\fffd)Sm\\fffd\\fffd\u0012E\\fffd\\fffd %23T\u0012m2ao\\fffdty\u0005J^\\fffd E\\fffd\\fffd\\fffd\\fffd,\\0p\\fffd\\fffd[d\\'\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdG<\\fffd\\fffd\\fffd\\fffdyc*\u0004\\fffd\\fffd\u0002\\fffd 5.&\\fffd\\fffd\\fffd\\fffd*\\fffd\\fa\\fffd.\\fffdN\\fffd\\fffd\\fffdMp\\fffd\\fffd\\fffd\\6b39X\\31fR\\fffdly\\fffd\u0010dA\\fffd\\fffd|\\fffd%0D\\fffd\\fffd 2\\fffd\\fffd\\fffd\\fffd\\fffdw|\\fffd\\fffd\\fffd\\fffd\\878f!\u0015\\fffd\\fffdV@i\u0011%0DV\\59cwFz\\0\\fffdt%\\fffd@\u0003\\fffd 3\\fffd\\fffdl.\u0003\\fffd\\fffd\\fffd}\u0018E\\fffd d\\fffd\\fffd\\fffd,\\fffdyT%0Aj\\fffd\\a612 D\\fffd_\\fffd\\fffd\\fffdX\\fffd\\fffdzQ\\fffd\\fffd%%0A\\fffd\\1be\\fffdX%0D\\fffd%0Ae\\fffd\\fffd\\fffd]\\fffd d\\fffd\bh2\\fffd E\\fffd\\fffd\\fffdL\\fffdpE?\\fffd>\\fffdy\\fffd\\fffd\\468S\\fffd\\fffd\\fffd\\fffd\\fffd EM\\fffd\\fffd}Z\\fffd\\fffd e\\1dd\\fffd d\\fffd\u0006\\fffdz\\fffdPq\\fffd\\fffdH_5\\fffd\\fffd\\fffdj\u0011\\fffdH\\fffd!\\cg\\fffd\\fffd\\fffd\u001F\u001E\\fffd\\fffd%23Q*{\\fffdYD\\fffd\\fffd\\1f7\\fffdMo(`\\fffd\\fffd{\u0012\u001D/\\fffdy\\fffd\\fffd\u000F\\fffd@\\fffd:\\fffd.\\fffd\\268\\fffd d1\u0013\u001E\\fffdJ\\fffdt\\fffd}\\fffdq\u001F\\7e1\u0007N\\fffd\u001A\u0015\u0016\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd,\u001B-\\fffd\\fffd\v71W\\fffd\v\\fffd\\fffd\\fffd\\fffdO\\fffd\\fffd<\\fffd\\acd3I!a\\fffd\u0017gn\\fffd?\\'\\fffd\\fffd\\fb58i\\fffdp|\u0004\\236\\fffd C\\fffd,\u0004\u0015\\fffd 6\\fffd\\fffd&\\fffdk\\fffd\\fffdU\\fffd\u0019J\\0\u0014\\46c|/\u001D53(\\fffd%0A-\\fffd\\fffd\u000EG\\fffd\u0002\\fffd\\66c\\fffd\\fffd\\fffd$_\\fffd^\\fffd\\fffd.Sn{E\\fffdMZ\\fffd\\\\]P\\fffd B\b\\fffdG\\fffdZ\u0006\\fffd\\fffdJ\\fffd\\fffd\\fffd\\fffdV\u0013\\fffd eBPg\\fffd d%09(\\fffd+\\fffdQ\\fffd\\0\\fffd\\fffd\\fffd\\fffd\\6cc\\fffd\\fffd\\fffd\\fffd D\\fffd\u0014Db\\fffd\\5d4\u000F\\fffd?\\fffd\\fffd!\u0012-\\fffd\\fffd e SQ\\fffd\\fffd\u0013\\fffd 7ZcE\\fffd\\fffd Bs\u0013\\fffd 55Hg\\'M%%09\u00010\\fffd\\fffd\\fffd\\fffd\\fffd-GQ\\fffd)}\u0017e\\12a\\fffd\u001F@\\fffd\\eb68 2[i;\\fffd\\fffd\\fffd\\fffd!\\fffd@\\fffd\\fffd\\'\\fffd \\fffdVDP9he*\\fffd\\0k\\fffdV(YdjI\\fffdX\u001Ep\vn\\fffd\u001Bd\\fffd/\\fffd\\fffd\\fffd\\fffd\\fffd+m\\fffd\\\\$\\fffdy\\fffd\\fffd-\"\\fffd\\fffd@EdR\\fffd\\fffd\u0002g]\\fffd}\\fffd%0AS\\fffd 8\\fffdG\u0019\\764\u0003.\\fffd\\fffd\\fffd\\fffdW\\0\\fffd\\fffd:\\4cb ae\\fffd\\fffd\\fffdm\\fffd\u0013?\\fffd\\fffd%0A\\fffd\u0011eV\\fffd\\7e3 D\\fffd 4\\fffd\u001CXI\u0004\\280\\fffd\\fffd\u0007\\fffd\\fffd\\fffd\\fffd 0/\\fffd\\fffd\\fffd\\fffdPFyr\\fffd\\fffd\\fffd\\445\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd_h\\fffd\\fffd\u0014Syy\\fffd\\fffd\\fffd\\fffd\u000EtX\u0014\\fffd\\4c2w\\fffd\u0016\\67e!eV\\fffd\\fffdJ\\255\\fffd\\fffd\\fffdJ\\fffd E\\'\\fffd\\fffd.\\fffd\\fffd\u0015\\fffdk*\\fffd\\fffd 2\\fffd 7j\\fffd.\\fffd\u001B\\fffd(\\fffd\\fffd\\fffd\\fffd E\\fffd@\\fffd\\fffd\\fffd\u001Eg|\"+\\fffd\\fffd a\\fffd%0Ag6\\fffd D?\\fffd\\fffdW\\fffd 6\\16c-\\fffd@\\135e\"A\\fffd\\0\\fffd%\\fffd\u0014\\fffd 0ZK\\fffd\\fffdW\\fffd\u001Fdt2\u0013D\\'\"\\fffd\\fffd\\fffd.\\fffdl`\\fffd\\fffd\\fffd\v\\fffd+\\fffd\\fffdl-\\fffdJ\\fffd\\fffdo\\fffd\\fffdW,\\fffd\\fffd+\\fffdlE\\fffdM\\fffdHQ\\fffd\\fffdU5\u0013\\fffd\\fffd\\'\\fffd\u001D\\fffd%0A\\fffdt\\fffd^\\fffd\u0001%0A{\\fffd\\32c e\u001A+\\fffd\v2Z\\c 4\\fffd\\fffd\\fffd_\u001A\\fffd&F\\fffd\\fffd\u0004\\fffd 4\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd+\u0013HdG\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd&\\\\w|\\fffd 6\\fffd;\\fffdu=\\fffd 5\\fffd\\fffd\\fffd\\fffd\u0013=\\fffdJ\\fffd\\fffd\\fffd\\fffdz\\fffd\\fffd\\fffd\\fffd\\fffd\u0013\\fffd\\fffd E\\fffd\\fffd`\u0014\\fffd\\319\\fffd\\fffd>\\fffd F\\fffdr\u0017\u001A\\fffd\\fffd\\fffd\"\\fffd\\fffd\\fffdl%0A\u0010\\fffd\\fffd\\fffd%23\\fffd\\fffd DGU\\8c2a\\fffdT\b.\\fffd%\\fffd\\fffd\\2ba]\u001E\\fffdM\\fffdh\\fffd\u0002\\fffd,J{\\fffd\\fffd 0K\u0011QM}{!\\fffd:\\fffd\\192\\fffdW\\fffd_\\fffd\\fffdP\u001DHe\u0001L\\fffd\\fffdp\\fffdM\\fffd\u0005Q\\fffd\\fffd\u0003\\fffdU\\fffdZ:\\fffd 8g\\fffd|a\\fffd\\fffd\\fffd\\fffd-\\fffd\u000E\\fffd\\fffd)3\\fffd+\u0017\\fffd\\fffd\\fffd\\fffd\\4f6 f\\fffd\\fffdV\\fffd\\fffd\\fffd\\fffd\u0016\\fffd[\\fffd\\fffd\\fffd.\\fffd,\u001A\\fffd\\fffd\\fffd\\fffdMZ\u000ETA\\fffdT\\fffd-/\\fffd db\u0002o\\fffdj\\744\u001F\\fffdq\\fffd\\fffd aAy2c\\c\\fffd\\fffdM\\cR\\fffd D\\fffdl2E\\4a4\\fffd\u0001\\fffd\\fffdi\\fffd\u0005}f\u0005\\fffd\\fffd\\fffd)j\\723\\fffd\u0017\u0003\\fffd\\fffd\\fffd\\fffd\\fffd\u0007\\fffd 1\\fffd\\fffd+~^\\fffd\u001AK\\fffd,\\fffdt)\\fffdR`\\fffd 8\u001F\\fffd\\fffd\\fffd~<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd)5\u0005.\\fffd E\\fffd 9\\fffd\\0\\fffd\\fffd\\fffd\\fffdx%0D=\\fffdY\\fffd\\fffd\\fffd\\fffdP\\fffd\u0013\\fffd b|\\fffd\\fffdW(\\fffd{\\420\\fffdN\\'+b\u0016\\fffd\\fffdm\\fffd\\fffd au\\5b1P\\fffd_\\fffdW{`\\fffd)\\fffd%09\\fffdW5\\fffd\\fffd F\\fffdY\\fffd\\fffd$\\fffd_)\\fffd\\fffd\\fffd=3oy\\fffd\u0006\u0011\\fffd||\\fffd 9\\fffd\\fffdt2\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\"`XD\\fffd\u0005\\fffdKg\\fffdT%23\\4a4\\fffd d\\fffd$[a2oa\\fffd\u0010\\fffd\u001E\\fffd@\\fffdzQD4i3\u001A\\c\\fffdU\\fffd\\fffd\u0016\\fffd e\u0005\\fffd 3\\fffd\u001F\\fffd\\0\\fffd 6\\fffd\\1f3\\fffd eB\\7ae\\fffd<X\u0005t\\fffd\\fffd&4e%:[\\fffd\\fffd C\\\\\b\\fffd>%0A*\u000F!H\u0016\\fffd\u0014\u0001\\fffd}\\fffd e1\u0015\\fffd 1\u0011\\fffd\\fffd|\\fffd\u0018L\\fffd\\fffd\" -(\\fffd_\\fffdu\\fffd\\fffd\\fffd\\fffd dK\\fffd\u0017\\fffd%\\fffd/Pn\\fffd\\fffd\\fffd\\fffd 8\\fffd-Qq\\fffd\\fffdT8\u0003I\u0001\\fffd/\u0001Ae\\fffd\\fffd\\fffd\\fffd\"M\\fffd&\\fffd&\\fffd/\\fffdG\\fffd 3\\fffd:\u001EV\\fffd\\c\\fffdO\\fffd\\fffd\\fffd\\fffd%23\u001Cu\v2\\fffd(ri*L\\fffd\\fffdY\\fffd\\fffd\\fffd\\fffd\\fffd}\\fffd\\fffd\\3d9 b\u0005\u0014+`+g\\fffd\u0005\\fffdM\\fffd\\fffd\\fffd\\fffd-\u0003\\fffd\v2\\fffdX\\fffd\\fffd\\fffd\\750%0D\\fffd\\fffdQk&\\fffd+Wz\\fffd\\fffd\\fffd+\\63dxR\\571\\fffdz\u0012\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0019\\fffdXV\\fffd*\u001E\\fffd|a\\fffdPx\\fffdSa\\fffd E\\fffdY\\fffd\\fffd 3Z\\fffdP\\fffd\v\\0\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdg\\fffd \\fffd%0D\\fffdK_\u0019\\fffd%F\\fffdhW\\0\\fffd\u0017\u0005|J\\fffd\\fffd\\fffd\\fffd\u0014\\fffd%23\\fffd}e@\\fffd\\fffd\\fffd%0A\\fffd_\u0001\\fffd\\fffd\\fffd\\fffd\\fffd f\\fffd\u0012\\fffd\\fffd\\fffdxi\\fffd\\fffdu\\fffd&\u001A+\\fffd\u0017\\fffduC\\fffd\u0006V\\fffdOG\u0013)8\\fffdJ\\fffd\\fffd\\fffd\\fffd\\fffd 8\\fffd\u0018\u0011\\fffd\\fffdU\\fffdM\\fffd\u0015\\fffd>\\fffd=%090\\fffd\\fffd fc \\fffd\\fffd<\\fffd\\0\\fffd,\\fffdi`\u0015\\b3\\fffd\\fffd f\\fffd\u0015\\fffd\u0017\\fffd\\fffdT\\fffdZ\u0015xU\\fffd\\\\8QK\\'t!\\fffdJ\\fffd\u0016D\\fffdH\\\\\\fffd\\fffd\\fffd.+)\\fffd\\fffd\\fffd\\fffd\u0011l\u0005@\u0015\\fffd\\\\\\fffd\\fffd\b\"\\fffd\u0001b\\fffd dW\\681^\\fffd\\fffd\\7b8H8\u001A\\fffd\\fffd\\fffd\\fffdQh!B\\569p\u0006\u0018\u0013S\\fffd\u0016\u0007\\fffdV\"Bpu\\fffd\u0006/\\fffd\\fffdV(\\fffd\\fffd}\\fffd\u0017`%09\\fffd\u0013\\fffd\\fffd\\fffd\\fffd\\fffd 2$\\fffd\\fffd\u0019\\0 c*\\\\LC3:{gP\\fffdN\\0iJ\\fffd\\fffd\u0002\\fffd\u0015\\fffd\\fffd\\fffd@\\fffd]\u0004t\\fffdZ\\fffd@\\fffd\\fffd\u0005\\fffd\\fffd\u0013T z\\fffd\\fffd\\fffd\u0014\\\\\\fffd\\fffd 5=\\fffd\u0014\\fffdR\\fffd\\fffd{\\fffd\\fffd!\\fffd|\\fffd\\fffdIy%b\\fffdV\\fffd\\fffd=\\fffd\u0012\\563\\fffd\\fffd)\\fffd\\fffd\\fffd\\fffd;Sd\u00149\\fffd\\b4\\fffd\\fffdUp-\\fffd\\fffd\\fffdg%0D\\fffd*\\fffd^y>\u0001\\fffdg_\\fffd/]\\fffdo\\fffd]K\\fffd\\fffd\u001CX\u0005\\fffdK\\fffd\u0006McU\\fffd\\fffdQW\\fffd\\fffd{f\u0003\\fffd\\fffd\\fffd\"\\fffd(L\\fffd\\fffd|\\fffd\u000E\\fffd\\fffdlN\\fffdhsq\\2f6 7\u0001:\\fffdX\\fffd.x\\fffd\\fffd\u0011\\fffd %0A\\fffd\\fffdk\\fffdw\\fffd f\\fffdM2\\fffd}h\\fffd\\fffdlQ\\fffd\\ce6dR\\fffd*(\u0017\\fffdz\\fffd\\'w\\fffd 0K\\fffd<\\fffd 2\\fffd b\\fffd\\fffd\\fffdU>Wz\\fffd\\fffd\\fffdPUw\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\fffd\\fffdM\\464\\fffd\\fffd*W[\\fffd*MN\\fffd\\fffd\\fffdW\\fffdX*\\fffd\u0005\u0017\\fffd\\fffd\u0002\\fffd\\fffd\\fffd\\568\\fffd\\fffdS\u001E\\fffdJ\\fffd:-n\\fffd\\526\\fffd\\fffdT}M|\\fffdW\\fffdSy%0D\\fffd\\fffd%j\u0004\\fffdM\u0017\u001C\\fffd\\fffd\\fffd\\0 D\u0019p\\fffd\\fffd\\fffdt|*\u0017\\20b6\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\\\\u0001\\fffd\\fffdh\\fffd\\fffd,\\c\\fffd\\fffd\\fffdT8\u0001\\fffd\\fffd)\\fffd@+\\fffd\\fffd/_4+\\0\\fffd\\\\\\fffd\u0005\\0\\fffd b7\\fffdi\\fffdZ8\\fffd\\fffd\\'=;q\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffdYuP\v\u0005\\fffd\\fffd\\fffdjuLVAN\\fffd^5\\fffd\\fffd<V\\1ab\\37c\u0018\\fffd\\488\\fffd%0A\\fffd\u0015\\fffdQ&g\\fffd 0 \\fffd\\0Z~\\fffd\\fffd\vT\by_\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd<\\fffd\\fffdW*\\fffd]\\fffd%23eV\\fffd\\fffdm\\fffd\\fffd\u0019\\fffdvq\\5f3m\\fffd 6c\\fffd]|\\fffd a\u0001\\fffd\\fffd\\fffd\\fffd\\fffdm\\fffd\\fffd\\'\\fffdx\\fffd|\\fffd 9\\fffd\\fffd\\fffd$RD\\fffd d\\fffdM\\fffd D\\fffd e\\fffd+\\fffd\\fffd\\fffdO\"Pd%09\\fffd\u001AVe\\fffd\\\\\\fffdq\u0012\\fffd\\fffd\\fffd\\fffd\\fffdjoQ\\fffdSI\\fffd\\fffd\\fffdO\\656xN+\u0011\\fffd\u001C\\fffd\\fffd\\fffd fQ\\fffdN\\fffdU\\fffd\u0005`(\\fffd\\fffd\\fffdzw\\fffd*W\\fffd 96\\fffd\\fffd.^h\\fffd c\\fffd\\fffd\\fffdL\\fffd 5\u0019\\fffd\\fffd\\fffd 7\u0006\\fffd]0\\fffd\u000E\\fffdR\u000Fz\\fffd\\fffd\\\\\\fffd\\fffd\\fffd d:\\fffd%0A\\fffd\\3f8\u0010\u0017.\\fffdx2\\fffd\\fffd\\0\\fffd\\fffdU\\fffdg\u0002\\a5}^\\0k+\u0002z\\fffd\\fffd\"wj\\fffdV\\'F,\\0\\fffd%0A\u0017\\fffd\\fffd>\\fffd\\fffd]\\fffd?\v\u0014\\fffd\\fffdU9a\\fffdh\\fffd)\u0003\\fffdx\\fffd\\fffd\\fffd\\fffd\\2f1%0A\\fffd\\fffd\u0002`\\fffdL-j\\fffd\\fffdX\u0019\\fffdO\u001B\\fffd*\u001D\\fffdy\\fffdV.\\b7\\fffdj\u0005\\fffd+\u0011\\fffd\\771\\fffd\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\\fffd+\\fffd\\fffd\\fffd\\fffd\\c\\fffd%0A@\\fffdyO\v,\\fffd\\fffd\\5ac\\fffdo\\fffdX\u0001Fh{\\fffdx\u0001\\fffd\\fffd%0A\\fffd\u0001\\fffd+\\'\\fffdj\\fffd\u0017\\fffd\\fffdW\\fffd\\217\\fffd\\fffdj\\fffd\\fffd\\fffd\\fffd\u0019\u0017\\4bb\\fffdl\u0001\\fffd 9\u0015~\u0012\\fffdV\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\u001C\\fffd 7\\fffd\\fffdgH\\fffd\\fffd\\fffd\\1548\\fffdI\\470\u000E,Z\\fffd\\fffd\\fffd\\fffdW\u0006Z\\fffd\\fffdr\\fffd@\\fffd\\fffd\\fffd>\\fffd\\fffd\\fffd\\141m+\\fffd\\fffd d|>=\\fffd\\fffd\u0004@z\\fffdsg\\fffdj_\\fffd%0D\\fffdW\\fffd+I\\fffd\\fffd\\fffd\\fffd\\fffdW\\fffd 1\\fffd\\fffd\\fffd\\fffd\\fffdl3\u0015?\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001B\u0006\\fffd\\fffd\\fffd\u0003HW\\fffd\\fffdK\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~>\\fffd\\fffd_\\fffdo\\0\\fffdx=)\\fffd\\fffd{z\\0\\0\\0\\0IEND\\fffd B`\\fffd') no-repeat left top}.p-colorpicker-panel .p-colorpicker-hue{background:transparent url(\"data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\u0011\\0\\0\\0\\fffd\b\u0002\\0\\0\\0\\fffd\\fffd\\fffd\\fffd\\0\\0\\0\\fffdIDATX\\fffd\\fffdQ%0A\\fffd@\\c D\\fffd\\456\\fffd\\fffdz\u0005\\fffd%?<D\\fffd\u0015EK\\fffd\\fffdIA\\fffd\u0012\\fffd\\fffd!y\\fffd\\fffd$,\\fffd~\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffdr\\fffdoE\\fffdI \\fffd 2z\\fffd\\fffd\btb\\fffd\\fffd 9\\fffd%Nmg\u0010<\\fffd c\\fffd\\d0c7*\u0016@\\fffd\\253\u0001U\\\\\\fffd \\fffd 1\\fffd\\a4f\\fffd\\fffd\u000E\\fffd\u0004\\fffd{\\fffd\\fffd\\fffd*\\fffd-\u001E\\fffd\\fffd 5\\fffd\\fffd\u0005\\fffd'x\\fffd\\fffd\\109\\fffd\u0006O\u0002q?TQ_\u000F2\\fffd\u0016_\b\\fffd[\\fffd 1\\fffdU<W\\fffd Am<\\fffdk\u001A<\\fffd\\7dc\\fffd)\\fffd C\u0015\\fffd\\62e\u0013@\\fffd]\\fffd<\\fffd(\u0001\\fffd\\fffd\u0015<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdr\\7da%0D\\fffd\\fffd\\fffdk\\fffdG\\fffd\\c\\fffd 4\\fffd\\fffdx\\fffd\\fffd A\\fffd+\\fffd\\fffd\\fffd DM\u001D\\fffd\\fffd\\fffdS\\fffd 6+*{\\fffd\u0005\\fffd FbV0\\fffd\u001C%\\0\\0\\0\\0IEND\\fffd B`\\fffd\") no-repeat left top}@layer primeng{.p-inputtext{margin:0}.p-fluid .p-inputtext{width:100%}.p-inputgroup{display:flex;align-items:stretch;width:100%}.p-inputgroup-addon{display:flex;align-items:center;justify-content:center}.p-inputgroup .p-float-label{display:flex;align-items:stretch;width:100%}.p-inputgroup .p-inputtext,.p-fluid .p-inputgroup .p-inputtext,.p-inputgroup .p-inputwrapper,.p-inputgroup .p-inputwrapper>.p-component{flex:1 1 auto;width:1%}.p-float-label{display:block;position:relative}.p-float-label label{position:absolute;pointer-events:none;top:50%;margin-top:-.5rem;transition-property:all;transition-timing-function:ease;line-height:1}.p-float-label textarea~label{top:1rem}.p-float-label input:focus~label,.p-float-label input.p-filled~label,.p-float-label textarea:focus~label,.p-float-label textarea.p-filled~label,.p-float-label .p-inputwrapper-focus~label,.p-float-label .p-inputwrapper-filled~label{top:-.75rem;font-size:12px}.p-float-label .input:-webkit-autofill~label{top:-20px;font-size:12px}.p-float-label .p-placeholder,.p-float-label input::placeholder,.p-float-label .p-inputtext::placeholder{opacity:0;transition-property:all;transition-timing-function:ease}.p-float-label .p-focus .p-placeholder,.p-float-label input:focus::placeholder,.p-float-label .p-inputtext:focus::placeholder{opacity:1;transition-property:all;transition-timing-function:ease}.p-input-icon-left,.p-input-icon-right{position:relative;display:inline-block}.p-input-icon-left>i,.p-input-icon-left>.p-icon-wrapper,.p-input-icon-right>i,.p-input-icon-right>.p-icon-wrapper{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-input-icon-left,.p-fluid .p-input-icon-right{display:block;width:100%}}@layer primeng{.p-inputtextarea-resizable{overflow:hidden;resize:none}.p-fluid .p-inputtextarea{width:100%}}@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password .p-icon{cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}@layer primeng{.p-radiobutton{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-radiobutton-box{display:flex;justify-content:center;align-items:center}.p-radiobutton-icon{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0) scale(.1);border-radius:50%;visibility:hidden}.p-radiobutton-box.p-highlight .p-radiobutton-icon{transform:translateZ(0) scale(1);visibility:visible}p-radiobutton{display:inline-flex;vertical-align:bottom;align-items:center}.p-radiobutton-label{line-height:1}}@layer primeng{.p-ripple{overflow:hidden;position:relative}.p-ink{display:block;position:absolute;background:#ffffff80;border-radius:100%;transform:scale(0)}.p-ink-active{animation:ripple .4s linear}.p-ripple-disabled .p-ink{display:none!important}}@keyframes ripple{to{opacity:0;transform:scale(2.5)}}@layer primeng{.p-tooltip{position:absolute;display:none;padding:.25em .5rem;max-width:12.5rem;pointer-events:none}.p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-left{padding:0 .25rem}.p-tooltip.p-tooltip-top,.p-tooltip.p-tooltip-bottom{padding:.25em 0}.p-tooltip .p-tooltip-text{white-space:pre-line;word-break:break-word}.p-tooltip-arrow{scale:2;position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.p-tooltip-right .p-tooltip-arrow{top:50%;left:0;margin-top:-.25rem;border-width:.25em .25em .25em 0}.p-tooltip-left .p-tooltip-arrow{top:50%;right:0;margin-top:-.25rem;border-width:.25em 0 .25em .25rem}.p-tooltip.p-tooltip-top{padding:.25em 0}.p-tooltip-top .p-tooltip-arrow{bottom:0;left:50%;margin-left:-.25rem;border-width:.25em .25em 0}.p-tooltip-bottom .p-tooltip-arrow{top:0;left:50%;margin-left:-.25rem;border-width:0 .25em .25rem}}.customDialogClass .p-dialog{height:auto}.customDialogClass .p-dialog-header{padding:.8rem .55rem!important;background-color:#fff!important}.customDialogClass .p-dialog-header-close-icon{color:#000!important}.customDialogClass .p-dialog-content{border-top-left-radius:0%;padding:0}.p-dialog .p-dialog-header{background-color:#fff!important;border-bottom:2px solid #e5e7eb;padding:12px 16px;font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:space-between}.p-dialog-mask{background:#00000080!important}.p-dialog .p-dialog-content{background-color:#fff;padding:16px}.p-dialog .p-dialog-footer{background-color:#f3f4f6;padding:12px 16px;border-top:2px solid #e5e7eb}.p-dialog .p-dialog-content::-webkit-scrollbar{width:8px}.p-dialog .p-dialog-content::-webkit-scrollbar-track{background-color:#f1f1f1}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb{background-color:#faa762;border-radius:10px}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb:hover{background-color:#faa762}.custom-save-button{background-color:#faa762!important;color:#fff!important;border:1px solid #FAA762!important}.custom-save-button:hover{background-color:#e59550!important;border-color:#e59550!important}.form__input{width:100%;padding:8px;border:1px solid #ccc;border-radius:5px}label{font-size:14px;font-weight:600;margin-bottom:5px}.button-group{display:flex;justify-content:flex-end;gap:10px;padding-top:1rem}button{padding:8px 12px;border:none;border-radius:5px;cursor:pointer}.cancel{background:#ccc;color:#000}.save{background:#007bff;color:#fff}button:hover{opacity:.8}.card-width{width:295px!important;flex-shrink:0}.justify-end{justify-content:end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i5.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DropdownModule }] });
|
|
111
135
|
}
|
|
@@ -123,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
123
147
|
}], tableConfigData: [{
|
|
124
148
|
type: Input
|
|
125
149
|
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9wYW5lbC9jb25maWd1cmF0aW9uLXBhbmVsL2NvbmZpZ3VyYXRpb24tcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvcGFuZWwvY29uZmlndXJhdGlvbi1wYW5lbC9jb25maWd1cmF0aW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBcUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBU2pILE1BQU0sT0FBTywyQkFBMkI7SUFjbEI7SUFiWCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE9BQU8sQ0FBTTtJQUNaLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3hDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pDLGVBQWUsQ0FBSztJQUV0QixJQUFJLEdBQVcsQ0FBQyxDQUFDO0lBQ2pCLFNBQVMsR0FBWSxLQUFL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UyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBNUdVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLG9RQ2Z4Qyx1eFVBaUtXLGd0akREdEpDLFlBQVksK1BBQUUsbUJBQW1CLHN1REFBRSxZQUFZLG9lQUFFLFlBQVksdXVCQUFFLGVBQWUsOEJBQUUsV0FBVyxzUEFBRSxjQUFjOzs0RkFJMUcsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUM7Z0ZBSzNILE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z4LWNvbmZpZ3VyYXRpb24tcGFuZWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRm9ybXNNb2R1bGUsIERyb3Bkb3duTW9kdWxlLCBCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29uZmlndXJhdGlvbi1wYW5lbC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25QYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAsIE9uQ2hhbmdlc3tcclxuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29uZmlnczogYW55O1xyXG4gIEBPdXRwdXQoKSBpc1Zpc2libGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGNvbmZpZ3VyYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZ0RhdGE6YW55O1xyXG5cclxuICBwdWJsaWMgcm93czogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgZW5hYmxlQVBJOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFwaTogc3RyaW5nID0gJyc7XHJcblxyXG4gIHB1YmxpYyBkeW5hbWljRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBjb2x1bW5UeXBlczogc3RyaW5nW10gPSBbJ3RleHQnLCAnaW5wdXQtdGV4dCcsICdpbnB1dC1udW1iZXInLCAnZHJvcGRvd24nLCAnc21hcnQtZHJvcGRvd24nLCAnY2hlY2tib3gnLCAncmFkaW8nLCAncmFkaW8tZ3JvdXAnLCAnZmlsZS11cGxvYWQnLCAndGV4dGFyZWEnXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgY29sdW1uczogdGhpcy5mYi5hcnJheShbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcImluc2lkZWNvbmZpZ3BhbmU7XCIsdGhpcy50YWJsZUNvbmZpZ0RhdGEpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkQ29sdW1uKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY29sdW1ucygpOiBGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm0uZ2V0KCdjb2x1bW5zJykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgLy8gKirwn5S5IEFkZCBDb2x1bW4gRHluYW1pY2FsbHkqKlxyXG4gIHB1YmxpYyBhZGRDb2x1bW4oKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb2x1bW5Gb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgaGVhZGVyOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjZWxsVHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICBvcHRpb25zOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgYXBpVXJsOiAnJyxcclxuICAgICAgdmFsdWVLZXk6ICcnLFxyXG4gICAgICBsYWJlbEtleTogJycsXHJcbiAgICAgIGNsYXNzTmFtZTogJycsXHJcbiAgICAgIGFwaUtleTogJydcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uRm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gXHJcbiAgcHVibGljIHJlbW92ZUNvbHVtbihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zLnJlbW92ZUF0KGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoq8J+UuSBEdXBsaWNhdGUgQ29sdW1uKipcclxuICBwdWJsaWMgZHVwbGljYXRlQ29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuYXQoaW5kZXgpLnZhbHVlO1xyXG4gICAgY29uc3QgZHVwbGljYXRlQ29sdW1uID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGhlYWRlcjogW2N1cnJlbnRDb2x1bW4uaGVhZGVyLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY2VsbFR5cGU6IFtjdXJyZW50Q29sdW1uLmNlbGxUeXBlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGxhY2Vob2xkZXI6IFtjdXJyZW50Q29sdW1uLnBsYWNlaG9sZGVyXSxcclxuICAgICAgYXBpVXJsOiBbY3VycmVudENvbHVtbi5hcGlVcmxdLFxyXG4gICAgICB2YWx1ZUtleTogW2N1cnJlbnRDb2x1bW4udmFsdWVLZXldLFxyXG4gICAgICBsYWJlbEtleTogW2N1cnJlbnRDb2x1bW4ubGFiZWxLZXldLFxyXG4gICAgICBjbGFzc05hbWU6IFtjdXJyZW50Q29sdW1uLmNsYXNzTmFtZV0sXHJcbiAgICAgIGFwaUtleTogW2N1cnJlbnRDb2x1bW4uYXBpS2V5XSxcclxuICAgICAgb3B0aW9uczogdGhpcy5mYi5hcnJheShcclxuICAgICAgICBjdXJyZW50Q29sdW1uLm9wdGlvbnMubWFwKChvcHRpb246IGFueSkgPT4gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICBvcHRpb25OYW1lOiBbb3B0aW9uLm9wdGlvbk5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgb3B0aW9uVmFsdWU6IFtvcHRpb24ub3B0aW9uVmFsdWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSkpXHJcbiAgICAgIClcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb2x1bW5zLmluc2VydChpbmRleCArIDEsIGR1cGxpY2F0ZUNvbHVtbik7XHJcbiAgfVxyXG5cclxuICAvLyAqKvCflLkgQWRkIE9wdGlvbnMgRHluYW1pY2FsbHkqKlxyXG4gIHB1YmxpYyBhZGRPcHRpb24oY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3Qgb3B0aW9uR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgb3B0aW9uTmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgb3B0aW9uVmFsdWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0T3B0aW9ucyhjb2x1bW5JbmRleCkucHVzaChvcHRpb25Hcm91cCk7XHJcbiAgfVxyXG5cclxuICAvLyAqKvCflLkgR2V0IE9wdGlvbnMgRm9ybUFycmF5IGZvciBhIFNwZWNpZmljIENvbHVtbioqXHJcbiAgcHVibGljIGdldE9wdGlvbnMoY29sdW1uSW5kZXg6IG51bWJlcik6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmF0KGNvbHVtbkluZGV4KS5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvLyAqKvCflLkgQ2xvc2UgRGlhbG9nKipcclxuICBwdWJsaWMgY2xvc2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVmlzaWJsZS5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8vICoq8J+UuSBTYXZlIENvbmZpZ3VyYXRpb24qKlxyXG4gIHB1YmxpYyBzYXZlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KHtcclxuICAgICAgcm93czogdGhpcy5yb3dzLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlPy5jb2x1bW5zLFxyXG4gICAgICBlbmFibGVBUEk6IHRoaXMuZW5hYmxlQVBJLFxyXG4gICAgICBhcGk6IHRoaXMuYXBpXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaXNWaXNpYmxlLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJWYWx1ZSBjb2x1bW5zIGZvcm1BcnJheVwiLCB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlKTtcclxuICB9XHJcbn1cclxuIiwiPHAtZGlhbG9nIGhlYWRlcj1cIkVkaXQgQ29uZmlndXJhdGlvbnNcIiAgW21vZGFsXT1cInRydWVcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIiBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgPCEtLSA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBwLTIgYmctd2hpdGUgYm9yZGVyLTJcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtYmFzZVwiPkVkaXQgQ29uZmlndXJhdGlvbnM8L3A+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgYmctd2hpdGUgcC0yIGJvcmRlci0yIGJvcmRlci1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG1iLTggdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyb3dzXCIgY2xhc3M9XCJmb250LXNlbWlib2xkIHctMjRcIj5Sb3dzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiZW5hYmxlQVBJXCIgWyhuZ01vZGVsKV09XCJyb3dzXCIgcGxhY2Vob2xkZXI9XCJyb3dzXCIgY2xhc3M9XCJmb3JtX19pbnB1dFwiIGlkPVwibmFtZVwiIGF1dG9jb21wbGV0ZT1cInJvd3NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVuYWJsZUFQSVwiIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB3LTI0XCI+RW5hYmxlIEFQSTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwiZW5hYmxlQVBJXCIgcGxhY2Vob2xkZXI9XCJBUEkgVXJsXCIgaWQ9XCJlbmFibGVBUElcIiAgYXV0b2NvbXBsZXRlPVwiZW5hYmxlQVBJXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlQVBJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXBpXCIgY2xhc3M9XCJmb250LXNlbWlib2xkIHctMjRcIj5BUEk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYXBpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBBUEkgVXJsXCIgaWQ9XCJhcGlcIiBjbGFzcz1cImZvcm1fX2lucHV0XCIgYXV0b2NvbXBsZXRlPVwiYXBpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQgbWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzJcIj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtNCBtYi04XCI+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIj5Db2x1bW5zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCIgY2xhc3M9XCJjdXN0b20tc2F2ZS1idXR0b25cIj5BZGQgQ29sdW1uPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBvdmVyZmxvdy14LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImR5bmFtaWNGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGbGV4IGNvbnRhaW5lciB3aXRoIG5vd3JhcCB0byBrZWVwIGFsbCBjb2x1bW5zIGluIGEgc2luZ2xlIHJvdyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiY29sdW1uc1wiIGNsYXNzPVwiZmxleCBnYXAtNCBmbGV4LW5vd3JhcCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtNCByb3VuZGVkLWxnIG1pbi13LVsyMHJlbV0gZmxleC1zaHJpbmstMCBjYXJkLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtMiByaWdodC0yIGZsZXggZ2FwLTIganVzdGlmeS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkdXBsaWNhdGVDb2x1bW4oaSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmVlbi01MDAgdGV4dC13aGl0ZSBweC0zIHB5LTEgcm91bmRlZC1tZCBob3ZlcjpiZy1ncmVlbi02MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinpVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZUNvbHVtbihpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgcHgtMyBweS0xIHJvdW5kZWQtbWQgaG92ZXI6YmctcmVkLTYwMFwiICpuZ0lmPVwiY29sdW1ucy5sZW5ndGg+MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKdjFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29sdW1ucyBpbiBhIFNpbmdsZSBSb3cgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTQgaXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5Db2x1bW4gTmFtZTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImhlYWRlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29sdW1uIE5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTIgZm9jdXM6cmluZyBmb2N1czpyaW5nLWJsdWUtMjAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+Q29sdW1uIFR5cGU6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2VsbFR5cGVcIiBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGNvbHVtblR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj57eyB0eXBlIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlQVBJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5BUEkgVmFsdWUgS2V5OjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFwaUtleVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgVmFsdWUgS2V5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsncmFkaW8tZ3JvdXAnLCAnZHJvcGRvd24nXS5pbmNsdWRlcyhjb2x1bW4udmFsdWUuY2VsbFR5cGUpXCIgY2xhc3M9XCJtdC0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+T3B0aW9uczo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdldE9wdGlvbnMoaSkuY29udHJvbHM7IGxldCBqID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJqXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBpdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJvcHRpb25OYW1lXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPcHRpb24gTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zcGFuLTQgYm9yZGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yIGZvY3VzOnJpbmcgZm9jdXM6cmluZy1ibHVlLTIwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm9wdGlvblZhbHVlXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPcHRpb24gVmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtc3Bhbi00IGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRPcHRpb25zKGkpLnJlbW92ZUF0KGopXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zcGFuLTIgYmctcmVkLTUwMCB0ZXh0LXdoaXRlIHB4LTIgcHktMSByb3VuZGVkLW1kIGhvdmVyOmJnLXJlZC02MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRPcHRpb24oaSlcIiBjbGFzcz1cImN1c3RvbS1zYXZlLWJ1dHRvbiBqdXN0aWZ5LWVuZFwiPkFkZCBPcHRpb248L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ3NtYXJ0LWRyb3Bkb3duJ10uaW5jbHVkZXMoY29sdW1uLnZhbHVlLmNlbGxUeXBlKVwiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+QVBJIFVybDo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFwaVVybFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQVBJIFVSTFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5WYWx1ZSBLZXk6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZUtleVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgVmFsdWUgS2V5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yIGZvY3VzOnJpbmcgZm9jdXM6cmluZy1ibHVlLTIwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPkxhYmVsIEtleTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhYmVsS2V5XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBMYWJlbCBLZXlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTIgZm9jdXM6cmluZyBmb2N1czpyaW5nLWJsdWUtMjAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgICAgPCEtLSA8aHIgY2xhc3M9XCJtdC0zIG14LTIgbWItMCBvcGFjaXR5LTEwXCI+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kICBnYXAtNCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkNhbmNlbFwiIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHAtYnV0dG9uIHN0eWxlQ2xhc3M9XCJib3JkZXIgYm9yZGVyLWluZGlnby02MDBcIiBsYWJlbD1cIlNhdmVcIiAoY2xpY2spPVwic2F2ZUNvbmZpZ3VyYXRpb24oKVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgbXktM1wiPlxyXG4gICAgICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkNhbmNlbFwiIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cImJvcmRlci1ncmF5LTQwMFwiIC8+XHJcbiAgICAgICAgICAgICAgPHAtYnV0dG9uIGxhYmVsPVwiQXR0YWNoXCIgbGFiZWw9XCJTYXZlXCIgKGNsaWNrKT1cInNhdmVDb25maWd1cmF0aW9uKClcIiBcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJjdGFfYnV0dG9ucyB0ZXh0LW1lZGl1bSBidXR0b25fdGV4dF93aGl0ZSBzZWNvbmRhcnktY29sb3IgYm9yZGVyLTEgc3Ryb2tlX3NlY29uZGFyeSBub19oaWdodGxpZ2h0IG5vX2hpZ2h0bGlnaHRfc3Ryb2tlIGgtbWF4IG1yLTIgdy02cmVtIGN1c3RvbS1zYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9wYW5lbC9jb25maWd1cmF0aW9uLXBhbmVsL2NvbmZpZ3VyYXRpb24tcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvcGFuZWwvY29uZmlndXJhdGlvbi1wYW5lbC9jb25maWd1cmF0aW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBcUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBU2pILE1BQU0sT0FBTywyQkFBMkI7SUFjbEI7SUFiWCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE9BQU8sQ0FBTTtJQUNaLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3hDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pDLGVBQWUsQ0FBSztJQUV0QixJQUFJLEdBQVcsQ0FBQyxDQUFDO0lBQ2pCLFNBQVMsR0FBWSxLQUFL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bW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZngtY29uZmlndXJhdGlvbi1wYW5lbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBGb3Jtc01vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIEJ1dHRvbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb25maWd1cmF0aW9uLXBhbmVsLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0ICwgT25DaGFuZ2Vze1xyXG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjb25maWdzOiBhbnk7XHJcbiAgQE91dHB1dCgpIGlzVmlzaWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ29uZmlnRGF0YTphbnk7XHJcblxyXG4gIHB1YmxpYyByb3dzOiBudW1iZXIgPSAxO1xyXG4gIHB1YmxpYyBlbmFibGVBUEk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXBpOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHVibGljIGR5bmFtaWNGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIGNvbHVtblR5cGVzOiBzdHJpbmdbXSA9IFsndGV4dCcsICdpbnB1dC10ZXh0JywgJ2lucHV0LW51bWJlcicsICdkcm9wZG93bicsICdzbWFydC1kcm9wZG93bicsICdjaGVja2JveCcsICdyYWRpbycsICdyYWRpby1ncm91cCcsICdmaWxlLXVwbG9hZCcsICd0ZXh0YXJlYSddO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmZiLmFycmF5KFtdKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuIFxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnRGF0YSAmJiBBcnJheS5pc0FycmF5KHRoaXMudGFibGVDb25maWdEYXRhKSAmJiB0aGlzLnRhYmxlQ29uZmlnRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucGF0Y2hEYXRhKCk7ICAvLyBJZiBkYXRhIGV4aXN0cywgcGF0Y2ggaXQgaW50byB0aGUgZm9ybVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRDb2x1bW4oKTsgIC8vIE90aGVyd2lzZSwgYWRkIGEgZGVmYXVsdCBjb2x1bW5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zKCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoJ2NvbHVtbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvLyAqKvCflLkgQWRkIENvbHVtbiBEeW5hbWljYWxseSoqXHJcbiAgcHVibGljIGFkZENvbHVtbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbHVtbkZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBoZWFkZXI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGNlbGxUeXBlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICBhcGlVcmw6ICcnLFxyXG4gICAgICB2YWx1ZUtleTogJycsXHJcbiAgICAgIGxhYmVsS2V5OiAnJyxcclxuICAgICAgY2xhc3NOYW1lOiAnJyxcclxuICAgICAgYXBpS2V5OiAnJ1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbHVtbnMucHVzaChjb2x1bW5Gb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiBcclxuICBwdWJsaWMgcmVtb3ZlQ29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmNvbHVtbnMucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gKirwn5S5IER1cGxpY2F0ZSBDb2x1bW4qKlxyXG4gIHB1YmxpYyBkdXBsaWNhdGVDb2x1bW4oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudENvbHVtbiA9IHRoaXMuY29sdW1ucy5hdChpbmRleCkudmFsdWU7XHJcbiAgICBjb25zdCBkdXBsaWNhdGVDb2x1bW4gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgaGVhZGVyOiBbY3VycmVudENvbHVtbi5oZWFkZXIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjZWxsVHlwZTogW2N1cnJlbnRDb2x1bW4uY2VsbFR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwbGFjZWhvbGRlcjogW2N1cnJlbnRDb2x1bW4ucGxhY2Vob2xkZXJdLFxyXG4gICAgICBhcGlVcmw6IFtjdXJyZW50Q29sdW1uLmFwaVVybF0sXHJcbiAgICAgIHZhbHVlS2V5OiBbY3VycmVudENvbHVtbi52YWx1ZUtleV0sXHJcbiAgICAgIGxhYmVsS2V5OiBbY3VycmVudENvbHVtbi5sYWJlbEtleV0sXHJcbiAgICAgIGNsYXNzTmFtZTogW2N1cnJlbnRDb2x1bW4uY2xhc3NOYW1lXSxcclxuICAgICAgYXBpS2V5OiBbY3VycmVudENvbHVtbi5hcGlLZXldLFxyXG4gICAgICBvcHRpb25zOiB0aGlzLmZiLmFycmF5KFxyXG4gICAgICAgIGN1cnJlbnRDb2x1bW4ub3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIG9wdGlvbk5hbWU6IFtvcHRpb24ub3B0aW9uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBvcHRpb25WYWx1ZTogW29wdGlvbi5vcHRpb25WYWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgICAgICB9KSlcclxuICAgICAgKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbHVtbnMuaW5zZXJ0KGluZGV4ICsgMSwgZHVwbGljYXRlQ29sdW1uKTtcclxuICB9XHJcblxyXG4gIC8vICoq8J+UuSBBZGQgT3B0aW9ucyBEeW5hbWljYWxseSoqXHJcbiAgcHVibGljIGFkZE9wdGlvbihjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcHRpb25Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBvcHRpb25OYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBvcHRpb25WYWx1ZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5nZXRPcHRpb25zKGNvbHVtbkluZGV4KS5wdXNoKG9wdGlvbkdyb3VwKTtcclxuICB9XHJcblxyXG4gIC8vICoq8J+UuSBHZXQgT3B0aW9ucyBGb3JtQXJyYXkgZm9yIGEgU3BlY2lmaWMgQ29sdW1uKipcclxuICBwdWJsaWMgZ2V0T3B0aW9ucyhjb2x1bW5JbmRleDogbnVtYmVyKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuYXQoY29sdW1uSW5kZXgpLmdldCgnb3B0aW9ucycpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIC8vICoq8J+UuSBDbG9zZSBEaWFsb2cqKlxyXG4gIHB1YmxpYyBjbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNWaXNpYmxlLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy8gKirwn5S5IFNhdmUgQ29uZmlndXJhdGlvbioqXHJcbiAgcHVibGljIHNhdmVDb25maWd1cmF0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQoe1xyXG4gICAgICByb3dzOiB0aGlzLnJvd3MsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuZHluYW1pY0Zvcm0udmFsdWU/LmNvbHVtbnMsXHJcbiAgICAgIGVuYWJsZUFQSTogdGhpcy5lbmFibGVBUEksXHJcbiAgICAgIGFwaTogdGhpcy5hcGlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc1Zpc2libGUuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlZhbHVlIGNvbHVtbnMgZm9ybUFycmF5XCIsIHRoaXMuZHluYW1pY0Zvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhdGNoRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVDb25maWdEYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcclxuICAgICAgLy8gQ3JlYXRpbmcgdGhlIEZvcm1Hcm91cCBmb3IgZWFjaCBjb2x1bW5cclxuICAgICAgY29uc3QgY29sdW1uRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgaGVhZGVyOiBbY29sdW1uLmhlYWRlciB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2VsbFR5cGU6IFtjb2x1bW4uY2VsbFR5cGUgfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiBbY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXSxcclxuICAgICAgICBvcHRpb25zOiB0aGlzLmZiLmFycmF5KFxyXG4gICAgICAgICAgY29sdW1uLm9wdGlvbnMgPyBjb2x1bW4ub3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiBcclxuICAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAgb3B0aW9uTmFtZTogW29wdGlvbi5vcHRpb25OYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBvcHRpb25WYWx1ZTogW29wdGlvbi5vcHRpb25WYWx1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkgOiBbXVxyXG4gICAgICAgICksXHJcbiAgICAgICAgYXBpVXJsOiBbY29sdW1uLmFwaVVybCB8fCAnJ10sXHJcbiAgICAgICAgdmFsdWVLZXk6IFtjb2x1bW4udmFsdWVLZXkgfHwgJyddLFxyXG4gICAgICAgIGxhYmVsS2V5OiBbY29sdW1uLmxhYmVsS2V5IHx8ICcnXSxcclxuICAgICAgICBjbGFzc05hbWU6IFtjb2x1bW4uY2xhc3NOYW1lIHx8ICcnXSxcclxuICAgICAgICBhcGlLZXk6IFtjb2x1bW4uYXBpS2V5IHx8ICcnXVxyXG4gICAgICB9KTtcclxuICBcclxuICAgICAgXHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbHVtbkZvcm1Hcm91cCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHAtZGlhbG9nIGhlYWRlcj1cIkVkaXQgQ29uZmlndXJhdGlvbnNcIiAgW21vZGFsXT1cInRydWVcIiBbZHJhZ2dhYmxlXT1cImZhbHNlXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIiBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgPCEtLSA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBwLTIgYmctd2hpdGUgYm9yZGVyLTJcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtYmFzZVwiPkVkaXQgQ29uZmlndXJhdGlvbnM8L3A+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgYmctd2hpdGUgcC0yIGJvcmRlci0yIGJvcmRlci1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG1iLTggdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyb3dzXCIgY2xhc3M9XCJmb250LXNlbWlib2xkIHctMjRcIj5Sb3dzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiZW5hYmxlQVBJXCIgWyhuZ01vZGVsKV09XCJyb3dzXCIgcGxhY2Vob2xkZXI9XCJyb3dzXCIgY2xhc3M9XCJmb3JtX19pbnB1dFwiIGlkPVwibmFtZVwiIGF1dG9jb21wbGV0ZT1cInJvd3NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVuYWJsZUFQSVwiIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB3LTI0XCI+RW5hYmxlIEFQSTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwiZW5hYmxlQVBJXCIgcGxhY2Vob2xkZXI9XCJBUEkgVXJsXCIgaWQ9XCJlbmFibGVBUElcIiAgYXV0b2NvbXBsZXRlPVwiZW5hYmxlQVBJXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlQVBJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXBpXCIgY2xhc3M9XCJmb250LXNlbWlib2xkIHctMjRcIj5BUEk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYXBpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBBUEkgVXJsXCIgaWQ9XCJhcGlcIiBjbGFzcz1cImZvcm1fX2lucHV0XCIgYXV0b2NvbXBsZXRlPVwiYXBpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQgbWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzJcIj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtNCBtYi04XCI+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIj5Db2x1bW5zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCIgY2xhc3M9XCJjdXN0b20tc2F2ZS1idXR0b25cIj5BZGQgQ29sdW1uPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBvdmVyZmxvdy14LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImR5bmFtaWNGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGbGV4IGNvbnRhaW5lciB3aXRoIG5vd3JhcCB0byBrZWVwIGFsbCBjb2x1bW5zIGluIGEgc2luZ2xlIHJvdyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiY29sdW1uc1wiIGNsYXNzPVwiZmxleCBnYXAtNCBmbGV4LW5vd3JhcCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtNCByb3VuZGVkLWxnIG1pbi13LVsyMHJlbV0gZmxleC1zaHJpbmstMCBjYXJkLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtMiByaWdodC0yIGZsZXggZ2FwLTIganVzdGlmeS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkdXBsaWNhdGVDb2x1bW4oaSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmVlbi01MDAgdGV4dC13aGl0ZSBweC0zIHB5LTEgcm91bmRlZC1tZCBob3ZlcjpiZy1ncmVlbi02MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinpVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZUNvbHVtbihpKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgcHgtMyBweS0xIHJvdW5kZWQtbWQgaG92ZXI6YmctcmVkLTYwMFwiICpuZ0lmPVwiY29sdW1ucy5sZW5ndGg+MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKdjFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29sdW1ucyBpbiBhIFNpbmdsZSBSb3cgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTQgaXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5Db2x1bW4gTmFtZTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImhlYWRlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ29sdW1uIE5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTIgZm9jdXM6cmluZyBmb2N1czpyaW5nLWJsdWUtMjAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+Q29sdW1uIFR5cGU6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2VsbFR5cGVcIiBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGNvbHVtblR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj57eyB0eXBlIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlQVBJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5BUEkgVmFsdWUgS2V5OjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFwaUtleVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgVmFsdWUgS2V5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsncmFkaW8tZ3JvdXAnLCAnZHJvcGRvd24nXS5pbmNsdWRlcyhjb2x1bW4udmFsdWUuY2VsbFR5cGUpXCIgY2xhc3M9XCJtdC0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+T3B0aW9uczo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdldE9wdGlvbnMoaSkuY29udHJvbHM7IGxldCBqID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJqXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBpdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJvcHRpb25OYW1lXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPcHRpb24gTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zcGFuLTQgYm9yZGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yIGZvY3VzOnJpbmcgZm9jdXM6cmluZy1ibHVlLTIwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm9wdGlvblZhbHVlXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPcHRpb24gVmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtc3Bhbi00IGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZXRPcHRpb25zKGkpLnJlbW92ZUF0KGopXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zcGFuLTIgYmctcmVkLTUwMCB0ZXh0LXdoaXRlIHB4LTIgcHktMSByb3VuZGVkLW1kIGhvdmVyOmJnLXJlZC02MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRPcHRpb24oaSlcIiBjbGFzcz1cImN1c3RvbS1zYXZlLWJ1dHRvbiBqdXN0aWZ5LWVuZFwiPkFkZCBPcHRpb248L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ3NtYXJ0LWRyb3Bkb3duJ10uaW5jbHVkZXMoY29sdW1uLnZhbHVlLmNlbGxUeXBlKVwiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCI+QVBJIFVybDo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFwaVVybFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQVBJIFVSTFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGJvcmRlciByb3VuZGVkLW1kIHB4LTMgcHktMiBmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS0yMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5WYWx1ZSBLZXk6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZUtleVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgVmFsdWUgS2V5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyIHJvdW5kZWQtbWQgcHgtMyBweS0yIGZvY3VzOnJpbmcgZm9jdXM6cmluZy1ibHVlLTIwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPkxhYmVsIEtleTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhYmVsS2V5XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBMYWJlbCBLZXlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBib3JkZXIgcm91bmRlZC1tZCBweC0zIHB5LTIgZm9jdXM6cmluZyBmb2N1czpyaW5nLWJsdWUtMjAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgICAgPCEtLSA8aHIgY2xhc3M9XCJtdC0zIG14LTIgbWItMCBvcGFjaXR5LTEwXCI+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kICBnYXAtNCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkNhbmNlbFwiIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHAtYnV0dG9uIHN0eWxlQ2xhc3M9XCJib3JkZXIgYm9yZGVyLWluZGlnby02MDBcIiBsYWJlbD1cIlNhdmVcIiAoY2xpY2spPVwic2F2ZUNvbmZpZ3VyYXRpb24oKVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgbXktM1wiPlxyXG4gICAgICAgICAgICAgIDxwLWJ1dHRvbiBsYWJlbD1cIkNhbmNlbFwiIHNldmVyaXR5PVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cImJvcmRlci1ncmF5LTQwMFwiIC8+XHJcbiAgICAgICAgICAgICAgPHAtYnV0dG9uIGxhYmVsPVwiQXR0YWNoXCIgbGFiZWw9XCJTYXZlXCIgKGNsaWNrKT1cInNhdmVDb25maWd1cmF0aW9uKClcIiBcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJjdGFfYnV0dG9ucyB0ZXh0LW1lZGl1bSBidXR0b25fdGV4dF93aGl0ZSBzZWNvbmRhcnktY29sb3IgYm9yZGVyLTEgc3Ryb2tlX3NlY29uZGFyeSBub19oaWdodGxpZ2h0IG5vX2hpZ2h0bGlnaHRfc3Ryb2tlIGgtbWF4IG1yLTIgdy02cmVtIGN1c3RvbS1zYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz4iXX0=
|
|
@@ -109,10 +109,14 @@ class ConfigurationPanelComponent {
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
ngOnChanges(changes) {
|
|
112
|
-
console.log("insideconfigpane;", this.tableConfigData);
|
|
113
112
|
}
|
|
114
113
|
ngOnInit() {
|
|
115
|
-
this.
|
|
114
|
+
if (this.tableConfigData && Array.isArray(this.tableConfigData) && this.tableConfigData.length > 0) {
|
|
115
|
+
this.patchData(); // If data exists, patch it into the form
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.addColumn(); // Otherwise, add a default column
|
|
119
|
+
}
|
|
116
120
|
}
|
|
117
121
|
get columns() {
|
|
118
122
|
return this.dynamicForm.get('columns');
|
|
@@ -185,6 +189,26 @@ class ConfigurationPanelComponent {
|
|
|
185
189
|
onSubmit() {
|
|
186
190
|
console.log("Value columns formArray", this.dynamicForm.value);
|
|
187
191
|
}
|
|
192
|
+
patchData() {
|
|
193
|
+
this.tableConfigData.columns.forEach((column) => {
|
|
194
|
+
// Creating the FormGroup for each column
|
|
195
|
+
const columnFormGroup = this.fb.group({
|
|
196
|
+
header: [column.header || '', Validators.required],
|
|
197
|
+
cellType: [column.cellType || '', Validators.required],
|
|
198
|
+
placeholder: [column.placeholder || ''],
|
|
199
|
+
options: this.fb.array(column.options ? column.options.map((option) => this.fb.group({
|
|
200
|
+
optionName: [option.optionName, Validators.required],
|
|
201
|
+
optionValue: [option.optionValue, Validators.required]
|
|
202
|
+
})) : []),
|
|
203
|
+
apiUrl: [column.apiUrl || ''],
|
|
204
|
+
valueKey: [column.valueKey || ''],
|
|
205
|
+
labelKey: [column.labelKey || ''],
|
|
206
|
+
className: [column.className || ''],
|
|
207
|
+
apiKey: [column.apiKey || '']
|
|
208
|
+
});
|
|
209
|
+
this.columns.push(columnFormGroup);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
188
212
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationPanelComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
213
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ConfigurationPanelComponent, isStandalone: true, selector: "fx-configuration-panel", inputs: { visible: "visible", configs: "configs", tableConfigData: "tableConfigData" }, outputs: { isVisible: "isVisible", configuration: "configuration" }, usesOnChanges: true, ngImport: i0, template: "<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\" (onHide)=\"closeDialog()\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n \u2795\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n \u274C\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".p-overflow-hidden{overflow:hidden;padding-right:var(--scrollbar-width)}@layer primeng{.p-component,.p-component *{box-sizing:border-box}.p-hidden{display:none}.p-hidden-space{visibility:hidden}.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0)}.p-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.p-disabled,.p-disabled *{cursor:default!important;pointer-events:none}.p-component-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.p-unselectable-text{-webkit-user-select:none;user-select:none}.p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}@-webkit-keyframes p-fadein{0%{opacity:0}to{opacity:1}}@keyframes p-fadein{0%{opacity:0}to{opacity:1}}input[type=button],input[type=submit],input[type=reset],input[type=file]::-webkit-file-upload-button,button{border-radius:0}.p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:0;cursor:pointer;-webkit-user-select:none;user-select:none}.p-link:disabled{cursor:default}.p-sr-only{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.p-connected-overlay{opacity:0;transform:scaleY(.8);transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1)}.p-connected-overlay-visible{opacity:1;transform:scaleY(1)}.p-connected-overlay-hidden{opacity:0;transform:scaleY(1);transition:opacity .1s linear}.p-toggleable-content.ng-animating{overflow:hidden}.p-icon-wrapper{display:inline-flex}.p-icon{display:inline-block}.p-icon-spin{-webkit-animation:p-icon-spin 2s infinite linear;animation:p-icon-spin 2s infinite linear}}@-webkit-keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-button-group .p-button{margin:0}.p-button-group .p-button:focus,.p-button-group p-button:focus .p-button,.p-buttonset .p-button:focus,.p-buttonset p-button:focus .p-button{position:relative;z-index:1}.p-button-group .p-button:not(:last-child),.p-button-group .p-button:not(:last-child):hover,.p-button-group p-button:not(:last-child) .p-button,.p-button-group p-button:not(:last-child) .p-button:hover,.p-buttonset .p-button:not(:last-child),.p-buttonset .p-button:not(:last-child):hover,.p-buttonset p-button:not(:last-child) .p-button,.p-buttonset p-button:not(:last-child) .p-button:hover{border-right:0 none}.p-button-group .p-button:not(:first-of-type):not(:last-of-type),.p-button-group p-button:not(:first-of-type):not(:last-of-type) .p-button,.p-buttonset .p-button:not(:first-of-type):not(:last-of-type),.p-buttonset p-button:not(:first-of-type):not(:last-of-type) .p-button{border-radius:0}.p-button-group .p-button:first-of-type:not(:only-of-type),.p-button-group p-button:first-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:first-of-type:not(:only-of-type),.p-buttonset p-button:first-of-type:not(:only-of-type) .p-button{border-top-right-radius:0;border-bottom-right-radius:0}.p-button-group .p-button:last-of-type:not(:only-of-type),.p-button-group p-button:last-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:last-of-type:not(:only-of-type),.p-buttonset p-button:last-of-type:not(:only-of-type) .p-button{border-top-left-radius:0;border-bottom-left-radius:0}p-button[iconpos=right] spinnericon{order:1}}@layer primeng{.p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}}.p-colorpicker-panel .p-colorpicker-color{background:transparent url('data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\\fffd\\0\\0\\0\\fffd\b\u0006\\0\\0\\0<\u0001q\\fffd\\0\\0\\0%09pHYs\\0\\0\v\u0013\\0\\0\v\u0013\u0001\\0\\fffd\\fffd\u0018\\0\\0\\0 cHRM\\0\\0z-\\0\\0\\fffd\\fffd\\0\\0\\fffd\\fffd\\0\\0\\fffdR\\0\\0qE\\0\\0\\fffd f\\0\\0 9\u0007\\0\\0!\\fffd\u0003\\'\\fffdV\\0\\0\\'\\fffdIDATx\\fffd\\fffd}\\2ce\\fffdH\\fffd\\fffd\u001A\\'\\fffd\\fffd\u001E\\fffdO\\fffd;\\fffd\u000F\\fffd 8\\fffdn\\fffd\\fffd]\\755Y\\fffd\\fffd\u000F\\fffd=\u0014\\fffd%\u0014\\fffd\\fffd\\fffd\\fffdG\\fffd\u0002\\fffd%09 \u0010\\fffdN:\\fffd\\fffd(T\u0011\u0015U36w\\fffd/3\\fffd\\fffd f\\fffd 03\\fffd\\fffd\\fffd\u001B=\\fffd\\fffd\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd 6w/\\fffdW=\\fffdx\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\1e2\\fffd\\fffd\\c?\\fffd\\fffd\\fffd\\fffd\\fffdw\u001C\\fffd\\fffdZ\\fffd\\fffd\\77d\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\77f}\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\fffd cf\\fffdk\u0007\\fffd\\fffdy\u0016O\\fffdl@\" \\fffdN\\533z\\fffd\\fffd\\f203\\fffd\\fffd 1\u0012\\fffd\\fffd\\fffd\\0\u0010\\fffd\u0018\\fffd\\fffd\\fffdyvq\\fffd\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\7fad\\fffd\\fffd\\6ce\\fffd\u0006\\fffd\\fffdx<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001F\u001F\u001F\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd_\\fffd\\fffdW\\fffd\\fffd{\\fffdz|\\fffdI\\fffd\\640\\fffds\\fffd^<\\fffd\\fffd/\\\\\\fffdo\\fffd\\fffd\\fffdN?\\fffdo23\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 9?v<\\fffd\\fffd\\fffd\\fffdo\\fffd\\fffdv\u0010\\fffd\\5cf}v\\fffdl;\\fffd\\fffdk\\fffd|>\\fffd\\fffd|\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffdn7\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd d\\7fe}\\fffd/\\fffd\u000F\\fffd~h\\fffd ffm\\fffd\\1035\\fffdV\\fffd\\fffd\\fffd\\7381%0D\u001E\\fffd\u0006=\\fffd\\fffd\\fffd*\\fffd}\\fffd\\\\<\\fffd\\fffd\\fffdm\u0007>\\fffd\\fffd\u0005\\fffd\u0018\u001C\v\\fffdy\\fffdG\\fffd 7\\0\\fffd F\\0r\\0V\u001B@\\fffd\\fffdt\\fffd\\fffd\\fffd\\fffd\\fffd|Z\\ff4d\\fffd\\fffd\\1e3=\u001E\\fffd\\fffd~\\fffd\\fffd\\fffdv\\cf3cf\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffd[\\fffd\\fffd\\fffd_\\fffd?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffdx<\\697\\fffd\\fffd\\289\\fffd\\fffd\u0015\\fffd\u0004\\'o%0A\u0010\\fffdl\\fffd\\fffdr\u0002\\fffd\\0\\fffd\\fffd D\\fffd\\58e\u0013\\fffd\u0017B\\fffdY\\c\u0012\\fffd\u0001\\fffd\\fffd\\fffd\\fffd\\fffd 6xlj\\fffd\\fffd[km\\fffd[k\\fffd\\fffd[\\fffd=\u0004\u0016E\\fffd%23R\\fffd\\fffd\u0007\\fffd\\fffds~\u0002\\448R;\\fffd|\\fffdP}\\fffd\\6de\\fffdg\\fffd\\fffd\\fffd\\fffdn;\u0005\\fffd\\5ef_\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd/\\fffd\\fffd\\5ef_\\fffd\\fffd|\\fffd\u0014X00)\\fffd\\fffd\u0011&\u0004g!\\fffd\\fffd\\'^\\0I\\fffdM\u0015\\fffd a$%0A\\fffd\\fffd\u0001\\fffd\\fffd\\fffd FA\\fffd 9\\fffd\\fffd\\fffd A\\fffd 0\\fffd\\fffd c\\fffd\u0011\\fffdN\\fffd 6\\fffd\\fffd\u0007\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd{\\fffd\\fffd`rw{<\u001E\u0003X\\fffd|>}\\0\\fffdv\\fffd\\fffd\\fffd\\fffd f\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdo\\fffd\u001D\\fffd\\fffd\\fffd\\fffd_\\fffd\\fffd\\5ef\\fffd\\fffdo\\fffdY\\fffd}%0A\\fffd\\fffd\\fffd\"m\\fffd\"[\\fffd\\fffd\\1a0\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd\\fffd DT\\fffd\\fffd.\u0003V\\fffdx\u0003$\\fffd\\fffd\\fffd.`\"\\fffd 4\\0\\519\\fffd\\fffdl\\fffd\u0019\u0002\\fffd 0B\\fffd\\fffd\\fffd\\7fe\\fffd 6\u0004\\fffd\\fffd{?\"\u0016\u0002\v5\\fffd\\fffd~\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffdG\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdv\\fffd\\fffd\u000E\\fffd(RT\u0001\\fffd\\fffdg\"N\\fffdH\\fffd\\fffd*\\fffd\\fffd|\\fffd\b \\fffd\\fffd\\fffd\\fffd\\fffdZ\\d3\\fffd\\fffd 5\\cb\u0011%23z\\0\\fffd\\fffdG\u0001Pf\\fffdr\u0012\\5ca\\fffd\u001A\\fffd\\fffd\u001E\\fffd\u0006x\u001AF,\\fffdQ\\fffd\\fffd\\fffd\\fffd\\fffdv\u001D5@5\\fffd\\6ee\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\\7ff\\fffd\\fffd~\\fffd\\fffd}||\\c\\fffd\\fffd~\\fffd\\fffd\\fffdn\\fffd\\fffd=\u001E\\fffd ffZcU\\fffd 5\\fffd d+\\0\\fffd-\\fffd\\b20e<H *\\fffdNQ\\fffd\\fffd D^\\fffdK\u0006\u0011\\fffdG\\fffd\"\\0!\\fffdu\\fffd/\\fffdK\\fffd\\fffd f`\\fffd\\fffd\\fffd D\\fffd\\fffd\b\\fffd A\\fffd%23za\\fffd\u001AT\\fffdk\\fffd\\fffd\\fffd\\fffd\\fffd,pD,\\fffd\\fffd\\fffd\\fffdo\\7fe%0D!o?~\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd B\\fffd\u001E\\\\\\fffd/\\464 8\\fffd>\\fffdt\u0019\\fffdI\\fffd(\\fffd)@\\fffd 1[!\\fffd\\fffd\u0019\u0015\\fffd\\fffd\\fffd\u001E\\fffd\\fffd\\fffd\u0016\\0\\fffd\\fffd\\fffd\\fffd`\\fffd\bu\\fffdk\\fffd\\fffd&\\fffd\\fffd d{;\\fffd a\u0004\\6d0\\fffd\bL\u0003h\\fffd\\fffd\\fffd\\0\\fffd\\fffd\\fffd\\fffd]S\\fffd\\fffd\\fffd@\\fffd\\fffd\u0001*\u0004\\fffd\\0\\4b7o\\fffd\\fffd\\fffd\\fffd\\1f6\\fffd\u0001,\\fffdP\\fffd\\cO\\fffdZHRs\\fffd e\\fffd\u00118\\fffd 82\\fffd\u0005\\78fGQ\\fffd\\fffd=ff\u0002\u0014\\fffd\u0017X\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 5p\\fffd\u0018t\\fffd\\f0$]u\\fffd\\fffd a\u001B\\c:DKa\\8a9d\\fffdl\\fffd\\fffd\u0013\\fffd=\\fffd\\3f6G\\fffdv\\fffd\\fffd\\6ee\\fffdNT\\fffd\\fffd?>>\\fffd\\fffd\\1c7=\u001E\\fffd\\fffd\\fffdx\\fffd\u0011\u00199bM\\fffd\\fffd,J\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\u0001\\fffd\"\\a2f2 1\\fffdG\\fffd|\u0011y\u001C\\fffdsa\u0007x$\\4154h\\fffd)\\fffd@6\u001Cn\\fffdT\\fffd^\"1\\0 b%23\\fffd\\fffd%0D\\fffd\\fffd\\fffd\\fffds\\fffd d\\fffd%0D-\\fffd\\fffd@\u0007\\fffdj\u0018\\fffdGd\\fffd\u001F\\fffd}\\fffdVv\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffd%0DSt\b\\fffd}\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdw{<\u001EG\\fffd\\fffdh\\fffd\\fffdQ\\fffd\\fffd*\u0003TK\"Oh\\fffd\\fffd\\c\\c897\\fffd\\fffdv\\fffd\\fffd\\fffd\\fffd\\fffd\\4f6\b\\fffdM\\0 FzP\\fffd\\fffd 5\u0006\\c\u001CsS\u0019\u001D\\fffd\u0001\\200\\fffd\\cJ.hn\\fffd 7\\fffdQ\\fffd\\fffd@C a&\\fffd\\fffdWuP\\fffdn\\fffdn\u0002Xv\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\u001Bf\\fffd\\fffd\u0003qd\\fffd>\\fffd}\u0002\u0016g<\\fffdl+\\fffdrHApB\\fffd\\fffdw\\fffd\\fffd\\fffdV\\0\\fffd\u0005\\11c(\\fffd\\fffd m\u0001\\fffd\\fffdy\u0014\\fffd.\u0011p\\fffd\\fffd\u0010\\fffd\\fffd\\fffd.2-\\fffd c\u0016\\fffd\\'\\fffd\\fffd`\u0002 %0DZ\\fffd\u001C\\fffd\\fffd(\\fffd\\fffdj\\0iD)\\736!\\fffd\u0006\\fffd\\fffd\\235\\fffdQh\\0i\\0\\c\\fffd\\fffd\u0003\\fffd\u001F\u001F\u001F\u000E\u0011\\fffd\\fffd\\fffd^\\0U\\fffd\u001F\\'W\\42d\\fffd\\fffd\u001A\\9ca2\\fffd\\ch\u0002\\517\\c\u000F\\fffd\\fffd B^\u0001\\fffdu\\fffd\\fffd\u000EX\\fffd\\fffd\\fffd\u0011\\fffd\\fffd\u0003\\0N\\fffd\\fffd\\fffd\\fffd 9\u0007\\fffd\\fffd\u0013\\fffd\\fffd\u0001L\\fffd\\fffd\u001BF\\fffd\\fffd\\fffdyl{>\\fffd\\fffd\\78dpD\\fffd\\fffd%09\u000E\\fffdt\\fffd\\fffd\u0007\\fffd\\fffd\u000E\\fffd\\fffdG\\fffd~\\fffd\\fffd}\\fffd am\u0007\\fffd A\\fffd\\fffd\\fffd\\73d\\fffd\\fffdp\\fffd\\fffd%0A(-\u0013\\fffdx\\fffdK\u0003\\fffd 4\\fffd\\fffd 2\\fffd\\fffd 2\u001D%\u0004\\fffd\\6b6\u0012\\fffd\"\\fffdi\u0013T\\fffd\\fffd\u001A@\\fffd}\\fffd\\fffd\\fffd\u0001F\\fffd\\fffd F\\fffd\"\\fffd a\\fffd 2\\fffd\\fffd\\fffd\u001C\\fffd F&xh\\fffd\\fffd\\fffd\u0013\\fffd\\fffdY\\fffd 6\"\\fffd\u000E0\\fffd\\fffdn\u000E\\fffd\\fffd\\fffd 4k\\fffd\u000Ek\\fffd%0A\u0003\u0010\\fffdh\\fffd E\\fffd\b \u0015\\fffd E\u0011\\154\\fffd\\'\\fffd\\fffd 2NU\\fffd\\'\"\\fffd\u0001\u0005JG=+\\fffd 2x\\fffd\\fffd CJ\u001BB\u001E\\fffd\u0015\\fffd\u0012\\fffd\\fffd\bL\\fffd-\u0005\u0004\\fffd\\fffdU\\fffdu\\fffd\u0014 \v\\fffd\\fffd\\7cf9{\\fffd[_\\fffd\\fffd\\fffdw%0A\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffdG\\fffd C[\\fffdv\\fffd\\fffd\\fffd\\3c61 E1>c\\fffd\\fffd\\fffd\\fffdP\\fffd\\'\u0002ODm\\fffd\\fffd\u001F\\fffd\u0012E8\u00052\\fffdh\\fffd(\\303\\fffd\u0001E\\fffd\\fffdQ\b\\fffd\u0017\u0001K\\fffd:%09E\\fffd 38\\fffd\\fffdr\\fffdo?a\u0017K\u0001\\fffdU\u001F\\fffdR\\8d33w\u0005\u001D\vH\\fffd\u0007\\fffd=\u001E\u000Fw\\fffd\\fffdn\u0018\\fffdgv\\fffd\\fffdmG\u0007\u0004GO3\\fffd\\4c8U\\fffd`\u0013\\fffdXf!\\43e\\fffd\\fffd\\fffd\u0010\\fffd\\fffd\\fffd\\fffd\\fffd 6p\\fffd\u0011L\u001C\\fffd\\fffd\\fffd\u0002U\\fffd\u0013\\fffdm\\fffd\\fffd 9eyG$\u001A\\fffd\u0003\\fffd\\fffd&\u0011\\fffd\u001D\\fffdN\\0;\\fffd\\fffd\\fffdkX%0A\\0\\fffd\\fffd\\fffduw\u001F\u0002\u001E;\u001A\u001A\\fffd`%0D=\\fffd\\fffd\\fffd\\fffdk\\fffd\\fffd\u0001;,\u000E3\\fffd\u0010XQ%09\\fffdR\\fffd\\fffd,\"%09cRQ!\\fffd)O\\fffd\\fffd)@\\fffd\\fffd\\fffd\\fffd 3\u0016\\0\\fffd\\fffd 1\\fffd&g\\fffd\u0007\\fffd\\0\v4\\fffd\\27b\\fffdl\u000FLOI\\fffd\\0\\fffd\u0011\\fffd\u0018d\\6fe\\fffd@\u0018\\fffd\\fffd+w}\\fffdg\u001B\\fffd f\\fffdX{\\fffdr\\fffd\u0018\\fffd\\fffdv\\fffd\\fffd|h*\u0004\\fffd\\0\\fffd\\fffd\\fffd_T\\fffd 4\u0003L\\fffd\\761\\fffd\\fffd\b\\fffd\\fffdkG\\fffd\\fffd[\u0007\\fffd\\fffd\\fffd\u0006\\fffd\u0003?\u001F \\fffd\\fffd\\fffd\u0014\\fffd 8%23\\fffdHo\u0011\\fffd 5\\fffd_\\fffdw\\0\\fffdO\u0004\\fffd 1\u001E\u0004,n\\fffds\\fffd\\fffd 9\\fffd\\fffd\\fffd)\\fffd\\fffd\\fffd\u00151\\fffd\\fffdx\\fffdH\\fffd\\fffd\\0\\fffd]C%0D\\fffd\\fffd 9\\fffd\\fffd\\fffd a3\\fffd%23\\fffd\\0\\fffd\\fffd[?\u001Cx,V\\fffd\\c;+\u000E\\\\|\u0011\\fffd\\fffd)5\u0006\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\u0018\\fffd\\fffd\\452P\\fffd\\251OR+\\fffdL8JBC\\fffd\\fffd\\fffd 1a\u0013\\\\\\fffd 1\\fffd\u0006\bt\\fffd\\fffduA\\fffd\\708g\\0\\fffd%23\u0019\u0018\\fffd%09\\fffd\\13b C\u001B\\320\\fffd\u000E\\fffd\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffdx\u000E\\fffd\\fffd\\fffd\\fffd\\686\\fffd\\fffd%23\\fffd 6\\fffd 8\\fffd\u0012[\\fffdGd\\fffd\u00028S\\fffdL_)\\fffd[=\\fffd\\fffd\u000E\\fffd\\fffd\\fffd>\\fffd@\\fffd\u001F\\eda0IE}\u001BL\u001C\\fffd D/\\fffd\\fffd dZ2H&\\fffd\\fffd E\\723\\fffd\u0010\u0018\\fffdln\"5\"-np\\fffd\\fffd F\\fffd\\fffd\\3b6SZC\\fffd\u0014\\fffd f\\0.\\fffd\u001B:P\\fffd\\fffd\\fffdl\\fffd\\fffd@\\fffd\u001F\\fffd\\fffd\\fffd\\6a7\\fffd\\fffd\\430U`\\fffd\\fffd]\\fffd\\\\Y\u0011-\u0002P\\fffd\\fffd\\fffd\\fffd b\\fffd\\fffd\\fffd\\fffdXD\\fffd.\\fffd 9\u0017\\fffdO\\fffdu\\fffd\\fffd\u0016\\fffd\\fffd\\fffd\\fffdX7\\fffd\\fffd\\fffd\u0003\\fffd 5\u0002\\fffd 6a1t0E\u0011dR\\fffd\u000F\\fffd\\fffd\\fffd 3\u0004{\\fffd c\\fffd\\fffd\\fffd\\fffd\u0004b\\fffd\\fffdlX\\1b9 D,\\fffd\\fffd*-& \\fffd\\fffd\\fffd\\fffd%09\\fffdy@\\fffd\\fffd\\fffdvn\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd-\\fffd\\fffd\\fffd\\fffdLX\u0003\u0017\u001D\u0015\\fffd\\c362\\560x\\9f23\\740\\fffd%0A\\0\\fffd\u001A\vg\\fffd 86\\fffd=\\fffdO7\\fffd\\fffd\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\u0003\\fffd\\fffdn%\u001C\u0019\\fffd\\fffd\\432\\fffd D\\fffd%0A\\fffdg\\fffd 5\\fffd\u00120d%\u0016\\fffdT\\fffdRJD\\fffd\"\\fffd;\\fffd\u0006Aq\\fffdj\\fffd\\fffdY\\fffd\\fffdp\\fffd\\fffd\\fffd\\fffdV\\fffd\\fffd^\\fffd\\fffd\u0003\\fffd d\\fffd\\fffd 8*\\fffdZ\\fffd\\0@\\fffd\\fffd Zu(\\fffd\\c \u001ETH\\fffdx\\fffd 6\\cR\\fffd\\fffdm\u001Cs\\fffdt%23J\\fffdN\\fffd\u001B\\0\\fffdl7\\fffd\"V5Z\u00118<q\\fffd%23\\fffd 5u\\fffd@S\\fffd\\fffdP\\fffd(\u001F\u0003%23\\fffd*Bg\\fffdS\\fffd 7z\\fffd\\fffd\\fffd aL\\\\ \\fffd D\\fffd\\b92b:Lv8m\\fffd\\fffd\u001D\\fffd\\fffdN\\fffd\\fffd\u0007\\fffd\\fffd~\\fffd\\ced08%\u001Ep\\d3d2\\fffd\u001E\u0001\u001D\\fffd\u0006O\\fffd!\u0005\u0002\\6d4\\fffd\\fffd\u0005\\fffd\vr?\\232\\fffd\\fffd|X\u0012`G\\\\\\fffd\\fffd\u0001\\fffd\\fffd\\fffd\u0005\\fffd\\fffd D6AiFB\\fffd\\fffd\u0004\u001B\\fffd\\fffd\\'\\fffd\\fffdhnP\u000E|\\fffd%{\u0004%0As\\fffd^XXv\u0010\\fffd\\fffd\\fffd|\\fffd%0D\\fffd\u0016\\fffd\\fffdN\\fffd\\fffd C\\fffd\u001Ct\\fffd\\fffd\\fffdU0\\fffd 8\\fffdg\u0014\\fffd\\fffdR84\\fffdN\\fffd\\fffdj=0\\fffd\\fffdv\u0003\\fffd\\fffd\\fffd\b\u0015i\\fffd\u0006\\fffdM\\fffd\vk\u0019\u0004\b\\fffd C\\fffdUu\u0015\u0011Y\u0007\u0005\\fffd\\525\\fffd\"\\fffd%09m\\fffd\\fffd a\u0013\\fffd\\fffd%09\\fffd\u0001=\\fffd\\fffd\\fffd>\\fffd\u0019\\fffd\\fffdT$\\fffd\\8166(D\\fffd F\u0011kc*\\fffd%23%0DRacZ\\729\\fffd-\u000E\\fffd\\fffd\\fffdp\u0007S\\fffd f\\fffd\\164d\\fffd\u0012\\fffd\\fffd\\fffdJ:E\\fffdj\\fffd%\\fffd E49\\fffdL\\fffd\u0005\u000E\\fffd\\fffdY!\\fffd\\'},\u0006\u001A\u001B\\fffd\\fffd\\cp\\fffd\u001A\u0003\\fffd\\fffd\\fffd\\fffd\\fffd@@\\fffdJc\\fffd\\fffd@\\fffd\\fffd\u001F\u001F\\fffd ?\u0006\\fffd\u001DA7<*\u0006]\\fffd\\fffd 5\\fffdt48\\fffd\\fffd cB\\fffd\\fffd\\fffd\u0019\\fffd,\u0001U\\fffd\\fffd-\u0002\\fffd\u0005`\\fffd 3\\fffd\u0002\v\\fffd\\fffd\\5dc 3\u0016*\\fffd 8\\fffd\\fffdM\\fffd\\fffd<\u0002\u001B\u0014\\fffd%2309\u001B\\fffdH\\fffd\\fffd\\fffd]\\fffd\\fffd\\fffd\\fffd\u000E\\fffd;e\\fffd\u001B\\fffd\\1a0\\fffd\u0015\\0\\fffd!%0A\\fffd\\fffdwJ\\0\\fffd}+\u0004\u0013\\fffd*\\fffd\u001B\\fffd\\fffd\\fffd\u0017\\0 7\\fffd f\\fffdg\v y2\\fffd!r\\fffd%23\\fffd D\\fffd\\3c0v\\fffd\\fffd\u0011\\65e\\fffdRN\u0016\\fffd\\fffd\u0016M4\\fffd\u0019\\fffd\u0003\\fffd\\fffd\u0006|\\fffd\\fffd%0A\\7c7Z\\a939\\fffd\u001Ey\\fffd\u001EPP\\fffd\\fffd\\fffd\\fffd 9b\\fffd\\fffd\\fffdX\u0017\\fffd@\\fffd\\fffd%\\fffd\\fffd\\fffd\\fffd\\fffd E\\fffd\\fffd d\\fffdKDc\\fffd 8\\fffd dQ\\fffd\u0010\u0017\\410\u0016\u0003\\fffd\\fffd\\227\\fffdP\\fffdx\\fffd\\fffd\u001D\\fffd\\fffd\\fffd-\\fffd%0Aw0cI\\fffd\\fffdy\\fffdP\u001B\\fffdp\\fffdg\\fffd\\1e7\\206\\fffdr\\406 \\fffd\u001E\\fffd\u000E-3\u0016\\fffd%0D\u0013\\fffd\\fffd E\\fffd\v8\\fffd\\fffdR\\0$ps\\fffd E\\fffdVMQ\\fffd\u0010\\fffd 3-e\\fffd\\fffdoA\\fffd\\fffd\u0016\\fffd\\fffdT\u001F\u001F\\fffdh\\fffd%0AB\\fffd c%09\\fffd c\\fffd\u0006\\fffd\\fffd\\fffd\\fffd@\\fffd\\fffd\\fffdz<\u001E\\fffd%0A\\fffd B@\\fffd\\5415\\fffd\\fffd\u000Ei\u0012\\5cb\\fffd\\fffdo\\fffd\\fffd\\fffd%0AK`\"1\u001F%09\\fffdW(\\3c2\u0006\\fffd\u0019x<\\fffd@\\fffdKwL\\fffd\u0013J<\\fffd=\\fffd\u0010\\fffdN\\fffdI\\fffd\\fffd\\fffd_\\fffd\\fffd\\fffd\\fffd\u0019\\fffd\v@?&\\fffd\\fffdQc96\\fffd%0D\\fffd Bz\u001B6\\fffd\u0018Kl\\fffd\\fffd\\fffdjRk\\fffd\\fffd\\0\\517\\fffd 1b\\fffd\\fffd\u0006\\fffdL\\fffd c\\fffdh\\fffdzG\\fffdz\u0001\\fffd\\1b5\\fffd\u0004H\\c^\\fffd\\fffdW\\fffd\\fffd\u0005B\u001C\\fffd-\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd:E/\\fffd\\fffd^\\fffd\\fffd\\4a1\\fffd}2A\\fffd\u0010\\fffd\\0\"\\'*<(%0D%23\u0014\\0\\fffd\\fffd\\fffd\\fffd\"\\fffd\\fffd\\293!z\\\\W\\fffdTh\\fffd\\c aE[*\\fffd\\fffd\u0017\u0001Id\u00195^@\\fffdm\\fffd\\1ee\\fffd\\fffdY\\fffdr\\1f8\\fffdX\\fffd\u0006\\fffd\\fffd \u0007\\fffd\\fffd\\fffd eC\\\\\\fffd 1\\40f\u0012\\fffdh8\u0013\\fffd\\fffd\\fffdMQ!f\\fffd\u0004\\fffd\\fffd\\fffd\\fffd\\fffd A6\\fffd\\fffd\\fffd e*3\u0004\\fffd\\373\\fffd%09\\fffd\\fffd\u001A\\fffd\\fffd\\fffd\\7dd\\fffd\\fffd_i\u001B\\fffd%0DLM\u0014\\fffd\\fffd\\245Q{\\fffd\\1ad\\fffd%23\\fffdp\\fffdQY\u0014Q4\\fffd\\fffd*\u0002\\fffd E\\fffd\\fffd 1\\fffdm\b:\\fffd\u0002\\fffd 6t\\fffd\\fffd\\fffd:\\fffd~Fd\":D\\fffdw\\fffdn\\fffd\u001Bv%23\\fffd\u0001\\fffd\\ecG\\fffdl{\\fffd\\fffdG+\\fffdX\\fffdnS\\1c1\u0005QLE=W\\fffd-\\fffd 2@\\fffdl\\fffd\\fffd A\\fffd\\fffdz\\fffdR\u001D\\fffdm\\fffd\\fffd\\fffd\\fffdh8\\fffd(\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\u0001\\fffd/\\fffdn\\'K\u0002t\\fffd\\fffd 4ee h\\9f3e\\fffd\\fffd\\fffd\\fffd at\\fffd EKJ\u0013\u0019\\fffd\u0005`\\fffd\\fffd\b\\fffd\\'\\fffd E\u0007CF\\fffdlZ\\fffd\\fffdp\\fffdh\\fffd E\\fffd\u001A\\fffd\\66e 4V\\fffd\\fffd\\fffd%\\fffd\\fffd\\'\\fffd+\\fffd\\fffd\\fffd\u001E,\\fffd\\fffd\v\\fffd!-\\fffd\\fffd\\fffd\\fffd=\\fffd\\fffd\v\\fffd\\fffd/\\fffd 28z\u0011%0D\\fffdI\\fffd\\fffd]\\fffd\bj:\\56cw*\\fffd\u001F<\\fffdG\u001Eh,~\\fffd\\fffd\\fffdK\u0003E\\fffd\\fffd(\\3d5\\fffdN\\fffd\u0007K1\\fffd\\fffd C\\fffdO\\fffd%0A&Y\\fffd\\fffd>\u001C\\fffd-8\\fffd\\']\u00056\u0004>o\\\\;\\fffd\\fffdM\\fffd\u0002$\\fffd)\u0016\\fffdT\\fffd\\fffd\u0015\\fffds\\fffd 5\\fffd|P\\fffd\\1fe`-\\fffd\\0 FF\\fffd\\fffd\b.\\fffd\\fffd`\\fffdK1\\fffdq\u0001=\\fffdX\\fffd\u0016\\fffd\\fffdL\v\\fffd\u0006\\'\\fffd\\fffd\\fffd\\fffd)Z\u0002\u001D\\fffd\\fffdp\u0012\\fffd\u0001M\\fffd 1\u0010\\fffdl%23\\fffd\\fffd:\\fffd\\fffdha\\fffd\\fffd\\fffd\\fffd\\fffd\u001C\\fffd\\fffdV\u0018\u0001`%\\fffd\\fffd\\cr\\fffd\\fffd\u0014\\fffd 1\\fffd\u0016\\fffd\\fffd\u0002-\\fffdR!;\\fffd{A\\fffd\\fffdy\\fffdHg@o\\fffd\\0\\fffd\u0004\u0005Z%0A\u0018^ +D\\fffd\\fffd~,SV\\fffd\\fffd%0A\\fffdn8\\fffd)D&\\fffd\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd\\fffdq\\fffd\\fffdmI\\fffd\u0007-1\\fffd^\\fffd\\360\\fffd\"W\\fffdK\\fffd\u00010\\fffd\u0014\\\\\\fffd\u0004\\fffd)]\\49fRB?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0006*\\fffd X\\fffdm\\fffdP&\\4d6\\fffd F\\fffd\\fffd\\fffd\\fffdG\u0006\u0007\\fffd A\\0\\fffd\\fffd\\fffd(\u0012=-\u0004\\fffd\\fffdqS\u0004\u00137O\\fffdR\\fffd<3k\\fffd\\0 Fs%0DG\\fffd_&\\fffd\\fffd}hI\u0018\\fffd\\fffd\\fffd*5Mt0\\fffd\\fffd 2\\fffdh\u001E!w%\\fffd\\fffd~\\fffd\\fffd\\fffd}hU \\fffd\\fffd\\fffd\\'\\fffd\u001E\\fffd 2\\fffd\u001B\\fffd 5v\\fffd\u000Fw\u001DW\\fffd a\u001A\\fffd)\\fffd\\fffd\u0012\\fffdw\\fffdI7:\\fffd\u0016\\fffdz\\70f\\fffdX\\420\\fffd\\a8}f\\fffd\\fffd\\fffd\\4da\\fffd C\\fffdW\\fffd;j\\fffd\\fffd/S\u0016\u0003\\4df\\fffdx\\fffd F>\u0017\\fffd\\fffd FEh\\fffd\\fffd\\fffd D\b\\fffdT\u001ED\\fffd\\fffd\\0\\36d 2\\fffd)rC F,%23?%0A\\fffd\\fffd Fm\\fffd\u0018\\fffd\u001C\\fffd\\fffd c\\fffd\\fffdX\\fffd\\fffd\\fffd[\\fffd)\\fffdJ\\fffd\\fffd\\aa a\u001A\\fffdlR%0D\\fffd\\fffd|Iw\u0001x,\\fffd\u0002G\\742\\fffd>K(2+\\fffd\\\\\\fffd\u0016\\fffdw\\fffd\\fffd DGe\u0011\\fffd Ep\\439\\fffd\\d153\\fffd\\507\\fffd 9fw\\fffdq\\fffd\\fffd\u0012\\fffdo\\c@<\\fffd\u0003\\fffd\\fffd\\0+[\\fffd\\fffd&\\fffdS\\fffdy\\fffd\\fffd\u0016\\fffdo.V\\0\\fffd\u0011Jg%09\\fffd\\542\\fffd:\u0015\\fffd\\fffd\\fffd 3\\fffd\u0014\\fffdv\"a4\\fffd 4\u001BD%09\\fffd\\fffd\\125\u001B\\fffd\"\\fffd\u001C=\\fffd%09t\\fffd\\fffd\\fffd\\fffd++\u000F\\0\\fffd?\\fffd\\fffd\u0006\\fffd:i\\fffd\u0011\\fffd\\fffd\\fffd\\55d2\\18a\"\\fffd,\\fffd]\\0\\fffdh%23\\fffd.\u0006\u0019\\fffd\\fffdq\u0014\\fffdR\\fffdV\\fffdz\u0003\u0007\\fffd Df\\fffd 4\\fffd\\fffd\u0005\\173\\fffd\u0010\\fffd~g \\fffd\\fffd\\fffd\\fffd\\fffd_JC\\fffd\\fffd\u001B\\356\\fffd(\\fffd\\fffdo\\fffd\\fffd\\10b\\fffd?0\\fffdrU\\fffd%\\fffdU\\fffd b!\\fffd\\fffd\\fffdq\\fffd fU\\fffd\\2e5\\fffd=\\2e8QD3~=r\\fffdM\\462z\\fffd\\fffd e[\\fffd B\\fffd\\fffd\\fffd\u0001\\fffds\\fffd$a`\\fffd\\fffd\u0017g\\fffd\\fffd\\fffd\\fffd 85\\fffdm\u000E^\\\\\\fffd\\fffd[\\fffd%0D\\fffd\\fffd 6n\\fffd\\fffd\\fffd\\'&\\0\\fffd\\fffdK\\fffd\\fffd\\0\\fffd\\fffd\u0011\\fffd eQ%09\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\689\\fffd\\fffdr\\5c9\\fffdN\\fffd\u0005-\\fffd a\\fffdqQ%0D\\fffd\\fffd(\\b2H\\fffd\\fffd D\\50a\\fffd\\fffd\\fffd%0D\\fffdLP\\fffd e\\fffd\\fffd\\fffd\\fffd 6\\fffdz\\fffdg\\fffdl!3T\\fffd~\\fffd@g\\fffd!\u0012\\fffd\u0016L\\fffdp%\\fffd\\fffdmKT&xq\\fffd%098\\fffd\u000E\\fffd\\fffd\\fffd\\606\\fffd\\fffd.Z\u001Dv\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\u001FN\\fffdw\\fffd\\fffdwv\\133\\fffd?\\fffd\\fffd\")\\fffdt2Xt\\fffd(\u001AMh0\\fffd\\fffd\u0015i\\c\u000F\\fffdk\\fffd\\fffd*\\fffd D\u0004\\fffdL\\fffd\\fffdp\\5d5\\fffd\\fffd\\fffd\u0019\\fffdJ\\fffd\\fffd~\\fffd\u0005\u0006\v\\5e7 cPM\\fffd\u0014\\fffd\\fffd\\fffdp1J\\fffd|\\fffd\\fffd\\5f2\\a4\\fffd 8\\fffd F\\fffd\\fffd d\\fffd\\fffd\\262\\fffd\\8a72\u0002E\\fffd\\fffd b\\fffd\\fffd\\fffd)\\fffd b\u0002@\\fffd 8Lw\\fffd\\fffd$\\310 9\u0001\\fffdO2\u0003\\fffd\\c193>\"Q\\fffd\\fffd{\\fffdUo6A\\fffdNEg\\fffd\\fffdO9\\fffd\u0012X\\fffd\\fffd\\3a2Rd+\\cg=\\fffd\\fffd\\fffd\\fffd\u001E\u0002dL\\147\\fffd 2\v|,\\fffd 271\\fffd\\fffd\\fffd\\fffd\\fffdu\\fffd\\fffd\\fffd\u0010XL\u0015bf\\fffd)+B\\fffd%23\\fffdmF\\0\\fffd\\fffdO\\fffd\\fffd\\0\\fffd\\fffd\\fffdt|\\fffd\\fffd]|\u0007\\fffd\\fffd\\fffd \\fffd;\\108c4f\\fffd\\fffd;\u0015\\fffd\\fffd\u001A\\fffdR;\\fffdJ7j\\fffd\\fffd\\fffd>\u0018\\fffd\u0006\\fffd\u001D\\fffd\\fffd\\fffd\u0001\\fffdyf\\fffd\\fffd\\fffd \u001B\\fffd\u0010\\fffd B\\fffd\\fffd\\fffd\u001E\u0019\\fffdQD\u0013 \\fffd\\fffd<\\fffd%23\\fffd`\\fffd\\fffd 7A\\fffd\\fffd,\\fffd\\fffd>\\fffdg\\fffd b\\fffdr\\fffd\\6f3\u0015\u001DYb(\\fffd!+\u0004O\\17b\\fffdJ%09(e\u0017gFwB\\fffd](\\fffd%23\\fffdj+N\"]4\\fffd>\\fffd=a?\\fffd@\\fffd\\fffd\\382e\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\vo\\54b%\u001D\u0013\\fffd\\fffd\\fffd\\fffd\\fffd D\\fffd\u0003|Js\\fffd\\586\\fffd\\fffdZk\u000E\\fffd\\fffd 0J\\fffd\u001A\\fffd\\6a6\\fffd\\fffd<\\fffd\u0002\\355\\fffd\u000El%09\\fffd\\fffd|\u0005\\fffd\\fffd b\\fffd\u00065\\fffdw\\fffd%\\fffd{\u0015d \\fffd;\\fffd\u001D\\fffd\\fffd\\fffd\\fffd D\\588\\fffd}\v\\0\\fffdhE\\fffdN\\fffdnJ7\\fffd~\\fffd\\fffd\"(W\u000E\u000F+\\fffd\u001B^\\fffd\u001F\u0012\u0003U\\fffd D\\fffdV\\fffd\\fffd\\271\\fffd br\\fffd b_T\\fffd\\fffdh\u000E\\fffd\\fffdrDwJ\\fffd\\fffd \\fffd\\fffd\\fffd&\u001A\u0003\\fffd\\fffd_I\\fffd\\fffd\u0014\\fffd\\fffd\u0007\\fffd\\fffd\\fffd@fs\u0013\\53c\u00015\\fffd\\fffd\\fffd\\fffd_\u0014\\fffd\\fffd\u0014x\u0012\\fffdm\u0012\\fffd f\u0013S-\\fffdyc*\\c3\\fffd+\\'\\fffd\\fffd\\fffd\\fffd\u001B\\fffdNL\\fffd\\\\-c4\\fffd b+\\fffd\\6a0>7\\fffd\\490\\fffd,\\fffd\u0012MQ!\\fffd\\fffd,\\fffd\\fffd\\fffd\\fffdNY\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdx<\u001A\\fffd \\fffd-\\fffdX\u0015K!\\\\p6\\fffd 5\u0016g\\fffd(@N\u0001\\fffd\\0\\fffd(Z\\fffd\u0019:8w\\fffd\u0005\u001A\\fffd\\fffd-\\fffd\\fffd\\fffd 1\\22epe\u00130\u0010\\fffd/w\\fffd\\fffd\u0006\\fffd\u0006\\fffd\\fffd\u0016u\u001A\\41cQ\\fffd\\fffdtZ\\fffd\\fffd 0\\fffd~n\\fffdUc2\\0 Fkf\u0005\\fffd F\u0013=@\\fffdk\\fffd E5\\fffd\\fffd\u001A\\fffd 0sY\\fffdOL\\fffdp\\fffd$\u0011\\fffd\v*\\6e6\u0012Pd-\\fffd\\fffd\u0011\\fffd Dq\u0017*\\fffd=V\\fffd\\fffd\\218\\fffd 2\\fffdS\\fffd%{\\fffd\u0015\\fffd=\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd~\\fffd\\fffd f\\fffd(\\fffd\u0014\\fffd\\fffd\u0019\\39eP\\fffd\\fffd D{E\\333w\\fffd\u0012\\fffd\\fffd\u0018\\fffd\\fffd\\fffdM\\fffdj\u001BL\\fffd 8E\\fffd\\fffd\\fffdqvJ\\fffd\\1d9\\fffd\\fffd\\539\\248\\fffd\u000E\u0015~\\fffd_e+\\fffd\\44c 4\\fffd%\\fffdTC\\fffdl{EO\\fffd\u0017\\fffd\\fffd\\fffd\\fffd\u0006\\fffd 6\\fffd{u0?\\fffd 0B\\6cc\u0016\\fffd 5\u0004%0A\\fffd bE?\\fffd\\fffd\\536 2\\fffdV\\fffdV\u0004%0A\\55c\\'\\fffd;\\fffdX\\276hMv\v\\0\\fffdHc\\fffd\\fffd\u001F~%0A\\fffd\\fffd\b5\\fffd&\\fffd B\\fffd\u0006\\fffd\\fffd\u0006\\fffd&:\u0014\\fffd`\\fffd{\\fffdP\\fffdG\u0011*\\fffd%23^\\fffd\u001B^\\fffdj?\\fffd(1\u0015\\fffd 7E\\fffd*\\fffd E\\fffd\\fffd\\fffdx\\fffd>\u0010\\fffd\\fffd%\\fffd\\322\\fffd d\\fffd\\fffd\\10aW\\fffd)\\fffdQ\\fffd\\fffd`\\fffd 8\\fffd\\fffd \\fffd\\fffd Ep\\fffd_)+\\fffd\b\\fffd\v%\\fffd\u0019\\fffd\u0015\\fffd(\\fffd 3xO\u0018\\fffd\\412\\fffd\\fffdj^\\fffd\"Z\\fffd\\fffd\u001C\\fffd-\\fffd\\fffd\\489\\fffd\u000F\\fffd\u0013\vq\\fffd\\fffdv>\\fffd 2R\\fffdT\\fffd\\fffd\u000E4\\fffd\\fffd\\fffd\u0014\\fffd|\\fffd-\\fffd 0!u\\fffd+T\\fffd@\\fffd\\fffd\\fffd%\\fffd\u0011Qa\\fffd\\fffd\\fffd\\fffdx\u0017\u0011\\292\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdMe\\fffd\\fffdp\u0017\\fffd\u001A\u0005\\fffd-0_\\fffdM\\fffd\\fffd-1 \\fffdYOD\\fffd\\fffd e\u001D\\fffd\\fffd F\\fffd\u0010\\fffd 7\u0017\\fffd\\fffd\\fffd]\\fffd 8\\fffd-\\fffdiw\\fffd\\fffdl\u0004\\fffd 2\\fffd\u0005\\fffd 6\\fffd\u0016\\fffdH\\'\\a456,Y\\fffdu\\fffdj\\fffd\\fffd\\fffd\\fffd 3\\fffdwU\\fffd F\\fffd_L\\fffd\\fffd\\fffd\\fffd&\u0013<fe/y\\fffd\\fffd\\4deQe\\fffd%0A\\fffd\"t\u0006%0A\\fffd\\152~*S\\fffdZ\\fffd\\fffd\\fffd?18-\u001B\\fffdJ&X}\\fffd\\fffd\\fffd`\\fffd e\\fffd 2\u0010\\fffdX\\fffdi/\\fffd(J\\fffd 356\\fffd\\fffd\\fffd\u0014.\u0014\\fffd\u001BOk\\fffd\\fffdV\\fffd\u0016\\fffd\\fffd\\fffd\\fffd F(\\fffd\u0017O\u0013\\fffd\\fffdP\\fffdG\\fffdw(\\fffd\\fffd\\385\\fffd\\fffd\\fffd\\fffdWy\u0002\\fffd\\655\\768 3!\u0003W\\fffd\u0014\\fffd%0D\\fffd\\fffd\u0010h\\fffd 0\\fffd\u0013\\fffd\\fffd\\fffd\\fffdKt\u0017/K\u0010Y%0D6J:aV8\u0003\\fffdh\\fffd\\fffdQ\u0018\\fffd\u0007\\fffd\u001BY\\fffd\\fffdT;\\fffdXa\u0016\\fffdk\\fffdr\\fffdW\\fffd\\fffd\u0004S\\fffd$\\fffd(2f \\fffd\\fffd\u0015f\u0013`/\u001A\b\u0016\\fffdU\\fffd+\\fffd B\\fffdz\u0002O\\fffd d\\fffd\\fffd\\fffd\u0019;\\fffdyM\\fffd\u0010%23\\fffd\\fffdl7$\\fffdx\\fffd(Ri\\fffd\\fffd\\fffd\\fffd\\fffd 4\u0013\\fffd 3$\\fffd e\\689V\u0001\\c=.\\fffd\\fffd \\fffd\u0011-j\\fffd\\fffd\u0004`V\\fffdN*\bV\\fffd\\fffd%0A\\\\u5\\fffd\u0019?g%23\u0001o\\fffd\\109\\fffd\\fffd 7\\fffd\\fffd\\fffd%0DoN\u0001\\fffd\\fffd 9\\fffd\\fffdRTr\\fffd\\fffdl`?\\fffd\\fffd\vRa$h+\\fffd*x.\\fffd\bf\\fffd\u0005\\fffdt\u001A\\fffd\\fffd\\fffd\u0003\u0016\u001E\\fffd:\\fffd\\fffd\\fffd\\fffd&/\\fffdKL\\fffdP\\fffd\u001C/S\\fffdg\\fffd-\\fffdza*\\fffd$\\fffdx\\fffdYB-\\fffd.\u0015\\fffd\\fffdR\\fffd\\fffd\\fffd&\\fffd\\fffdq\\fffd\\fffd\\'\\fffd\\fffdl=\u0014\\fffd\\fffd=&S\u0002]\\fffd\\fffd&GDu\\9c%0A+\\fffd\\fffdH1\\fffdG\\fffd:%0D\\fffdt1\\fffdX\\fffdm\u0019e\\fffdu\\fffd\\fffdp\\fffd\\fffd d\\fffd\\fffd\\fffd\\fffd 9\\fffd\\fffd d\\fffd\\fffd%09\u001B,/X\\fffd%0A\\0\\fffd 4b\\fffdMD\\fffd\\fffd{\\fffdyI\\fffd\u0003P\\fffdn\\fffd\\fffd;\u0015\\fffd\u0013\\fffdV%23\\fffd\\'kh}f\\fffdR\\0\\fffd\\fffd\\fffd\\fffd*UR\\fffd\\fffd F\\fffdI\\fffd\\fffd\\fffd\\fffdnVt\\fffd\\fffd(%\\fffdtYR\v\\fffd dj\\fffdYc}2\\fffdJ\u001AK\\fffd\v>\\fffd\\fffd:;~\\fffd\\fffdM\\fffdw\\fffdM\\fffd(\\fffd]-\\fffdX\\fffdUO\\fffd\\1d0\\fffd\\fffd%\u0002`\\fffd\\fffd\\fffd\\fffd\u001A\\fffd\\fffd\u0018j\u000E!\\fffdi\\fffd\\fffd B*\\fffd\\fffd\\fffd\u0011\\a569\\fffd dC\\fffdYa\\fffd\\fffd_\"\\fffd\\fffdy\\fffd\\fffd\\fffd?\\fffdI\\fffdY\\fffd BV\\fffdylaVX\\fffdl\\fffdw)+\\fffd\v\\fffd%23V\\fffd ;8\\fffd(\\21f\\fffdWk\\fffd\\'\\fffd\\fffd\\fffd\\fffd&\\fffd\\fffd+Y\\fffd\\fffd\\fffd\\fffd`F\\fffd\\fffd 3\"\\fffdhFl\u0013\\3ebM&\u0017\\30e!\\fffd\\fffdg\\fffd&@\\fffd\\fffd\\fffd fT\\fffds\u0004X+%09\\fffd 3\\fffdK\\fffdN\\fffd\\fffd|Mh\\fffd\\fffd\\fffd 7\\c\\fffdhq\\fffd\\fffdx\\fffd\\fffd\u0017uE\\fffd\\fffdO\\fffdz\\fffd\\fffd \\c\\426&a&\\fffd%0D\\fffd\\fffdr0\\fffd\\fffd%23T\\fffd%0A\\fffd\\35fi)5\\fffd\\fffd\\fffdk\\fffd\\fffd\\fffd\\fffdN\\fffd%0D\\fffd\\fffd\\fffd\\fffd\\fffd\u0005M\\fffd\\fffd\\fffd\u0004\u0005^^\\fffd 2=\\fffd\\5a2\\fffdMO2\\116%09v1\\fffdT\\fffd a\\fffdzE\\fffdO(\\fffdo\\fffd b\\fffd`\\fffdtX+\b\\fffd\u0006s\\fffdTdkB\\fffd 7\\fffdX\\fffd b!\u0002D\\fffd\\'h\\fffd\\fffd\u0011k\\fffd\\fffd f\\65c\\fffd[\\fffdU\\fffd\\fffdlE\\fffd&f\\fffd dV\\fffd\u0005\\fffd%09\\fffd\\fffd\\fffd EQw\\fffdO\\fffd\\fffd\u0007\\3be)-\u00164\u0014Z4\\3cf\\fffdZq\\fffdi\\fffdZxT\\fffd\u0004vI\\fffdy\\fffd>40>\\fffd\\727\\fffd\\fffd\\fffd\\fffd\"U\\fffd\"\\fffdI\\fffdi\u0013+\\fffd D\\'>\\fffd\\fffd\\fffd\\fffdz[\\fffd 6\\'\\0\\fffd\\fffdW:(\\fffd 4\\fffd DHh\\fffd e\\fffdh\u0012\\fffd\u0018\u0014HmM\\fffd\\fffd 1\\6d8\"\u000F\u0013eO\\fffd\u001E\\fffd\\fffd 7a\\fffd\\fffdI\\fffdZ\\fffdX\\fffd\\fffd\u000Ez\\6e3\\fffd\\fffd 6Y\\fffd-j9\\fffd\\fffdX\\fffd(\\fffdK,\\fffdi\\fffdtq\u0006P\\fffd\u0019\\fffd\\fffd\\fffd 7\\fffd\u000F\\fffd 2U\u0012\\fffd f\\9eu\\fffd\\fffd\\fffdR\\fffd\u0011\\fffd Aj)\\fffd\\\\\\fffd%0D\u0004\\fffd\\fffd\u0006\u0017\\fffd\u000EU\\fffd\\fffd\u0017W\\fffd\\fffd\\fffd\\fffd\\13c\\fffd 6\\fffd e\\fffd\u001C\\fffd BJ\\fffd 4)V\\fffd\\fffd 6\\fffdt2\\fffd\\c b*z\\fffd^t\\fffd\\382\\fffdwJ\\fffd\\fffd\\fffd\\fffd A\\fffd=\\fffd\\fffd\\fffdv\\fffd e-\\fffdWg\\fffd>OfXK\\fffd\\fffdNT\\fffd 9a\\fffd\\fffd\v=\\fffd>\\fffd 4+)LPZ\\fffd\u001D\\fffd\u0006/YetQr\\fffdh\\76ca^\\c\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffdWT\\fffd\\fffd\\cX3A\\fffd\u0005\u001D\\fffd f\\fffd(\\fffd 6\\fffd d\\fffd\b9k:Z=&Z\u000Fbe\\fffd\\42b\u0019cbI\\fffd\\fffdSY\u0003\\fffd\\fffdR\\fffd\u0018$d\\fffd*\\fffd<e\\fffd\b&Q\\fffdi\\285\\fffdm\\fffd\\fffd\\fffd\\cQ\\fffdw\\fffd\\74dcN,-\\fffdq\u000F\\fffdW\\fffdz\u0016\\fffdQ\\1e2\u0015\\fffdZ\u001B\\fffd\u0013z\u0006*g\u001D\\fffd,d\u0012&%0A\\fffd\u0004\\0\\fffd 9\u0011\\fffd|\u0002\\fffd\u0016h\\fffd\\2f9`-\\fffd\\fffdU;2\\fffd\u000F\\fffd\\fffd\\fffd\\fffd\\fffd%0D\u0001\\fffd\\fffd\\fffd\u0012\\fffd\\fffd\\fffdkfk7$\v\\fffd\\fffd\b\u0010m3\\fffd fW\\fffd\\fffd dD\\c5\\26f\\fffd\\fffd\\fffd,]\\fffd F\\fffdL%0ADS\\fffdx\\fffdR\\fffd.\\fffd\\fffd\\fffd@\\fffd^G;\\cg\\fffd\\fffd\\fffdJ\\fffd\\fffdZ\\fffd\\fffd\\fffd 5\\fffd\\fffd\\fffd_\u0011(%09\\fffd\\fffd 8O\\443h\\fffd\u0005p\u001C\\fffd_\\424\\fffdl!\\fffd\\fffd c\\fffd{D\\3e2YvO\\fffdSv&tXD\\fffd\u0017%0A%\\fffd)Sm\\fffd\\fffd\u0012E\\fffd\\fffd %23T\u0012m2ao\\fffdty\u0005J^\\fffd E\\fffd\\fffd\\fffd\\fffd,\\0p\\fffd\\fffd[d\\'\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdG<\\fffd\\fffd\\fffd\\fffdyc*\u0004\\fffd\\fffd\u0002\\fffd 5.&\\fffd\\fffd\\fffd\\fffd*\\fffd\\fa\\fffd.\\fffdN\\fffd\\fffd\\fffdMp\\fffd\\fffd\\fffd\\6b39X\\31fR\\fffdly\\fffd\u0010dA\\fffd\\fffd|\\fffd%0D\\fffd\\fffd 2\\fffd\\fffd\\fffd\\fffd\\fffdw|\\fffd\\fffd\\fffd\\fffd\\878f!\u0015\\fffd\\fffdV@i\u0011%0DV\\59cwFz\\0\\fffdt%\\fffd@\u0003\\fffd 3\\fffd\\fffdl.\u0003\\fffd\\fffd\\fffd}\u0018E\\fffd d\\fffd\\fffd\\fffd,\\fffdyT%0Aj\\fffd\\a612 D\\fffd_\\fffd\\fffd\\fffdX\\fffd\\fffdzQ\\fffd\\fffd%%0A\\fffd\\1be\\fffdX%0D\\fffd%0Ae\\fffd\\fffd\\fffd]\\fffd d\\fffd\bh2\\fffd E\\fffd\\fffd\\fffdL\\fffdpE?\\fffd>\\fffdy\\fffd\\fffd\\468S\\fffd\\fffd\\fffd\\fffd\\fffd EM\\fffd\\fffd}Z\\fffd\\fffd e\\1dd\\fffd d\\fffd\u0006\\fffdz\\fffdPq\\fffd\\fffdH_5\\fffd\\fffd\\fffdj\u0011\\fffdH\\fffd!\\cg\\fffd\\fffd\\fffd\u001F\u001E\\fffd\\fffd%23Q*{\\fffdYD\\fffd\\fffd\\1f7\\fffdMo(`\\fffd\\fffd{\u0012\u001D/\\fffdy\\fffd\\fffd\u000F\\fffd@\\fffd:\\fffd.\\fffd\\268\\fffd d1\u0013\u001E\\fffdJ\\fffdt\\fffd}\\fffdq\u001F\\7e1\u0007N\\fffd\u001A\u0015\u0016\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd,\u001B-\\fffd\\fffd\v71W\\fffd\v\\fffd\\fffd\\fffd\\fffdO\\fffd\\fffd<\\fffd\\acd3I!a\\fffd\u0017gn\\fffd?\\'\\fffd\\fffd\\fb58i\\fffdp|\u0004\\236\\fffd C\\fffd,\u0004\u0015\\fffd 6\\fffd\\fffd&\\fffdk\\fffd\\fffdU\\fffd\u0019J\\0\u0014\\46c|/\u001D53(\\fffd%0A-\\fffd\\fffd\u000EG\\fffd\u0002\\fffd\\66c\\fffd\\fffd\\fffd$_\\fffd^\\fffd\\fffd.Sn{E\\fffdMZ\\fffd\\\\]P\\fffd B\b\\fffdG\\fffdZ\u0006\\fffd\\fffdJ\\fffd\\fffd\\fffd\\fffdV\u0013\\fffd eBPg\\fffd d%09(\\fffd+\\fffdQ\\fffd\\0\\fffd\\fffd\\fffd\\fffd\\6cc\\fffd\\fffd\\fffd\\fffd D\\fffd\u0014Db\\fffd\\5d4\u000F\\fffd?\\fffd\\fffd!\u0012-\\fffd\\fffd e SQ\\fffd\\fffd\u0013\\fffd 7ZcE\\fffd\\fffd Bs\u0013\\fffd 55Hg\\'M%%09\u00010\\fffd\\fffd\\fffd\\fffd\\fffd-GQ\\fffd)}\u0017e\\12a\\fffd\u001F@\\fffd\\eb68 2[i;\\fffd\\fffd\\fffd\\fffd!\\fffd@\\fffd\\fffd\\'\\fffd \\fffdVDP9he*\\fffd\\0k\\fffdV(YdjI\\fffdX\u001Ep\vn\\fffd\u001Bd\\fffd/\\fffd\\fffd\\fffd\\fffd\\fffd+m\\fffd\\\\$\\fffdy\\fffd\\fffd-\"\\fffd\\fffd@EdR\\fffd\\fffd\u0002g]\\fffd}\\fffd%0AS\\fffd 8\\fffdG\u0019\\764\u0003.\\fffd\\fffd\\fffd\\fffdW\\0\\fffd\\fffd:\\4cb ae\\fffd\\fffd\\fffdm\\fffd\u0013?\\fffd\\fffd%0A\\fffd\u0011eV\\fffd\\7e3 D\\fffd 4\\fffd\u001CXI\u0004\\280\\fffd\\fffd\u0007\\fffd\\fffd\\fffd\\fffd 0/\\fffd\\fffd\\fffd\\fffdPFyr\\fffd\\fffd\\fffd\\445\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd_h\\fffd\\fffd\u0014Syy\\fffd\\fffd\\fffd\\fffd\u000EtX\u0014\\fffd\\4c2w\\fffd\u0016\\67e!eV\\fffd\\fffdJ\\255\\fffd\\fffd\\fffdJ\\fffd E\\'\\fffd\\fffd.\\fffd\\fffd\u0015\\fffdk*\\fffd\\fffd 2\\fffd 7j\\fffd.\\fffd\u001B\\fffd(\\fffd\\fffd\\fffd\\fffd E\\fffd@\\fffd\\fffd\\fffd\u001Eg|\"+\\fffd\\fffd a\\fffd%0Ag6\\fffd D?\\fffd\\fffdW\\fffd 6\\16c-\\fffd@\\135e\"A\\fffd\\0\\fffd%\\fffd\u0014\\fffd 0ZK\\fffd\\fffdW\\fffd\u001Fdt2\u0013D\\'\"\\fffd\\fffd\\fffd.\\fffdl`\\fffd\\fffd\\fffd\v\\fffd+\\fffd\\fffdl-\\fffdJ\\fffd\\fffdo\\fffd\\fffdW,\\fffd\\fffd+\\fffdlE\\fffdM\\fffdHQ\\fffd\\fffdU5\u0013\\fffd\\fffd\\'\\fffd\u001D\\fffd%0A\\fffdt\\fffd^\\fffd\u0001%0A{\\fffd\\32c e\u001A+\\fffd\v2Z\\c 4\\fffd\\fffd\\fffd_\u001A\\fffd&F\\fffd\\fffd\u0004\\fffd 4\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd+\u0013HdG\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd&\\\\w|\\fffd 6\\fffd;\\fffdu=\\fffd 5\\fffd\\fffd\\fffd\\fffd\u0013=\\fffdJ\\fffd\\fffd\\fffd\\fffdz\\fffd\\fffd\\fffd\\fffd\\fffd\u0013\\fffd\\fffd E\\fffd\\fffd`\u0014\\fffd\\319\\fffd\\fffd>\\fffd F\\fffdr\u0017\u001A\\fffd\\fffd\\fffd\"\\fffd\\fffd\\fffdl%0A\u0010\\fffd\\fffd\\fffd%23\\fffd\\fffd DGU\\8c2a\\fffdT\b.\\fffd%\\fffd\\fffd\\2ba]\u001E\\fffdM\\fffdh\\fffd\u0002\\fffd,J{\\fffd\\fffd 0K\u0011QM}{!\\fffd:\\fffd\\192\\fffdW\\fffd_\\fffd\\fffdP\u001DHe\u0001L\\fffd\\fffdp\\fffdM\\fffd\u0005Q\\fffd\\fffd\u0003\\fffdU\\fffdZ:\\fffd 8g\\fffd|a\\fffd\\fffd\\fffd\\fffd-\\fffd\u000E\\fffd\\fffd)3\\fffd+\u0017\\fffd\\fffd\\fffd\\fffd\\4f6 f\\fffd\\fffdV\\fffd\\fffd\\fffd\\fffd\u0016\\fffd[\\fffd\\fffd\\fffd.\\fffd,\u001A\\fffd\\fffd\\fffd\\fffdMZ\u000ETA\\fffdT\\fffd-/\\fffd db\u0002o\\fffdj\\744\u001F\\fffdq\\fffd\\fffd aAy2c\\c\\fffd\\fffdM\\cR\\fffd D\\fffdl2E\\4a4\\fffd\u0001\\fffd\\fffdi\\fffd\u0005}f\u0005\\fffd\\fffd\\fffd)j\\723\\fffd\u0017\u0003\\fffd\\fffd\\fffd\\fffd\\fffd\u0007\\fffd 1\\fffd\\fffd+~^\\fffd\u001AK\\fffd,\\fffdt)\\fffdR`\\fffd 8\u001F\\fffd\\fffd\\fffd~<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd)5\u0005.\\fffd E\\fffd 9\\fffd\\0\\fffd\\fffd\\fffd\\fffdx%0D=\\fffdY\\fffd\\fffd\\fffd\\fffdP\\fffd\u0013\\fffd b|\\fffd\\fffdW(\\fffd{\\420\\fffdN\\'+b\u0016\\fffd\\fffdm\\fffd\\fffd au\\5b1P\\fffd_\\fffdW{`\\fffd)\\fffd%09\\fffdW5\\fffd\\fffd F\\fffdY\\fffd\\fffd$\\fffd_)\\fffd\\fffd\\fffd=3oy\\fffd\u0006\u0011\\fffd||\\fffd 9\\fffd\\fffdt2\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\"`XD\\fffd\u0005\\fffdKg\\fffdT%23\\4a4\\fffd d\\fffd$[a2oa\\fffd\u0010\\fffd\u001E\\fffd@\\fffdzQD4i3\u001A\\c\\fffdU\\fffd\\fffd\u0016\\fffd e\u0005\\fffd 3\\fffd\u001F\\fffd\\0\\fffd 6\\fffd\\1f3\\fffd eB\\7ae\\fffd<X\u0005t\\fffd\\fffd&4e%:[\\fffd\\fffd C\\\\\b\\fffd>%0A*\u000F!H\u0016\\fffd\u0014\u0001\\fffd}\\fffd e1\u0015\\fffd 1\u0011\\fffd\\fffd|\\fffd\u0018L\\fffd\\fffd\" -(\\fffd_\\fffdu\\fffd\\fffd\\fffd\\fffd dK\\fffd\u0017\\fffd%\\fffd/Pn\\fffd\\fffd\\fffd\\fffd 8\\fffd-Qq\\fffd\\fffdT8\u0003I\u0001\\fffd/\u0001Ae\\fffd\\fffd\\fffd\\fffd\"M\\fffd&\\fffd&\\fffd/\\fffdG\\fffd 3\\fffd:\u001EV\\fffd\\c\\fffdO\\fffd\\fffd\\fffd\\fffd%23\u001Cu\v2\\fffd(ri*L\\fffd\\fffdY\\fffd\\fffd\\fffd\\fffd\\fffd}\\fffd\\fffd\\3d9 b\u0005\u0014+`+g\\fffd\u0005\\fffdM\\fffd\\fffd\\fffd\\fffd-\u0003\\fffd\v2\\fffdX\\fffd\\fffd\\fffd\\750%0D\\fffd\\fffdQk&\\fffd+Wz\\fffd\\fffd\\fffd+\\63dxR\\571\\fffdz\u0012\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0019\\fffdXV\\fffd*\u001E\\fffd|a\\fffdPx\\fffdSa\\fffd E\\fffdY\\fffd\\fffd 3Z\\fffdP\\fffd\v\\0\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdg\\fffd \\fffd%0D\\fffdK_\u0019\\fffd%F\\fffdhW\\0\\fffd\u0017\u0005|J\\fffd\\fffd\\fffd\\fffd\u0014\\fffd%23\\fffd}e@\\fffd\\fffd\\fffd%0A\\fffd_\u0001\\fffd\\fffd\\fffd\\fffd\\fffd f\\fffd\u0012\\fffd\\fffd\\fffdxi\\fffd\\fffdu\\fffd&\u001A+\\fffd\u0017\\fffduC\\fffd\u0006V\\fffdOG\u0013)8\\fffdJ\\fffd\\fffd\\fffd\\fffd\\fffd 8\\fffd\u0018\u0011\\fffd\\fffdU\\fffdM\\fffd\u0015\\fffd>\\fffd=%090\\fffd\\fffd fc \\fffd\\fffd<\\fffd\\0\\fffd,\\fffdi`\u0015\\b3\\fffd\\fffd f\\fffd\u0015\\fffd\u0017\\fffd\\fffdT\\fffdZ\u0015xU\\fffd\\\\8QK\\'t!\\fffdJ\\fffd\u0016D\\fffdH\\\\\\fffd\\fffd\\fffd.+)\\fffd\\fffd\\fffd\\fffd\u0011l\u0005@\u0015\\fffd\\\\\\fffd\\fffd\b\"\\fffd\u0001b\\fffd dW\\681^\\fffd\\fffd\\7b8H8\u001A\\fffd\\fffd\\fffd\\fffdQh!B\\569p\u0006\u0018\u0013S\\fffd\u0016\u0007\\fffdV\"Bpu\\fffd\u0006/\\fffd\\fffdV(\\fffd\\fffd}\\fffd\u0017`%09\\fffd\u0013\\fffd\\fffd\\fffd\\fffd\\fffd 2$\\fffd\\fffd\u0019\\0 c*\\\\LC3:{gP\\fffdN\\0iJ\\fffd\\fffd\u0002\\fffd\u0015\\fffd\\fffd\\fffd@\\fffd]\u0004t\\fffdZ\\fffd@\\fffd\\fffd\u0005\\fffd\\fffd\u0013T z\\fffd\\fffd\\fffd\u0014\\\\\\fffd\\fffd 5=\\fffd\u0014\\fffdR\\fffd\\fffd{\\fffd\\fffd!\\fffd|\\fffd\\fffdIy%b\\fffdV\\fffd\\fffd=\\fffd\u0012\\563\\fffd\\fffd)\\fffd\\fffd\\fffd\\fffd;Sd\u00149\\fffd\\b4\\fffd\\fffdUp-\\fffd\\fffd\\fffdg%0D\\fffd*\\fffd^y>\u0001\\fffdg_\\fffd/]\\fffdo\\fffd]K\\fffd\\fffd\u001CX\u0005\\fffdK\\fffd\u0006McU\\fffd\\fffdQW\\fffd\\fffd{f\u0003\\fffd\\fffd\\fffd\"\\fffd(L\\fffd\\fffd|\\fffd\u000E\\fffd\\fffdlN\\fffdhsq\\2f6 7\u0001:\\fffdX\\fffd.x\\fffd\\fffd\u0011\\fffd %0A\\fffd\\fffdk\\fffdw\\fffd f\\fffdM2\\fffd}h\\fffd\\fffdlQ\\fffd\\ce6dR\\fffd*(\u0017\\fffdz\\fffd\\'w\\fffd 0K\\fffd<\\fffd 2\\fffd b\\fffd\\fffd\\fffdU>Wz\\fffd\\fffd\\fffdPUw\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\fffd\\fffdM\\464\\fffd\\fffd*W[\\fffd*MN\\fffd\\fffd\\fffdW\\fffdX*\\fffd\u0005\u0017\\fffd\\fffd\u0002\\fffd\\fffd\\fffd\\568\\fffd\\fffdS\u001E\\fffdJ\\fffd:-n\\fffd\\526\\fffd\\fffdT}M|\\fffdW\\fffdSy%0D\\fffd\\fffd%j\u0004\\fffdM\u0017\u001C\\fffd\\fffd\\fffd\\0 D\u0019p\\fffd\\fffd\\fffdt|*\u0017\\20b6\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\\\\u0001\\fffd\\fffdh\\fffd\\fffd,\\c\\fffd\\fffd\\fffdT8\u0001\\fffd\\fffd)\\fffd@+\\fffd\\fffd/_4+\\0\\fffd\\\\\\fffd\u0005\\0\\fffd b7\\fffdi\\fffdZ8\\fffd\\fffd\\'=;q\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffdYuP\v\u0005\\fffd\\fffd\\fffdjuLVAN\\fffd^5\\fffd\\fffd<V\\1ab\\37c\u0018\\fffd\\488\\fffd%0A\\fffd\u0015\\fffdQ&g\\fffd 0 \\fffd\\0Z~\\fffd\\fffd\vT\by_\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd<\\fffd\\fffdW*\\fffd]\\fffd%23eV\\fffd\\fffdm\\fffd\\fffd\u0019\\fffdvq\\5f3m\\fffd 6c\\fffd]|\\fffd a\u0001\\fffd\\fffd\\fffd\\fffd\\fffdm\\fffd\\fffd\\'\\fffdx\\fffd|\\fffd 9\\fffd\\fffd\\fffd$RD\\fffd d\\fffdM\\fffd D\\fffd e\\fffd+\\fffd\\fffd\\fffdO\"Pd%09\\fffd\u001AVe\\fffd\\\\\\fffdq\u0012\\fffd\\fffd\\fffd\\fffd\\fffdjoQ\\fffdSI\\fffd\\fffd\\fffdO\\656xN+\u0011\\fffd\u001C\\fffd\\fffd\\fffd fQ\\fffdN\\fffdU\\fffd\u0005`(\\fffd\\fffd\\fffdzw\\fffd*W\\fffd 96\\fffd\\fffd.^h\\fffd c\\fffd\\fffd\\fffdL\\fffd 5\u0019\\fffd\\fffd\\fffd 7\u0006\\fffd]0\\fffd\u000E\\fffdR\u000Fz\\fffd\\fffd\\\\\\fffd\\fffd\\fffd d:\\fffd%0A\\fffd\\3f8\u0010\u0017.\\fffdx2\\fffd\\fffd\\0\\fffd\\fffdU\\fffdg\u0002\\a5}^\\0k+\u0002z\\fffd\\fffd\"wj\\fffdV\\'F,\\0\\fffd%0A\u0017\\fffd\\fffd>\\fffd\\fffd]\\fffd?\v\u0014\\fffd\\fffdU9a\\fffdh\\fffd)\u0003\\fffdx\\fffd\\fffd\\fffd\\fffd\\2f1%0A\\fffd\\fffd\u0002`\\fffdL-j\\fffd\\fffdX\u0019\\fffdO\u001B\\fffd*\u001D\\fffdy\\fffdV.\\b7\\fffdj\u0005\\fffd+\u0011\\fffd\\771\\fffd\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\\fffd+\\fffd\\fffd\\fffd\\fffd\\c\\fffd%0A@\\fffdyO\v,\\fffd\\fffd\\5ac\\fffdo\\fffdX\u0001Fh{\\fffdx\u0001\\fffd\\fffd%0A\\fffd\u0001\\fffd+\\'\\fffdj\\fffd\u0017\\fffd\\fffdW\\fffd\\217\\fffd\\fffdj\\fffd\\fffd\\fffd\\fffd\u0019\u0017\\4bb\\fffdl\u0001\\fffd 9\u0015~\u0012\\fffdV\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\u001C\\fffd 7\\fffd\\fffdgH\\fffd\\fffd\\fffd\\1548\\fffdI\\470\u000E,Z\\fffd\\fffd\\fffd\\fffdW\u0006Z\\fffd\\fffdr\\fffd@\\fffd\\fffd\\fffd>\\fffd\\fffd\\fffd\\141m+\\fffd\\fffd d|>=\\fffd\\fffd\u0004@z\\fffdsg\\fffdj_\\fffd%0D\\fffdW\\fffd+I\\fffd\\fffd\\fffd\\fffd\\fffdW\\fffd 1\\fffd\\fffd\\fffd\\fffd\\fffdl3\u0015?\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001B\u0006\\fffd\\fffd\\fffd\u0003HW\\fffd\\fffdK\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~>\\fffd\\fffd_\\fffdo\\0\\fffdx=)\\fffd\\fffd{z\\0\\0\\0\\0IEND\\fffd B`\\fffd') no-repeat left top}.p-colorpicker-panel .p-colorpicker-hue{background:transparent url(\"data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\u0011\\0\\0\\0\\fffd\b\u0002\\0\\0\\0\\fffd\\fffd\\fffd\\fffd\\0\\0\\0\\fffdIDATX\\fffd\\fffdQ%0A\\fffd@\\c D\\fffd\\456\\fffd\\fffdz\u0005\\fffd%?<D\\fffd\u0015EK\\fffd\\fffdIA\\fffd\u0012\\fffd\\fffd!y\\fffd\\fffd$,\\fffd~\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffdr\\fffdoE\\fffdI \\fffd 2z\\fffd\\fffd\btb\\fffd\\fffd 9\\fffd%Nmg\u0010<\\fffd c\\fffd\\d0c7*\u0016@\\fffd\\253\u0001U\\\\\\fffd \\fffd 1\\fffd\\a4f\\fffd\\fffd\u000E\\fffd\u0004\\fffd{\\fffd\\fffd\\fffd*\\fffd-\u001E\\fffd\\fffd 5\\fffd\\fffd\u0005\\fffd'x\\fffd\\fffd\\109\\fffd\u0006O\u0002q?TQ_\u000F2\\fffd\u0016_\b\\fffd[\\fffd 1\\fffdU<W\\fffd Am<\\fffdk\u001A<\\fffd\\7dc\\fffd)\\fffd C\u0015\\fffd\\62e\u0013@\\fffd]\\fffd<\\fffd(\u0001\\fffd\\fffd\u0015<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdr\\7da%0D\\fffd\\fffd\\fffdk\\fffdG\\fffd\\c\\fffd 4\\fffd\\fffdx\\fffd\\fffd A\\fffd+\\fffd\\fffd\\fffd DM\u001D\\fffd\\fffd\\fffdS\\fffd 6+*{\\fffd\u0005\\fffd FbV0\\fffd\u001C%\\0\\0\\0\\0IEND\\fffd B`\\fffd\") no-repeat left top}@layer primeng{.p-inputtext{margin:0}.p-fluid .p-inputtext{width:100%}.p-inputgroup{display:flex;align-items:stretch;width:100%}.p-inputgroup-addon{display:flex;align-items:center;justify-content:center}.p-inputgroup .p-float-label{display:flex;align-items:stretch;width:100%}.p-inputgroup .p-inputtext,.p-fluid .p-inputgroup .p-inputtext,.p-inputgroup .p-inputwrapper,.p-inputgroup .p-inputwrapper>.p-component{flex:1 1 auto;width:1%}.p-float-label{display:block;position:relative}.p-float-label label{position:absolute;pointer-events:none;top:50%;margin-top:-.5rem;transition-property:all;transition-timing-function:ease;line-height:1}.p-float-label textarea~label{top:1rem}.p-float-label input:focus~label,.p-float-label input.p-filled~label,.p-float-label textarea:focus~label,.p-float-label textarea.p-filled~label,.p-float-label .p-inputwrapper-focus~label,.p-float-label .p-inputwrapper-filled~label{top:-.75rem;font-size:12px}.p-float-label .input:-webkit-autofill~label{top:-20px;font-size:12px}.p-float-label .p-placeholder,.p-float-label input::placeholder,.p-float-label .p-inputtext::placeholder{opacity:0;transition-property:all;transition-timing-function:ease}.p-float-label .p-focus .p-placeholder,.p-float-label input:focus::placeholder,.p-float-label .p-inputtext:focus::placeholder{opacity:1;transition-property:all;transition-timing-function:ease}.p-input-icon-left,.p-input-icon-right{position:relative;display:inline-block}.p-input-icon-left>i,.p-input-icon-left>.p-icon-wrapper,.p-input-icon-right>i,.p-input-icon-right>.p-icon-wrapper{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-input-icon-left,.p-fluid .p-input-icon-right{display:block;width:100%}}@layer primeng{.p-inputtextarea-resizable{overflow:hidden;resize:none}.p-fluid .p-inputtextarea{width:100%}}@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password .p-icon{cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}@layer primeng{.p-radiobutton{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-radiobutton-box{display:flex;justify-content:center;align-items:center}.p-radiobutton-icon{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0) scale(.1);border-radius:50%;visibility:hidden}.p-radiobutton-box.p-highlight .p-radiobutton-icon{transform:translateZ(0) scale(1);visibility:visible}p-radiobutton{display:inline-flex;vertical-align:bottom;align-items:center}.p-radiobutton-label{line-height:1}}@layer primeng{.p-ripple{overflow:hidden;position:relative}.p-ink{display:block;position:absolute;background:#ffffff80;border-radius:100%;transform:scale(0)}.p-ink-active{animation:ripple .4s linear}.p-ripple-disabled .p-ink{display:none!important}}@keyframes ripple{to{opacity:0;transform:scale(2.5)}}@layer primeng{.p-tooltip{position:absolute;display:none;padding:.25em .5rem;max-width:12.5rem;pointer-events:none}.p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-left{padding:0 .25rem}.p-tooltip.p-tooltip-top,.p-tooltip.p-tooltip-bottom{padding:.25em 0}.p-tooltip .p-tooltip-text{white-space:pre-line;word-break:break-word}.p-tooltip-arrow{scale:2;position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.p-tooltip-right .p-tooltip-arrow{top:50%;left:0;margin-top:-.25rem;border-width:.25em .25em .25em 0}.p-tooltip-left .p-tooltip-arrow{top:50%;right:0;margin-top:-.25rem;border-width:.25em 0 .25em .25rem}.p-tooltip.p-tooltip-top{padding:.25em 0}.p-tooltip-top .p-tooltip-arrow{bottom:0;left:50%;margin-left:-.25rem;border-width:.25em .25em 0}.p-tooltip-bottom .p-tooltip-arrow{top:0;left:50%;margin-left:-.25rem;border-width:0 .25em .25rem}}.customDialogClass .p-dialog{height:auto}.customDialogClass .p-dialog-header{padding:.8rem .55rem!important;background-color:#fff!important}.customDialogClass .p-dialog-header-close-icon{color:#000!important}.customDialogClass .p-dialog-content{border-top-left-radius:0%;padding:0}.p-dialog .p-dialog-header{background-color:#fff!important;border-bottom:2px solid #e5e7eb;padding:12px 16px;font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:space-between}.p-dialog-mask{background:#00000080!important}.p-dialog .p-dialog-content{background-color:#fff;padding:16px}.p-dialog .p-dialog-footer{background-color:#f3f4f6;padding:12px 16px;border-top:2px solid #e5e7eb}.p-dialog .p-dialog-content::-webkit-scrollbar{width:8px}.p-dialog .p-dialog-content::-webkit-scrollbar-track{background-color:#f1f1f1}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb{background-color:#faa762;border-radius:10px}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb:hover{background-color:#faa762}.custom-save-button{background-color:#faa762!important;color:#fff!important;border:1px solid #FAA762!important}.custom-save-button:hover{background-color:#e59550!important;border-color:#e59550!important}.form__input{width:100%;padding:8px;border:1px solid #ccc;border-radius:5px}label{font-size:14px;font-weight:600;margin-bottom:5px}.button-group{display:flex;justify-content:flex-end;gap:10px;padding-top:1rem}button{padding:8px 12px;border:none;border-radius:5px;cursor:pointer}.cancel{background:#ccc;color:#000}.save{background:#007bff;color:#fff}button:hover{opacity:.8}.card-width{width:295px!important;flex-shrink:0}.justify-end{justify-content:end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.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$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i5.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DropdownModule }] });
|
|
190
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx-form-builder-wrapper.mjs","sources":["../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.service.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.html","../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/fx-form-component/fx-form-component.component.ts","../../../projects/fx-builder-wrapper/src/public-api.ts","../../../projects/fx-builder-wrapper/src/fx-form-builder-wrapper.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\r\nimport { FxBaseComponent, FxComponentRegistryService, FxForm, FxUtils } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FxBuilderWrapperService {\r\n public variables$ = new BehaviorSubject<any | null>(null);\r\n constructor(private fxComponentRegistry: FxComponentRegistryService) { }\r\n\r\n public registerCustomComponent(title: string, selector: string, component: Type<FxBaseComponent>\r\n ): void {\r\n this.fxComponentRegistry.registerComponent(selector, component, {\r\n registeringAs: \"CUSTOM\",\r\n libraryItem: {\r\n title,\r\n icon: 'fa-eye',\r\n fxData: {\r\n id: null,\r\n name: selector,\r\n value: \"\",\r\n selector: selector,\r\n elements: [],\r\n events: []\r\n }\r\n },\r\n })\r\n }\r\n\r\n public getComponent(selector: string): Type<FxBaseComponent> | undefined {\r\n return this.fxComponentRegistry.getComponent(selector);\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule, Validators, FormBuilder, FormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-dispatch-to-clinic',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent],\r\n templateUrl: './dispatch-to-clinic.component.html'\r\n})\r\nexport class DispatchToClinicComponent extends FxBaseComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n public clinicAddress$: BehaviorSubject<any> = new BehaviorSubject<any>({});\r\n\r\n public dispatchForm: FormGroup = this.fb.group({\r\n courierName: ['', Validators.required],\r\n trackingNumber: ['', Validators.required],\r\n trackingUrl: ['', [Validators.required, Validators.pattern('https?://.+')]],\r\n notes: ['', Validators.required]\r\n })\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n\r\n this.onInit.subscribe(() => {\r\n this._register(this.dispatchForm);\r\n });\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [new FxStringSetting({ key: 'heading-text', $title: 'Heading Text', value: 'My Default Value' })];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public copyToClipboard(address: any): void {\r\n navigator.clipboard.writeText(address);\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FormArray, FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'fx-configuration-panel',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, DialogModule, InputTextModule, FormsModule, DropdownModule, ButtonModule],\r\n templateUrl: './configuration-panel.component.html',\r\n styleUrl: './configuration-panel.component.css',\r\n})\r\nexport class ConfigurationPanelComponent implements OnInit , OnChanges{\r\n @Input() visible: boolean = false;\r\n @Input() configs: any;\r\n @Output() isVisible = new EventEmitter<boolean>();\r\n @Output() configuration = new EventEmitter<any>();\r\n @Input() tableConfigData:any;\r\n\r\n public rows: number = 1;\r\n public enableAPI: boolean = false;\r\n public api: string = '';\r\n\r\n public dynamicForm: FormGroup;\r\n public columnTypes: string[] = ['text', 'input-text', 'input-number', 'dropdown', 'smart-dropdown', 'checkbox', 'radio', 'radio-group', 'file-upload', 'textarea'];\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.dynamicForm = this.fb.group({\r\n columns: this.fb.array([])\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n console.log(\"insideconfigpane;\",this.tableConfigData);\r\n }\r\n ngOnInit(): void {\r\n this.addColumn();\r\n }\r\n\r\n get columns(): FormArray {\r\n return this.dynamicForm.get('columns') as FormArray;\r\n }\r\n\r\n // **🔹 Add Column Dynamically**\r\n public addColumn(): void {\r\n const columnFormGroup = this.fb.group({\r\n header: ['', Validators.required],\r\n cellType: ['', Validators.required],\r\n placeholder: '',\r\n options: this.fb.array([]),\r\n apiUrl: '',\r\n valueKey: '',\r\n labelKey: '',\r\n className: '',\r\n apiKey: ''\r\n });\r\n this.columns.push(columnFormGroup);\r\n }\r\n\r\n \r\n public removeColumn(index: number): void {\r\n if (this.columns.length > 1) {\r\n this.columns.removeAt(index);\r\n }\r\n }\r\n\r\n // **🔹 Duplicate Column**\r\n public duplicateColumn(index: number): void {\r\n const currentColumn = this.columns.at(index).value;\r\n const duplicateColumn = this.fb.group({\r\n header: [currentColumn.header, Validators.required],\r\n cellType: [currentColumn.cellType, Validators.required],\r\n placeholder: [currentColumn.placeholder],\r\n apiUrl: [currentColumn.apiUrl],\r\n valueKey: [currentColumn.valueKey],\r\n labelKey: [currentColumn.labelKey],\r\n className: [currentColumn.className],\r\n apiKey: [currentColumn.apiKey],\r\n options: this.fb.array(\r\n currentColumn.options.map((option: any) => this.fb.group({\r\n optionName: [option.optionName, Validators.required],\r\n optionValue: [option.optionValue, Validators.required]\r\n }))\r\n )\r\n });\r\n this.columns.insert(index + 1, duplicateColumn);\r\n }\r\n\r\n // **🔹 Add Options Dynamically**\r\n public addOption(columnIndex: number): void {\r\n const optionGroup = this.fb.group({\r\n optionName: ['', Validators.required],\r\n optionValue: ['', Validators.required]\r\n });\r\n\r\n this.getOptions(columnIndex).push(optionGroup);\r\n }\r\n\r\n // **🔹 Get Options FormArray for a Specific Column**\r\n public getOptions(columnIndex: number): FormArray {\r\n return this.columns.at(columnIndex).get('options') as FormArray;\r\n }\r\n\r\n // **🔹 Close Dialog**\r\n public closeDialog(): void {\r\n this.isVisible.emit(false);\r\n }\r\n\r\n // **🔹 Save Configuration**\r\n public saveConfiguration(): void {\r\n this.configuration.emit({\r\n rows: this.rows,\r\n columns: this.dynamicForm.value?.columns,\r\n enableAPI: this.enableAPI,\r\n api: this.api\r\n });\r\n this.isVisible.emit(false);\r\n }\r\n\r\n public onSubmit(): void {\r\n console.log(\"Value columns formArray\", this.dynamicForm.value);\r\n }\r\n}\r\n","<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\" (onHide)=\"closeDialog()\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n ➕\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n ❌\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FxComponent, FxData, FxMode, FxSettingComponent, FxSettingsService, FxUtils } from '@instantsys-labs/fx';\r\nimport { Dialog } from 'primeng/dialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ConfigurationPanelComponent } from '../configuration-panel/configuration-panel.component';\r\n\r\n@Component({\r\n selector: 'fx-settings-panel',\r\n standalone: true,\r\n imports: [CommonModule, ButtonModule, InputTextModule, ConfigurationPanelComponent],\r\n templateUrl: './settings-panel.component.html',\r\n styleUrl: './settings-panel.component.css'\r\n})\r\nexport class SettingsPanelComponent extends FxComponent implements OnInit ,OnChanges {\r\n \r\n @Output() configuration = new EventEmitter<any>();\r\n public visible: boolean = false;\r\n @Input() tableData:any;\r\n tableConfig:any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.tableConfig = this.tableData;\r\n }\r\n\r\n public openSettingDialog(): void {\r\n this.visible = true;\r\n }\r\n}\r\n","<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" [tableConfigData]=\"tableConfig\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FxBaseComponent, FxMode, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { SettingsPanelComponent } from '../../panel/settings-panel/settings-panel.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport {Subject, takeUntil } from 'rxjs';\r\n\r\nexport interface TableColumnConfig {\r\n header: string;\r\n cellType: 'text' | 'input-text' | 'input-number' | 'dropdown' | 'smart-dropdown' | 'checkbox' | 'radio' | 'radio-group' | 'file-upload' | 'textarea';\r\n placeholder?: string;\r\n options?: string[];\r\n apiUrl?: string;\r\n valueKey?: string;\r\n labelKey?: string;\r\n className?: string;\r\n}\r\nexport interface TableConfig {\r\n columns: TableColumnConfig[];\r\n rows: any[];\r\n}\r\n@Component({\r\n selector: 'fx-dynamic-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SettingsPanelComponent, ReactiveFormsModule],\r\n templateUrl: './dynamic-table.component.html',\r\n styleUrl: './dynamic-table.component.css',\r\n})\r\n\r\nexport class DynamicTableComponent extends FxBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() tableRows: Array<any> = [];\r\n @Input() previewType: FxMode = FxMode.VIEW;\r\n @Input() tableConfig: any = {\r\n columns: [\r\n { header: 'Column 1', cellType: 'text' },\r\n { header: 'Column 2', cellType: 'text' },\r\n { header: 'Column 3', cellType: 'text' },\r\n { header: 'Column 4', cellType: 'text' },\r\n { header: 'Column 5', cellType: 'text' },\r\n ],\r\n};\r\n\r\n private destroy$ = new Subject<Boolean>();\r\n public uploadedImages: Array<Record<string, string | File | null> | null> = [];\r\n\r\n public tableFormControl = new FormControl();\r\n public smartDropdownOptions: { [key: string]: Array<{ name: string, value: string }> } = {};\r\n private http = inject(HttpClient);\r\n constructor(private cdr: ChangeDetectorRef, private fxBuilderWrapperService: FxBuilderWrapperService) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.tableFormControl);\r\n })\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.fxBuilderWrapperService.variables$.pipe(\r\n takeUntil(this.destroy$)).subscribe((variables: any) => {\r\n if (variables) {\r\n let dynamicTableValues: any;\r\n for (const [key, value] of Object.entries(variables)) {\r\n if (key.includes('dynamic-table')) {\r\n dynamicTableValues = value;\r\n }\r\n }\r\n if (Object.keys(dynamicTableValues).length) {\r\n // const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n dynamicTableValues?.rows?.forEach((item: any, index: number) => {\r\n // // this.uploadedImages[index] = item[fileHeaderName] ? item[fileHeaderName]: null;\r\n // const fileUrl = item[fileHeaderName]; // Get the file URL\r\n\r\n // this.uploadedImages[index] = fileUrl\r\n // ? { result: fileUrl, file: null } // Store the URL as 'result'\r\n // : null;\r\n \r\n if (item[fileHeaderName]) {\r\n this.parseUrls(item[fileHeaderName], index);\r\n }\r\n })\r\n console.log(\"uploadedImages\", this.uploadedImages);\r\n console.log(\"dynamictable\", dynamicTableValues);\r\n this.tableConfig = dynamicTableValues;\r\n this.fxData.value = this.tableConfig;\r\n // this.tableFormControl.reset();\r\n // this.tableFormControl.setValue(this.tableConfig);\r\n this.tableFormControl = new FormControl();\r\n setTimeout(() => { // Delay to ensure proper patching\r\n this.tableFormControl.patchValue(this.tableConfig, { emitEvent: true });\r\n console.log(\"tableFormControl\",this.tableFormControl);\r\n this.cdr.detectChanges();\r\n }, 50);\r\n }\r\n }\r\n })\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if(this.fxData?.value && Object.keys(this.fxData?.value)?.length != 0) {\r\n this.tableConfig = this.fxData.value;\r\n this.fetchSmartDropdownData();\r\n }\r\n }, 100)\r\n }\r\n \r\n protected fetchSmartDropdownData(): void {\r\n this.tableConfig.columns\r\n .filter((column: TableColumnConfig) => column.cellType === 'smart-dropdown' && column?.apiUrl)\r\n .forEach((column: TableColumnConfig) => {\r\n this.http.get<any>(column.apiUrl!).subscribe((response: any) => {\r\n this.smartDropdownOptions[column.header] = response.map((item: any) => ({\r\n value: item[column.valueKey!],\r\n name: item[column.labelKey!],\r\n }));\r\n });\r\n });\r\n }\r\n\r\n public uploadImage(event: Event, rowIndex: number): void {\r\n const file = (event.target as HTMLInputElement).files?.[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uploadedImages[rowIndex] = {\r\n result: reader.result as string,\r\n file: file\r\n }\r\n this.tableConfig.rows[rowIndex][this.tableConfig.columns.find((f: any) => f.cellType === 'file-upload')?.header] = file;\r\n console.log(\"tableConfig\", this.tableConfig);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'column-size', $title: 'No. of columns', value: 1 }),\r\n new FxStringSetting({ key: 'table-config', $title: 'Table Configuration', value: {} }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public getArray(count: number): number[] {\r\n return Array.from({ length: count });\r\n }\r\n\r\n public onChangeConfiguration(event: any): void { \r\n const columns = event.columns.map((col: any) => {\r\n return {\r\n header: col?.header,\r\n cellType: col?.cellType,\r\n placeholder: col?.placeholder,\r\n options: col?.options,\r\n apiUrl: col?.apiUrl,\r\n valueKey: col?.valueKey,\r\n labelKey: col?.labelKey,\r\n className: col?.className,\r\n apiKey: col?.apiKey\r\n }\r\n });\r\n if(!event?.enableAPI) {\r\n this.tableConfig.columns = columns;\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => ({ name: `SKU-${index + 1}`, age: index % 2 !== 0, gender: 'male' }))\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => {\r\n // const rows = columns.map((c: any) => {\r\n // return {\r\n // c?.header: null\r\n // }\r\n // })\r\n // return rows\r\n // })\r\n this.tableConfig.rows = Array.from({ length: +event?.rows }, (_, index) => {\r\n return columns.reduce((acc: any, c: any) => {\r\n acc[c?.header] = ''; // Initialize each column key with null\r\n return acc;\r\n }, {});\r\n });\r\n \r\n this.fetchSmartDropdownData();\r\n }\r\n if(event?.enableAPI) {\r\n this.drawTable(event, columns)\r\n this.tableConfig = {\r\n columns: columns,\r\n rows: []\r\n };\r\n }\r\n\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n private updateSettings(): void{\r\n if(this.fxData.settings){\r\n for(let setting of this.fxData.settings){\r\n if(setting.key === 'table-config'){\r\n setting.value = this.tableConfig;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public drawTable(event: any, columns: any): void {\r\n let rows;\r\n this.http.get(event.api).subscribe((res: any) => {\r\n if(res) {\r\n rows = res.map((item: any) => {\r\n const newObj: Record<string, any> = {};\r\n columns.forEach((col: any) => {\r\n newObj[col.header] = item[col.apiKey];\r\n });\r\n return newObj;\r\n });\r\n this.tableConfig = {\r\n columns,\r\n rows\r\n }\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n })\r\n }\r\n\r\n public deleteFile(file: any, index: number): void {\r\n this.uploadedImages.splice(index, 1, null);\r\n this.tableConfig.rows[index][this.tableConfig.columns.find((f: any) => f.cellType === 'file-upload')?.header] = null;\r\n console.log(\"tableConfig\", this.tableConfig);\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n public parseUrls(url: string, index: number): void {\r\n this.http.get(url, { responseType: 'blob' }).subscribe({\r\n next: (imageBlob: Blob) => {\r\n const imageURL = URL.createObjectURL(imageBlob);\r\n this.uploadedImages[index] = {\r\n result: imageURL,\r\n file: null\r\n };\r\n },\r\n error: (error) => {\r\n console.error('Error fetching image:', error);\r\n }\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<fx-settings-panel [fxData]=\"fxData\" [tableData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\" class=\"formBuilder_dynamic_table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <!-- <option value=\"\">Select {{column.header}}</option> -->\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <!-- <option value=\"\">Select {{column.header}}</option> -->\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <!-- <div style=\"display: flex; flex-direction: column; align-items: end;justify-content: end;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div> -->\r\n <div class=\"flex flex-col items-end justify-end relative\">\r\n <div class=\"relative\">\r\n <img \r\n width=\"100\" \r\n *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" \r\n [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\"\r\n class=\"rounded shadow\"\r\n />\r\n <button \r\n *ngIf=\"uploadedImages?.[rowIndex]?.['result']\"\r\n (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\" \r\n class=\"absolute top-0 right-0 text-white rounded-md w-5 h-5 flex items-center justify-center shadow-lg hover:bg-red-600\"\r\n >\r\n ❌\r\n </button>\r\n </div>\r\n \r\n <input \r\n [class]=\"column?.className\" \r\n type=\"file\" \r\n name=\"file\" \r\n #uploadFile \r\n hidden \r\n multiple\r\n (change)=\"uploadImage($event, rowIndex)\" \r\n />\r\n \r\n <button (click)=\"uploadFile.click()\" class=\"mt-2 bg-blue-500 text-white px-3 py-1 rounded hover:bg-blue-600\">\r\n Upload\r\n </button>\r\n </div>\r\n \r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxIconSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'lib-toggle-button',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, ReactiveFormsModule, FormsModule],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrl: './toggle-button.component.css'\r\n})\r\nexport class ToggleButtonComponent extends FxBaseComponent { \r\n public toggleBtnControl = new UntypedFormControl(false);\r\n public isToggled = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleBtnControl);\r\n })\r\n }\r\n\r\n public toggle(): void {\r\n this.isToggled = !this.toggleBtnControl.value;\r\n this.toggleBtnControl.setValue(this.isToggled);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'classes', $title: 'Classes', value: '' }),\r\n new FxStringSetting({ key: 'active-text', $title: 'Active Text', value: 'On' }),\r\n new FxStringSetting({ key: 'inactive-text', $title: 'Inactive Text', value: 'Off' }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSelectSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { v4 as uuidv4} from 'uuid';\r\n\r\n@Component({\r\n selector: 'fx-uploader',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './uploader.component.html',\r\n styleUrl: './uploader.component.css'\r\n})\r\nexport class UploaderComponent extends FxBaseComponent {\r\n public uploadFileControl = new UntypedFormControl();\r\n public uploadedFiles: Array<any> = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.uploadFileControl);\r\n })\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n for(let i = 0; i < input?.files?.length; i++) {\r\n const file = input.files[i];\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n this.uploadedFiles.push({\r\n file: file,\r\n previewUrl: e.target?.result,\r\n name: file?.name,\r\n id: uuidv4()\r\n })\r\n this.uploadFileControl.setValue(this.uploadedFiles)\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n }\r\n\r\n public deleteFile(id: string): void {\r\n this.uploadedFiles = this.uploadedFiles.filter(file => file?.id !== id);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'upload-text', $title: 'Upload Text', value: 'Upload File'}),\r\n new FxSelectSetting({key: 'multiple-upload', $title: 'Multiple Upload', value: false}, [{option: 'Enable', value: true}, {option: 'Disable', value: false}])\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'fx-toggle',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class ToggleComponent extends FxBaseComponent {\r\n public toggleControl = new FormControl<boolean>(false)\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleControl);\r\n })\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'accept', $title: 'Accept Text', value: 'Yes' }),\r\n new FxStringSetting({ key: 'reject', $title: 'Reject Text', value: 'No' })\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FxBuilderConfiguration, FxComponentBuilder, FxForm, FxMode, FxScope, FxUtils } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from './custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from './fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from './components/dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from './components/toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from './components/uploader/uploader.component';\r\nimport { ToggleComponent } from './components/toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-builder-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, FxComponentBuilder],\r\n template: `\r\n <fx-component-builder \r\n #componentBuilder \r\n [fx-form]=\"fxForm\" \r\n [configuration]=\"fxConfiguration\" \r\n [scope]=\"FxScope.BUILDER\"\r\n >\r\n </fx-component-builder>\r\n `,\r\n styleUrl: './form-builder.css',\r\n})\r\nexport class FxBuilderWrapperComponent implements OnInit {\r\n @ViewChild('componentBuilder') componentBuilder!: FxComponentBuilder;\r\n @Input({ alias: 'fx-form', required: true }) fxForm: FxForm = FxUtils.createNewForm();\r\n public fxMode: FxMode = FxMode.EDIT;\r\n public fxConfiguration: FxBuilderConfiguration = {\r\n settings: true,\r\n logics: true,\r\n customControls: true,\r\n }\r\n\r\n protected readonly FxScope = FxScope;\r\n protected readonly FxMode = FxMode;\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n };\r\n\r\n public getParsedForm(): FxForm {\r\n return this.componentBuilder.getParsedForm();\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FxForm, FxFormComponent } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from '../../custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from '../dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from '../toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from '../uploader/uploader.component';\r\nimport { ToggleComponent } from '../toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-form-component',\r\n standalone: true,\r\n imports: [CommonModule, FxFormComponent],\r\n template: `\r\n <fx-form \r\n [fxForm]=\"fxForm\" \r\n [value]=\"variables\" \r\n (onSubmit)=\"onSubmit($event)\" \r\n #form\r\n >\r\n </fx-form>\r\n `,\r\n})\r\nexport class FxFormWrapperComponent implements OnChanges, OnInit {\r\n @ViewChild('form') form!: FxFormComponent;\r\n @Input() fxForm!: FxForm;\r\n @Input() variables: any;\r\n @Output() fxFormSubmit = new EventEmitter<any>();\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) {\r\n this.registerCustomComponents();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void { \r\n // if('variables' in changes && !changes['fxForm']) {\r\n // this.fxWrapperService.variables$.next(this.variables);\r\n // }\r\n if ('variables' in changes) {\r\n this.fxWrapperService.variables$.next(this.variables);\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n // if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n // this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n // this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n // this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n // this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n // this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n // }\r\n }\r\n\r\n\r\n private registerCustomComponents(): void {\r\n const components = [\r\n { name: 'Dispatch To Clinic', key: 'dispatch-to-clinic', component: DispatchToClinicComponent },\r\n { name: 'Dynamic Table', key: 'dynamic-table', component: DynamicTableComponent },\r\n { name: 'Toggle Button', key: 'toggle-button', component: ToggleButtonComponent },\r\n { name: 'Uploader', key: 'uploader', component: UploaderComponent },\r\n { name: 'Toggle', key: 'toggle', component: ToggleComponent }\r\n ];\r\n \r\n components.forEach(({ name, key, component }) => {\r\n if (!this.fxWrapperService.getComponent(key)) {\r\n this.fxWrapperService.registerCustomComponent(name, key, component);\r\n }\r\n });\r\n }\r\n\r\n public onSubmit(event: any): void {\r\n this.fxFormSubmit.emit(event);\r\n }\r\n\r\n public submit(): void {\r\n this.form.submit();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of fx-builder-wrapper\r\n */\r\n\r\nexport * from './lib/fx-builder-wrapper.service';\r\nexport * from './lib/fx-builder-wrapper.component'; // builder // admin\r\nexport * from './lib/components/fx-form-component/fx-form-component.component'; // form preview\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.FxBuilderWrapperService","i3","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;MAOa,uBAAuB,CAAA;AAEd,IAAA,mBAAA,CAAA;AADb,IAAA,UAAU,GAAG,IAAI,eAAe,CAAa,IAAI,CAAC,CAAC;AAC1D,IAAA,WAAA,CAAoB,mBAA+C,EAAA;QAA/C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;KAAK;AAEjE,IAAA,uBAAuB,CAAC,KAAa,EAAE,QAAgB,EAAE,SAAgC,EAAA;QAE9F,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE;AAC9D,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,WAAW,EAAE;gBACX,KAAK;AACL,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE;AACN,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAA;KACH;AAEM,IAAA,YAAY,CAAC,QAAgB,EAAA;QAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACxD;IAEO,oBAAoB,GAAA;AACxB,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;KAChC;wGA7BQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACMK,MAAO,yBAA0B,SAAQ,eAAe,CAAA;AAYxC,IAAA,GAAA,CAAA;AAXZ,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1B,IAAA,cAAc,GAAyB,IAAI,eAAe,CAAM,EAAE,CAAC,CAAC;AAEpE,IAAA,YAAY,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7C,QAAA,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,QAAA,cAAc,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzC,QAAA,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3E,QAAA,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjC,KAAA,CAAC,CAAA;AAEF,IAAA,WAAA,CAAoB,GAAsB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAGxC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;IAES,QAAQ,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;KAC1G;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEM,IAAA,eAAe,CAAC,OAAY,EAAA;AACjC,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACxC;wGA9BU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZtC,qtJA6Ee,EDpEH,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,uLAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG1D,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,qtJAAA,EAAA,CAAA;;;MEM3D,2BAA2B,CAAA;AAclB,IAAA,EAAA,CAAA;IAbX,OAAO,GAAY,KAAK,CAAC;AACzB,IAAA,OAAO,CAAM;AACZ,IAAA,SAAS,GAAG,IAAI,YAAY,EAAW,CAAC;AACxC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;AACzC,IAAA,eAAe,CAAK;IAEtB,IAAI,GAAW,CAAC,CAAC;IACjB,SAAS,GAAY,KAAK,CAAC;IAC3B,GAAG,GAAW,EAAE,CAAC;AAEjB,IAAA,WAAW,CAAY;IACvB,WAAW,GAAa,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAEnK,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvD;IACD,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;KACrD;;IAGM,SAAS,GAAA;AACd,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACpC,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjC,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1B,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,EAAE;AACX,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACpC;AAGM,IAAA,YAAY,CAAC,KAAa,EAAA;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;;AAGM,IAAA,eAAe,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACnD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACpC,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnD,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,YAAA,WAAW,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;AACxC,YAAA,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9B,YAAA,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClC,YAAA,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClC,YAAA,SAAS,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;AACpC,YAAA,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CACpB,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBACvD,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACpD,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,aAAA,CAAC,CAAC,CACJ;AACF,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;KACjD;;AAGM,IAAA,SAAS,CAAC,WAAmB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChC,YAAA,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACrC,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvC,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAChD;;AAGM,IAAA,UAAU,CAAC,WAAmB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;KACjE;;IAGM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;;IAGM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;AACd,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;IAEM,QAAQ,GAAA;QACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAChE;wGA5GU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,ECfxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uxUAiKW,EDtJC,MAAA,EAAA,CAAA,ypjDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+PAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,wPAAE,cAAc,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI1G,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,uxUAAA,EAAA,MAAA,EAAA,CAAA,ypjDAAA,CAAA,EAAA,CAAA;kFAK3H,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACE,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;AELF,MAAO,sBAAuB,SAAQ,WAAW,CAAA;AAEzC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;IAC3C,OAAO,GAAY,KAAK,CAAC;AACvB,IAAA,SAAS,CAAK;AACvB,IAAA,WAAW,CAAK;AAEhB,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;KAClC;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;wGAbQ,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfnC,igDA2BM,EDhBM,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kIAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIvE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,igDAAA,EAAA,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA,CAAA;8BAMvE,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEYJ,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAmBpC,IAAA,GAAA,CAAA;AAAgC,IAAA,uBAAA,CAAA;IAlB3C,SAAS,GAAe,EAAE,CAAC;AAC3B,IAAA,WAAW,GAAW,MAAM,CAAC,IAAI,CAAC;AAClC,IAAA,WAAW,GAAQ;AAC1B,QAAA,OAAO,EAAE;AACP,YAAA,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AACzC,SAAA;KACJ,CAAC;AAEQ,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;IACnC,cAAc,GAAuD,EAAE,CAAC;AAExE,IAAA,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,oBAAoB,GAA8D,EAAE,CAAC;AACpF,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,WAAoB,CAAA,GAAsB,EAAU,uBAAgD,EAAA;QAClG,KAAK,CAAC,GAAG,CAAC,CAAC;QADO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAAU,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QAElG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAG;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxC,SAAC,CAAC,CAAA;KACH;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAC1C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAc,KAAI;YACrD,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,kBAAuB,CAAC;AAC5B,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACpD,oBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;wBACjC,kBAAkB,GAAG,KAAK,CAAC;qBAC5B;iBACF;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE;;oBAE1C,MAAM,cAAc,GAAG,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,EAAE,MAAM,CAAC;oBAC1G,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,KAAI;;;;;;AAQ7D,wBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;4BACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;yBAC7C;AACH,qBAAC,CAAC,CAAA;oBACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,oBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;;;AAGrC,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC1C,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACxE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtD,wBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;qBAC1B,EAAE,EAAE,CAAC,CAAC;iBACR;aACF;AACH,SAAC,CAAC,CAAA;KACL;IAEM,eAAe,GAAA;QACpB,UAAU,CAAC,MAAK;YACd,IAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE;gBACrE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;SACF,EAAE,GAAG,CAAC,CAAA;KACR;IAES,sBAAsB,GAAA;QAC9B,IAAI,CAAC,WAAW,CAAC,OAAO;AACrB,aAAA,MAAM,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,QAAQ,KAAK,gBAAgB,IAAI,MAAM,EAAE,MAAM,CAAC;AAC7F,aAAA,OAAO,CAAC,CAAC,MAAyB,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,MAAM,CAAC,MAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,KAAI;AAC7D,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACtE,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAS,CAAC;AAC7B,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAS,CAAC;AAC7B,iBAAA,CAAC,CAAC,CAAC;AACN,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,CAAC,KAAY,EAAE,QAAgB,EAAA;QAC/C,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAChC,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;oBAC9B,MAAM,EAAE,MAAM,CAAC,MAAgB;AAC/B,oBAAA,IAAI,EAAE,IAAI;iBACX,CAAA;AACD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;gBACxH,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/C,aAAC,CAAC;AACF,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC5B;KACF;IAES,QAAQ,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC/E,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SACvF,CAAC;KACH;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEM,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;KACtC;AAEM,IAAA,qBAAqB,CAAC,KAAU,EAAA;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAI;YAC7C,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,MAAM;gBACnB,QAAQ,EAAE,GAAG,EAAE,QAAQ;gBACvB,WAAW,EAAE,GAAG,EAAE,WAAW;gBAC7B,OAAO,EAAE,GAAG,EAAE,OAAO;gBACrB,MAAM,EAAE,GAAG,EAAE,MAAM;gBACnB,QAAQ,EAAE,GAAG,EAAE,QAAQ;gBACvB,QAAQ,EAAE,GAAG,EAAE,QAAQ;gBACvB,SAAS,EAAE,GAAG,EAAE,SAAS;gBACzB,MAAM,EAAE,GAAG,EAAE,MAAM;aACpB,CAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAG,CAAC,KAAK,EAAE,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;;;;;;;;;;YAUnC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAM,KAAI;oBACzC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACpB,oBAAA,OAAO,GAAG,CAAC;iBACZ,EAAE,EAAE,CAAC,CAAC;AACT,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;AACD,QAAA,IAAG,KAAK,EAAE,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC9B,IAAI,CAAC,WAAW,GAAG;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,IAAI,EAAE,EAAE;aACT,CAAC;SACH;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAClD;IAEO,cAAc,GAAA;AACpB,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAC;YACtB,KAAI,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAC;AACxC,gBAAA,IAAG,OAAO,CAAC,GAAG,KAAK,cAAc,EAAC;AAChC,oBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;iBAChC;aACF;SACF;KACF;IAEM,SAAS,CAAC,KAAU,EAAE,OAAY,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;YAC9C,IAAG,GAAG,EAAE;gBACN,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;oBAC3B,MAAM,MAAM,GAAwB,EAAE,CAAC;AACvC,oBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AAC3B,wBAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxC,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,MAAM,CAAC;AAChB,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,GAAG;oBACjB,OAAO;oBACP,IAAI;iBACL,CAAA;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAClD;AACH,SAAC,CAAC,CAAA;KACH;IAEM,UAAU,CAAC,IAAS,EAAE,KAAa,EAAA;QACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAClD;IAEM,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AACrD,YAAA,IAAI,EAAE,CAAC,SAAe,KAAI;gBACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;AAC3B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,IAAI,EAAE,IAAI;iBACX,CAAC;aACH;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;aAC/C;AACF,SAAA,CAAC,CAAC;KACJ;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;wGAjOU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BlC,gsNAuGoB,ED7ER,MAAA,EAAA,CAAA,wdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2bAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKrE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,gsNAAA,EAAA,MAAA,EAAA,CAAA,wdAAA,CAAA,EAAA,CAAA;yHAMxE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;AEtBF,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAIpC,IAAA,GAAA,CAAA;AAHb,IAAA,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjD,SAAS,GAAG,KAAK,CAAC;AAEzB,IAAA,WAAA,CAAoB,GAAsB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAG;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxC,SAAC,CAAC,CAAA;KACH;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChD;IAES,QAAQ,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrE,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/E,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACrF,CAAC;KACH;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtC;wGA1BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlC,mYAUA,EDFY,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI1D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA,CAAA;;;AEKlE,MAAO,iBAAkB,SAAQ,eAAe,CAAA;AAIhC,IAAA,GAAA,CAAA;AAHb,IAAA,iBAAiB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC7C,aAAa,GAAe,EAAE,CAAC;AAEtC,IAAA,WAAA,CAAoB,GAAsB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAA;QADQ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAG;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACzC,SAAC,CAAC,CAAA;KACH;AAEM,IAAA,cAAc,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;AAC/C,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAChC,gBAAA,MAAM,CAAC,MAAM,GAAG,CAAC,IAAG;AAClB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM;wBAC5B,IAAI,EAAE,IAAI,EAAE,IAAI;wBAChB,EAAE,EAAEC,EAAM,EAAE;AACb,qBAAA,CAAC,CAAA;oBACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACrD,iBAAC,CAAA;AACD,gBAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC5B;SACF;KACF;AAEM,IAAA,UAAU,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KACzE;IAES,QAAQ,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC;AACvF,YAAA,IAAI,eAAe,CAAC,EAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAC,EAAE,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAC,EAAE,EAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;SAC7J,CAAC;KACH;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtC;wGA5CU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9B,i5BAuBA,EDdY,MAAA,EAAA,CAAA,gqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,gQAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI1D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,i5BAAA,EAAA,MAAA,EAAA,CAAA,gqBAAA,CAAA,EAAA,CAAA;;;AEGlE,MAAO,eAAgB,SAAQ,eAAe,CAAA;AAG9B,IAAA,GAAA,CAAA;AAFb,IAAA,aAAa,GAAG,IAAI,WAAW,CAAU,KAAK,CAAC,CAAA;AAEtD,IAAA,WAAA,CAAoB,GAAsB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAA;QADQ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAG;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,SAAC,CAAC,CAAA;KACH;IAES,QAAQ,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC3E,YAAA,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC3E,CAAC;KACH;IAES,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACtC;wGAnBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,okBAYA,EDJY,MAAA,EAAA,CAAA,isBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI1D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,okBAAA,EAAA,MAAA,EAAA,CAAA,isBAAA,CAAA,EAAA,CAAA;;;MEiB3D,yBAAyB,CAAA;AAahB,IAAA,gBAAA,CAAA;AAZW,IAAA,gBAAgB,CAAsB;AACxB,IAAA,MAAM,GAAW,OAAO,CAAC,aAAa,EAAE,CAAC;AAC/E,IAAA,MAAM,GAAW,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAA,eAAe,GAA2B;AAC/C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,cAAc,EAAE,IAAI;KACrB,CAAA;IAEkB,OAAO,GAAG,OAAO,CAAC;IAClB,MAAM,GAAG,MAAM,CAAC;AAEnC,IAAA,WAAA,CAAoB,gBAAyC,EAAA;QAAzC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;KAAK;IAE3D,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,EAAE;YACtE,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;SACtH;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE;YACjE,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,eAAe,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;SACxG;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE;YACjE,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,eAAe,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;SACxG;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE;YAC5D,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;SAC1F;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC1D,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;SACpF;KACF;;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;KAC9C;IAEM,oBAAoB,GAAA;AACzB,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;KAChC;wGAvCU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAX1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;GAQT,EATS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y8nkxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAY/B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,kBAAkB,CAAC,EACjC,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y8nkxBAAA,CAAA,EAAA,CAAA;yFAI8B,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB,CAAA;gBACgB,MAAM,EAAA,CAAA;sBAAlD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;;;MCHhC,sBAAsB,CAAA;AAMb,IAAA,gBAAA,CAAA;AALD,IAAA,IAAI,CAAmB;AACjC,IAAA,MAAM,CAAU;AAChB,IAAA,SAAS,CAAM;AACd,IAAA,YAAY,GAAG,IAAI,YAAY,EAAO,CAAC;AAEjD,IAAA,WAAA,CAAoB,gBAAyC,EAAA;QAAzC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QAC3D,IAAI,CAAC,wBAAwB,EAAE,CAAC;KAChC;AAEK,IAAA,WAAW,CAAC,OAAsB,EAAA;;;;AAIvC,QAAA,IAAI,WAAW,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvD;KACF;IAEM,QAAQ,GAAA;;;;;;;;;;;;;;;;KAgBd;IAGO,wBAAwB,GAAA;AAC9B,QAAA,MAAM,UAAU,GAAG;YACjB,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE,SAAS,EAAE,yBAAyB,EAAE;YAC/F,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,EAAE;YACjF,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,EAAE;YACjF,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;YACnE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;SAC9D,CAAC;AAEF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;YAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;aACrE;AACH,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,QAAQ,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KACpB;wGA5DU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAVvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;GAQT,EATS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAW5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;AACxC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA,CAAA;yFAEoB,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;gBACR,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;AC5BT;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"fx-form-builder-wrapper.mjs","sources":["../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.service.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.ts","../../../projects/fx-builder-wrapper/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/configuration-panel/configuration-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.ts","../../../projects/fx-builder-wrapper/src/lib/panel/settings-panel/settings-panel.component.html","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/uploader/uploader.component.html","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/toggle/toggle.component.html","../../../projects/fx-builder-wrapper/src/lib/fx-builder-wrapper.component.ts","../../../projects/fx-builder-wrapper/src/lib/components/fx-form-component/fx-form-component.component.ts","../../../projects/fx-builder-wrapper/src/public-api.ts","../../../projects/fx-builder-wrapper/src/fx-form-builder-wrapper.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\r\nimport { FxBaseComponent, FxComponentRegistryService, FxForm, FxUtils } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FxBuilderWrapperService {\r\n public variables$ = new BehaviorSubject<any | null>(null);\r\n constructor(private fxComponentRegistry: FxComponentRegistryService) { }\r\n\r\n public registerCustomComponent(title: string, selector: string, component: Type<FxBaseComponent>\r\n ): void {\r\n this.fxComponentRegistry.registerComponent(selector, component, {\r\n registeringAs: \"CUSTOM\",\r\n libraryItem: {\r\n title,\r\n icon: 'fa-eye',\r\n fxData: {\r\n id: null,\r\n name: selector,\r\n value: \"\",\r\n selector: selector,\r\n elements: [],\r\n events: []\r\n }\r\n },\r\n })\r\n }\r\n\r\n public getComponent(selector: string): Type<FxBaseComponent> | undefined {\r\n return this.fxComponentRegistry.getComponent(selector);\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule, Validators, FormBuilder, FormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { BehaviorSubject, take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-dispatch-to-clinic',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent],\r\n templateUrl: './dispatch-to-clinic.component.html'\r\n})\r\nexport class DispatchToClinicComponent extends FxBaseComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n public clinicAddress$: BehaviorSubject<any> = new BehaviorSubject<any>({});\r\n\r\n public dispatchForm: FormGroup = this.fb.group({\r\n courierName: ['', Validators.required],\r\n trackingNumber: ['', Validators.required],\r\n trackingUrl: ['', [Validators.required, Validators.pattern('https?://.+')]],\r\n notes: ['', Validators.required]\r\n })\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n\r\n this.onInit.subscribe(() => {\r\n this._register(this.dispatchForm);\r\n });\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [new FxStringSetting({ key: 'heading-text', $title: 'Heading Text', value: 'My Default Value' })];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public copyToClipboard(address: any): void {\r\n navigator.clipboard.writeText(address);\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FormArray, FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'fx-configuration-panel',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, DialogModule, InputTextModule, FormsModule, DropdownModule, ButtonModule],\r\n templateUrl: './configuration-panel.component.html',\r\n styleUrl: './configuration-panel.component.css',\r\n})\r\nexport class ConfigurationPanelComponent implements OnInit , OnChanges{\r\n @Input() visible: boolean = false;\r\n @Input() configs: any;\r\n @Output() isVisible = new EventEmitter<boolean>();\r\n @Output() configuration = new EventEmitter<any>();\r\n @Input() tableConfigData:any;\r\n\r\n public rows: number = 1;\r\n public enableAPI: boolean = false;\r\n public api: string = '';\r\n\r\n public dynamicForm: FormGroup;\r\n public columnTypes: string[] = ['text', 'input-text', 'input-number', 'dropdown', 'smart-dropdown', 'checkbox', 'radio', 'radio-group', 'file-upload', 'textarea'];\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.dynamicForm = this.fb.group({\r\n columns: this.fb.array([])\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n }\r\n ngOnInit(): void {\r\n if (this.tableConfigData && Array.isArray(this.tableConfigData) && this.tableConfigData.length > 0) {\r\n this.patchData(); // If data exists, patch it into the form\r\n } else {\r\n this.addColumn(); // Otherwise, add a default column\r\n }\r\n }\r\n\r\n get columns(): FormArray {\r\n return this.dynamicForm.get('columns') as FormArray;\r\n }\r\n\r\n // **🔹 Add Column Dynamically**\r\n public addColumn(): void {\r\n const columnFormGroup = this.fb.group({\r\n header: ['', Validators.required],\r\n cellType: ['', Validators.required],\r\n placeholder: '',\r\n options: this.fb.array([]),\r\n apiUrl: '',\r\n valueKey: '',\r\n labelKey: '',\r\n className: '',\r\n apiKey: ''\r\n });\r\n this.columns.push(columnFormGroup);\r\n }\r\n\r\n \r\n public removeColumn(index: number): void {\r\n if (this.columns.length > 1) {\r\n this.columns.removeAt(index);\r\n }\r\n }\r\n\r\n // **🔹 Duplicate Column**\r\n public duplicateColumn(index: number): void {\r\n const currentColumn = this.columns.at(index).value;\r\n const duplicateColumn = this.fb.group({\r\n header: [currentColumn.header, Validators.required],\r\n cellType: [currentColumn.cellType, Validators.required],\r\n placeholder: [currentColumn.placeholder],\r\n apiUrl: [currentColumn.apiUrl],\r\n valueKey: [currentColumn.valueKey],\r\n labelKey: [currentColumn.labelKey],\r\n className: [currentColumn.className],\r\n apiKey: [currentColumn.apiKey],\r\n options: this.fb.array(\r\n currentColumn.options.map((option: any) => this.fb.group({\r\n optionName: [option.optionName, Validators.required],\r\n optionValue: [option.optionValue, Validators.required]\r\n }))\r\n )\r\n });\r\n this.columns.insert(index + 1, duplicateColumn);\r\n }\r\n\r\n // **🔹 Add Options Dynamically**\r\n public addOption(columnIndex: number): void {\r\n const optionGroup = this.fb.group({\r\n optionName: ['', Validators.required],\r\n optionValue: ['', Validators.required]\r\n });\r\n\r\n this.getOptions(columnIndex).push(optionGroup);\r\n }\r\n\r\n // **🔹 Get Options FormArray for a Specific Column**\r\n public getOptions(columnIndex: number): FormArray {\r\n return this.columns.at(columnIndex).get('options') as FormArray;\r\n }\r\n\r\n // **🔹 Close Dialog**\r\n public closeDialog(): void {\r\n this.isVisible.emit(false);\r\n }\r\n\r\n // **🔹 Save Configuration**\r\n public saveConfiguration(): void {\r\n this.configuration.emit({\r\n rows: this.rows,\r\n columns: this.dynamicForm.value?.columns,\r\n enableAPI: this.enableAPI,\r\n api: this.api\r\n });\r\n this.isVisible.emit(false);\r\n }\r\n\r\n public onSubmit(): void {\r\n console.log(\"Value columns formArray\", this.dynamicForm.value);\r\n }\r\n\r\n public patchData(): void {\r\n this.tableConfigData.columns.forEach((column: any) => {\r\n // Creating the FormGroup for each column\r\n const columnFormGroup = this.fb.group({\r\n header: [column.header || '', Validators.required],\r\n cellType: [column.cellType || '', Validators.required],\r\n placeholder: [column.placeholder || ''],\r\n options: this.fb.array(\r\n column.options ? column.options.map((option: any) => \r\n this.fb.group({\r\n optionName: [option.optionName, Validators.required],\r\n optionValue: [option.optionValue, Validators.required]\r\n })\r\n ) : []\r\n ),\r\n apiUrl: [column.apiUrl || ''],\r\n valueKey: [column.valueKey || ''],\r\n labelKey: [column.labelKey || ''],\r\n className: [column.className || ''],\r\n apiKey: [column.apiKey || '']\r\n });\r\n \r\n \r\n this.columns.push(columnFormGroup);\r\n });\r\n }\r\n}\r\n","<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\" (onHide)=\"closeDialog()\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n ➕\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n ❌\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FxComponent, FxData, FxMode, FxSettingComponent, FxSettingsService, FxUtils } from '@instantsys-labs/fx';\r\nimport { Dialog } from 'primeng/dialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ConfigurationPanelComponent } from '../configuration-panel/configuration-panel.component';\r\n\r\n@Component({\r\n selector: 'fx-settings-panel',\r\n standalone: true,\r\n imports: [CommonModule, ButtonModule, InputTextModule, ConfigurationPanelComponent],\r\n templateUrl: './settings-panel.component.html',\r\n styleUrl: './settings-panel.component.css'\r\n})\r\nexport class SettingsPanelComponent extends FxComponent implements OnInit ,OnChanges {\r\n \r\n @Output() configuration = new EventEmitter<any>();\r\n public visible: boolean = false;\r\n @Input() tableData:any;\r\n tableConfig:any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.tableConfig = this.tableData;\r\n }\r\n\r\n public openSettingDialog(): void {\r\n this.visible = true;\r\n }\r\n}\r\n","<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" [tableConfigData]=\"tableConfig\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, inject, Input, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FxBaseComponent, FxMode, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { SettingsPanelComponent } from '../../panel/settings-panel/settings-panel.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport {Subject, takeUntil } from 'rxjs';\r\n\r\nexport interface TableColumnConfig {\r\n header: string;\r\n cellType: 'text' | 'input-text' | 'input-number' | 'dropdown' | 'smart-dropdown' | 'checkbox' | 'radio' | 'radio-group' | 'file-upload' | 'textarea';\r\n placeholder?: string;\r\n options?: string[];\r\n apiUrl?: string;\r\n valueKey?: string;\r\n labelKey?: string;\r\n className?: string;\r\n}\r\nexport interface TableConfig {\r\n columns: TableColumnConfig[];\r\n rows: any[];\r\n}\r\n@Component({\r\n selector: 'fx-dynamic-table',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SettingsPanelComponent, ReactiveFormsModule],\r\n templateUrl: './dynamic-table.component.html',\r\n styleUrl: './dynamic-table.component.css',\r\n})\r\n\r\nexport class DynamicTableComponent extends FxBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() tableRows: Array<any> = [];\r\n @Input() previewType: FxMode = FxMode.VIEW;\r\n @Input() tableConfig: any = {\r\n columns: [\r\n { header: 'Column 1', cellType: 'text' },\r\n { header: 'Column 2', cellType: 'text' },\r\n { header: 'Column 3', cellType: 'text' },\r\n { header: 'Column 4', cellType: 'text' },\r\n { header: 'Column 5', cellType: 'text' },\r\n ],\r\n};\r\n\r\n private destroy$ = new Subject<Boolean>();\r\n public uploadedImages: Array<Record<string, string | File | null> | null> = [];\r\n\r\n public tableFormControl = new FormControl();\r\n public smartDropdownOptions: { [key: string]: Array<{ name: string, value: string }> } = {};\r\n private http = inject(HttpClient);\r\n constructor(private cdr: ChangeDetectorRef, private fxBuilderWrapperService: FxBuilderWrapperService) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.tableFormControl);\r\n })\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.fxBuilderWrapperService.variables$.pipe(\r\n takeUntil(this.destroy$)).subscribe((variables: any) => {\r\n if (variables) {\r\n let dynamicTableValues: any;\r\n for (const [key, value] of Object.entries(variables)) {\r\n if (key.includes('dynamic-table')) {\r\n dynamicTableValues = value;\r\n }\r\n }\r\n if (Object.keys(dynamicTableValues).length) {\r\n // const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;\r\n dynamicTableValues?.rows?.forEach((item: any, index: number) => {\r\n // // this.uploadedImages[index] = item[fileHeaderName] ? item[fileHeaderName]: null;\r\n // const fileUrl = item[fileHeaderName]; // Get the file URL\r\n\r\n // this.uploadedImages[index] = fileUrl\r\n // ? { result: fileUrl, file: null } // Store the URL as 'result'\r\n // : null;\r\n \r\n if (item[fileHeaderName]) {\r\n this.parseUrls(item[fileHeaderName], index);\r\n }\r\n })\r\n console.log(\"uploadedImages\", this.uploadedImages);\r\n console.log(\"dynamictable\", dynamicTableValues);\r\n this.tableConfig = dynamicTableValues;\r\n this.fxData.value = this.tableConfig;\r\n // this.tableFormControl.reset();\r\n // this.tableFormControl.setValue(this.tableConfig);\r\n this.tableFormControl = new FormControl();\r\n setTimeout(() => { // Delay to ensure proper patching\r\n this.tableFormControl.patchValue(this.tableConfig, { emitEvent: true });\r\n console.log(\"tableFormControl\",this.tableFormControl);\r\n this.cdr.detectChanges();\r\n }, 50);\r\n }\r\n }\r\n })\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n if(this.fxData?.value && Object.keys(this.fxData?.value)?.length != 0) {\r\n this.tableConfig = this.fxData.value;\r\n this.fetchSmartDropdownData();\r\n }\r\n }, 100)\r\n }\r\n \r\n protected fetchSmartDropdownData(): void {\r\n this.tableConfig.columns\r\n .filter((column: TableColumnConfig) => column.cellType === 'smart-dropdown' && column?.apiUrl)\r\n .forEach((column: TableColumnConfig) => {\r\n this.http.get<any>(column.apiUrl!).subscribe((response: any) => {\r\n this.smartDropdownOptions[column.header] = response.map((item: any) => ({\r\n value: item[column.valueKey!],\r\n name: item[column.labelKey!],\r\n }));\r\n });\r\n });\r\n }\r\n\r\n public uploadImage(event: Event, rowIndex: number): void {\r\n const file = (event.target as HTMLInputElement).files?.[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uploadedImages[rowIndex] = {\r\n result: reader.result as string,\r\n file: file\r\n }\r\n this.tableConfig.rows[rowIndex][this.tableConfig.columns.find((f: any) => f.cellType === 'file-upload')?.header] = file;\r\n console.log(\"tableConfig\", this.tableConfig);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'column-size', $title: 'No. of columns', value: 1 }),\r\n new FxStringSetting({ key: 'table-config', $title: 'Table Configuration', value: {} }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n\r\n public getArray(count: number): number[] {\r\n return Array.from({ length: count });\r\n }\r\n\r\n public onChangeConfiguration(event: any): void { \r\n const columns = event.columns.map((col: any) => {\r\n return {\r\n header: col?.header,\r\n cellType: col?.cellType,\r\n placeholder: col?.placeholder,\r\n options: col?.options,\r\n apiUrl: col?.apiUrl,\r\n valueKey: col?.valueKey,\r\n labelKey: col?.labelKey,\r\n className: col?.className,\r\n apiKey: col?.apiKey\r\n }\r\n });\r\n if(!event?.enableAPI) {\r\n this.tableConfig.columns = columns;\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => ({ name: `SKU-${index + 1}`, age: index % 2 !== 0, gender: 'male' }))\r\n // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => {\r\n // const rows = columns.map((c: any) => {\r\n // return {\r\n // c?.header: null\r\n // }\r\n // })\r\n // return rows\r\n // })\r\n this.tableConfig.rows = Array.from({ length: +event?.rows }, (_, index) => {\r\n return columns.reduce((acc: any, c: any) => {\r\n acc[c?.header] = ''; // Initialize each column key with null\r\n return acc;\r\n }, {});\r\n });\r\n \r\n this.fetchSmartDropdownData();\r\n }\r\n if(event?.enableAPI) {\r\n this.drawTable(event, columns)\r\n this.tableConfig = {\r\n columns: columns,\r\n rows: []\r\n };\r\n }\r\n\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n private updateSettings(): void{\r\n if(this.fxData.settings){\r\n for(let setting of this.fxData.settings){\r\n if(setting.key === 'table-config'){\r\n setting.value = this.tableConfig;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public drawTable(event: any, columns: any): void {\r\n let rows;\r\n this.http.get(event.api).subscribe((res: any) => {\r\n if(res) {\r\n rows = res.map((item: any) => {\r\n const newObj: Record<string, any> = {};\r\n columns.forEach((col: any) => {\r\n newObj[col.header] = item[col.apiKey];\r\n });\r\n return newObj;\r\n });\r\n this.tableConfig = {\r\n columns,\r\n rows\r\n }\r\n this.fxData.value = this.tableConfig;\r\n this.tableFormControl.reset();\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n })\r\n }\r\n\r\n public deleteFile(file: any, index: number): void {\r\n this.uploadedImages.splice(index, 1, null);\r\n this.tableConfig.rows[index][this.tableConfig.columns.find((f: any) => f.cellType === 'file-upload')?.header] = null;\r\n console.log(\"tableConfig\", this.tableConfig);\r\n this.tableFormControl.setValue(this.tableConfig);\r\n }\r\n\r\n public parseUrls(url: string, index: number): void {\r\n this.http.get(url, { responseType: 'blob' }).subscribe({\r\n next: (imageBlob: Blob) => {\r\n const imageURL = URL.createObjectURL(imageBlob);\r\n this.uploadedImages[index] = {\r\n result: imageURL,\r\n file: null\r\n };\r\n },\r\n error: (error) => {\r\n console.error('Error fetching image:', error);\r\n }\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<fx-settings-panel [fxData]=\"fxData\" [tableData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\" class=\"formBuilder_dynamic_table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <!-- <option value=\"\">Select {{column.header}}</option> -->\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <!-- <option value=\"\">Select {{column.header}}</option> -->\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <!-- <div style=\"display: flex; flex-direction: column; align-items: end;justify-content: end;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div> -->\r\n <div class=\"flex flex-col items-end justify-end relative\">\r\n <div class=\"relative\">\r\n <img \r\n width=\"100\" \r\n *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" \r\n [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\"\r\n class=\"rounded shadow\"\r\n />\r\n <button \r\n *ngIf=\"uploadedImages?.[rowIndex]?.['result']\"\r\n (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\" \r\n class=\"absolute top-0 right-0 text-white rounded-md w-5 h-5 flex items-center justify-center shadow-lg hover:bg-red-600\"\r\n >\r\n ❌\r\n </button>\r\n </div>\r\n \r\n <input \r\n [class]=\"column?.className\" \r\n type=\"file\" \r\n name=\"file\" \r\n #uploadFile \r\n hidden \r\n multiple\r\n (change)=\"uploadImage($event, rowIndex)\" \r\n />\r\n \r\n <button (click)=\"uploadFile.click()\" class=\"mt-2 bg-blue-500 text-white px-3 py-1 rounded hover:bg-blue-600\">\r\n Upload\r\n </button>\r\n </div>\r\n \r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxIconSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'lib-toggle-button',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, ReactiveFormsModule, FormsModule],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrl: './toggle-button.component.css'\r\n})\r\nexport class ToggleButtonComponent extends FxBaseComponent { \r\n public toggleBtnControl = new UntypedFormControl(false);\r\n public isToggled = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleBtnControl);\r\n })\r\n }\r\n\r\n public toggle(): void {\r\n this.isToggled = !this.toggleBtnControl.value;\r\n this.toggleBtnControl.setValue(this.isToggled);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'classes', $title: 'Classes', value: '' }),\r\n new FxStringSetting({ key: 'active-text', $title: 'Active Text', value: 'On' }),\r\n new FxStringSetting({ key: 'inactive-text', $title: 'Inactive Text', value: 'Off' }),\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSelectSetting, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\nimport { v4 as uuidv4} from 'uuid';\r\n\r\n@Component({\r\n selector: 'fx-uploader',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './uploader.component.html',\r\n styleUrl: './uploader.component.css'\r\n})\r\nexport class UploaderComponent extends FxBaseComponent {\r\n public uploadFileControl = new UntypedFormControl();\r\n public uploadedFiles: Array<any> = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.uploadFileControl);\r\n })\r\n }\r\n\r\n public onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n for(let i = 0; i < input?.files?.length; i++) {\r\n const file = input.files[i];\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n this.uploadedFiles.push({\r\n file: file,\r\n previewUrl: e.target?.result,\r\n name: file?.name,\r\n id: uuidv4()\r\n })\r\n this.uploadFileControl.setValue(this.uploadedFiles)\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n }\r\n\r\n public deleteFile(id: string): void {\r\n this.uploadedFiles = this.uploadedFiles.filter(file => file?.id !== id);\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'upload-text', $title: 'Upload Text', value: 'Upload File'}),\r\n new FxSelectSetting({key: 'multiple-upload', $title: 'Multiple Upload', value: false}, [{option: 'Enable', value: true}, {option: 'Disable', value: false}])\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FxBaseComponent, FxComponent, FxSetting, FxStringSetting, FxValidation, FxValidatorService } from '@instantsys-labs/fx';\r\n\r\n@Component({\r\n selector: 'fx-toggle',\r\n standalone: true,\r\n imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class ToggleComponent extends FxBaseComponent {\r\n public toggleControl = new FormControl<boolean>(false)\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super(cdr)\r\n this.onInit.subscribe((fxData)=>{\r\n this._register(this.toggleControl);\r\n })\r\n }\r\n\r\n protected settings(): FxSetting[] {\r\n return [\r\n new FxStringSetting({ key: 'accept', $title: 'Accept Text', value: 'Yes' }),\r\n new FxStringSetting({ key: 'reject', $title: 'Reject Text', value: 'No' })\r\n ];\r\n }\r\n\r\n protected validations(): FxValidation[] {\r\n return [FxValidatorService.required];\r\n }\r\n}\r\n","<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FxBuilderConfiguration, FxComponentBuilder, FxForm, FxMode, FxScope, FxUtils } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from './custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from './fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from './components/dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from './components/toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from './components/uploader/uploader.component';\r\nimport { ToggleComponent } from './components/toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-builder-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, FxComponentBuilder],\r\n template: `\r\n <fx-component-builder \r\n #componentBuilder \r\n [fx-form]=\"fxForm\" \r\n [configuration]=\"fxConfiguration\" \r\n [scope]=\"FxScope.BUILDER\"\r\n >\r\n </fx-component-builder>\r\n `,\r\n styleUrl: './form-builder.css',\r\n})\r\nexport class FxBuilderWrapperComponent implements OnInit {\r\n @ViewChild('componentBuilder') componentBuilder!: FxComponentBuilder;\r\n @Input({ alias: 'fx-form', required: true }) fxForm: FxForm = FxUtils.createNewForm();\r\n public fxMode: FxMode = FxMode.EDIT;\r\n public fxConfiguration: FxBuilderConfiguration = {\r\n settings: true,\r\n logics: true,\r\n customControls: true,\r\n }\r\n\r\n protected readonly FxScope = FxScope;\r\n protected readonly FxMode = FxMode;\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) { }\r\n\r\n public ngOnInit(): void {\r\n if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n }\r\n if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n }\r\n };\r\n\r\n public getParsedForm(): FxForm {\r\n return this.componentBuilder.getParsedForm();\r\n }\r\n\r\n public getInitializedFxForm(): FxForm {\r\n return FxUtils.createNewForm(); \r\n }\r\n}\r\n\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FxForm, FxFormComponent } from '@instantsys-labs/fx';\r\nimport { DispatchToClinicComponent } from '../../custom-controls/dispatch-to-clinic/dispatch-to-clinic.component';\r\nimport { FxBuilderWrapperService } from '../../fx-builder-wrapper.service';\r\nimport { DynamicTableComponent } from '../dynamic-table/dynamic-table.component';\r\nimport { ToggleButtonComponent } from '../toggle-button/toggle-button.component';\r\nimport { UploaderComponent } from '../uploader/uploader.component';\r\nimport { ToggleComponent } from '../toggle/toggle.component';\r\n\r\n@Component({\r\n selector: 'fx-form-component',\r\n standalone: true,\r\n imports: [CommonModule, FxFormComponent],\r\n template: `\r\n <fx-form \r\n [fxForm]=\"fxForm\" \r\n [value]=\"variables\" \r\n (onSubmit)=\"onSubmit($event)\" \r\n #form\r\n >\r\n </fx-form>\r\n `,\r\n})\r\nexport class FxFormWrapperComponent implements OnChanges, OnInit {\r\n @ViewChild('form') form!: FxFormComponent;\r\n @Input() fxForm!: FxForm;\r\n @Input() variables: any;\r\n @Output() fxFormSubmit = new EventEmitter<any>();\r\n\r\n constructor(private fxWrapperService: FxBuilderWrapperService) {\r\n this.registerCustomComponents();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void { \r\n // if('variables' in changes && !changes['fxForm']) {\r\n // this.fxWrapperService.variables$.next(this.variables);\r\n // }\r\n if ('variables' in changes) {\r\n this.fxWrapperService.variables$.next(this.variables);\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n // if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {\r\n // this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {\r\n // this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {\r\n // this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {\r\n // this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);\r\n // }\r\n // if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {\r\n // this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);\r\n // }\r\n }\r\n\r\n\r\n private registerCustomComponents(): void {\r\n const components = [\r\n { name: 'Dispatch To Clinic', key: 'dispatch-to-clinic', component: DispatchToClinicComponent },\r\n { name: 'Dynamic Table', key: 'dynamic-table', component: DynamicTableComponent },\r\n { name: 'Toggle Button', key: 'toggle-button', component: ToggleButtonComponent },\r\n { name: 'Uploader', key: 'uploader', component: UploaderComponent },\r\n { name: 'Toggle', key: 'toggle', component: ToggleComponent }\r\n ];\r\n \r\n components.forEach(({ name, key, component }) => {\r\n if (!this.fxWrapperService.getComponent(key)) {\r\n this.fxWrapperService.registerCustomComponent(name, key, component);\r\n }\r\n });\r\n }\r\n\r\n public onSubmit(event: any): void {\r\n this.fxFormSubmit.emit(event);\r\n }\r\n\r\n public submit(): void {\r\n this.form.submit();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of fx-builder-wrapper\r\n */\r\n\r\nexport * from './lib/fx-builder-wrapper.service';\r\nexport * from './lib/fx-builder-wrapper.component'; // builder // admin\r\nexport * from './lib/components/fx-form-component/fx-form-component.component'; // form preview\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.FxBuilderWrapperService","i3","uuidv4"],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ export declare class ConfigurationPanelComponent implements OnInit, OnChanges {
|
|
|
25
25
|
closeDialog(): void;
|
|
26
26
|
saveConfiguration(): void;
|
|
27
27
|
onSubmit(): void;
|
|
28
|
+
patchData(): void;
|
|
28
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationPanelComponent, never>;
|
|
29
30
|
static ɵcmp: i0.ɵɵComponentDeclaration<ConfigurationPanelComponent, "fx-configuration-panel", never, { "visible": { "alias": "visible"; "required": false; }; "configs": { "alias": "configs"; "required": false; }; "tableConfigData": { "alias": "tableConfigData"; "required": false; }; }, { "isVisible": "isVisible"; "configuration": "configuration"; }, never, never, true, never>;
|
|
30
31
|
}
|