@codex-ts/core-lib 1.0.7 → 1.0.8

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.
@@ -1566,6 +1566,11 @@ class BaseTabbedFormComponent extends BasePageComponent {
1566
1566
  const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;
1567
1567
  const formDataList = state?.formDataList || [];
1568
1568
  const selectedData = formDataList.find((data) => data.uuid === defaultTab.value);
1569
+ if (selectedData) {
1570
+ this.currentFormData = selectedData;
1571
+ this.originalFormData = { ...selectedData };
1572
+ this.patchFormData(selectedData);
1573
+ }
1569
1574
  this.router.navigate([defaultTab.value], {
1570
1575
  relativeTo: this.route,
1571
1576
  state: {
@@ -1630,6 +1635,8 @@ class BaseTabbedFormComponent extends BasePageComponent {
1630
1635
  context: ComponentContext.TABBED
1631
1636
  }
1632
1637
  });
1638
+ // Ensure the form data is updated after navigation
1639
+ this.patchFormData(this.currentFormData);
1633
1640
  }
1634
1641
  createTabsFromFormDataList(formDataList) {
1635
1642
  return formDataList.map((data) => ({
@@ -1649,17 +1656,20 @@ class BaseTabbedFormComponent extends BasePageComponent {
1649
1656
  const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;
1650
1657
  const formDataList = state?.formDataList || [];
1651
1658
  const selectedData = formDataList.find((data) => data.uuid === value);
1652
- // Update current form data
1653
- this.currentFormData = selectedData;
1654
- this.originalFormData = selectedData;
1655
- this.router.navigate([value], {
1656
- relativeTo: this.route,
1657
- state: {
1658
- formData: selectedData,
1659
- formDataList: formDataList,
1660
- context: ComponentContext.TABBED
1661
- }
1662
- });
1659
+ if (selectedData) {
1660
+ // Update current form data
1661
+ this.currentFormData = selectedData;
1662
+ this.originalFormData = { ...selectedData };
1663
+ this.patchFormData(selectedData);
1664
+ this.router.navigate([value], {
1665
+ relativeTo: this.route,
1666
+ state: {
1667
+ formData: selectedData,
1668
+ formDataList: formDataList,
1669
+ context: ComponentContext.TABBED
1670
+ }
1671
+ });
1672
+ }
1663
1673
  }
1664
1674
  else if (this.formType === TabbedFormType.STANDARD) {
1665
1675
  // For STANDARD type, navigate to the tab route with the parent form data
@@ -1 +1 @@
1
- {"version":3,"file":"codex-ts-core-lib.mjs","sources":["../../../../angular/core-lib/src/lib/services/utils.service.ts","../../../../angular/core-lib/src/lib/services/enum-registry.service.ts","../../../../angular/core-lib/src/lib/services/formly-config.service.ts","../../../../angular/core-lib/src/lib/services/notification.service.ts","../../../../angular/core-lib/src/lib/services/http-utility.service.ts","../../../../angular/core-lib/src/lib/services/reference-data-provider.service.ts","../../../../angular/core-lib/src/lib/services/entity-registry.service.ts","../../../../angular/core-lib/src/lib/services/base-crud.service.ts","../../../../angular/core-lib/src/lib/enums/component-context.enum.ts","../../../../angular/core-lib/src/lib/enums/tabbed-form-type.enum.ts","../../../../angular/core-lib/src/lib/components/base-page.component.ts","../../../../angular/core-lib/src/lib/constants/app.messages.ts","../../../../angular/core-lib/src/lib/constants/app.constants.ts","../../../../angular/core-lib/src/lib/components/base-form.component.ts","../../../../angular/core-lib/src/lib/components/base-list-page.component.ts","../../../../angular/core-lib/src/lib/components/base-tabbed-form.component.ts","../../../../angular/core-lib/src/lib/pipes/indian-date.pipe.ts","../../../../angular/core-lib/src/lib/components/formly/types/text-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/select.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/radio.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/numeric-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/multiselect.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/date.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/checkbox.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/textarea.type.ts","../../../../angular/core-lib/src/lib/components/formly/form-field.wrapper.ts","../../../../angular/core-lib/src/lib/components/formly/formly.constants.ts","../../../../angular/core-lib/src/lib/components/formly/core-formly.module.ts","../../../../angular/core-lib/src/index.ts","../../../../angular/core-lib/src/codex-ts-core-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A utility service that provides common reusable functionality\r\n * such as UUID validation and error message display\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Validates if a string is a valid UUID\r\n * @param uuid The string to validate\r\n * @returns boolean indicating if the string is a valid UUID\r\n */\r\n isValidUUID(uuid: string): boolean {\r\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\r\n return uuidRegex.test(uuid);\r\n }\r\n\r\n /**\r\n * Shows an error message using PrimeNG's MessageService\r\n * @param message The error message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showError(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows a success message using PrimeNG's MessageService\r\n * @param message The success message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showSuccess(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the display value for an enum key or array of enum keys\r\n * @param enumType The enum type\r\n * @param key The enum key or array of enum keys\r\n * @returns The display value for the enum key or comma-separated list of display values for array of keys\r\n */\r\n getEnumValue<T>(enumType: T, key: string | string[]): string {\r\n if (!key) return '';\r\n \r\n if (Array.isArray(key)) {\r\n // Handle array of keys - map each to its display value and join with comma\r\n return key.map(k => (enumType as any)[k] || k).join(', ');\r\n }\r\n \r\n // Handle single key\r\n return (enumType as any)[key] || key;\r\n }\r\n\r\n /**\r\n * Gets all values from an enum type for use in formly select fields\r\n * @param enumType The enum type to get values from\r\n * @returns Array of {label, value} pairs for formly select options\r\n */\r\n getEnumValues<T extends { [key: string]: string | number }>(enumType: T): Array<{label: string, value: string}> {\r\n return Object.entries(enumType)\r\n .filter(([key]) => isNaN(Number(key))) // Filter out reverse mappings\r\n .map(([key, value]) => ({\r\n value: key, // enum key as the value\r\n label: value as string // enum value as the label\r\n }));\r\n }\r\n\r\n /**\r\n * Converts a camelCase string to Title Case with spaces\r\n * @param camelCase The camelCase string to convert\r\n * @returns The Title Case string\r\n */\r\n camelCaseToTitleCase(camelCase: string): string {\r\n if (!camelCase) return '';\r\n const spacedString = camelCase.replace(/([a-z])([A-Z])/g, '$1 $2');\r\n return spacedString.charAt(0).toUpperCase() + spacedString.slice(1);\r\n }\r\n\r\n /**\r\n * Converts a string to kebab-case\r\n * @param input The string to convert\r\n * @returns The kebab-case string\r\n */\r\n toKebabCase(input: string): string {\r\n return input\r\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2')\r\n .toLowerCase();\r\n }\r\n\r\n /**\r\n * Converts a string to camelCase.\r\n * Example: \"loan-application\" becomes \"loanApplication\"\r\n * @param input The string to convert\r\n * @returns The camelCase string\r\n */\r\n toCamelCase(input: string): string {\r\n if (!input) return '';\r\n \r\n // Split by non-alphanumeric chars\r\n const words = input.split(/[^a-zA-Z0-9]/);\r\n const result = [words[0].toLowerCase()];\r\n \r\n // Capitalize first letter of remaining words\r\n for (let i = 1; i < words.length; i++) {\r\n const word = words[i];\r\n if (word) {\r\n result.push(word.charAt(0).toUpperCase() + word.substring(1).toLowerCase());\r\n }\r\n }\r\n \r\n return result.join('');\r\n }\r\n\r\n /**\r\n * Removes double forward slashes from an endpoint string while preserving the protocol\r\n * e.g. \"http://localhost:8080//api//v1//users\" -> \"http://localhost:8080/api/v1/users\"\r\n * @param endpoint The endpoint string to clean\r\n * @returns The cleaned endpoint string without double slashes\r\n */\r\n removeDoubleSlashes(endpoint: string): string {\r\n if (!endpoint) return '';\r\n \r\n // Split the URL into protocol and the rest to preserve protocol slashes\r\n const [protocol, ...rest] = endpoint.split('://');\r\n \r\n if (!rest.length) {\r\n // If no protocol is present, just clean the entire string\r\n return endpoint.replace(/\\/+/g, '/');\r\n }\r\n \r\n // Clean the path part (after protocol) and reconstruct the URL\r\n const cleanPath = rest.join('://').replace(/\\/+/g, '/');\r\n return `${protocol}://${cleanPath}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UtilsService } from './utils.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnumRegistryService {\r\n private enumMap = new Map<string, any>();\r\n\r\n constructor(private utilsService: UtilsService) {}\r\n\r\n /**\r\n * Initialize global enums\r\n */\r\n static registerGlobalEnums(enums: Record<string, any>) {\r\n return {\r\n provide: EnumRegistryService,\r\n useFactory: (utilsService: UtilsService) => {\r\n const service = new EnumRegistryService(utilsService);\r\n Object.entries(enums).forEach(([name, enumType]) => {\r\n service.register(name, enumType);\r\n });\r\n return service;\r\n },\r\n deps: [UtilsService]\r\n };\r\n }\r\n \r\n /**\r\n * Register an enum type with the service\r\n * @param name Name to register the enum under\r\n * @param enumType The enum type to register\r\n */\r\n register(name: string, enumType: any) {\r\n this.enumMap.set(name, enumType);\r\n }\r\n \r\n /**\r\n * Get formly-compatible options array for a registered enum\r\n * @param name Name of the registered enum\r\n * @returns Array of {label, value} pairs suitable for formly select fields\r\n */\r\n getEnumValues(name: string) {\r\n const enumType = this.enumMap.get(name);\r\n if (!enumType) {\r\n console.warn(`Enum type \"${name}\" not found in registry`);\r\n return [];\r\n }\r\n return this.utilsService.getEnumValues(enumType);\r\n }\r\n\r\n /**\r\n * Check if an enum type is registered\r\n * @param name Name of the enum to check\r\n */\r\n hasEnum(name: string): boolean {\r\n return this.enumMap.has(name);\r\n }\r\n\r\n /**\r\n * Clear all registered enums\r\n */\r\n clear() {\r\n this.enumMap.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { PageMode } from '../constants/app.constants';\r\nimport { EnumRegistryService } from './enum-registry.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormlyConfigService {\r\n constructor(private enumRegistry: EnumRegistryService) {}\r\n\r\n getFormConfig(\r\n fields: FormlyFieldConfig[], \r\n mode: PageMode,\r\n dynamicOptions?: Record<string, any>\r\n ): FormlyFieldConfig[] {\r\n const commonConfig = {\r\n props: {\r\n disabled: mode === 'view'\r\n }\r\n };\r\n\r\n return fields.map((field: FormlyFieldConfig) => {\r\n // Apply dynamic options from child component\r\n if (dynamicOptions && field.key && typeof field.key === 'string') {\r\n const fieldOptions = dynamicOptions[field.key];\r\n if (fieldOptions) {\r\n field.props = {\r\n ...field.props,\r\n ...fieldOptions\r\n };\r\n }\r\n }\r\n\r\n // Handle field groups recursively\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.getFormConfig(field.fieldGroup, mode, dynamicOptions);\r\n }\r\n\r\n return {\r\n ...field,\r\n ...commonConfig,\r\n props: {\r\n ...field.props,\r\n ...commonConfig.props\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n private messageSubject = new BehaviorSubject<any>(null);\r\n message$ = this.messageSubject.asObservable();\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showSuccess(message: string) {\r\n const msgObj = {\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n showError(message: string) {\r\n const msgObj = {\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n clearMessage() {\r\n this.messageSubject.next(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpEvent } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, finalize, forkJoin } from 'rxjs';\r\nimport { catchError, retry, timeout } from 'rxjs/operators';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A general-purpose HTTP utility service that provides enhanced HTTP operations\r\n * beyond the standard Angular HttpClient. This service includes features such as:\r\n * - Loading state management\r\n * - Standardized error handling\r\n * - Request timeouts and retries\r\n * - File upload capabilities\r\n * - Batch request handling\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpUtilityService {\r\n private loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this.loading.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService?: MessageService\r\n ) {}\r\n\r\n /**\r\n * Perform a GET request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n get<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a POST request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n post<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.post<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a PUT request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n put<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.put<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a DELETE request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n delete<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.delete<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Upload a file with optional additional data\r\n * @param url The upload endpoint URL\r\n * @param file The file to upload\r\n * @param additionalData Additional form data to include\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n uploadFile<T>(url: string, file: File, additionalData?: Record<string, any>, options?: {\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number,\r\n onProgress?: (percentage: number) => void\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n \r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n \r\n let httpOptions: any = {\r\n headers: options?.headers,\r\n withCredentials: options?.withCredentials\r\n };\r\n \r\n // If progress tracking is requested\r\n if (options?.onProgress) {\r\n httpOptions.reportProgress = true;\r\n httpOptions.observe = 'events';\r\n }\r\n \r\n // Create the request\r\n let request$ = this.http.post<any>(url, formData, httpOptions);\r\n \r\n // Add retries if specified\r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n // Add timeout if specified\r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n // Track progress if a callback is provided\r\n if (options?.onProgress) {\r\n return new Observable<T>(observer => {\r\n request$.subscribe({\r\n next: (event: HttpEvent<any>) => {\r\n if (event.type === 1 && event.total) { // HttpEventType.UploadProgress\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n options.onProgress!(percentDone);\r\n } else if (event.type === 4) { // HttpEventType.Response\r\n observer.next(event.body);\r\n observer.complete();\r\n }\r\n },\r\n error: (error) => {\r\n observer.error(this.handleError(error));\r\n this.loading.next(false);\r\n },\r\n complete: () => {\r\n this.loading.next(false);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // Standard request without progress tracking\r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n ) as Observable<T>;\r\n }\r\n\r\n /**\r\n * Execute multiple HTTP requests in parallel\r\n * @param requests Array of HTTP request observables\r\n * @returns An observable that emits when all requests complete\r\n */\r\n batchRequests<T>(requests: Observable<T>[]): Observable<T[]> {\r\n this.loading.next(true);\r\n return forkJoin(requests).pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Download a file from the server\r\n * @param url The file URL\r\n * @param filename Optional filename to save as\r\n * @param options Additional request options\r\n */\r\n downloadFile(url: string, filename?: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n timeoutMs?: number\r\n }): Observable<Blob> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: 'blob',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Create parameter string from an object\r\n * @param params Object containing parameters\r\n * @returns HttpParams object\r\n */\r\n createParams(params: Record<string, any>): HttpParams {\r\n let httpParams = new HttpParams();\r\n \r\n Object.keys(params).forEach(key => {\r\n const value = params[key];\r\n if (value !== undefined && value !== null) {\r\n httpParams = httpParams.append(key, value.toString());\r\n }\r\n });\r\n \r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Standardized error handler for HTTP requests\r\n * @param error The HTTP error\r\n * @returns An observable that errors with the processed error object\r\n */\r\n private handleError(error: HttpErrorResponse) {\r\n console.error('An HTTP error occurred:', error);\r\n \r\n let errorMessage = 'An error occurred';\r\n let errorCode: string | undefined;\r\n \r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n errorMessage = error.error.message;\r\n } else {\r\n // Server-side error\r\n errorCode = error.status.toString();\r\n \r\n switch (error.status) {\r\n case 400:\r\n errorMessage = error.error?.message || 'Bad request';\r\n break;\r\n case 401:\r\n errorMessage = 'Unauthorized';\r\n break;\r\n case 403:\r\n errorMessage = 'Access denied';\r\n break;\r\n case 404:\r\n errorMessage = 'Resource not found';\r\n break;\r\n case 408:\r\n errorMessage = 'Request timeout';\r\n break;\r\n case 500:\r\n errorMessage = 'Server error';\r\n break;\r\n case 503:\r\n errorMessage = 'Service unavailable';\r\n break;\r\n default:\r\n errorMessage = error.error?.message || `Error ${error.status}`;\r\n break;\r\n }\r\n }\r\n\r\n this.showError(errorMessage);\r\n return throwError(() => ({\r\n error,\r\n message: errorMessage,\r\n code: errorCode\r\n }));\r\n }\r\n\r\n /**\r\n * Display an error message using the message service\r\n * @param message Error message to display\r\n */\r\n private showError(message: string) {\r\n if (this.messageService) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReferenceDataProviderService {\r\n\r\n private endpoints: Record<string, string> = {};\r\n\r\n // Method to set/update endpoints\r\n setEndpoints(endpoints: Record<string, string>) {\r\n this.endpoints = { ...this.endpoints, ...endpoints };\r\n }\r\n\r\n getReferenceEndpoint(entityName: string): string | null {\r\n console.log('getReferenceEndpoint', entityName, this.endpoints);\r\n let endpoint = this.endpoints[entityName];\r\n if (endpoint != null && endpoint.length > 0) {\r\n if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {\r\n return endpoint; // Absolute URL\r\n } else {\r\n // Relative URL, assume it's within the application's base context\r\n return endpoint;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { ReferenceDataProviderService } from './reference-data-provider.service';\r\n\r\nexport interface ReferenceDto {\r\n key: string;\r\n displayLabel: string;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityRegistryService {\r\n constructor(\r\n private httpUtility: HttpUtilityService,\r\n private dataProvider: ReferenceDataProviderService\r\n ) {}\r\n\r\n /**\r\n * Gets reference options for an entity, suitable for select/dropdown components\r\n * @param entityName The name of the entity (e.g., 'customers', 'departments')\r\n * @returns Observable of options array with label/value pairs\r\n */\r\n getEntityOptions(entityName: string): Observable<{ label: string; value: string; data?: any; }[]> {\r\n console.log('getEntityOptions', entityName);\r\n const url = this.dataProvider.getReferenceEndpoint(entityName);\r\n\r\n if (!url) {\r\n console.warn(`No endpoint configured for entity: ${entityName}`);\r\n return new Observable(subscriber => {\r\n subscriber.next([]);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n return this.httpUtility.get<ReferenceDto[]>(url, {\r\n retries: 1,\r\n timeoutMs: 10000,\r\n }).pipe(\r\n map((items) =>\r\n items?.map((item) => ({\r\n label: item.displayLabel,\r\n value: item.key,\r\n data: item.data,\r\n })) || []\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { UtilsService } from './utils.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { EntityService } from './entity.service';\r\n\r\nexport abstract class BaseCrudService<T extends { uuid: string }> implements EntityService<T> {\r\n // Use the loading state from HttpUtilityService\r\n get loading$() {\r\n return this.httpUtility.loading$;\r\n }\r\n\r\n protected apiUrl: string;\r\n\r\n /**\r\n * Creates an instance of BaseCrudService.\r\n * @param httpUtility - Service for making HTTP requests\r\n * @param utilsService - Utility service for common operations\r\n * @param resourcePath - API resource path (e.g., 'customers', 'products')\r\n * @param backendBaseUrl - Base URL for the backend API\r\n * @param messageService - Optional service for showing messages\r\n */\r\n protected constructor(\r\n protected httpUtility: HttpUtilityService,\r\n protected utilsService: UtilsService,\r\n protected resourcePath: string,\r\n protected backendBaseUrl: string,\r\n protected messageService: MessageService | undefined\r\n ) {\r\n this.apiUrl = this.joinUrls(backendBaseUrl, resourcePath);\r\n }\r\n\r\n /**\r\n * Joins URL parts ensuring no double slashes\r\n */\r\n private joinUrls(...parts: string[]): string {\r\n return parts.map(part => part.replace(/^\\/+|\\/+$/g, '')).join('/');\r\n }\r\n\r\n getAll(pageRequest?: PageRequest): Observable<Page<T>> {\r\n if (pageRequest) {\r\n return this.httpUtility.post<Page<T>>(`${this.apiUrl}/page`, pageRequest);\r\n } else {\r\n return this.httpUtility.get<Page<T>>(this.apiUrl);\r\n }\r\n }\r\n\r\n getById(uuid: string): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.get<T>(`${this.apiUrl}/${uuid}`);\r\n }\r\n\r\n create(entity: Omit<T, 'uuid'>): Observable<T> {\r\n return this.httpUtility.post<T>(this.apiUrl, entity);\r\n }\r\n\r\n update(uuid: string, entity: Omit<T, 'uuid'>): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.put<T>(`${this.apiUrl}/${uuid}`, entity);\r\n }\r\n\r\n delete(uuid: string): Observable<void> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.delete<void>(`${this.apiUrl}/${uuid}`);\r\n }\r\n}\r\n","export enum ComponentContext {\r\n STANDALONE = 'STANDALONE',\r\n TABBED = 'TABBED',\r\n MODAL = 'MODAL',\r\n EMBEDDED = 'EMBEDDED'\r\n}\r\n","export enum TabbedFormType {\r\n STANDARD = 'STANDARD',\r\n LIST = 'LIST'\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\n\r\n/**\r\n * Base component for all page components in the application.\r\n * Provides common functionality like loading state and message display.\r\n */\r\n@Directive()\r\nexport abstract class BasePageComponent {\r\n protected loading: boolean = false;\r\n \r\n constructor(\r\n protected utilsService: UtilsService,\r\n protected notificationService: NotificationService\r\n ) {}\r\n\r\n /**\r\n * Display an error message to the user\r\n * @param detail The error message to display\r\n */\r\n protected showError(detail: string): void {\r\n this.notificationService.showError(detail);\r\n }\r\n\r\n /**\r\n * Display a success message to the user\r\n * @param detail The success message to display\r\n */\r\n protected showSuccess(detail: string): void {\r\n this.notificationService.showSuccess(detail);\r\n }\r\n}\r\n","export const AppMessages = {\r\n COMMON: {\r\n ERROR: {\r\n GENERAL: 'An error occurred',\r\n INVALID_INPUT: 'Invalid input provided',\r\n REQUIRED_FIELD: 'This field is required'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully',\r\n UPDATE: 'updated successfully',\r\n DELETE: 'deleted successfully'\r\n }\r\n },\r\n FORM: {\r\n ERROR: {\r\n INIT: 'Failed to initialize form',\r\n SAVE: 'Failed to save',\r\n LOAD: 'Failed to load',\r\n VALIDATION: 'Please fill in all required fields correctly'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully'\r\n }\r\n },\r\n LIST: {\r\n ERROR: {\r\n LOAD: 'Failed to load',\r\n DELETE: 'Failed to delete',\r\n NAVIGATION: 'Navigation failed',\r\n INVALID_ID: 'Cannot perform action without ID'\r\n },\r\n SUCCESS: {\r\n DELETE: 'deleted successfully'\r\n }\r\n }\r\n} as const;\r\n","export class AppConstants {\r\n static readonly FORM = {\r\n MODE: 'mode',\r\n UUID: 'uuid',\r\n NEW: 'new'\r\n } as const;\r\n\r\n static readonly PAGE_MODE = {\r\n CREATE: 'create',\r\n EDIT: 'edit',\r\n VIEW: 'view'\r\n } as const;\r\n}\r\n\r\nexport type PageMode = typeof AppConstants.PAGE_MODE[keyof typeof AppConstants.PAGE_MODE];\r\n","import { Component, OnInit, Injectable, Input } from '@angular/core';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, filter, take } from 'rxjs';\r\nimport { FormlyConfigService } from '../services/formly-config.service';\r\nimport { EntityService } from '../services/entity.service';\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n form = new FormGroup({});\r\n fields: FormlyFieldConfig[] = [];\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData: any = {};\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n @Input() context: ComponentContext = ComponentContext.STANDALONE;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected formlyConfigService: FormlyConfigService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n this.form.valueChanges.subscribe(() => {\r\n console.log('[BaseFormComponent] Form value changed:', this.form.value);\r\n this.currentFormData = { ...this.form.value };\r\n this.hasChanges = this.hasFormChanges(this.currentFormData);\r\n });\r\n\r\n // Use queryParams instead of params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n private initializeFormData() {\r\n console.log('[BaseFormComponent] Initializing form data');\r\n console.log('[BaseFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode, using defaults');\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state,\r\n ...this.route.snapshot.data\r\n };\r\n console.log('[BaseFormComponent] Combined state:', state);\r\n console.log('[BaseFormComponent] Final state being used:', state);\r\n \r\n if (state && 'formData' in state) {\r\n console.log('[BaseFormComponent] Found form data in state:', state['formData']);\r\n this.patchFormData(state['formData']);\r\n } else {\r\n console.log('[BaseFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n this.route.queryParams.pipe(take(1)).subscribe(params => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n this.loadEntity(uuid);\r\n });\r\n }\r\n\r\n private initializeForm(params: any) {\r\n console.log('[BaseFormComponent] Initializing form with params:', params);\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n // Check for context in router state\r\n const state = window.history.state;\r\n if (state?.context) {\r\n this.context = state.context;\r\n console.log('[BaseFormComponent] Context set from router state:', this.context);\r\n }\r\n\r\n this.initializeFormData();\r\n }\r\n\r\n protected patchFormData(data: any) {\r\n console.log('[BaseFormComponent] Patching form data:', data);\r\n if (data) {\r\n if (!this.fields || this.fields.length === 0) {\r\n console.warn('[BaseFormComponent] Fields not initialized yet, reinitializing');\r\n this.fields = this.getFormlyFieldConfig();\r\n }\r\n this.currentFormData = { ...data };\r\n this.originalFormData = data;\r\n this.isNew = false;\r\n \r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n console.log('[BaseFormComponent] Fields available:', this.fields);\r\n \r\n setTimeout(() => {\r\n if (!this.form.valid) {\r\n console.warn('[BaseFormComponent] Form validation issues after data patch');\r\n }\r\n console.log('[BaseFormComponent] Form state after sync:', {\r\n valid: this.form.valid,\r\n values: this.form.value,\r\n currentData: this.currentFormData\r\n });\r\n }, 100);\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n } else if (this.isValidPageMode(routeMode)) {\r\n this.mode = routeMode;\r\n } else {\r\n throw new Error(`Invalid page mode: ${routeMode}`);\r\n }\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseFormComponent] Setting up form state, mode:', this.mode);\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.VIEW) {\r\n console.log('[BaseFormComponent] View mode setup');\r\n this.form.disable();\r\n }\r\n }\r\n\r\n protected getFormlyFieldConfig(): FormlyFieldConfig[] {\r\n return this.formlyConfigService.getFormConfig(\r\n this.getJsonFields(),\r\n this.mode,\r\n this.getDropdownOptions()\r\n );\r\n }\r\n\r\n protected onSubmitRoute(): string[] {\r\n return [`/${this.getEntityName().toLowerCase()}s`];\r\n }\r\n\r\n protected getEntityOperations(): {\r\n create: (data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n update: (uuid: string, data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n getById: (uuid: string) => Observable<T>;\r\n } {\r\n const entityService = this.getEntityService();\r\n return {\r\n create: (data) => entityService.create(data),\r\n update: (uuid, data) => entityService.update(uuid, { ...data, uuid } as T),\r\n getById: (uuid) => entityService.getById(uuid)\r\n };\r\n }\r\n\r\n protected onSubmit() {\r\n console.log('[BaseFormComponent] Form submission:', {\r\n formValid: this.form.valid,\r\n formData: this.currentFormData,\r\n formState: this.form.value\r\n });\r\n\r\n if (!this.currentFormData || Object.keys(this.currentFormData).length === 0) {\r\n this.notificationService.showError('No data to save');\r\n return;\r\n }\r\n\r\n if (this.form.valid) {\r\n if (this.isNew) {\r\n console.log('[BaseFormComponent] Saving new entity');\r\n this.saveEntity();\r\n return;\r\n }\r\n\r\n const hasChanges = this.hasFormChanges(this.currentFormData);\r\n console.log('[BaseFormComponent] Change detection:', {\r\n hasChanges,\r\n currentData: this.currentFormData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n if (!hasChanges) {\r\n this.notificationService.showSuccess('No changes to save');\r\n return;\r\n }\r\n\r\n console.log('[BaseFormComponent] Saving changes');\r\n this.saveEntity();\r\n } else {\r\n console.warn('[BaseFormComponent] Form validation failed:', this.form.errors);\r\n this.notificationService.showError('Please check form errors');\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: any): boolean {\r\n if (!this.originalFormData || this.isNew) {\r\n return true;\r\n }\r\n\r\n console.log('[BaseFormComponent] Checking for changes:', {\r\n currentData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n const hasChanges = Object.keys(currentData).some(key => {\r\n const currentValue = currentData[key];\r\n const originalValue = (this.originalFormData as any)[key];\r\n const changed = currentValue !== originalValue;\r\n \r\n if (changed) {\r\n console.log(`[BaseFormComponent] Field '${key}' changed:`, {\r\n from: originalValue,\r\n to: currentValue\r\n });\r\n }\r\n \r\n return changed;\r\n });\r\n\r\n console.log('[BaseFormComponent] Changes detected:', hasChanges);\r\n return hasChanges;\r\n }\r\n\r\n protected saveEntity() {\r\n this.loading = true;\r\n const formData = this.currentFormData as Omit<T, typeof AppConstants.FORM.UUID>;\r\n const entityName = this.getEntityName();\r\n const entityOperations = this.getEntityOperations();\r\n\r\n const request$ = this.isNew\r\n ? entityOperations.create(formData)\r\n : entityOperations.update(this.originalFormData!.uuid, formData);\r\n\r\n request$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n this.notificationService.showSuccess(`${entityName} ${AppMessages.FORM.SUCCESS.SAVE}`);\r\n this.router.navigate(this.onSubmitRoute());\r\n },\r\n error: (error: any) => {\r\n const errorMessage = error.error?.message || `${AppMessages.FORM.ERROR.SAVE} ${entityName}`;\r\n this.showError(errorMessage);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityOperations().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n },\r\n error: () => {\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected abstract getEntityService(): EntityService<T>;\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n protected getDropdownOptions(): Record<string, any> {\r\n return {};\r\n }\r\n\r\n protected abstract getJsonFields(): any;\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Checks if the component is running in a specific context\r\n * @param contextType The context type to check against\r\n */\r\n protected isInContext(contextType: ComponentContext): boolean {\r\n return this.context === contextType;\r\n }\r\n}\r\n","import { OnInit, OnDestroy, ViewChild, Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { Subscription, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { FilterCriteria, FilterOperator } from '../models/pagination/filter-criteria.interface';\r\nimport { SortCriteria } from '../models/pagination/sort-criteria.interface';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { AppConstants } from '../constants/app.constants';\r\n\r\n/**\r\n * Base component for all list page components in the application.\r\n * Provides common functionality for list operations like loading data,\r\n * pagination, sorting, and CRUD operations.\r\n */\r\n@Directive()\r\nexport abstract class BaseListPageComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('dt') table!: Table;\r\n items: T[] = [];\r\n actionLoading: boolean = false;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n filters: FilterCriteria[] = [];\r\n protected subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected confirmationService: ConfirmationService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n /**\r\n * Initialize the component, subscribe to loading state if available,\r\n * and load initial data.\r\n */\r\n ngOnInit() {\r\n // Subscribe to loading state if available\r\n const loadingObservable = this.getLoadingObservable();\r\n if (loadingObservable) {\r\n this.subscriptions.push(\r\n loadingObservable.subscribe(\r\n isLoading => this.loading = isLoading\r\n )\r\n );\r\n }\r\n this.loadData();\r\n }\r\n\r\n /**\r\n * Clean up any subscriptions when the component is destroyed\r\n */\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * Handle search event from the UI\r\n * @param event The search event\r\n */\r\n onSearch(event: Event): void {\r\n const element = event.target as HTMLInputElement;\r\n if (this.table) {\r\n this.table.filterGlobal(element.value, 'contains');\r\n }\r\n }\r\n\r\n /**\r\n * Load data with pagination and sorting\r\n * @param event The lazy load event from PrimeNG table\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filters to backend format with proper operator mapping\r\n */\r\n protected convertFilters(filters: { [key: string]: any }): FilterCriteria[] {\r\n const backendFilters: FilterCriteria[] = [];\r\n if (!filters) return backendFilters;\r\n\r\n console.log('Raw PrimeNG filters:', filters);\r\n\r\n Object.entries(filters).forEach(([key, filterMeta]) => {\r\n console.log(`Processing filter for ${key}:`, filterMeta);\r\n\r\n // Handle array of filter metadata (multiple filters for same column)\r\n if (Array.isArray(filterMeta)) {\r\n const validFilters = filterMeta\r\n .filter(meta => meta.value !== null && meta.value !== undefined && meta.value !== '')\r\n .map(meta => ({\r\n field: key,\r\n value: this.transformFilterValue(String(meta.value)),\r\n operator: this.transformOperator(meta.matchMode)\r\n }));\r\n backendFilters.push(...validFilters);\r\n }\r\n // Handle single filter metadata\r\n else if (filterMeta?.value !== null && filterMeta?.value !== undefined && filterMeta?.value !== '') {\r\n backendFilters.push({\r\n field: key,\r\n value: this.transformFilterValue(String(filterMeta.value)),\r\n operator: this.transformOperator(filterMeta.matchMode)\r\n });\r\n }\r\n });\r\n\r\n console.log('Converted filters:', backendFilters);\r\n return backendFilters;\r\n }\r\n\r\n /**\r\n * Transform filter value based on backend requirements - all values must be strings\r\n */\r\n protected transformFilterValue(value: any): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n return value.trim();\r\n }\r\n if (Array.isArray(value)) {\r\n return value.join(',');\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return value.toString();\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Map PrimeNG operators to backend operators\r\n */\r\n protected transformOperator(operator: string): FilterOperator {\r\n const operatorMap: { [key: string]: FilterOperator } = {\r\n 'contains': 'CONTAINS',\r\n 'startsWith': 'STARTS_WITH',\r\n 'endsWith': 'ENDS_WITH',\r\n 'equals': 'EQUALS',\r\n 'notEquals': 'NOT_EQUALS',\r\n 'gt': 'GREATER_THAN',\r\n 'gte': 'GREATER_THAN_EQUALS',\r\n 'lt': 'LESS_THAN',\r\n 'lte': 'LESS_THAN_EQUALS'\r\n };\r\n return operatorMap[operator] || 'EQUALS'; // Default to EQUALS if operator not found\r\n }\r\n\r\n loadData(event?: TableLazyLoadEvent) {\r\n console.log('LoadData called with event:', event);\r\n this.loading = true;\r\n\r\n // Create page request with default values\r\n const pageRequest: PageRequest = {\r\n page: 0,\r\n size: 10,\r\n sorts: [],\r\n filters: []\r\n };\r\n\r\n if (event) {\r\n // Handle pagination\r\n if (event.first !== undefined && event.rows) {\r\n pageRequest.page = Math.floor(event.first / event.rows);\r\n pageRequest.size = event.rows;\r\n }\r\n\r\n // Handle sorting\r\n if (event.sortField) {\r\n pageRequest.sorts = [{\r\n field: Array.isArray(event.sortField) ? event.sortField[0] : event.sortField,\r\n direction: event.sortOrder === 1 ? 'asc' : 'desc'\r\n }];\r\n }\r\n\r\n // Handle filtering\r\n if (event.filters) {\r\n const convertedFilters = this.convertFilters(event.filters);\r\n console.log('Converted filters:', convertedFilters);\r\n pageRequest.filters = convertedFilters;\r\n }\r\n }\r\n\r\n console.log('Sending page request:', pageRequest);\r\n\r\n this.getEntityService().getAll(pageRequest)\r\n .pipe(finalize(() => this.loading = false))\r\n .subscribe({\r\n next: (response: Page<T>) => {\r\n this.items = [...response.content];\r\n this.totalRecords = response.page.totalElements;\r\n },\r\n error: (error) => {\r\n console.error('Failed to load data:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.LOAD} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Navigate to create a new entity\r\n */\r\n public onCreate(): void {\r\n // Navigate to the form route and pass the mode as a query parameter\r\n this.navigateTo([this.getFormRoute()], { [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.CREATE });\r\n }\r\n\r\n /**\r\n * Navigate to view an entity\r\n * @param item The entity to view\r\n */\r\n onView(item: T) {\r\n if (!this.validateItemUuid(item, 'view')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.VIEW, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n\r\n /**\r\n * Navigate to edit an entity\r\n * @param item The entity to edit\r\n */\r\n onEdit(item: T) {\r\n if (!this.validateItemUuid(item, 'edit')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.EDIT, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n \r\n /**\r\n * Navigate to a route with error handling\r\n * @param path The route path\r\n * @param matrixParams Optional matrix parameters\r\n */\r\n protected navigateTo(path: any[], matrixParams?: { [key: string]: any }): void {\r\n this.router.navigate(path, { queryParams: matrixParams })\r\n .catch(error => {\r\n console.error('Navigation error:', error);\r\n this.showError(AppMessages.LIST.ERROR.NAVIGATION);\r\n });\r\n }\r\n\r\n /**\r\n * Delete an entity with confirmation\r\n * @param item The entity to delete\r\n */\r\n onDelete(item: T) {\r\n if (!this.validateItemUuid(item, 'delete')) return;\r\n\r\n this.confirmationService.confirm({\r\n message: `Are you sure you want to delete this ${this.getEntityName()}?`,\r\n header: 'Confirm Deletion',\r\n icon: 'pi pi-exclamation-triangle',\r\n accept: () => {\r\n this.actionLoading = true;\r\n this.getEntityService().delete(item.uuid)\r\n .pipe(finalize(() => this.actionLoading = false))\r\n .subscribe({\r\n next: () => {\r\n this.showSuccess(`${this.getEntityName()} ${AppMessages.LIST.SUCCESS.DELETE}`);\r\n this.loadData();\r\n },\r\n error: (error) => {\r\n console.error('Delete failed:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.DELETE} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Validate that an entity has a UUID\r\n * @param item The entity to validate\r\n * @param action The action being performed\r\n * @returns true if valid, false otherwise\r\n */\r\n protected validateItemUuid(item: T, action: string): boolean {\r\n if (!item?.uuid) {\r\n this.showError(`${AppMessages.LIST.ERROR.INVALID_ID} ${action}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Get an observable for loading state from the entity service\r\n * @returns An observable of loading state if available, null otherwise\r\n */\r\n protected getLoadingObservable(): Observable<boolean> | null {\r\n const service = this.getEntityService() as any;\r\n return service.loading$ || null;\r\n }\r\n\r\n /**\r\n * Get the entity service for data operations\r\n */\r\n protected abstract getEntityService(): { \r\n getAll: (pageRequest?: PageRequest) => Observable<Page<T>>;\r\n delete: (uuid: string) => Observable<any>;\r\n };\r\n\r\n /**\r\n * Get the entity name for display in messages\r\n */\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Get the route to the entity form\r\n */\r\n protected abstract getFormRoute(): string;\r\n}\r\n","import { Component, OnInit, Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, take, map } from 'rxjs';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { TabbedFormType } from '../enums/tabbed-form-type.enum';\r\n\r\nexport interface TabConfig {\r\n value: string;\r\n title: string;\r\n isParentModel?: boolean;\r\n}\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseTabbedFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n // Tab specific properties\r\n activeTab: string = '';\r\n tabs: TabConfig[] = [];\r\n formType = '';\r\n\r\n // Form properties\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData!: T;\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n\r\n // debug method removed\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n // Initialize tabs\r\n this.tabs = this.getTabs();\r\n this.activeTab = this.tabs[0]?.value || '';\r\n\r\n // Initialize form using query params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n\r\n private initializeFormData() {\r\n console.log('[BaseTabbedFormComponent] Initializing form data');\r\n console.log('[BaseTabbedFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode, using defaults');\r\n this.loadDefaultTab();\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state\r\n } as { formData?: T };\r\n\r\n console.log('[BaseTabbedFormComponent] Combined state:', state);\r\n\r\n if (state?.formData) {\r\n console.log('[BaseTabbedFormComponent] Found form data in state:', state.formData);\r\n this.patchFormData(state.formData);\r\n this.loadDefaultTab();\r\n } else {\r\n console.log('[BaseTabbedFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n // Flatten nested subscriptions using RxJS operators\r\n this.route.queryParams.pipe(\r\n take(1),\r\n map((params: { [key: string]: string }) => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n return uuid;\r\n })\r\n ).subscribe({\r\n next: (uuid: string) => this.loadEntity(uuid),\r\n error: (error: Error) => {\r\n console.error('Error loading UUID:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} UUID`);\r\n }\r\n });\r\n }\r\n\r\nprivate initializeForm(params: any) {\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n \r\n try {\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n this.initializeListForm(params);\r\n } else {\r\n // Existing logic for STANDARD form type\r\n this.initializeFormData();\r\n }\r\n } catch (error) {\r\n console.error('Error initializing form:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.INIT}: ${error instanceof Error ? error.message : 'Unknown error'}`);\r\n }\r\n }\r\n\r\n protected patchFormData(data: T | null) {\r\n if (data) {\r\n this.currentFormData = { ...data };\r\n this.originalFormData = { ...data }; // Create a deep copy to avoid reference issues\r\n this.isNew = false;\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n return;\r\n }\r\n\r\n // Validate mode more explicitly\r\n if (!this.isValidPageMode(routeMode)) {\r\n const validModes = Object.values(AppConstants.PAGE_MODE).join(', ');\r\n throw new Error(`Invalid page mode: ${routeMode}. Valid modes are: ${validModes}`);\r\n }\r\n \r\n this.mode = routeMode;\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseTabbedFormComponent] Setting up form state, mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityService().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseTabbedFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseTabbedFormComponent] Form data updated:', this.currentFormData);\r\n this.loadDefaultTab();\r\n },\r\n error: (error: Error) => {\r\n console.log('[BaseTabbedFormComponent] Error loading entity:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected findTabByValue(value: string): TabConfig | undefined {\r\n return this.tabs.find(tab => tab.value === value);\r\n }\r\n\r\n protected loadDefaultTab() {\r\n console.log('[BaseTabbedFormComponent] Loading default tab');\r\n const defaultTab = this.tabs.find(tab => tab.isParentModel) || this.tabs[0];\r\n\r\n if (!defaultTab) return;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === defaultTab.value);\r\n\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, just navigate to the tab route with the parent form data\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: defaultTab.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData, // Pass the parent form data for child forms\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected getTabFormData(tabConfig: TabConfig): T | null {\r\n if (!tabConfig) return null;\r\n\r\n if (tabConfig.isParentModel) {\r\n return this.currentFormData;\r\n }\r\n\r\n const fieldName = this.utilsService.toCamelCase(tabConfig.value);\r\n // Use type assertion since we know this is a valid field\r\n return (this.currentFormData as any)[fieldName] as T;\r\n }\r\n\r\nprivate initializeListForm(params: any) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList;\r\n \r\n if (!formDataList?.length) {\r\n throw new Error('formDataList is required in state for LIST type');\r\n }\r\n \r\n this.tabs = this.createTabsFromFormDataList(formDataList);\r\n \r\n // Select the first tab by default\r\n this.activeTab = this.tabs[0].value;\r\n \r\n // Set current form data from the first item in the list\r\n this.currentFormData = formDataList[0];\r\n this.originalFormData = formDataList[0];\r\n \r\n // Navigate to the first tab\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: this.currentFormData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n\r\n private createTabsFromFormDataList(formDataList: T[]): TabConfig[] {\r\n return formDataList.map((data: T) => ({\r\n value: data.uuid,\r\n title: this.getTabTitle(data),\r\n isParentModel: true\r\n }));\r\n }\r\n\r\n protected abstract getTabTitle(data: T): string;\r\n\r\n protected onTabChange(value: string | number): void {\r\n const tabConfig = this.findTabByValue(value as string);\r\n if (!tabConfig) {\r\n console.warn(`Tab not found: ${value}`);\r\n return;\r\n }\r\n\r\n this.activeTab = tabConfig.value;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === value);\r\n\r\n // Update current form data\r\n this.currentFormData = selectedData;\r\n this.originalFormData = selectedData;\r\n\r\n this.router.navigate([value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, navigate to the tab route with the parent form data\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData: tabConfig.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n const formData = this.getTabFormData(tabConfig);\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: T): boolean {\r\n // For new forms or no original data, consider it changed\r\n if (this.isNew || !this.originalFormData) {\r\n return true;\r\n }\r\n\r\n // Deep comparison of objects\r\n return !this.isEqual(currentData, this.originalFormData);\r\n }\r\n\r\n private isEqual<V extends Record<string, any>>(obj1: V, obj2: V): boolean {\r\n if (obj1 === obj2) return true;\r\n if (typeof obj1 !== 'object' || obj1 === null || \r\n typeof obj2 !== 'object' || obj2 === null) return false;\r\n\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) return false;\r\n\r\n return keys1.every(key => \r\n Object.prototype.hasOwnProperty.call(obj2, key) && \r\n this.isEqual(obj1[key], obj2[key])\r\n );\r\n }\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n // Abstract methods that must be implemented by child classes\r\n protected abstract getTabs(): TabConfig[];\r\n protected abstract getEntityService(): EntityService<T>;\r\n protected abstract getEntityName(): string;\r\n // getTabTitle method removed\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\ntype DateFormat = 'default' | 'short' | 'medium';\r\n\r\n@Pipe({\r\n name: 'indianDate',\r\n standalone: true\r\n})\r\nexport class IndianDatePipe implements PipeTransform {\r\n constructor(private datePipe: DatePipe) {}\r\n\r\n transform(value: string | null, format: DateFormat = 'default'): string | null {\r\n if (!value) return null;\r\n\r\n // First validate dd-MM-yyyy format\r\n const dateRegex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\\d{4}$/;\r\n if (!dateRegex.test(value)) {\r\n throw new Error(`Invalid date format: ${value}. Expected format: dd-MM-yyyy`);\r\n }\r\n\r\n // Validate real date\r\n const [day, month, year] = value.split('-').map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (\r\n date.getFullYear() !== year ||\r\n date.getMonth() !== month - 1 ||\r\n date.getDate() !== day\r\n ) {\r\n throw new Error(`Invalid date: ${value}`);\r\n }\r\n\r\n // Apply requested format\r\n switch (format) {\r\n case 'short':\r\n // Pad with leading zeros for consistent format\r\n const paddedDay = day.toString().padStart(2, '0');\r\n const paddedMonth = month.toString().padStart(2, '0');\r\n return `${paddedDay}-${paddedMonth}-${year}`; // 10-03-2025\r\n case 'medium':\r\n return this.datePipe.transform(date, 'dd MMM yyyy'); // 10 Jan 2019\r\n default:\r\n return value; // original dd-MM-yyyy\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'formly-field-text-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputTextModule\r\n ],\r\n template: `\r\n <input pInputText\r\n [type]=\"props['type'] || 'text'\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [attr.aria-label]=\"props['label'] || props['placeholder'] || ''\"\r\n class=\"w-full\"/>\r\n `\r\n})\r\nexport class TextInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n type: 'text',\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any; // For additional properties\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n SelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-select\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [virtualScroll]=\"false\"\r\n [showClear]=\"false\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </ng-container>\r\n `\r\n})\r\nexport class SelectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n showClear: false,\r\n filter: false,\r\n virtualScroll: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FieldType } from '@ngx-formly/core';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface RadioOption {\r\n value: any;\r\n label: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n RadioButtonModule\r\n ],\r\n template: `\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <div *ngFor=\"let option of options; let i = index\" class=\"flex align-items-center gap-2\">\r\n <p-radioButton\r\n [name]=\"field.name || ''\"\r\n [value]=\"option.value\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [size]=\"'small'\"\r\n [inputId]=\"field.key + '_' + i\">\r\n </p-radioButton>\r\n <label [for]=\"field.key + '_' + i\" class=\"p-radio-label cursor-pointer\">\r\n {{option.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n `\r\n})\r\nexport class RadioType extends FieldType {\r\n get options$(): Observable<RadioOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\n\r\n@Component({\r\n selector: 'formly-field-numeric-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputNumberModule\r\n ],\r\n template: `\r\n <p-inputNumber\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [min]=\"props['min'] || 0\"\r\n [max]=\"props['max']\"\r\n [minFractionDigits]=\"props['minFractionDigits'] || 0\"\r\n [maxFractionDigits]=\"props['maxFractionDigits'] || 0\"\r\n [prefix]=\"props['prefix'] || ''\"\r\n [suffix]=\"props['suffix'] || ''\"\r\n [useGrouping]=\"props['useGrouping'] ?? true\"\r\n [showButtons]=\"true\"\r\n class=\"w-full\">\r\n </p-inputNumber>\r\n `\r\n})\r\nexport class NumericInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n min: undefined,\r\n max: undefined,\r\n minFractionDigits: 0,\r\n maxFractionDigits: 0,\r\n prefix: '',\r\n suffix: '',\r\n useGrouping: true\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-multiselect',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n MultiSelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-multiSelect\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [optionLabel]=\"props['optionLabel'] || 'label'\"\r\n [optionValue]=\"props['optionValue'] || 'value'\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n [filter]=\"props['filter'] || true\"\r\n [filterBy]=\"props['filterBy'] || 'label'\"\r\n [maxSelectedLabels]=\"props['maxSelectedLabels'] || 2\"\r\n [showToggleAll]=\"props['showToggleAll'] || true\"\r\n [virtualScroll]=\"props['virtualScroll'] || false\"\r\n [display]=\"props['display'] || 'chip'\"\r\n styleClass=\"w-full\">\r\n </p-multiSelect>\r\n </ng-container>\r\n `\r\n})\r\nexport class MultiselectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [] as SelectOption[],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n filter: false,\r\n maxSelectedLabels: 3,\r\n showToggleAll: true,\r\n virtualScroll: false\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'formly-field-date',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n DatePickerModule\r\n ],\r\n template: `\r\n <p-datepicker\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"props['dateFormat'] || 'dd-mm-yy'\"\r\n [showTime]=\"props['showTime'] || false\"\r\n [touchUI]=\"props['touchUI'] || false\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [minDate]=\"props['minDate']\"\r\n [maxDate]=\"props['maxDate']\"\r\n [showOnFocus]=\"false\"\r\n [todayButtonStyleClass]=\"'p-button-secondary'\"\r\n [clearButtonStyleClass]=\"'p-button-secondary'\"\r\n styleClass=\"w-full\"\r\n (onSelect)=\"onDateSelect($event)\"\r\n (onInput)=\"onDateInput($event)\">\r\n </p-datepicker>\r\n `\r\n})\r\nexport class DateType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n dateFormat: 'dd-mm-yy',\r\n showTime: false,\r\n touchUI: false,\r\n placeholder: '',\r\n showButtonBar: true,\r\n }\r\n };\r\n\r\n onDateSelect(event: Date): void {\r\n this.formatAndSetDate(event);\r\n }\r\n\r\n onDateInput(event: any): void {\r\n const inputValue = event.target.value.trim();\r\n if (this.isValidDateInput(inputValue, this.props['dateFormat'] || 'dd-mm-yy')) {\r\n const parsedDate = this.parseDate(inputValue, this.props['dateFormat'] || 'dd-mm-yy');\r\n if (parsedDate) {\r\n this.formatAndSetDate(parsedDate);\r\n }\r\n } else {\r\n this.formControl?.setErrors({ invalidDate: true });\r\n }\r\n }\r\n\r\n private formatAndSetDate(date: Date): void {\r\n if (this.formControl) {\r\n const formattedDate = formatDate(date, 'dd-MM-yyyy', 'en-US');\r\n this.formControl.setValue(formattedDate);\r\n }\r\n }\r\n\r\n private parseDate(value: string, format: string): Date | null {\r\n const parts = value.split(/[-/]/); // Split by common delimiters\r\n if (parts.length === 3) {\r\n const [day, month, year] = format === 'dd-mm-yy'\r\n ? [parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)]\r\n : [parseInt(parts[1], 10), parseInt(parts[0], 10) - 1, parseInt(parts[2], 10)];\r\n return new Date(year, month, day);\r\n }\r\n return null;\r\n }\r\n\r\n private isValidDateInput(value: string, format: string): boolean {\r\n const dateRegex = format === 'dd-mm-yy'\r\n ? /^\\d{2}-\\d{2}-\\d{4}$/\r\n : /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n return dateRegex.test(value);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\n@Component({\r\n selector: 'formly-field-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n CheckboxModule\r\n ],\r\n template: `\r\n <div class=\"checkbox-container\">\r\n <p-checkbox\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [binary]=\"!props['options']\"\r\n [trueValue]=\"props['trueValue']\"\r\n [falseValue]=\"props['falseValue']\">\r\n {{props['checkboxLabel'] || ''}}\r\n </p-checkbox>\r\n </div>\r\n `,\r\n styles: [`\r\n .checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n height: 40px;\r\n }\r\n `]\r\n})\r\nexport class CheckboxType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n trueValue: true,\r\n falseValue: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { Textarea } from 'primeng/inputtextarea';\r\n\r\n@Component({\r\n selector: 'formly-field-textarea',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n Textarea\r\n ],\r\n template: `\r\n <textarea pInputTextarea\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [rows]=\"props['rows'] || 3\"\r\n [cols]=\"props['cols']\"\r\n [autoResize]=\"props['autoResize']\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n class=\"w-full\">\r\n </textarea>\r\n `\r\n})\r\nexport class TextareaType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n rows: 3,\r\n cols: undefined,\r\n autoResize: true,\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\ninterface FormlyValidationMessage {\r\n [key: string]: string;\r\n}\r\n\r\ninterface FormlyFieldProps {\r\n label?: string;\r\n required?: boolean;\r\n tooltip?: string;\r\n description?: string;\r\n validation?: {\r\n messages?: FormlyValidationMessage;\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'formly-wrapper-form-field',\r\n standalone: true,\r\n imports: [CommonModule, TooltipModule],\r\n template: `\r\n <div class=\"field mb-4\">\r\n <label *ngIf=\"props.label\" [for]=\"id\" class=\"font-medium\">\r\n {{ props.label }}\r\n <span class=\"required-star\" *ngIf=\"props.required\">*</span>\r\n <i *ngIf=\"props.tooltip\" \r\n class=\"pi pi-info-circle ml-2\" \r\n [pTooltip]=\"props.tooltip\">\r\n </i>\r\n </label>\r\n \r\n <div [class.p-input-error]=\"showError\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n \r\n <small *ngIf=\"props.description\" class=\"block mt-1\">\r\n {{ props.description }}\r\n </small>\r\n \r\n <small *ngIf=\"showError\" class=\"p-error block\">\r\n <i class=\"pi pi-exclamation-circle mr-2\"></i>\r\n {{ errorMessage }}\r\n </small>\r\n </div>\r\n `,\r\n styles: [`\r\n :host ::ng-deep {\r\n .required-star {\r\n color: var(--red-500);\r\n margin-left: 0.25rem;\r\n }\r\n \r\n .p-input-error :where(input, .p-inputtext) {\r\n border-color: var(--red-500);\r\n }\r\n\r\n .p-input-error :where(input:enabled:focus, .p-inputtext:enabled:focus) {\r\n border-color: var(--red-500);\r\n box-shadow: 0 0 0 1px var(--red-500);\r\n }\r\n\r\n .p-error {\r\n color: var(--red-500);\r\n margin-top: 0.5rem;\r\n }\r\n\r\n small {\r\n color: var(--text-color-secondary);\r\n }\r\n }\r\n `]\r\n})\r\nexport class FormFieldWrapper extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {\r\n get errorMessage(): string {\r\n if (!this.field.formControl?.errors) {\r\n return '';\r\n }\r\n \r\n const firstErrorKey = Object.keys(this.field.formControl.errors)[0];\r\n return this.props.validation?.messages?.[firstErrorKey] || 'This field is required';\r\n }\r\n\r\n override get showError(): boolean {\r\n if (!this.field.formControl) {\r\n return false;\r\n }\r\n \r\n const { touched, dirty, invalid } = this.field.formControl;\r\n return invalid && (touched || dirty);\r\n }\r\n}","export const FORMLY_TYPES = {\r\n TEXT: 'text',\r\n NUMBER: 'number',\r\n DATE: 'date',\r\n CHECKBOX: 'checkbox',\r\n RADIO: 'radio',\r\n SELECT: 'select',\r\n MULTISELECT: 'multiselect',\r\n TEXTAREA: 'textarea'\r\n};\r\n\r\nexport const FORMLY_WRAPPERS = {\r\n FORM_FIELD: 'form-field'\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { TextInputType } from './types/text-input.type';\r\nimport { SelectType } from './types/select.type';\r\nimport { RadioType } from './types/radio.type';\r\nimport { NumericInputType } from './types/numeric-input.type';\r\nimport { MultiselectType } from './types/multiselect.type';\r\nimport { DateType } from './types/date.type';\r\nimport { CheckboxType } from './types/checkbox.type';\r\nimport { TextareaType } from './types/textarea.type'; // Added import\r\nimport { FormFieldWrapper } from './form-field.wrapper';\r\nimport { FORMLY_TYPES, FORMLY_WRAPPERS } from './formly.constants'; // Added import\r\n\r\n@NgModule({\r\n imports: [\r\n FormlyModule.forRoot({\r\n types: [\r\n { name: FORMLY_TYPES.TEXT, component: TextInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.NUMBER, component: NumericInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.DATE, component: DateType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.CHECKBOX, component: CheckboxType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.RADIO, component: RadioType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.SELECT, component: SelectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.MULTISELECT, component: MultiselectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.TEXTAREA, component: TextareaType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] }, // Added textarea type\r\n ],\r\n wrappers: [\r\n { name: FORMLY_WRAPPERS.FORM_FIELD, component: FormFieldWrapper }\r\n ]\r\n })\r\n ],\r\n exports: [FormlyModule]\r\n})\r\nexport class CoreFormlyModule { }\r\n","// Config\r\n\r\n// Services\r\nexport * from './lib/services/formly-config.service';\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/enum-registry.service';\r\nexport * from './lib/services/entity-registry.service';\r\nexport * from './lib/services/reference-data-provider.service';\r\nexport * from './lib/services/base-crud.service';\r\nexport * from './lib/services/http-utility.service';\r\nexport * from './lib/services/entity.service';\r\n\r\n// Enums\r\nexport * from './lib/enums/component-context.enum';\r\nexport * from './lib/enums/tabbed-form-type.enum';\r\n\r\n// Components\r\nexport * from './lib/components/base-form.component';\r\nexport * from './lib/components/base-page.component';\r\nexport * from './lib/components/base-list-page.component';\r\nexport * from './lib/components/base-tabbed-form.component';\r\n\r\n// Constants\r\nexport * from './lib/constants/app.constants';\r\nexport * from './lib/constants/app.messages';\r\n\r\n// Models\r\nexport * from './lib/models/pagination/page.interface';\r\nexport * from './lib/models/pagination/page-request.interface';\r\n\r\n// Pipes\r\nexport * from './lib/pipes/indian-date.pipe';\r\n\r\n// Formly Components\r\nexport * from './lib/components/formly/core-formly.module';\r\nexport * from './lib/components/formly/form-field.wrapper';\r\nexport * from './lib/components/formly/types/text-input.type';\r\nexport * from './lib/components/formly/types/select.type';\r\nexport * from './lib/components/formly/types/radio.type';\r\nexport * from './lib/components/formly/types/numeric-input.type';\r\nexport * from './lib/components/formly/types/multiselect.type';\r\nexport * from './lib/components/formly/types/date.type';\r\nexport * from './lib/components/formly/types/checkbox.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService","i1.EnumRegistryService","i1","i2","i1.HttpUtilityService","i2.ReferenceDataProviderService","i2.NotificationService","i3.UtilsService","i4.FormlyConfigService","finalize","i4","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;AAGG;MAIU,YAAY,CAAA;AACvB;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,MAAM,SAAS,GAAG,iEAAiE;AACnF,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7B;;;;AAIG;IACH,SAAS,CAAC,OAAe,EAAE,cAA+B,EAAA;QACxD,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,GAAG,CAAC;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;;;AAIN;;;;AAIG;IACH,WAAW,CAAC,OAAe,EAAE,cAA+B,EAAA;QAC1D,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,GAAG,CAAC;AACjB,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;;;AAIN;;;;;AAKG;IACH,YAAY,CAAI,QAAW,EAAE,GAAsB,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;AAEnB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;YAEtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAK,QAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAI3D,QAAA,OAAQ,QAAgB,CAAC,GAAG,CAAC,IAAI,GAAG;;AAGtC;;;;AAIG;AACH,IAAA,aAAa,CAA+C,QAAW,EAAA;AACrE,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ;AAC3B,aAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;YACtB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,KAAe;AACvB,SAAA,CAAC,CAAC;;AAGP;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,EAAE;QACzB,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAClE,QAAA,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;;AAGrE;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,oBAAoB,EAAE,OAAO;AACrC,aAAA,OAAO,CAAC,0BAA0B,EAAE,OAAO;AAC3C,aAAA,WAAW,EAAE;;AAGlB;;;;;AAKG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;;QAGrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;AAGvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,EAAE;gBACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;;AAI/E,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGxB;;;;;AAKG;AACH,IAAA,mBAAmB,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;;AAGxB,QAAA,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;YAEhB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;;;AAItC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACvD,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,SAAS,EAAE;;uGA7I1B,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCHY,mBAAmB,CAAA;AAGR,IAAA,YAAA;AAFZ,IAAA,OAAO,GAAG,IAAI,GAAG,EAAe;AAExC,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAEhC;;AAEG;IACH,OAAO,mBAAmB,CAAC,KAA0B,EAAA;QACjD,OAAO;AACH,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,UAAU,EAAE,CAAC,YAA0B,KAAI;AACvC,gBAAA,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC;AACrD,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;AAC/C,oBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpC,iBAAC,CAAC;AACF,gBAAA,OAAO,OAAO;aACjB;YACD,IAAI,EAAE,CAAC,YAAY;SACtB;;AAGL;;;;AAIG;IACH,QAAQ,CAAC,IAAY,EAAE,QAAa,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAGpC;;;;AAIG;AACH,IAAA,aAAa,CAAC,IAAY,EAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAA,uBAAA,CAAyB,CAAC;AACzD,YAAA,OAAO,EAAE;;QAEb,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAGpD;;;AAGG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGjC;;AAEG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;;uGAzDf,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCGY,mBAAmB,CAAA;AACR,IAAA,YAAA;AAApB,IAAA,WAAA,CAAoB,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAEhC,IAAA,aAAa,CACT,MAA2B,EAC3B,IAAc,EACd,cAAoC,EAAA;AAEpC,QAAA,MAAM,YAAY,GAAG;AACjB,YAAA,KAAK,EAAE;gBACH,QAAQ,EAAE,IAAI,KAAK;AACtB;SACJ;AAED,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAwB,KAAI;;AAE3C,YAAA,IAAI,cAAc,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC9C,IAAI,YAAY,EAAE;oBACd,KAAK,CAAC,KAAK,GAAG;wBACV,GAAG,KAAK,CAAC,KAAK;AACd,wBAAA,GAAG;qBACN;;;;AAKT,YAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AAClB,gBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC;;YAGjF,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,GAAG,YAAY;AACf,gBAAA,KAAK,EAAE;oBACH,GAAG,KAAK,CAAC,KAAK;oBACd,GAAG,YAAY,CAAC;AACnB;aACJ;AACL,SAAC,CAAC;;uGAvCG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCFY,mBAAmB,CAAA;AAIV,IAAA,cAAA;AAHZ,IAAA,cAAc,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AACvD,IAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAE7C,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc;;AAElC,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,IAAI,EAAE;SACP;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGlC,IAAA,SAAS,CAAC,OAAe,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,IAAI,EAAE;SACP;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGlC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;uGA3BrB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACED;;;;;;;;AAQG;MAIU,kBAAkB,CAAA;AAKnB,IAAA,IAAA;AACA,IAAA,cAAA;AALF,IAAA,OAAO,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACrD,IAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IAEtC,WACU,CAAA,IAAgB,EAChB,cAA+B,EAAA;QAD/B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAc,CAAA,cAAA,GAAd,cAAc;;AAGxB;;;;;AAKG;IACH,GAAG,CAAI,GAAW,EAAE,OAOnB,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE;YACnC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,YAAY,EAAE,OAAO,EAAE,YAAsB;YAC7C,eAAe,EAAE,OAAO,EAAE;AAC3B,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AACpB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;AAGlD,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGtD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;;;AAMG;AACH,IAAA,IAAI,CAAI,GAAW,EAAE,IAAS,EAAE,OAO/B,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE;YAC1C,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,YAAY,EAAE,OAAO,EAAE,YAAsB;YAC7C,eAAe,EAAE,OAAO,EAAE;AAC3B,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AACpB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;AAGlD,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGtD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;;;AAMG;AACH,IAAA,GAAG,CAAI,GAAW,EAAE,IAAS,EAAE,OAO9B,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE;YACzC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,YAAY,EAAE,OAAO,EAAE,YAAsB;YAC7C,eAAe,EAAE,OAAO,EAAE;AAC3B,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AACpB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;AAGlD,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGtD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;;AAKG;IACH,MAAM,CAAI,GAAW,EAAE,OAOtB,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAI,GAAG,EAAE;YACtC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,YAAY,EAAE,OAAO,EAAE,YAAsB;YAC7C,eAAe,EAAE,OAAO,EAAE;AAC3B,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AACpB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;AAGlD,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGtD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;;;;AAOG;AACH,IAAA,UAAU,CAAI,GAAW,EAAE,IAAU,EAAE,cAAoC,EAAE,OAM5E,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAEvB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAExC,IAAI,cAAc,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBACxC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3C,aAAC,CAAC;;AAGJ,QAAA,IAAI,WAAW,GAAQ;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,eAAe,EAAE,OAAO,EAAE;SAC3B;;AAGD,QAAA,IAAI,OAAO,EAAE,UAAU,EAAE;AACvB,YAAA,WAAW,CAAC,cAAc,GAAG,IAAI;AACjC,YAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;;;AAIhC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;;AAG9D,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE;AACpB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;;AAIlD,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;;AAItD,QAAA,IAAI,OAAO,EAAE,UAAU,EAAE;AACvB,YAAA,OAAO,IAAI,UAAU,CAAI,QAAQ,IAAG;gBAClC,QAAQ,CAAC,SAAS,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAC,KAAqB,KAAI;AAC9B,wBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,4BAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAChE,4BAAA,OAAO,CAAC,UAAW,CAAC,WAAW,CAAC;;6BAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;AAC3B,4BAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;4BACzB,QAAQ,CAAC,QAAQ,EAAE;;qBAEtB;AACD,oBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;wBACf,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;qBACzB;oBACD,QAAQ,EAAE,MAAK;AACb,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE3B,iBAAA,CAAC;AACJ,aAAC,CAAC;;;AAIJ,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxB;;AAGpB;;;;AAIG;AACH,IAAA,aAAa,CAAI,QAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;;AAKG;AACH,IAAA,YAAY,CAAC,GAAW,EAAE,QAAiB,EAAE,OAK5C,EAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO;AACzB,YAAA,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,OAAO,EAAE;AAC3B,SAAA,CAAC;AAEF,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;AAGtD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACvC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzC;;AAGH;;;;AAIG;AACH,IAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,QAAA,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE;QAEjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,gBAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAEzD,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU;;AAGnB;;;;AAIG;AACK,IAAA,WAAW,CAAC,KAAwB,EAAA;AAC1C,QAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;QAE/C,IAAI,YAAY,GAAG,mBAAmB;AACtC,QAAA,IAAI,SAA6B;AAEjC,QAAA,IAAI,KAAK,CAAC,KAAK,YAAY,UAAU,EAAE;;AAErC,YAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO;;aAC7B;;AAEL,YAAA,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;AAEnC,YAAA,QAAQ,KAAK,CAAC,MAAM;AAClB,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa;oBACpD;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,cAAc;oBAC7B;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,eAAe;oBAC9B;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,oBAAoB;oBACnC;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,iBAAiB;oBAChC;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,cAAc;oBAC7B;AACF,gBAAA,KAAK,GAAG;oBACN,YAAY,GAAG,qBAAqB;oBACpC;AACF,gBAAA;AACE,oBAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAA,MAAA,EAAS,KAAK,CAAC,MAAM,CAAA,CAAE;oBAC9D;;;AAIN,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5B,QAAA,OAAO,UAAU,CAAC,OAAO;YACvB,KAAK;AACL,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,IAAI,EAAE;AACP,SAAA,CAAC,CAAC;;AAGL;;;AAGG;AACK,IAAA,SAAS,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;;;uGA/WK,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCZY,4BAA4B,CAAA;IAE/B,SAAS,GAA2B,EAAE;;AAG9C,IAAA,YAAY,CAAC,SAAiC,EAAA;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE;;AAGtD,IAAA,oBAAoB,CAAC,UAAkB,EAAA;QACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;QAC/D,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACzC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACrE,OAAO,QAAQ,CAAC;;iBACX;;AAEL,gBAAA,OAAO,QAAQ;;;AAGnB,QAAA,OAAO,IAAI;;uGApBF,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA;;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCUY,qBAAqB,CAAA;AAEtB,IAAA,WAAA;AACA,IAAA,YAAA;IAFV,WACU,CAAA,WAA+B,EAC/B,YAA0C,EAAA;QAD1C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAGtB;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAE9D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAA,CAAE,CAAC;AAChE,YAAA,OAAO,IAAI,UAAU,CAAC,UAAU,IAAG;AACjC,gBAAA,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,UAAU,CAAC,QAAQ,EAAE;AACvB,aAAC,CAAC;;AAGJ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAiB,GAAG,EAAE;AAC/C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,KAAK,KACR,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,SAAA,CAAC,CAAC,IAAI,EAAE,CACV,CACF;;uGAlCQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFlB,MAAM,EAAA,CAAA;;2FAET,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCJqB,eAAe,CAAA;AAiBvB,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;AACA,IAAA,cAAA;;AAnBZ,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ;;AAGxB,IAAA,MAAM;AAEhB;;;;;;;AAOG;IACH,WACY,CAAA,WAA+B,EAC/B,YAA0B,EAC1B,YAAoB,EACpB,cAAsB,EACtB,cAA0C,EAAA;QAJ1C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;;AAG3D;;AAEG;IACK,QAAQ,CAAC,GAAG,KAAe,EAAA;QACjC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGpE,IAAA,MAAM,CAAC,WAAyB,EAAA;QAC9B,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAU,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,KAAA,CAAO,EAAE,WAAW,CAAC;;aACpE;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAU,IAAI,CAAC,MAAM,CAAC;;;AAIrD,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC;YACvE,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;;AAG3D,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAI,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;;AAG1D,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;;IAGtD,MAAM,CAAC,IAAY,EAAE,MAAuB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC;YACvE,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;;AAG3D,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAI,CAAG,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA,CAAE,EAAE,MAAM,CAAC;;AAGlE,IAAA,MAAM,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC;YACvE,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;;AAG3D,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAO,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;;AAEjE;;IChFW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA;;ICLW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ACCD;;;AAGG;MAEmB,iBAAiB,CAAA;AAIrB,IAAA,YAAA;AACA,IAAA,mBAAA;IAJJ,OAAO,GAAY,KAAK;IAElC,WACc,CAAA,YAA0B,EAC1B,mBAAwC,EAAA;QADxC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;AAGjC;;;AAGG;AACO,IAAA,SAAS,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC;;AAG9C;;;AAGG;AACO,IAAA,WAAW,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC;;uGArB9B,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACRY,MAAA,WAAW,GAAG;AACvB,IAAA,MAAM,EAAE;AACJ,QAAA,KAAK,EAAE;AACH,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,aAAa,EAAE,wBAAwB;AACvC,YAAA,cAAc,EAAE;AACnB,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,MAAM,EAAE,sBAAsB;AAC9B,YAAA,MAAM,EAAE;AACX;AACJ,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE;AACH,YAAA,IAAI,EAAE,2BAA2B;AACjC,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,UAAU,EAAE;AACf,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,IAAI,EAAE;AACT;AACJ,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE;AACH,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,kBAAkB;AAC1B,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,UAAU,EAAE;AACf,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,MAAM,EAAE;AACX;AACJ;;;MClCQ,YAAY,CAAA;IACrB,OAAgB,IAAI,GAAG;AACnB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,GAAG,EAAE;KACC;IAEV,OAAgB,SAAS,GAAG;AACxB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE;KACA;;;ACOR,MAAgB,iBAClB,SAAQ,iBAAiB,CAAA;AAYX,IAAA,KAAA;AACA,IAAA,MAAA;AACS,IAAA,mBAAA;AACA,IAAA,YAAA;AACT,IAAA,mBAAA;AAdd,IAAA,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;IACxB,MAAM,GAAwB,EAAE;IAChC,KAAK,GAAG,IAAI;AACZ,IAAA,IAAI,GAAa,YAAY,CAAC,SAAS,CAAC,MAAM;IAC9C,eAAe,GAAQ,EAAE;IACf,gBAAgB,GAAa,IAAI;IACjC,UAAU,GAAY,KAAK;AAC5B,IAAA,OAAO,GAAqB,gBAAgB,CAAC,UAAU;IAEhE,WACc,CAAA,KAAqB,EACrB,MAAc,EACL,mBAAwC,EACxC,YAA0B,EACnC,mBAAwC,EAAA;AAElD,QAAA,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC;QAN9B,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACG,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACrB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;IAKjC,QAAQ,GAAA;AACJ,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAEzC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;gBAClC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvE,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AAC/D,aAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3C,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC3C,KAAK,EAAE,KAAK,IAAG;AACX,oBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;oBAChD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AAElD,aAAA,CAAC;;QACJ,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;IAI3C,kBAAkB,GAAA;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,CAAC;QAE3D,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC;YAC9D;;AAGJ,QAAA,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK;AACpD,YAAA,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AACvB,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC1B;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC;AACzD,QAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,KAAK,CAAC;AAEjE,QAAA,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;;aAClC;AACH,YAAA,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC;YAClE,IAAI,CAAC,YAAY,EAAE;;;IAInB,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,IAAI,CAAoC,kCAAA,CAAA,CAAC;;AAE1F,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACzB,SAAC,CAAC;;AAGE,IAAA,cAAc,CAAC,MAAW,EAAA;AAC9B,QAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE,MAAM,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE;;AAGrB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AAClC,QAAA,IAAI,KAAK,EAAE,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;YAC5B,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE,IAAI,CAAC,OAAO,CAAC;;QAGnF,IAAI,CAAC,kBAAkB,EAAE;;AAGnB,IAAA,aAAa,CAAC,IAAS,EAAA;AAC7B,QAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC;QAC5D,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,gBAAA,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC;AAC9E,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;;AAE7C,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAElB,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,eAAe,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,MAAM,CAAC;YAEjE,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC;;AAE/E,gBAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE;AACtD,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACtB,oBAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;oBACvB,WAAW,EAAE,IAAI,CAAC;AACrB,iBAAA,CAAC;aACL,EAAE,GAAG,CAAC;;;AAIP,IAAA,kBAAkB,CAAC,SAA6B,EAAA;QACpD,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM;;AACtC,aAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;;aAClB;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC;;;IAIlD,cAAc,GAAA;QAClB,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAEzC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;AACpD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;QAGhC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;;IAIjB,oBAAoB,GAAA;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CACzC,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,kBAAkB,EAAE,CAC5B;;IAGK,aAAa,GAAA;QACnB,OAAO,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAG,CAAA,CAAA,CAAC;;IAG5C,mBAAmB,GAAA;AAKzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC7C,OAAO;YACH,MAAM,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAO,CAAC;YAC1E,OAAO,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI;SAChD;;IAGK,QAAQ,GAAA;AACd,QAAA,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE;AAChD,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YAC1B,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;AACxB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACzE,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACrD;;AAGJ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;gBACpD,IAAI,CAAC,UAAU,EAAE;gBACjB;;YAGJ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,YAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE;gBACjD,UAAU;gBACV,WAAW,EAAE,IAAI,CAAC,eAAe;gBACjC,YAAY,EAAE,IAAI,CAAC;AACtB,aAAA,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,oBAAoB,CAAC;gBAC1D;;AAGJ,YAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;YACjD,IAAI,CAAC,UAAU,EAAE;;aACd;YACH,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7E,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC;;;AAI5D,IAAA,cAAc,CAAC,WAAgB,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AACtC,YAAA,OAAO,IAAI;;AAGf,QAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE;YACrD,WAAW;YACX,YAAY,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACnD,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC;YACrC,MAAM,aAAa,GAAI,IAAI,CAAC,gBAAwB,CAAC,GAAG,CAAC;AACzD,YAAA,MAAM,OAAO,GAAG,YAAY,KAAK,aAAa;YAE9C,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,CAAC,GAAG,CAAC,CAA8B,2BAAA,EAAA,GAAG,YAAY,EAAE;AACvD,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,EAAE,EAAE;AACP,iBAAA,CAAC;;AAGN,YAAA,OAAO,OAAO;AAClB,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,UAAU,CAAC;AAChE,QAAA,OAAO,UAAU;;IAGX,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAyD;AAC/E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAEnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AAClB,cAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ;AAClC,cAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAEpE,QAAQ,CAAC,SAAS,CAAC;YACf,IAAI,EAAE,MAAK;AACP,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,UAAU,CAAA,CAAA,EAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC;gBACtF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;aAC7C;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AAClB,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAI,CAAA,EAAA,UAAU,EAAE;AAC3F,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAE3B,SAAA,CAAC;;AAGI,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QAEvC,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,EAAE,CAAC,IAAO,KAAI;AACd,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE;AAClC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBAC/E,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,eAAe,CAAC;aAC9E;YACD,KAAK,EAAE,MAAK;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;AAC9D,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAE3B,SAAA,CAAC;;AAKE,IAAA,eAAe,CAAC,IAAY,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAgB,CAAC;;IAGjE,kBAAkB,GAAA;AACxB,QAAA,OAAO,EAAE;;AAMb;;;AAGG;AACO,IAAA,WAAW,CAAC,WAA6B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW;;uGAnTrB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+HAFzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;2GAEM,iBAAiB,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJtC;;kBACA,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;kMAWY,OAAO,EAAA,CAAA;sBAAf;;;ACZL;;;;AAIG;AAEG,MAAgB,qBAClB,SAAQ,iBAAiB,CAAA;AAWX,IAAA,MAAA;AACS,IAAA,mBAAA;AACA,IAAA,YAAA;AACT,IAAA,mBAAA;AAZG,IAAA,KAAK;IACtB,KAAK,GAAQ,EAAE;IACf,aAAa,GAAY,KAAK;IAC9B,IAAI,GAAW,EAAE;IACjB,YAAY,GAAW,CAAC;IACxB,OAAO,GAAqB,EAAE;IACpB,aAAa,GAAmB,EAAE;AAE5C,IAAA,WAAA,CACc,MAAc,EACL,mBAAwC,EACxC,YAA0B,EACnC,mBAAwC,EAAA;AAElD,QAAA,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC;QAL9B,IAAM,CAAA,MAAA,GAAN,MAAM;QACG,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACrB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;AAKjC;;;AAGG;IACH,QAAQ,GAAA;;AAEJ,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE;QACrD,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,iBAAiB,CAAC,SAAS,CACvB,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,CACxC,CACJ;;QAEL,IAAI,CAAC,QAAQ,EAAE;;AAGnB;;AAEG;IACH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;;AAGxD;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAY,EAAA;AACjB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAA0B;AAChD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;;;AAI1D;;;AAGG;AACH;;;;AAIG;AACH;;;;AAIG;AACH;;AAEG;AACO,IAAA,cAAc,CAAC,OAA+B,EAAA;QACpD,MAAM,cAAc,GAAqB,EAAE;AAC3C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,cAAc;AAEnC,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC;AAE5C,QAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAI;YAClD,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,GAAG,CAAG,CAAA,CAAA,EAAE,UAAU,CAAC;;AAGxD,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC3B,MAAM,YAAY,GAAG;qBAChB,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;AACnF,qBAAA,GAAG,CAAC,IAAI,KAAK;AACV,oBAAA,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpD,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS;AAClD,iBAAA,CAAC,CAAC;AACP,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;;;AAGnC,iBAAA,IAAI,UAAU,EAAE,KAAK,KAAK,IAAI,IAAI,UAAU,EAAE,KAAK,KAAK,SAAS,IAAI,UAAU,EAAE,KAAK,KAAK,EAAE,EAAE;gBAChG,cAAc,CAAC,IAAI,CAAC;AAChB,oBAAA,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC1D,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS;AACxD,iBAAA,CAAC;;AAEV,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,cAAc,CAAC;AACjD,QAAA,OAAO,cAAc;;AAGzB;;AAEG;AACO,IAAA,oBAAoB,CAAC,KAAU,EAAA;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,EAAE;;AAEb,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC,IAAI,EAAE;;AAEvB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE1B,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE;;QAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACzD,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;;AAE3B,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;AAGxB;;AAEG;AACO,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AACxC,QAAA,MAAM,WAAW,GAAsC;AACnD,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE;SACV;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;;AAG7C,IAAA,QAAQ,CAAC,KAA0B,EAAA;AAC/B,QAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;AAGnB,QAAA,MAAM,WAAW,GAAgB;AAC7B,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE;SACZ;QAED,IAAI,KAAK,EAAE;;YAEP,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACvD,gBAAA,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;;;AAIjC,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE;gBACjB,WAAW,CAAC,KAAK,GAAG,CAAC;wBACjB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;AAC5E,wBAAA,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,GAAG;AAC9C,qBAAA,CAAC;;;AAIN,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3D,gBAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;AACnD,gBAAA,WAAW,CAAC,OAAO,GAAG,gBAAgB;;;AAI9C,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC;AAEjD,QAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,WAAW;AACrC,aAAA,IAAI,CAACC,UAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,aAAA,SAAS,CAAC;AACP,YAAA,IAAI,EAAE,CAAC,QAAiB,KAAI;gBACxB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa;aAClD;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAA,CAAE,CAAC;;AAE/E,SAAA,CAAC;;AAGV;;AAEG;IACI,QAAQ,GAAA;;QAEX,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;;AAGvG;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAO,EAAA;QACV,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE;;QAE1C,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;YACnC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI;YACrD,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClC,SAAA,CAAC;;AAGN;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAO,EAAA;QACV,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE;;QAE1C,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;YACnC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI;YACrD,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClC,SAAA,CAAC;;AAGN;;;;AAIG;IACO,UAAU,CAAC,IAAW,EAAE,YAAqC,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;aACnD,KAAK,CAAC,KAAK,IAAG;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACrD,SAAC,CAAC;;AAGV;;;AAGG;AACH,IAAA,QAAQ,CAAC,IAAO,EAAA;QACZ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;YAAE;AAE5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC7B,YAAA,OAAO,EAAE,CAAwC,qCAAA,EAAA,IAAI,CAAC,aAAa,EAAE,CAAG,CAAA,CAAA;AACxE,YAAA,MAAM,EAAE,kBAAkB;AAC1B,YAAA,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACnC,qBAAA,IAAI,CAACA,UAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/C,qBAAA,SAAS,CAAC;oBACP,IAAI,EAAE,MAAK;AACP,wBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA,CAAA,EAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;wBAC9E,IAAI,CAAC,QAAQ,EAAE;qBAClB;AACD,oBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACb,wBAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACtC,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAA,CAAE,CAAC;;AAEjF,iBAAA,CAAC;;AAEb,SAAA,CAAC;;AAGN;;;;;AAKG;IACO,gBAAgB,CAAC,IAAO,EAAE,MAAc,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;AAChE,YAAA,OAAO,KAAK;;AAEhB,QAAA,OAAO,IAAI;;AAGf;;;AAGG;IACO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAS;AAC9C,QAAA,OAAO,OAAO,CAAC,QAAQ,IAAI,IAAI;;uGArSjB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C;sKAIoB,KAAK,EAAA,CAAA;sBAArB,SAAS;uBAAC,IAAI;;;ACHb,MAAgB,uBAClB,SAAQ,iBAAiB,CAAA;AAiBX,IAAA,KAAA;AACA,IAAA,MAAA;AACS,IAAA,mBAAA;AACA,IAAA,YAAA;;IAjBvB,SAAS,GAAW,EAAE;IACtB,IAAI,GAAgB,EAAE;IACtB,QAAQ,GAAG,EAAE;;IAGb,KAAK,GAAG,IAAI;AACZ,IAAA,IAAI,GAAa,YAAY,CAAC,SAAS,CAAC,MAAM;AAC9C,IAAA,eAAe;IACL,gBAAgB,GAAa,IAAI;IACjC,UAAU,GAAY,KAAK;;AAIrC,IAAA,WAAA,CACc,KAAqB,EACrB,MAAc,EACL,mBAAwC,EACxC,YAA0B,EAAA;AAE7C,QAAA,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC;QAL9B,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACG,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAKnC,QAAQ,GAAA;AACJ,QAAA,IAAI;;AAEA,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;;AAG1C,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3C,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC3C,KAAK,EAAE,KAAK,IAAG;AACX,oBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;oBAChD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AAElD,aAAA,CAAC;;QACJ,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;IAK3C,kBAAkB,GAAA;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC,IAAI,CAAC;QAEjE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC;YACpE,IAAI,CAAC,cAAc,EAAE;YACrB;;AAGJ,QAAA,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK;AACpD,YAAA,GAAG,MAAM,CAAC,OAAO,CAAC;SACD;AAErB,QAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,KAAK,CAAC;AAE/D,QAAA,IAAI,KAAK,EAAE,QAAQ,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,KAAK,CAAC,QAAQ,CAAC;AAClF,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,cAAc,EAAE;;aAClB;AACH,YAAA,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE;;;IAInB,YAAY,GAAA;;AAEhB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACvB,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,MAAiC,KAAI;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,IAAI,CAAoC,kCAAA,CAAA,CAAC;;AAE1F,YAAA,OAAO,IAAI;AACf,SAAC,CAAC,CACL,CAAC,SAAS,CAAC;YACR,IAAI,EAAE,CAAC,IAAY,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7C,YAAA,KAAK,EAAE,CAAC,KAAY,KAAI;AACpB,gBAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,KAAA,CAAO,CAAC;;AAE5D,SAAA,CAAC;;AAGF,IAAA,cAAc,CAAC,MAAW,EAAA;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAEhD,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,cAAc,EAAE;YAErB,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;iBAC5B;;gBAEH,IAAI,CAAC,kBAAkB,EAAE;;;QAE/B,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,CAAG,EAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAK,EAAA,EAAA,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,CAAE,CAAA,CAAC;;;AAI3G,IAAA,aAAa,CAAC,IAAc,EAAA;QAClC,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE;YAClC,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAIlB,IAAA,kBAAkB,CAAC,SAA6B,EAAA;QACpD,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM;YACzC;;;QAIJ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AAClC,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,CAAA,mBAAA,EAAsB,SAAS,CAAsB,mBAAA,EAAA,UAAU,CAAE,CAAA,CAAC;;AAGtF,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS;;IAGjB,cAAc,GAAA;QAClB,OAAO,CAAC,GAAG,CAAC,wDAAwD,EAAE,IAAI,CAAC,IAAI,CAAC;QAEhF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC;AAC1D,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;;AAI1B,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QAEvC,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,IAAO,KAAI;AACd,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE;AAClC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,IAAI,CAAC,eAAe,CAAC;gBACjF,IAAI,CAAC,cAAc,EAAE;aACxB;AACD,YAAA,KAAK,EAAE,CAAC,KAAY,KAAI;AACpB,gBAAA,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,KAAK,CAAC;AACrE,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;AAC9D,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAE3B,SAAA,CAAC;;AAGI,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;;IAG3C,cAAc,GAAA;AACpB,QAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,UAAU;YAAE;QAEjB,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK;AACvF,YAAA,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,EAAE;AAC9C,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAO,KAAK,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC;YAEnF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACrC,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,YAAY,EAAE,YAAY;oBAC1B,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;aACC,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,EAAE;;YAElD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACrC,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;AAChE,oBAAA,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;aACC;;YAEH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACrC,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,KAAK,EAAE;oBACH,QAAQ,EAAE,IAAI,CAAC,eAAe;oBAC9B,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;;AAIA,IAAA,cAAc,CAAC,SAAoB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;AAE3B,QAAA,IAAI,SAAS,CAAC,aAAa,EAAE;YACzB,OAAO,IAAI,CAAC,eAAe;;AAG/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEhE,QAAA,OAAQ,IAAI,CAAC,eAAuB,CAAC,SAAS,CAAM;;AAGpD,IAAA,kBAAkB,CAAC,MAAW,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK;AACvF,QAAA,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY;AAExC,QAAA,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;QAGtE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC;;QAGzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;;AAGnC,QAAA,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC;;QAGvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,KAAK,EAAE;gBACH,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC9B,gBAAA,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,SAAA,CAAC;;AAGE,IAAA,0BAA0B,CAAC,YAAiB,EAAA;QAChD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAO,MAAM;YAClC,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B,YAAA,aAAa,EAAE;AAClB,SAAA,CAAC,CAAC;;AAKG,IAAA,WAAW,CAAC,KAAsB,EAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAe,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAA,CAAE,CAAC;YACvC;;AAGJ,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK;QAEhC,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK;AACvF,YAAA,MAAM,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,EAAE;AAC9C,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAO,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;;AAGxE,YAAA,IAAI,CAAC,eAAe,GAAG,YAAY;AACnC,YAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY;YAEpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,YAAY,EAAE,YAAY;oBAC1B,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;aACC,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,EAAE;;YAElD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;oBAC/D,cAAc,EAAE,IAAI,CAAC,eAAe;oBACpC,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;aACC;;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,KAAK,EAAE;oBACH,QAAQ;oBACR,OAAO,EAAE,gBAAgB,CAAC;AAC7B;AACJ,aAAA,CAAC;;;AAIA,IAAA,cAAc,CAAC,WAAc,EAAA;;QAEnC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACtC,YAAA,OAAO,IAAI;;;QAIf,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;;IAGpD,OAAO,CAAgC,IAAO,EAAE,IAAO,EAAA;QAC3D,IAAI,IAAI,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AAC9B,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;AACzC,YAAA,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAE3D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AAE/C,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,IAClB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CACrC;;AAGG,IAAA,eAAe,CAAC,IAAY,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAgB,CAAC;;uGAxVzD,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+FAF/B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;2GAEM,uBAAuB,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJ5C;;kBACA,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MCZY,cAAc,CAAA;AACH,IAAA,QAAA;AAApB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAE5B,IAAA,SAAS,CAAC,KAAoB,EAAE,MAAA,GAAqB,SAAS,EAAA;AAC1D,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;;QAGvB,MAAM,SAAS,GAAG,kDAAkD;QACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAA,6BAAA,CAA+B,CAAC;;;AAIjF,QAAA,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACvD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AAC3C,QAAA,IACI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI;AAC3B,YAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EACxB;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAA,CAAE,CAAC;;;QAI7C,QAAQ,MAAM;AACV,YAAA,KAAK,OAAO;;AAER,gBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACjD,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBACrD,OAAO,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,WAAW,IAAI,IAAI,CAAA,CAAE,CAAC;AACjD,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACxD,YAAA;gBACI,OAAO,KAAK,CAAC;;;uGAjChB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACiBK,MAAO,aAAc,SAAQ,SAAS,CAAA;AACjC,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE;AACd;KACF;uGANU,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAVd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,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,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAYN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAnBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,EAAA;AACF,iBAAA;;;ACYK,MAAO,UAAW,SAAQ,SAAS,CAAA;AACvC,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;;AAGnD,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,aAAa,EAAE;AAChB;KACF;uGAhBU,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAdX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAgBH,UAAU,EAAA,UAAA,EAAA,CAAA;kBAvBtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,EAAA;AACF,iBAAA;;;ACMK,MAAO,SAAU,SAAQ,SAAS,CAAA;AACtC,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;;uGAHjD,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EApBV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBR,SAAS,EAAA,UAAA,EAAA,CAAA;kBA7BrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA;AACF,iBAAA;;;ACRK,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AACpC,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,WAAW,EAAE;AACd;KACF;uGAXU,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAjBjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAmBR,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA1B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,EAAA;AACF,iBAAA;;;ACWK,MAAO,eAAgB,SAAQ,SAAS,CAAA;AAC5C,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;;AAGnD,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAoB;AAC7B,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE;AAChB;KACF;uGAjBU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EApBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBR,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7B3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA;AACF,iBAAA;;;ACLK,MAAO,QAAS,SAAQ,SAAS,CAAA;AAC5B,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,aAAa,EAAE,IAAI;AACpB;KACF;AAED,IAAA,YAAY,CAAC,KAAW,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAG9B,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AAC5C,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,EAAE;AAC7E,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC;YACrF,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;;;aAE9B;YACL,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;;AAI9C,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;;;IAIpC,SAAS,CAAC,KAAa,EAAE,MAAc,EAAA;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK;AACpC,kBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7E,kBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;AAEnC,QAAA,OAAO,IAAI;;IAGL,gBAAgB,CAAC,KAAa,EAAE,MAAc,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,MAAM,KAAK;AAC3B,cAAE;cACA,uBAAuB;AAC3B,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;uGAjDnB,QAAQ,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EApBT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBP,QAAQ,EAAA,UAAA,EAAA,CAAA;kBA7BpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA;AACF,iBAAA;;;ACAK,MAAO,YAAa,SAAQ,SAAS,CAAA;AAChC,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE;AACb;KACF;uGANU,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EApBb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBL,YAAY,EAAA,UAAA,EAAA,CAAA;kBA7BxB,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;qBACD,EACS,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA;;;ACCG,MAAO,YAAa,SAAQ,SAAS,CAAA;AAChC,IAAA,cAAc,GAAG;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,WAAW,EAAE;AACd;KACF;uGARU,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAZb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAfC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,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,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qJACZ,QAAQ,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAcC,YAAY,EAAA,UAAA,EAAA,CAAA;kBArBxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA;AACF,iBAAA;;;ACiDK,MAAO,gBAAiB,SAAQ,YAAiD,CAAA;AACrF,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE;AACnC,YAAA,OAAO,EAAE;;AAGX,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,aAAa,CAAC,IAAI,wBAAwB;;AAGrF,IAAA,IAAa,SAAS,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAC3B,YAAA,OAAO,KAAK;;AAGd,QAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;AAC1D,QAAA,OAAO,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC;;uGAhB3B,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EApDjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAzBS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oIAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAqD1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxD5B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,CAAC,EAC5B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA;;;AC/CI,MAAM,YAAY,GAAG;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,QAAQ,EAAE;CACX;AAEM,MAAM,eAAe,GAAG;AAC7B,IAAA,UAAU,EAAE;CACb;;MCoBY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,wCAFjB,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAlBzB,OAAA,EAAA,CAAA,YAAY,CAAC,OAAO,CAAC;AACnB,gBAAA,KAAK,EAAE;AACL,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC7F,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAClG,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACxF,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAChG,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC1F,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC5F,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACtG,oBAAA,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACjG,iBAAA;AACD,gBAAA,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB;AAChE;AACF,aAAA,CAAC,EAEM,YAAY,CAAA,EAAA,CAAA;;2FAEX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY,CAAC,OAAO,CAAC;AACnB,4BAAA,KAAK,EAAE;AACL,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC7F,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAClG,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACxF,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAChG,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC1F,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC5F,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACtG,gCAAA,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACjG,6BAAA;AACD,4BAAA,QAAQ,EAAE;gCACR,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB;AAChE;yBACF;AACF,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY;AACvB,iBAAA;;;AChCD;AAEA;;ACFA;;AAEG;;;;"}
1
+ {"version":3,"file":"codex-ts-core-lib.mjs","sources":["../../../../angular/core-lib/src/lib/services/utils.service.ts","../../../../angular/core-lib/src/lib/services/enum-registry.service.ts","../../../../angular/core-lib/src/lib/services/formly-config.service.ts","../../../../angular/core-lib/src/lib/services/notification.service.ts","../../../../angular/core-lib/src/lib/services/http-utility.service.ts","../../../../angular/core-lib/src/lib/services/reference-data-provider.service.ts","../../../../angular/core-lib/src/lib/services/entity-registry.service.ts","../../../../angular/core-lib/src/lib/services/base-crud.service.ts","../../../../angular/core-lib/src/lib/enums/component-context.enum.ts","../../../../angular/core-lib/src/lib/enums/tabbed-form-type.enum.ts","../../../../angular/core-lib/src/lib/components/base-page.component.ts","../../../../angular/core-lib/src/lib/constants/app.messages.ts","../../../../angular/core-lib/src/lib/constants/app.constants.ts","../../../../angular/core-lib/src/lib/components/base-form.component.ts","../../../../angular/core-lib/src/lib/components/base-list-page.component.ts","../../../../angular/core-lib/src/lib/components/base-tabbed-form.component.ts","../../../../angular/core-lib/src/lib/pipes/indian-date.pipe.ts","../../../../angular/core-lib/src/lib/components/formly/types/text-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/select.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/radio.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/numeric-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/multiselect.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/date.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/checkbox.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/textarea.type.ts","../../../../angular/core-lib/src/lib/components/formly/form-field.wrapper.ts","../../../../angular/core-lib/src/lib/components/formly/formly.constants.ts","../../../../angular/core-lib/src/lib/components/formly/core-formly.module.ts","../../../../angular/core-lib/src/index.ts","../../../../angular/core-lib/src/codex-ts-core-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A utility service that provides common reusable functionality\r\n * such as UUID validation and error message display\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Validates if a string is a valid UUID\r\n * @param uuid The string to validate\r\n * @returns boolean indicating if the string is a valid UUID\r\n */\r\n isValidUUID(uuid: string): boolean {\r\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\r\n return uuidRegex.test(uuid);\r\n }\r\n\r\n /**\r\n * Shows an error message using PrimeNG's MessageService\r\n * @param message The error message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showError(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows a success message using PrimeNG's MessageService\r\n * @param message The success message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showSuccess(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the display value for an enum key or array of enum keys\r\n * @param enumType The enum type\r\n * @param key The enum key or array of enum keys\r\n * @returns The display value for the enum key or comma-separated list of display values for array of keys\r\n */\r\n getEnumValue<T>(enumType: T, key: string | string[]): string {\r\n if (!key) return '';\r\n \r\n if (Array.isArray(key)) {\r\n // Handle array of keys - map each to its display value and join with comma\r\n return key.map(k => (enumType as any)[k] || k).join(', ');\r\n }\r\n \r\n // Handle single key\r\n return (enumType as any)[key] || key;\r\n }\r\n\r\n /**\r\n * Gets all values from an enum type for use in formly select fields\r\n * @param enumType The enum type to get values from\r\n * @returns Array of {label, value} pairs for formly select options\r\n */\r\n getEnumValues<T extends { [key: string]: string | number }>(enumType: T): Array<{label: string, value: string}> {\r\n return Object.entries(enumType)\r\n .filter(([key]) => isNaN(Number(key))) // Filter out reverse mappings\r\n .map(([key, value]) => ({\r\n value: key, // enum key as the value\r\n label: value as string // enum value as the label\r\n }));\r\n }\r\n\r\n /**\r\n * Converts a camelCase string to Title Case with spaces\r\n * @param camelCase The camelCase string to convert\r\n * @returns The Title Case string\r\n */\r\n camelCaseToTitleCase(camelCase: string): string {\r\n if (!camelCase) return '';\r\n const spacedString = camelCase.replace(/([a-z])([A-Z])/g, '$1 $2');\r\n return spacedString.charAt(0).toUpperCase() + spacedString.slice(1);\r\n }\r\n\r\n /**\r\n * Converts a string to kebab-case\r\n * @param input The string to convert\r\n * @returns The kebab-case string\r\n */\r\n toKebabCase(input: string): string {\r\n return input\r\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2')\r\n .toLowerCase();\r\n }\r\n\r\n /**\r\n * Converts a string to camelCase.\r\n * Example: \"loan-application\" becomes \"loanApplication\"\r\n * @param input The string to convert\r\n * @returns The camelCase string\r\n */\r\n toCamelCase(input: string): string {\r\n if (!input) return '';\r\n \r\n // Split by non-alphanumeric chars\r\n const words = input.split(/[^a-zA-Z0-9]/);\r\n const result = [words[0].toLowerCase()];\r\n \r\n // Capitalize first letter of remaining words\r\n for (let i = 1; i < words.length; i++) {\r\n const word = words[i];\r\n if (word) {\r\n result.push(word.charAt(0).toUpperCase() + word.substring(1).toLowerCase());\r\n }\r\n }\r\n \r\n return result.join('');\r\n }\r\n\r\n /**\r\n * Removes double forward slashes from an endpoint string while preserving the protocol\r\n * e.g. \"http://localhost:8080//api//v1//users\" -> \"http://localhost:8080/api/v1/users\"\r\n * @param endpoint The endpoint string to clean\r\n * @returns The cleaned endpoint string without double slashes\r\n */\r\n removeDoubleSlashes(endpoint: string): string {\r\n if (!endpoint) return '';\r\n \r\n // Split the URL into protocol and the rest to preserve protocol slashes\r\n const [protocol, ...rest] = endpoint.split('://');\r\n \r\n if (!rest.length) {\r\n // If no protocol is present, just clean the entire string\r\n return endpoint.replace(/\\/+/g, '/');\r\n }\r\n \r\n // Clean the path part (after protocol) and reconstruct the URL\r\n const cleanPath = rest.join('://').replace(/\\/+/g, '/');\r\n return `${protocol}://${cleanPath}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UtilsService } from './utils.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnumRegistryService {\r\n private enumMap = new Map<string, any>();\r\n\r\n constructor(private utilsService: UtilsService) {}\r\n\r\n /**\r\n * Initialize global enums\r\n */\r\n static registerGlobalEnums(enums: Record<string, any>) {\r\n return {\r\n provide: EnumRegistryService,\r\n useFactory: (utilsService: UtilsService) => {\r\n const service = new EnumRegistryService(utilsService);\r\n Object.entries(enums).forEach(([name, enumType]) => {\r\n service.register(name, enumType);\r\n });\r\n return service;\r\n },\r\n deps: [UtilsService]\r\n };\r\n }\r\n \r\n /**\r\n * Register an enum type with the service\r\n * @param name Name to register the enum under\r\n * @param enumType The enum type to register\r\n */\r\n register(name: string, enumType: any) {\r\n this.enumMap.set(name, enumType);\r\n }\r\n \r\n /**\r\n * Get formly-compatible options array for a registered enum\r\n * @param name Name of the registered enum\r\n * @returns Array of {label, value} pairs suitable for formly select fields\r\n */\r\n getEnumValues(name: string) {\r\n const enumType = this.enumMap.get(name);\r\n if (!enumType) {\r\n console.warn(`Enum type \"${name}\" not found in registry`);\r\n return [];\r\n }\r\n return this.utilsService.getEnumValues(enumType);\r\n }\r\n\r\n /**\r\n * Check if an enum type is registered\r\n * @param name Name of the enum to check\r\n */\r\n hasEnum(name: string): boolean {\r\n return this.enumMap.has(name);\r\n }\r\n\r\n /**\r\n * Clear all registered enums\r\n */\r\n clear() {\r\n this.enumMap.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { PageMode } from '../constants/app.constants';\r\nimport { EnumRegistryService } from './enum-registry.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormlyConfigService {\r\n constructor(private enumRegistry: EnumRegistryService) {}\r\n\r\n getFormConfig(\r\n fields: FormlyFieldConfig[], \r\n mode: PageMode,\r\n dynamicOptions?: Record<string, any>\r\n ): FormlyFieldConfig[] {\r\n const commonConfig = {\r\n props: {\r\n disabled: mode === 'view'\r\n }\r\n };\r\n\r\n return fields.map((field: FormlyFieldConfig) => {\r\n // Apply dynamic options from child component\r\n if (dynamicOptions && field.key && typeof field.key === 'string') {\r\n const fieldOptions = dynamicOptions[field.key];\r\n if (fieldOptions) {\r\n field.props = {\r\n ...field.props,\r\n ...fieldOptions\r\n };\r\n }\r\n }\r\n\r\n // Handle field groups recursively\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.getFormConfig(field.fieldGroup, mode, dynamicOptions);\r\n }\r\n\r\n return {\r\n ...field,\r\n ...commonConfig,\r\n props: {\r\n ...field.props,\r\n ...commonConfig.props\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n private messageSubject = new BehaviorSubject<any>(null);\r\n message$ = this.messageSubject.asObservable();\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showSuccess(message: string) {\r\n const msgObj = {\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n showError(message: string) {\r\n const msgObj = {\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n clearMessage() {\r\n this.messageSubject.next(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpEvent } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, finalize, forkJoin } from 'rxjs';\r\nimport { catchError, retry, timeout } from 'rxjs/operators';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A general-purpose HTTP utility service that provides enhanced HTTP operations\r\n * beyond the standard Angular HttpClient. This service includes features such as:\r\n * - Loading state management\r\n * - Standardized error handling\r\n * - Request timeouts and retries\r\n * - File upload capabilities\r\n * - Batch request handling\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpUtilityService {\r\n private loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this.loading.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService?: MessageService\r\n ) {}\r\n\r\n /**\r\n * Perform a GET request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n get<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a POST request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n post<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.post<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a PUT request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n put<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.put<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a DELETE request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n delete<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.delete<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Upload a file with optional additional data\r\n * @param url The upload endpoint URL\r\n * @param file The file to upload\r\n * @param additionalData Additional form data to include\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n uploadFile<T>(url: string, file: File, additionalData?: Record<string, any>, options?: {\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number,\r\n onProgress?: (percentage: number) => void\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n \r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n \r\n let httpOptions: any = {\r\n headers: options?.headers,\r\n withCredentials: options?.withCredentials\r\n };\r\n \r\n // If progress tracking is requested\r\n if (options?.onProgress) {\r\n httpOptions.reportProgress = true;\r\n httpOptions.observe = 'events';\r\n }\r\n \r\n // Create the request\r\n let request$ = this.http.post<any>(url, formData, httpOptions);\r\n \r\n // Add retries if specified\r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n // Add timeout if specified\r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n // Track progress if a callback is provided\r\n if (options?.onProgress) {\r\n return new Observable<T>(observer => {\r\n request$.subscribe({\r\n next: (event: HttpEvent<any>) => {\r\n if (event.type === 1 && event.total) { // HttpEventType.UploadProgress\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n options.onProgress!(percentDone);\r\n } else if (event.type === 4) { // HttpEventType.Response\r\n observer.next(event.body);\r\n observer.complete();\r\n }\r\n },\r\n error: (error) => {\r\n observer.error(this.handleError(error));\r\n this.loading.next(false);\r\n },\r\n complete: () => {\r\n this.loading.next(false);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // Standard request without progress tracking\r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n ) as Observable<T>;\r\n }\r\n\r\n /**\r\n * Execute multiple HTTP requests in parallel\r\n * @param requests Array of HTTP request observables\r\n * @returns An observable that emits when all requests complete\r\n */\r\n batchRequests<T>(requests: Observable<T>[]): Observable<T[]> {\r\n this.loading.next(true);\r\n return forkJoin(requests).pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Download a file from the server\r\n * @param url The file URL\r\n * @param filename Optional filename to save as\r\n * @param options Additional request options\r\n */\r\n downloadFile(url: string, filename?: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n timeoutMs?: number\r\n }): Observable<Blob> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: 'blob',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Create parameter string from an object\r\n * @param params Object containing parameters\r\n * @returns HttpParams object\r\n */\r\n createParams(params: Record<string, any>): HttpParams {\r\n let httpParams = new HttpParams();\r\n \r\n Object.keys(params).forEach(key => {\r\n const value = params[key];\r\n if (value !== undefined && value !== null) {\r\n httpParams = httpParams.append(key, value.toString());\r\n }\r\n });\r\n \r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Standardized error handler for HTTP requests\r\n * @param error The HTTP error\r\n * @returns An observable that errors with the processed error object\r\n */\r\n private handleError(error: HttpErrorResponse) {\r\n console.error('An HTTP error occurred:', error);\r\n \r\n let errorMessage = 'An error occurred';\r\n let errorCode: string | undefined;\r\n \r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n errorMessage = error.error.message;\r\n } else {\r\n // Server-side error\r\n errorCode = error.status.toString();\r\n \r\n switch (error.status) {\r\n case 400:\r\n errorMessage = error.error?.message || 'Bad request';\r\n break;\r\n case 401:\r\n errorMessage = 'Unauthorized';\r\n break;\r\n case 403:\r\n errorMessage = 'Access denied';\r\n break;\r\n case 404:\r\n errorMessage = 'Resource not found';\r\n break;\r\n case 408:\r\n errorMessage = 'Request timeout';\r\n break;\r\n case 500:\r\n errorMessage = 'Server error';\r\n break;\r\n case 503:\r\n errorMessage = 'Service unavailable';\r\n break;\r\n default:\r\n errorMessage = error.error?.message || `Error ${error.status}`;\r\n break;\r\n }\r\n }\r\n\r\n this.showError(errorMessage);\r\n return throwError(() => ({\r\n error,\r\n message: errorMessage,\r\n code: errorCode\r\n }));\r\n }\r\n\r\n /**\r\n * Display an error message using the message service\r\n * @param message Error message to display\r\n */\r\n private showError(message: string) {\r\n if (this.messageService) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReferenceDataProviderService {\r\n\r\n private endpoints: Record<string, string> = {};\r\n\r\n // Method to set/update endpoints\r\n setEndpoints(endpoints: Record<string, string>) {\r\n this.endpoints = { ...this.endpoints, ...endpoints };\r\n }\r\n\r\n getReferenceEndpoint(entityName: string): string | null {\r\n console.log('getReferenceEndpoint', entityName, this.endpoints);\r\n let endpoint = this.endpoints[entityName];\r\n if (endpoint != null && endpoint.length > 0) {\r\n if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {\r\n return endpoint; // Absolute URL\r\n } else {\r\n // Relative URL, assume it's within the application's base context\r\n return endpoint;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { ReferenceDataProviderService } from './reference-data-provider.service';\r\n\r\nexport interface ReferenceDto {\r\n key: string;\r\n displayLabel: string;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityRegistryService {\r\n constructor(\r\n private httpUtility: HttpUtilityService,\r\n private dataProvider: ReferenceDataProviderService\r\n ) {}\r\n\r\n /**\r\n * Gets reference options for an entity, suitable for select/dropdown components\r\n * @param entityName The name of the entity (e.g., 'customers', 'departments')\r\n * @returns Observable of options array with label/value pairs\r\n */\r\n getEntityOptions(entityName: string): Observable<{ label: string; value: string; data?: any; }[]> {\r\n console.log('getEntityOptions', entityName);\r\n const url = this.dataProvider.getReferenceEndpoint(entityName);\r\n\r\n if (!url) {\r\n console.warn(`No endpoint configured for entity: ${entityName}`);\r\n return new Observable(subscriber => {\r\n subscriber.next([]);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n return this.httpUtility.get<ReferenceDto[]>(url, {\r\n retries: 1,\r\n timeoutMs: 10000,\r\n }).pipe(\r\n map((items) =>\r\n items?.map((item) => ({\r\n label: item.displayLabel,\r\n value: item.key,\r\n data: item.data,\r\n })) || []\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { UtilsService } from './utils.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { EntityService } from './entity.service';\r\n\r\nexport abstract class BaseCrudService<T extends { uuid: string }> implements EntityService<T> {\r\n // Use the loading state from HttpUtilityService\r\n get loading$() {\r\n return this.httpUtility.loading$;\r\n }\r\n\r\n protected apiUrl: string;\r\n\r\n /**\r\n * Creates an instance of BaseCrudService.\r\n * @param httpUtility - Service for making HTTP requests\r\n * @param utilsService - Utility service for common operations\r\n * @param resourcePath - API resource path (e.g., 'customers', 'products')\r\n * @param backendBaseUrl - Base URL for the backend API\r\n * @param messageService - Optional service for showing messages\r\n */\r\n protected constructor(\r\n protected httpUtility: HttpUtilityService,\r\n protected utilsService: UtilsService,\r\n protected resourcePath: string,\r\n protected backendBaseUrl: string,\r\n protected messageService: MessageService | undefined\r\n ) {\r\n this.apiUrl = this.joinUrls(backendBaseUrl, resourcePath);\r\n }\r\n\r\n /**\r\n * Joins URL parts ensuring no double slashes\r\n */\r\n private joinUrls(...parts: string[]): string {\r\n return parts.map(part => part.replace(/^\\/+|\\/+$/g, '')).join('/');\r\n }\r\n\r\n getAll(pageRequest?: PageRequest): Observable<Page<T>> {\r\n if (pageRequest) {\r\n return this.httpUtility.post<Page<T>>(`${this.apiUrl}/page`, pageRequest);\r\n } else {\r\n return this.httpUtility.get<Page<T>>(this.apiUrl);\r\n }\r\n }\r\n\r\n getById(uuid: string): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.get<T>(`${this.apiUrl}/${uuid}`);\r\n }\r\n\r\n create(entity: Omit<T, 'uuid'>): Observable<T> {\r\n return this.httpUtility.post<T>(this.apiUrl, entity);\r\n }\r\n\r\n update(uuid: string, entity: Omit<T, 'uuid'>): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.put<T>(`${this.apiUrl}/${uuid}`, entity);\r\n }\r\n\r\n delete(uuid: string): Observable<void> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.delete<void>(`${this.apiUrl}/${uuid}`);\r\n }\r\n}\r\n","export enum ComponentContext {\r\n STANDALONE = 'STANDALONE',\r\n TABBED = 'TABBED',\r\n MODAL = 'MODAL',\r\n EMBEDDED = 'EMBEDDED'\r\n}\r\n","export enum TabbedFormType {\r\n STANDARD = 'STANDARD',\r\n LIST = 'LIST'\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\n\r\n/**\r\n * Base component for all page components in the application.\r\n * Provides common functionality like loading state and message display.\r\n */\r\n@Directive()\r\nexport abstract class BasePageComponent {\r\n protected loading: boolean = false;\r\n \r\n constructor(\r\n protected utilsService: UtilsService,\r\n protected notificationService: NotificationService\r\n ) {}\r\n\r\n /**\r\n * Display an error message to the user\r\n * @param detail The error message to display\r\n */\r\n protected showError(detail: string): void {\r\n this.notificationService.showError(detail);\r\n }\r\n\r\n /**\r\n * Display a success message to the user\r\n * @param detail The success message to display\r\n */\r\n protected showSuccess(detail: string): void {\r\n this.notificationService.showSuccess(detail);\r\n }\r\n}\r\n","export const AppMessages = {\r\n COMMON: {\r\n ERROR: {\r\n GENERAL: 'An error occurred',\r\n INVALID_INPUT: 'Invalid input provided',\r\n REQUIRED_FIELD: 'This field is required'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully',\r\n UPDATE: 'updated successfully',\r\n DELETE: 'deleted successfully'\r\n }\r\n },\r\n FORM: {\r\n ERROR: {\r\n INIT: 'Failed to initialize form',\r\n SAVE: 'Failed to save',\r\n LOAD: 'Failed to load',\r\n VALIDATION: 'Please fill in all required fields correctly'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully'\r\n }\r\n },\r\n LIST: {\r\n ERROR: {\r\n LOAD: 'Failed to load',\r\n DELETE: 'Failed to delete',\r\n NAVIGATION: 'Navigation failed',\r\n INVALID_ID: 'Cannot perform action without ID'\r\n },\r\n SUCCESS: {\r\n DELETE: 'deleted successfully'\r\n }\r\n }\r\n} as const;\r\n","export class AppConstants {\r\n static readonly FORM = {\r\n MODE: 'mode',\r\n UUID: 'uuid',\r\n NEW: 'new'\r\n } as const;\r\n\r\n static readonly PAGE_MODE = {\r\n CREATE: 'create',\r\n EDIT: 'edit',\r\n VIEW: 'view'\r\n } as const;\r\n}\r\n\r\nexport type PageMode = typeof AppConstants.PAGE_MODE[keyof typeof AppConstants.PAGE_MODE];\r\n","import { Component, OnInit, Injectable, Input } from '@angular/core';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, filter, take } from 'rxjs';\r\nimport { FormlyConfigService } from '../services/formly-config.service';\r\nimport { EntityService } from '../services/entity.service';\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n form = new FormGroup({});\r\n fields: FormlyFieldConfig[] = [];\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData: any = {};\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n @Input() context: ComponentContext = ComponentContext.STANDALONE;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected formlyConfigService: FormlyConfigService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n this.form.valueChanges.subscribe(() => {\r\n console.log('[BaseFormComponent] Form value changed:', this.form.value);\r\n this.currentFormData = { ...this.form.value };\r\n this.hasChanges = this.hasFormChanges(this.currentFormData);\r\n });\r\n\r\n // Use queryParams instead of params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n private initializeFormData() {\r\n console.log('[BaseFormComponent] Initializing form data');\r\n console.log('[BaseFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode, using defaults');\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state,\r\n ...this.route.snapshot.data\r\n };\r\n console.log('[BaseFormComponent] Combined state:', state);\r\n console.log('[BaseFormComponent] Final state being used:', state);\r\n \r\n if (state && 'formData' in state) {\r\n console.log('[BaseFormComponent] Found form data in state:', state['formData']);\r\n this.patchFormData(state['formData']);\r\n } else {\r\n console.log('[BaseFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n this.route.queryParams.pipe(take(1)).subscribe(params => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n this.loadEntity(uuid);\r\n });\r\n }\r\n\r\n private initializeForm(params: any) {\r\n console.log('[BaseFormComponent] Initializing form with params:', params);\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n // Check for context in router state\r\n const state = window.history.state;\r\n if (state?.context) {\r\n this.context = state.context;\r\n console.log('[BaseFormComponent] Context set from router state:', this.context);\r\n }\r\n\r\n this.initializeFormData();\r\n }\r\n\r\n protected patchFormData(data: any) {\r\n console.log('[BaseFormComponent] Patching form data:', data);\r\n if (data) {\r\n if (!this.fields || this.fields.length === 0) {\r\n console.warn('[BaseFormComponent] Fields not initialized yet, reinitializing');\r\n this.fields = this.getFormlyFieldConfig();\r\n }\r\n this.currentFormData = { ...data };\r\n this.originalFormData = data;\r\n this.isNew = false;\r\n \r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n console.log('[BaseFormComponent] Fields available:', this.fields);\r\n \r\n setTimeout(() => {\r\n if (!this.form.valid) {\r\n console.warn('[BaseFormComponent] Form validation issues after data patch');\r\n }\r\n console.log('[BaseFormComponent] Form state after sync:', {\r\n valid: this.form.valid,\r\n values: this.form.value,\r\n currentData: this.currentFormData\r\n });\r\n }, 100);\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n } else if (this.isValidPageMode(routeMode)) {\r\n this.mode = routeMode;\r\n } else {\r\n throw new Error(`Invalid page mode: ${routeMode}`);\r\n }\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseFormComponent] Setting up form state, mode:', this.mode);\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.VIEW) {\r\n console.log('[BaseFormComponent] View mode setup');\r\n this.form.disable();\r\n }\r\n }\r\n\r\n protected getFormlyFieldConfig(): FormlyFieldConfig[] {\r\n return this.formlyConfigService.getFormConfig(\r\n this.getJsonFields(),\r\n this.mode,\r\n this.getDropdownOptions()\r\n );\r\n }\r\n\r\n protected onSubmitRoute(): string[] {\r\n return [`/${this.getEntityName().toLowerCase()}s`];\r\n }\r\n\r\n protected getEntityOperations(): {\r\n create: (data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n update: (uuid: string, data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n getById: (uuid: string) => Observable<T>;\r\n } {\r\n const entityService = this.getEntityService();\r\n return {\r\n create: (data) => entityService.create(data),\r\n update: (uuid, data) => entityService.update(uuid, { ...data, uuid } as T),\r\n getById: (uuid) => entityService.getById(uuid)\r\n };\r\n }\r\n\r\n protected onSubmit() {\r\n console.log('[BaseFormComponent] Form submission:', {\r\n formValid: this.form.valid,\r\n formData: this.currentFormData,\r\n formState: this.form.value\r\n });\r\n\r\n if (!this.currentFormData || Object.keys(this.currentFormData).length === 0) {\r\n this.notificationService.showError('No data to save');\r\n return;\r\n }\r\n\r\n if (this.form.valid) {\r\n if (this.isNew) {\r\n console.log('[BaseFormComponent] Saving new entity');\r\n this.saveEntity();\r\n return;\r\n }\r\n\r\n const hasChanges = this.hasFormChanges(this.currentFormData);\r\n console.log('[BaseFormComponent] Change detection:', {\r\n hasChanges,\r\n currentData: this.currentFormData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n if (!hasChanges) {\r\n this.notificationService.showSuccess('No changes to save');\r\n return;\r\n }\r\n\r\n console.log('[BaseFormComponent] Saving changes');\r\n this.saveEntity();\r\n } else {\r\n console.warn('[BaseFormComponent] Form validation failed:', this.form.errors);\r\n this.notificationService.showError('Please check form errors');\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: any): boolean {\r\n if (!this.originalFormData || this.isNew) {\r\n return true;\r\n }\r\n\r\n console.log('[BaseFormComponent] Checking for changes:', {\r\n currentData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n const hasChanges = Object.keys(currentData).some(key => {\r\n const currentValue = currentData[key];\r\n const originalValue = (this.originalFormData as any)[key];\r\n const changed = currentValue !== originalValue;\r\n \r\n if (changed) {\r\n console.log(`[BaseFormComponent] Field '${key}' changed:`, {\r\n from: originalValue,\r\n to: currentValue\r\n });\r\n }\r\n \r\n return changed;\r\n });\r\n\r\n console.log('[BaseFormComponent] Changes detected:', hasChanges);\r\n return hasChanges;\r\n }\r\n\r\n protected saveEntity() {\r\n this.loading = true;\r\n const formData = this.currentFormData as Omit<T, typeof AppConstants.FORM.UUID>;\r\n const entityName = this.getEntityName();\r\n const entityOperations = this.getEntityOperations();\r\n\r\n const request$ = this.isNew\r\n ? entityOperations.create(formData)\r\n : entityOperations.update(this.originalFormData!.uuid, formData);\r\n\r\n request$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n this.notificationService.showSuccess(`${entityName} ${AppMessages.FORM.SUCCESS.SAVE}`);\r\n this.router.navigate(this.onSubmitRoute());\r\n },\r\n error: (error: any) => {\r\n const errorMessage = error.error?.message || `${AppMessages.FORM.ERROR.SAVE} ${entityName}`;\r\n this.showError(errorMessage);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityOperations().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n },\r\n error: () => {\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected abstract getEntityService(): EntityService<T>;\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n protected getDropdownOptions(): Record<string, any> {\r\n return {};\r\n }\r\n\r\n protected abstract getJsonFields(): any;\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Checks if the component is running in a specific context\r\n * @param contextType The context type to check against\r\n */\r\n protected isInContext(contextType: ComponentContext): boolean {\r\n return this.context === contextType;\r\n }\r\n}\r\n","import { OnInit, OnDestroy, ViewChild, Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { Subscription, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { FilterCriteria, FilterOperator } from '../models/pagination/filter-criteria.interface';\r\nimport { SortCriteria } from '../models/pagination/sort-criteria.interface';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { AppConstants } from '../constants/app.constants';\r\n\r\n/**\r\n * Base component for all list page components in the application.\r\n * Provides common functionality for list operations like loading data,\r\n * pagination, sorting, and CRUD operations.\r\n */\r\n@Directive()\r\nexport abstract class BaseListPageComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('dt') table!: Table;\r\n items: T[] = [];\r\n actionLoading: boolean = false;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n filters: FilterCriteria[] = [];\r\n protected subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected confirmationService: ConfirmationService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n /**\r\n * Initialize the component, subscribe to loading state if available,\r\n * and load initial data.\r\n */\r\n ngOnInit() {\r\n // Subscribe to loading state if available\r\n const loadingObservable = this.getLoadingObservable();\r\n if (loadingObservable) {\r\n this.subscriptions.push(\r\n loadingObservable.subscribe(\r\n isLoading => this.loading = isLoading\r\n )\r\n );\r\n }\r\n this.loadData();\r\n }\r\n\r\n /**\r\n * Clean up any subscriptions when the component is destroyed\r\n */\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * Handle search event from the UI\r\n * @param event The search event\r\n */\r\n onSearch(event: Event): void {\r\n const element = event.target as HTMLInputElement;\r\n if (this.table) {\r\n this.table.filterGlobal(element.value, 'contains');\r\n }\r\n }\r\n\r\n /**\r\n * Load data with pagination and sorting\r\n * @param event The lazy load event from PrimeNG table\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filters to backend format with proper operator mapping\r\n */\r\n protected convertFilters(filters: { [key: string]: any }): FilterCriteria[] {\r\n const backendFilters: FilterCriteria[] = [];\r\n if (!filters) return backendFilters;\r\n\r\n console.log('Raw PrimeNG filters:', filters);\r\n\r\n Object.entries(filters).forEach(([key, filterMeta]) => {\r\n console.log(`Processing filter for ${key}:`, filterMeta);\r\n\r\n // Handle array of filter metadata (multiple filters for same column)\r\n if (Array.isArray(filterMeta)) {\r\n const validFilters = filterMeta\r\n .filter(meta => meta.value !== null && meta.value !== undefined && meta.value !== '')\r\n .map(meta => ({\r\n field: key,\r\n value: this.transformFilterValue(String(meta.value)),\r\n operator: this.transformOperator(meta.matchMode)\r\n }));\r\n backendFilters.push(...validFilters);\r\n }\r\n // Handle single filter metadata\r\n else if (filterMeta?.value !== null && filterMeta?.value !== undefined && filterMeta?.value !== '') {\r\n backendFilters.push({\r\n field: key,\r\n value: this.transformFilterValue(String(filterMeta.value)),\r\n operator: this.transformOperator(filterMeta.matchMode)\r\n });\r\n }\r\n });\r\n\r\n console.log('Converted filters:', backendFilters);\r\n return backendFilters;\r\n }\r\n\r\n /**\r\n * Transform filter value based on backend requirements - all values must be strings\r\n */\r\n protected transformFilterValue(value: any): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n return value.trim();\r\n }\r\n if (Array.isArray(value)) {\r\n return value.join(',');\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return value.toString();\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Map PrimeNG operators to backend operators\r\n */\r\n protected transformOperator(operator: string): FilterOperator {\r\n const operatorMap: { [key: string]: FilterOperator } = {\r\n 'contains': 'CONTAINS',\r\n 'startsWith': 'STARTS_WITH',\r\n 'endsWith': 'ENDS_WITH',\r\n 'equals': 'EQUALS',\r\n 'notEquals': 'NOT_EQUALS',\r\n 'gt': 'GREATER_THAN',\r\n 'gte': 'GREATER_THAN_EQUALS',\r\n 'lt': 'LESS_THAN',\r\n 'lte': 'LESS_THAN_EQUALS'\r\n };\r\n return operatorMap[operator] || 'EQUALS'; // Default to EQUALS if operator not found\r\n }\r\n\r\n loadData(event?: TableLazyLoadEvent) {\r\n console.log('LoadData called with event:', event);\r\n this.loading = true;\r\n\r\n // Create page request with default values\r\n const pageRequest: PageRequest = {\r\n page: 0,\r\n size: 10,\r\n sorts: [],\r\n filters: []\r\n };\r\n\r\n if (event) {\r\n // Handle pagination\r\n if (event.first !== undefined && event.rows) {\r\n pageRequest.page = Math.floor(event.first / event.rows);\r\n pageRequest.size = event.rows;\r\n }\r\n\r\n // Handle sorting\r\n if (event.sortField) {\r\n pageRequest.sorts = [{\r\n field: Array.isArray(event.sortField) ? event.sortField[0] : event.sortField,\r\n direction: event.sortOrder === 1 ? 'asc' : 'desc'\r\n }];\r\n }\r\n\r\n // Handle filtering\r\n if (event.filters) {\r\n const convertedFilters = this.convertFilters(event.filters);\r\n console.log('Converted filters:', convertedFilters);\r\n pageRequest.filters = convertedFilters;\r\n }\r\n }\r\n\r\n console.log('Sending page request:', pageRequest);\r\n\r\n this.getEntityService().getAll(pageRequest)\r\n .pipe(finalize(() => this.loading = false))\r\n .subscribe({\r\n next: (response: Page<T>) => {\r\n this.items = [...response.content];\r\n this.totalRecords = response.page.totalElements;\r\n },\r\n error: (error) => {\r\n console.error('Failed to load data:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.LOAD} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Navigate to create a new entity\r\n */\r\n public onCreate(): void {\r\n // Navigate to the form route and pass the mode as a query parameter\r\n this.navigateTo([this.getFormRoute()], { [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.CREATE });\r\n }\r\n\r\n /**\r\n * Navigate to view an entity\r\n * @param item The entity to view\r\n */\r\n onView(item: T) {\r\n if (!this.validateItemUuid(item, 'view')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.VIEW, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n\r\n /**\r\n * Navigate to edit an entity\r\n * @param item The entity to edit\r\n */\r\n onEdit(item: T) {\r\n if (!this.validateItemUuid(item, 'edit')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.EDIT, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n \r\n /**\r\n * Navigate to a route with error handling\r\n * @param path The route path\r\n * @param matrixParams Optional matrix parameters\r\n */\r\n protected navigateTo(path: any[], matrixParams?: { [key: string]: any }): void {\r\n this.router.navigate(path, { queryParams: matrixParams })\r\n .catch(error => {\r\n console.error('Navigation error:', error);\r\n this.showError(AppMessages.LIST.ERROR.NAVIGATION);\r\n });\r\n }\r\n\r\n /**\r\n * Delete an entity with confirmation\r\n * @param item The entity to delete\r\n */\r\n onDelete(item: T) {\r\n if (!this.validateItemUuid(item, 'delete')) return;\r\n\r\n this.confirmationService.confirm({\r\n message: `Are you sure you want to delete this ${this.getEntityName()}?`,\r\n header: 'Confirm Deletion',\r\n icon: 'pi pi-exclamation-triangle',\r\n accept: () => {\r\n this.actionLoading = true;\r\n this.getEntityService().delete(item.uuid)\r\n .pipe(finalize(() => this.actionLoading = false))\r\n .subscribe({\r\n next: () => {\r\n this.showSuccess(`${this.getEntityName()} ${AppMessages.LIST.SUCCESS.DELETE}`);\r\n this.loadData();\r\n },\r\n error: (error) => {\r\n console.error('Delete failed:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.DELETE} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Validate that an entity has a UUID\r\n * @param item The entity to validate\r\n * @param action The action being performed\r\n * @returns true if valid, false otherwise\r\n */\r\n protected validateItemUuid(item: T, action: string): boolean {\r\n if (!item?.uuid) {\r\n this.showError(`${AppMessages.LIST.ERROR.INVALID_ID} ${action}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Get an observable for loading state from the entity service\r\n * @returns An observable of loading state if available, null otherwise\r\n */\r\n protected getLoadingObservable(): Observable<boolean> | null {\r\n const service = this.getEntityService() as any;\r\n return service.loading$ || null;\r\n }\r\n\r\n /**\r\n * Get the entity service for data operations\r\n */\r\n protected abstract getEntityService(): { \r\n getAll: (pageRequest?: PageRequest) => Observable<Page<T>>;\r\n delete: (uuid: string) => Observable<any>;\r\n };\r\n\r\n /**\r\n * Get the entity name for display in messages\r\n */\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Get the route to the entity form\r\n */\r\n protected abstract getFormRoute(): string;\r\n}\r\n","import { Component, OnInit, Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, take, map } from 'rxjs';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { TabbedFormType } from '../enums/tabbed-form-type.enum';\r\n\r\nexport interface TabConfig {\r\n value: string;\r\n title: string;\r\n isParentModel?: boolean;\r\n}\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseTabbedFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n // Tab specific properties\r\n activeTab: string = '';\r\n tabs: TabConfig[] = [];\r\n formType = '';\r\n\r\n // Form properties\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData!: T;\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n\r\n // debug method removed\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n // Initialize tabs\r\n this.tabs = this.getTabs();\r\n this.activeTab = this.tabs[0]?.value || '';\r\n\r\n // Initialize form using query params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n\r\n private initializeFormData() {\r\n console.log('[BaseTabbedFormComponent] Initializing form data');\r\n console.log('[BaseTabbedFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode, using defaults');\r\n this.loadDefaultTab();\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state\r\n } as { formData?: T };\r\n\r\n console.log('[BaseTabbedFormComponent] Combined state:', state);\r\n\r\n if (state?.formData) {\r\n console.log('[BaseTabbedFormComponent] Found form data in state:', state.formData);\r\n this.patchFormData(state.formData);\r\n this.loadDefaultTab();\r\n } else {\r\n console.log('[BaseTabbedFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n // Flatten nested subscriptions using RxJS operators\r\n this.route.queryParams.pipe(\r\n take(1),\r\n map((params: { [key: string]: string }) => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n return uuid;\r\n })\r\n ).subscribe({\r\n next: (uuid: string) => this.loadEntity(uuid),\r\n error: (error: Error) => {\r\n console.error('Error loading UUID:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} UUID`);\r\n }\r\n });\r\n }\r\n\r\nprivate initializeForm(params: any) {\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n \r\n try {\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n this.initializeListForm(params);\r\n } else {\r\n // Existing logic for STANDARD form type\r\n this.initializeFormData();\r\n }\r\n } catch (error) {\r\n console.error('Error initializing form:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.INIT}: ${error instanceof Error ? error.message : 'Unknown error'}`);\r\n }\r\n }\r\n\r\n protected patchFormData(data: T | null) {\r\n if (data) {\r\n this.currentFormData = { ...data };\r\n this.originalFormData = { ...data }; // Create a deep copy to avoid reference issues\r\n this.isNew = false;\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n return;\r\n }\r\n\r\n // Validate mode more explicitly\r\n if (!this.isValidPageMode(routeMode)) {\r\n const validModes = Object.values(AppConstants.PAGE_MODE).join(', ');\r\n throw new Error(`Invalid page mode: ${routeMode}. Valid modes are: ${validModes}`);\r\n }\r\n \r\n this.mode = routeMode;\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseTabbedFormComponent] Setting up form state, mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityService().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseTabbedFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseTabbedFormComponent] Form data updated:', this.currentFormData);\r\n this.loadDefaultTab();\r\n },\r\n error: (error: Error) => {\r\n console.log('[BaseTabbedFormComponent] Error loading entity:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected findTabByValue(value: string): TabConfig | undefined {\r\n return this.tabs.find(tab => tab.value === value);\r\n }\r\n\r\n protected loadDefaultTab() {\r\n console.log('[BaseTabbedFormComponent] Loading default tab');\r\n const defaultTab = this.tabs.find(tab => tab.isParentModel) || this.tabs[0];\r\n\r\n if (!defaultTab) return;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === defaultTab.value);\r\n\r\n if (selectedData) {\r\n this.currentFormData = selectedData;\r\n this.originalFormData = { ...selectedData };\r\n this.patchFormData(selectedData);\r\n }\r\n\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, just navigate to the tab route with the parent form data\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: defaultTab.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData, // Pass the parent form data for child forms\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected getTabFormData(tabConfig: TabConfig): T | null {\r\n if (!tabConfig) return null;\r\n\r\n if (tabConfig.isParentModel) {\r\n return this.currentFormData;\r\n }\r\n\r\n const fieldName = this.utilsService.toCamelCase(tabConfig.value);\r\n // Use type assertion since we know this is a valid field\r\n return (this.currentFormData as any)[fieldName] as T;\r\n }\r\n\r\nprivate initializeListForm(params: any) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList;\r\n \r\n if (!formDataList?.length) {\r\n throw new Error('formDataList is required in state for LIST type');\r\n }\r\n \r\n this.tabs = this.createTabsFromFormDataList(formDataList);\r\n \r\n // Select the first tab by default\r\n this.activeTab = this.tabs[0].value;\r\n \r\n // Set current form data from the first item in the list\r\n this.currentFormData = formDataList[0];\r\n this.originalFormData = formDataList[0];\r\n \r\n // Navigate to the first tab\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: this.currentFormData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n\r\n // Ensure the form data is updated after navigation\r\n this.patchFormData(this.currentFormData);\r\n }\r\n\r\n private createTabsFromFormDataList(formDataList: T[]): TabConfig[] {\r\n return formDataList.map((data: T) => ({\r\n value: data.uuid,\r\n title: this.getTabTitle(data),\r\n isParentModel: true\r\n }));\r\n }\r\n\r\n protected abstract getTabTitle(data: T): string;\r\n\r\n protected onTabChange(value: string | number): void {\r\n const tabConfig = this.findTabByValue(value as string);\r\n if (!tabConfig) {\r\n console.warn(`Tab not found: ${value}`);\r\n return;\r\n }\r\n\r\n this.activeTab = tabConfig.value;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === value);\r\n\r\n if (selectedData) {\r\n // Update current form data\r\n this.currentFormData = selectedData;\r\n this.originalFormData = { ...selectedData };\r\n this.patchFormData(selectedData);\r\n\r\n this.router.navigate([value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, navigate to the tab route with the parent form data\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData: tabConfig.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n const formData = this.getTabFormData(tabConfig);\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: T): boolean {\r\n // For new forms or no original data, consider it changed\r\n if (this.isNew || !this.originalFormData) {\r\n return true;\r\n }\r\n\r\n // Deep comparison of objects\r\n return !this.isEqual(currentData, this.originalFormData);\r\n }\r\n\r\n private isEqual<V extends Record<string, any>>(obj1: V, obj2: V): boolean {\r\n if (obj1 === obj2) return true;\r\n if (typeof obj1 !== 'object' || obj1 === null || \r\n typeof obj2 !== 'object' || obj2 === null) return false;\r\n\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) return false;\r\n\r\n return keys1.every(key => \r\n Object.prototype.hasOwnProperty.call(obj2, key) && \r\n this.isEqual(obj1[key], obj2[key])\r\n );\r\n }\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n // Abstract methods that must be implemented by child classes\r\n protected abstract getTabs(): TabConfig[];\r\n protected abstract getEntityService(): EntityService<T>;\r\n protected abstract getEntityName(): string;\r\n // getTabTitle method removed\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\ntype DateFormat = 'default' | 'short' | 'medium';\r\n\r\n@Pipe({\r\n name: 'indianDate',\r\n standalone: true\r\n})\r\nexport class IndianDatePipe implements PipeTransform {\r\n constructor(private datePipe: DatePipe) {}\r\n\r\n transform(value: string | null, format: DateFormat = 'default'): string | null {\r\n if (!value) return null;\r\n\r\n // First validate dd-MM-yyyy format\r\n const dateRegex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\\d{4}$/;\r\n if (!dateRegex.test(value)) {\r\n throw new Error(`Invalid date format: ${value}. Expected format: dd-MM-yyyy`);\r\n }\r\n\r\n // Validate real date\r\n const [day, month, year] = value.split('-').map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (\r\n date.getFullYear() !== year ||\r\n date.getMonth() !== month - 1 ||\r\n date.getDate() !== day\r\n ) {\r\n throw new Error(`Invalid date: ${value}`);\r\n }\r\n\r\n // Apply requested format\r\n switch (format) {\r\n case 'short':\r\n // Pad with leading zeros for consistent format\r\n const paddedDay = day.toString().padStart(2, '0');\r\n const paddedMonth = month.toString().padStart(2, '0');\r\n return `${paddedDay}-${paddedMonth}-${year}`; // 10-03-2025\r\n case 'medium':\r\n return this.datePipe.transform(date, 'dd MMM yyyy'); // 10 Jan 2019\r\n default:\r\n return value; // original dd-MM-yyyy\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'formly-field-text-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputTextModule\r\n ],\r\n template: `\r\n <input pInputText\r\n [type]=\"props['type'] || 'text'\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [attr.aria-label]=\"props['label'] || props['placeholder'] || ''\"\r\n class=\"w-full\"/>\r\n `\r\n})\r\nexport class TextInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n type: 'text',\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any; // For additional properties\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n SelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-select\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [virtualScroll]=\"false\"\r\n [showClear]=\"false\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </ng-container>\r\n `\r\n})\r\nexport class SelectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n showClear: false,\r\n filter: false,\r\n virtualScroll: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FieldType } from '@ngx-formly/core';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface RadioOption {\r\n value: any;\r\n label: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n RadioButtonModule\r\n ],\r\n template: `\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <div *ngFor=\"let option of options; let i = index\" class=\"flex align-items-center gap-2\">\r\n <p-radioButton\r\n [name]=\"field.name || ''\"\r\n [value]=\"option.value\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [size]=\"'small'\"\r\n [inputId]=\"field.key + '_' + i\">\r\n </p-radioButton>\r\n <label [for]=\"field.key + '_' + i\" class=\"p-radio-label cursor-pointer\">\r\n {{option.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n `\r\n})\r\nexport class RadioType extends FieldType {\r\n get options$(): Observable<RadioOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\n\r\n@Component({\r\n selector: 'formly-field-numeric-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputNumberModule\r\n ],\r\n template: `\r\n <p-inputNumber\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [min]=\"props['min'] || 0\"\r\n [max]=\"props['max']\"\r\n [minFractionDigits]=\"props['minFractionDigits'] || 0\"\r\n [maxFractionDigits]=\"props['maxFractionDigits'] || 0\"\r\n [prefix]=\"props['prefix'] || ''\"\r\n [suffix]=\"props['suffix'] || ''\"\r\n [useGrouping]=\"props['useGrouping'] ?? true\"\r\n [showButtons]=\"true\"\r\n class=\"w-full\">\r\n </p-inputNumber>\r\n `\r\n})\r\nexport class NumericInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n min: undefined,\r\n max: undefined,\r\n minFractionDigits: 0,\r\n maxFractionDigits: 0,\r\n prefix: '',\r\n suffix: '',\r\n useGrouping: true\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-multiselect',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n MultiSelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-multiSelect\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [optionLabel]=\"props['optionLabel'] || 'label'\"\r\n [optionValue]=\"props['optionValue'] || 'value'\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n [filter]=\"props['filter'] || true\"\r\n [filterBy]=\"props['filterBy'] || 'label'\"\r\n [maxSelectedLabels]=\"props['maxSelectedLabels'] || 2\"\r\n [showToggleAll]=\"props['showToggleAll'] || true\"\r\n [virtualScroll]=\"props['virtualScroll'] || false\"\r\n [display]=\"props['display'] || 'chip'\"\r\n styleClass=\"w-full\">\r\n </p-multiSelect>\r\n </ng-container>\r\n `\r\n})\r\nexport class MultiselectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [] as SelectOption[],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n filter: false,\r\n maxSelectedLabels: 3,\r\n showToggleAll: true,\r\n virtualScroll: false\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'formly-field-date',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n DatePickerModule\r\n ],\r\n template: `\r\n <p-datepicker\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"props['dateFormat'] || 'dd-mm-yy'\"\r\n [showTime]=\"props['showTime'] || false\"\r\n [touchUI]=\"props['touchUI'] || false\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [minDate]=\"props['minDate']\"\r\n [maxDate]=\"props['maxDate']\"\r\n [showOnFocus]=\"false\"\r\n [todayButtonStyleClass]=\"'p-button-secondary'\"\r\n [clearButtonStyleClass]=\"'p-button-secondary'\"\r\n styleClass=\"w-full\"\r\n (onSelect)=\"onDateSelect($event)\"\r\n (onInput)=\"onDateInput($event)\">\r\n </p-datepicker>\r\n `\r\n})\r\nexport class DateType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n dateFormat: 'dd-mm-yy',\r\n showTime: false,\r\n touchUI: false,\r\n placeholder: '',\r\n showButtonBar: true,\r\n }\r\n };\r\n\r\n onDateSelect(event: Date): void {\r\n this.formatAndSetDate(event);\r\n }\r\n\r\n onDateInput(event: any): void {\r\n const inputValue = event.target.value.trim();\r\n if (this.isValidDateInput(inputValue, this.props['dateFormat'] || 'dd-mm-yy')) {\r\n const parsedDate = this.parseDate(inputValue, this.props['dateFormat'] || 'dd-mm-yy');\r\n if (parsedDate) {\r\n this.formatAndSetDate(parsedDate);\r\n }\r\n } else {\r\n this.formControl?.setErrors({ invalidDate: true });\r\n }\r\n }\r\n\r\n private formatAndSetDate(date: Date): void {\r\n if (this.formControl) {\r\n const formattedDate = formatDate(date, 'dd-MM-yyyy', 'en-US');\r\n this.formControl.setValue(formattedDate);\r\n }\r\n }\r\n\r\n private parseDate(value: string, format: string): Date | null {\r\n const parts = value.split(/[-/]/); // Split by common delimiters\r\n if (parts.length === 3) {\r\n const [day, month, year] = format === 'dd-mm-yy'\r\n ? [parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)]\r\n : [parseInt(parts[1], 10), parseInt(parts[0], 10) - 1, parseInt(parts[2], 10)];\r\n return new Date(year, month, day);\r\n }\r\n return null;\r\n }\r\n\r\n private isValidDateInput(value: string, format: string): boolean {\r\n const dateRegex = format === 'dd-mm-yy'\r\n ? /^\\d{2}-\\d{2}-\\d{4}$/\r\n : /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n return dateRegex.test(value);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\n@Component({\r\n selector: 'formly-field-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n CheckboxModule\r\n ],\r\n template: `\r\n <div class=\"checkbox-container\">\r\n <p-checkbox\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [binary]=\"!props['options']\"\r\n [trueValue]=\"props['trueValue']\"\r\n [falseValue]=\"props['falseValue']\">\r\n {{props['checkboxLabel'] || ''}}\r\n </p-checkbox>\r\n </div>\r\n `,\r\n styles: [`\r\n .checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n height: 40px;\r\n }\r\n `]\r\n})\r\nexport class CheckboxType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n trueValue: true,\r\n falseValue: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { Textarea } from 'primeng/inputtextarea';\r\n\r\n@Component({\r\n selector: 'formly-field-textarea',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n Textarea\r\n ],\r\n template: `\r\n <textarea pInputTextarea\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [rows]=\"props['rows'] || 3\"\r\n [cols]=\"props['cols']\"\r\n [autoResize]=\"props['autoResize']\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n class=\"w-full\">\r\n </textarea>\r\n `\r\n})\r\nexport class TextareaType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n rows: 3,\r\n cols: undefined,\r\n autoResize: true,\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\ninterface FormlyValidationMessage {\r\n [key: string]: string;\r\n}\r\n\r\ninterface FormlyFieldProps {\r\n label?: string;\r\n required?: boolean;\r\n tooltip?: string;\r\n description?: string;\r\n validation?: {\r\n messages?: FormlyValidationMessage;\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'formly-wrapper-form-field',\r\n standalone: true,\r\n imports: [CommonModule, TooltipModule],\r\n template: `\r\n <div class=\"field mb-4\">\r\n <label *ngIf=\"props.label\" [for]=\"id\" class=\"font-medium\">\r\n {{ props.label }}\r\n <span class=\"required-star\" *ngIf=\"props.required\">*</span>\r\n <i *ngIf=\"props.tooltip\" \r\n class=\"pi pi-info-circle ml-2\" \r\n [pTooltip]=\"props.tooltip\">\r\n </i>\r\n </label>\r\n \r\n <div [class.p-input-error]=\"showError\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n \r\n <small *ngIf=\"props.description\" class=\"block mt-1\">\r\n {{ props.description }}\r\n </small>\r\n \r\n <small *ngIf=\"showError\" class=\"p-error block\">\r\n <i class=\"pi pi-exclamation-circle mr-2\"></i>\r\n {{ errorMessage }}\r\n </small>\r\n </div>\r\n `,\r\n styles: [`\r\n :host ::ng-deep {\r\n .required-star {\r\n color: var(--red-500);\r\n margin-left: 0.25rem;\r\n }\r\n \r\n .p-input-error :where(input, .p-inputtext) {\r\n border-color: var(--red-500);\r\n }\r\n\r\n .p-input-error :where(input:enabled:focus, .p-inputtext:enabled:focus) {\r\n border-color: var(--red-500);\r\n box-shadow: 0 0 0 1px var(--red-500);\r\n }\r\n\r\n .p-error {\r\n color: var(--red-500);\r\n margin-top: 0.5rem;\r\n }\r\n\r\n small {\r\n color: var(--text-color-secondary);\r\n }\r\n }\r\n `]\r\n})\r\nexport class FormFieldWrapper extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {\r\n get errorMessage(): string {\r\n if (!this.field.formControl?.errors) {\r\n return '';\r\n }\r\n \r\n const firstErrorKey = Object.keys(this.field.formControl.errors)[0];\r\n return this.props.validation?.messages?.[firstErrorKey] || 'This field is required';\r\n }\r\n\r\n override get showError(): boolean {\r\n if (!this.field.formControl) {\r\n return false;\r\n }\r\n \r\n const { touched, dirty, invalid } = this.field.formControl;\r\n return invalid && (touched || dirty);\r\n }\r\n}","export const FORMLY_TYPES = {\r\n TEXT: 'text',\r\n NUMBER: 'number',\r\n DATE: 'date',\r\n CHECKBOX: 'checkbox',\r\n RADIO: 'radio',\r\n SELECT: 'select',\r\n MULTISELECT: 'multiselect',\r\n TEXTAREA: 'textarea'\r\n};\r\n\r\nexport const FORMLY_WRAPPERS = {\r\n FORM_FIELD: 'form-field'\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { TextInputType } from './types/text-input.type';\r\nimport { SelectType } from './types/select.type';\r\nimport { RadioType } from './types/radio.type';\r\nimport { NumericInputType } from './types/numeric-input.type';\r\nimport { MultiselectType } from './types/multiselect.type';\r\nimport { DateType } from './types/date.type';\r\nimport { CheckboxType } from './types/checkbox.type';\r\nimport { TextareaType } from './types/textarea.type'; // Added import\r\nimport { FormFieldWrapper } from './form-field.wrapper';\r\nimport { FORMLY_TYPES, FORMLY_WRAPPERS } from './formly.constants'; // Added import\r\n\r\n@NgModule({\r\n imports: [\r\n FormlyModule.forRoot({\r\n types: [\r\n { name: FORMLY_TYPES.TEXT, component: TextInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.NUMBER, component: NumericInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.DATE, component: DateType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.CHECKBOX, component: CheckboxType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.RADIO, component: RadioType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.SELECT, component: SelectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.MULTISELECT, component: MultiselectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.TEXTAREA, component: TextareaType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] }, // Added textarea type\r\n ],\r\n wrappers: [\r\n { name: FORMLY_WRAPPERS.FORM_FIELD, component: FormFieldWrapper }\r\n ]\r\n })\r\n ],\r\n exports: [FormlyModule]\r\n})\r\nexport class CoreFormlyModule { }\r\n","// Config\r\n\r\n// Services\r\nexport * from './lib/services/formly-config.service';\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/enum-registry.service';\r\nexport * from './lib/services/entity-registry.service';\r\nexport * from './lib/services/reference-data-provider.service';\r\nexport * from './lib/services/base-crud.service';\r\nexport * from './lib/services/http-utility.service';\r\nexport * from './lib/services/entity.service';\r\n\r\n// Enums\r\nexport * from './lib/enums/component-context.enum';\r\nexport * from './lib/enums/tabbed-form-type.enum';\r\n\r\n// Components\r\nexport * from './lib/components/base-form.component';\r\nexport * from './lib/components/base-page.component';\r\nexport * from './lib/components/base-list-page.component';\r\nexport * from './lib/components/base-tabbed-form.component';\r\n\r\n// Constants\r\nexport * from './lib/constants/app.constants';\r\nexport * from './lib/constants/app.messages';\r\n\r\n// Models\r\nexport * from './lib/models/pagination/page.interface';\r\nexport * from './lib/models/pagination/page-request.interface';\r\n\r\n// Pipes\r\nexport * from './lib/pipes/indian-date.pipe';\r\n\r\n// Formly Components\r\nexport * from './lib/components/formly/core-formly.module';\r\nexport * from './lib/components/formly/form-field.wrapper';\r\nexport * from './lib/components/formly/types/text-input.type';\r\nexport * from './lib/components/formly/types/select.type';\r\nexport * from './lib/components/formly/types/radio.type';\r\nexport * from './lib/components/formly/types/numeric-input.type';\r\nexport * from './lib/components/formly/types/multiselect.type';\r\nexport * from './lib/components/formly/types/date.type';\r\nexport * from './lib/components/formly/types/checkbox.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService","i1.EnumRegistryService","i1","i2","i1.HttpUtilityService","i2.ReferenceDataProviderService","i2.NotificationService","i3.UtilsService","i4.FormlyConfigService","finalize","i4","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codex-ts/core-lib",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "keywords": [],