@finsys/core 1.5.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/form-field-base-specs.json +5 -3
- package/dist/data/form-field-display-names.json +2 -0
- package/dist/index.cjs +22 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +21 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/survey-generator.ts","../src/rhf-generator.ts","../src/validator.ts","../src/schema/unified-form.schema.json","../src/form-field-category.ts","../src/form-field.ts","../src/form-spec.ts","../src/form-field-validator.ts","../src/data/form-field-base-specs.json","../src/data/form-field-types.json","../src/data/form-field-validators.json","../src/catalogs.ts","../src/ihs-types.ts","../src/data/form-field-display-names.json","../src/ihs-processing.ts"],"sourcesContent":["/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Utility functions for @finsys/core\n */\n\nexport function getPastMonthLabel(monthsAgo: number): string {\n const date = new Date();\n date.setDate(1); // Avoid day-of-month rollover (e.g. Mar 31 → \"February\" would roll to March)\n date.setMonth(date.getMonth() - monthsAgo);\n return date.toLocaleString('default', { month: 'long' });\n}\n\nexport function getPastYearLabel(yearsAgo: number): string {\n const date = new Date();\n return (date.getFullYear() - yearsAgo).toString();\n}\n\n/**\n * Evaluate a SurveyJS-style expression against a data object.\n * e.g. \"{totalFinancing} > 50000\"\n * \n * NOTE: This is a simplified evaluator that replaces {key} with data[key] access.\n * It does not support complex SurveyJS functions like age() or complicated nested paths unless handled by JS.\n */\nexport function evaluateExpression(expression: string, data: any): boolean {\n if (!expression) return true;\n \n try {\n // 1. Replace {variable} with this['variable'] safely\n let jsExpression = expression.replace(/\\{([^}]+)\\}/g, (_, key) => {\n // Clean key if needed (trim)\n return `this['${key.trim()}']`;\n });\n\n // 2. Map SurveyJS comparison operators to JS operators FIRST\n // (before array operator transforms inject JS code containing '=' assignments)\n // Replace single '=' with '==' if it's not already '==' or '!=' or '>=' or '<='\n jsExpression = jsExpression.replace(/(?<![<>!=])=(?![=])/g, '==');\n\n // 3. Map SurveyJS array operators to JS equivalents\n // These run AFTER the '=' transform so their generated JS won't be mangled.\n\n // \"anyof\" → value is one of the items in the array\n // e.g. this['employmentType'] anyof ['01','08','09']\n // → (['01','08','09']).includes(this['employmentType'])\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+anyof\\s+(\\[[^\\]]+\\])/gi,\n (_, ref, arr) => `(${arr}).includes(${ref})`\n );\n\n // \"allof\" → value (expected to be an array) contains all items\n // e.g. this['skills'] allof ['a','b']\n // → ['a','b'].every(item => (this['skills'] || []).includes(item))\n // Arrow functions inherit `this` from enclosing scope (the new Function call),\n // so this works correctly with Function.call(data).\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+allof\\s+(\\[[^\\]]+\\])/gi,\n (_, ref, arr) => `${arr}.every(item => (${ref} || []).includes(item))`\n );\n\n // \"contains\" → string/array contains value\n // e.g. this['roles'] contains 'admin'\n // Uses || [] fallback to handle both string and array values correctly.\n // (|| '' would stringify arrays causing false positives)\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+contains\\s+'([^']+)'/gi,\n (_, ref, val) => `(${ref} || []).includes('${val}')`\n );\n\n // \"notcontains\" → string/array does not contain value\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+notcontains\\s+'([^']+)'/gi,\n (_, ref, val) => `!(${ref} || []).includes('${val}')`\n );\n\n // 4. Execute with Function, binding 'data' as 'this'\n const func = new Function(`return ${jsExpression};`);\n return !!func.call(data || {});\n } catch (e) {\n // console.warn(`Failed to evaluate expression: \"${expression}\"`, e);\n return false;\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Survey Generator - Converts unified form configurations into SurveyJS-compatible JSON\n *\n * This module converts a unified form-config.json into SurveyJS-compatible JSON,\n * resolving field references, applying dynamic titles, and grouping by category.\n */\n\n// Re-export survey-core types for consumers\nexport type { IQuestion, IPage, ISurvey, IPanel, IElement } from \"survey-core\";\nimport { getPastMonthLabel, getPastYearLabel } from \"./utils.js\";\n\n// ============ Unified Form Config Types ============\n\nexport interface Category {\n id: string;\n name: string;\n}\n\nexport interface Choice {\n value: string;\n text: string;\n}\n\nexport interface Validator {\n type: \"regex\" | \"email\" | \"numeric\" | \"text\" | \"expression\" | \"answercount\" | \"custom\";\n text?: string;\n regex?: string;\n minValue?: number;\n maxValue?: number;\n minLength?: number;\n maxLength?: number;\n minCount?: number;\n maxCount?: number;\n expression?: string;\n validator?: string; // For custom validator name\n}\n\n/**\n * FieldData - Field definition in the unified form config\n */\nexport interface FieldData {\n name?: string; // Optional in fields{} (key is name), required in arrays\n displayName?: string;\n type: string;\n inputType?: \"text\" | \"number\" | \"tel\" | \"date\" | \"email\" | \"password\" | \"url\";\n category?: string; // Category ID (strictly string)\n maxLength?: number | string;\n min?: number | string;\n max?: number | string;\n step?: number;\n html?: string;\n choices?: Choice[];\n validators?: Validator[];\n visible?: boolean;\n visibleIf?: string;\n required?: boolean;\n isRequired?: boolean; // SurveyJS compat alias\n placeholder?: string;\n defaultValue?: string | number | boolean | string[];\n readOnly?: boolean;\n startWithNewLine?: boolean;\n enableIf?: string;\n titleLocation?: \"default\" | \"top\" | \"bottom\" | \"left\" | \"hidden\";\n // FinSys-specific fields\n ihs_column_names?: string[];\n requiredForEvaluation?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * FieldReference - How fields are referenced in pages\n */\nexport type FieldReference = \n | string // Simple field name reference\n | { ref: string; [key: string]: unknown } // Reference with overrides\n | { definition: FieldData & { name: string } }; // Inline definition\n\nexport interface PageConfig {\n id: string;\n title?: string;\n description?: string;\n showTOC?: boolean;\n showProgressBar?: boolean;\n showCategoryHeadings?: boolean;\n layout?: \"default\" | \"grid\" | \"vertical\";\n fields: FieldReference[];\n}\n\n/**\n * UnifiedFormConfig - The main configuration type for the unified form format\n */\nexport interface UnifiedFormConfig {\n $schema?: string;\n schemaVersion?: string;\n displayName?: string;\n templateIcon?: string; // Icon identifier for form template editors\n categories: Category[];\n fields: Record<string, FieldData>;\n pages?: PageConfig[]; // Optional when used in editor-only mode (no rendered form)\n}\n\n\n// ============ Output Types (SurveyJS JSON compatible) ============\n\nexport interface SurveyElementJSON {\n type: string;\n name: string;\n title?: string;\n isRequired?: boolean;\n maxLength?: number;\n storeDataAsText?: boolean;\n category?: string;\n [key: string]: unknown;\n}\n\nexport interface SurveyPageJSON {\n name: string;\n title: string;\n elements: Array<{\n type: string;\n name: string;\n elements: SurveyElementJSON[];\n }>;\n}\n\nexport interface SurveyJSON {\n title: string;\n logoPosition?: string;\n pages: SurveyPageJSON[];\n showQuestionNumbers?: string;\n questionErrorLocation?: string;\n completedHtml?: string;\n showTOC?: boolean;\n completeText?: string;\n showPreviewBeforeComplete?: string;\n showProgressBar?: string;\n widthMode?: string;\n width?: string;\n}\n\n// ============ Helper Types ============\n\nexport interface ResolvedField extends FieldData {\n name: string;\n}\n\n/**\n * Normalize a field to ensure backward compatibility\n * - Sets both `required` and `isRequired` to the same value\n */\nfunction normalizeField(field: ResolvedField): ResolvedField {\n // Spec: Fields are required by default unless explicitly false\n const isRequired = field.isRequired !== false && field.required !== false;\n return {\n ...field,\n required: isRequired,\n isRequired: isRequired\n };\n}\n\n/**\n * Resolve a field reference to a full field definition\n */\nfunction resolveFieldReference(\n ref: FieldReference, \n fields: Record<string, FieldData>\n): ResolvedField | null {\n if (typeof ref === \"string\") {\n // Simple string reference\n const fieldDef = fields[ref];\n if (!fieldDef) {\n console.warn(`Field \"${ref}\" not found in fields definition`);\n return null;\n }\n return normalizeField({ name: ref, ...fieldDef });\n }\n \n if (\"definition\" in ref) {\n // Inline definition\n return normalizeField(ref.definition as ResolvedField);\n }\n \n if (\"ref\" in ref) {\n // Reference with overrides\n const fieldDef = fields[ref.ref];\n if (!fieldDef) {\n console.warn(`Field \"${ref.ref}\" not found in fields definition`);\n return null;\n }\n const { ref: fieldName, ...overrides } = ref;\n return normalizeField({ name: fieldName, ...fieldDef, ...overrides });\n }\n \n return null;\n}\n\n/**\n * Apply dynamic title logic (e.g., bank statements with dynamic month labels,\n * financial statements with dynamic year labels)\n */\nexport function applyDynamicTitles(field: ResolvedField): ResolvedField {\n const bankStatementMatch = field.name.match(/^bank_statement_t(\\d+)$/);\n if (bankStatementMatch) {\n const monthsAgo = parseInt(bankStatementMatch[1], 10);\n return {\n ...field,\n displayName: `Bank Statement (${getPastMonthLabel(monthsAgo)})`\n };\n }\n if (field.name === \"financials\") {\n return {\n ...field,\n displayName: `Audited Financial Statement (${getPastYearLabel(1)})`\n };\n }\n return field;\n}\n\n/**\n * Generate SurveyJS JSON from unified form config\n */\nexport function generateSurveyJson(config: UnifiedFormConfig): SurveyJSON | Record<string, never> {\n if (!config.pages || config.pages.length === 0) return {};\n \n const firstPage = config.pages.find(p => p.id !== \"success-message\");\n if (!firstPage) return {};\n\n const categories = config.categories || [];\n const categoryMap: Record<string, string> = categories.reduce((acc, cat) => {\n acc[cat.id] = cat.name;\n return acc;\n }, {} as Record<string, string>);\n\n // Process all fields from the first page\n const processedFields = firstPage.fields\n .map(ref => resolveFieldReference(ref, config.fields))\n .filter((f): f is ResolvedField => f !== null)\n .map(f => applyDynamicTitles(f))\n .map(f => mapFieldToSurveyJS(f));\n\n // Group by Category\n const grouped = processedFields.reduce((acc: Record<string, SurveyElementJSON[]>, field) => {\n const catName = categoryMap[field.category as string] || \"Default\";\n if (!acc[catName]) acc[catName] = [];\n acc[catName].push(field);\n return acc;\n }, {} as Record<string, SurveyElementJSON[]>);\n\n // Build Pages (One Page per Category for Wizard effect)\n const pages: SurveyPageJSON[] = Object.entries(grouped).map(([categoryName, elements]) => ({\n name: categoryName.toLowerCase().replace(/\\s+/g, \"-\"),\n title: firstPage.showCategoryHeadings === false ? \"\" : categoryName,\n elements: [\n {\n type: \"panel\",\n name: `${categoryName.toLowerCase().replace(/\\s+/g, \"-\")}-panel`,\n elements: elements,\n },\n ],\n }));\n\n return {\n title: config.displayName || \"Flexible Financing Program\",\n logoPosition: \"right\",\n pages,\n showQuestionNumbers: \"off\",\n questionErrorLocation: \"bottom\",\n completedHtml: \"<h3>Thank you for completing the form</h3>\",\n showTOC: firstPage.showTOC ?? true,\n completeText: \"Submit\",\n showPreviewBeforeComplete: \"showAllQuestions\",\n showProgressBar: firstPage.showProgressBar === false ? \"off\" : \"top\",\n widthMode: \"responsive\",\n width: \"100%\",\n };\n}\n\n/**\n * Map a field definition to SurveyJS element format\n */\nfunction mapFieldToSurveyJS(field: ResolvedField): SurveyElementJSON {\n const element: SurveyElementJSON = {\n type: field.type,\n name: field.name,\n ...(field.displayName && { title: field.displayName }),\n isRequired: field.isRequired ?? field.required ?? false,\n ...(field.maxLength && { maxLength: Number(field.maxLength) }),\n };\n\n if (field.type === \"file\") {\n element.storeDataAsText = false;\n }\n\n // Copy other properties\n const excludeKeys = [\"displayName\", \"required\", \"category\"];\n Object.keys(field).forEach((key) => {\n if (!(key in element) && !excludeKeys.includes(key) && field[key] !== undefined) {\n element[key] = field[key];\n }\n });\n\n // Store category for grouping\n element.category = field.category ?? \"\";\n\n return element;\n}\n\n/**\n * Resolve all fields from a page to full field definitions\n */\nexport function resolvePageFields(\n page: PageConfig,\n fields: Record<string, FieldData>\n): ResolvedField[] {\n return page.fields\n .map(ref => resolveFieldReference(ref, fields))\n .filter((f): f is ResolvedField => f !== null)\n .map(f => applyDynamicTitles(f));\n}\n\n/**\n * Get category name from category ID (supports string or number IDs)\n */\nexport function getCategoryName(\n categoryId: string | undefined,\n categories: Category[]\n): string {\n if (categoryId === undefined) return \"Other\";\n const cat = categories.find(c => c.id === categoryId);\n return cat?.name || \"Other\";\n}\n\n/**\n * Group fields by their category, maintaining order and creating section breaks\n */\nexport interface FieldGroup {\n category: string;\n categoryName: string;\n fields: ResolvedField[];\n}\n\nexport function groupFieldsByCategory(\n fields: ResolvedField[],\n categories: Category[]\n): FieldGroup[] {\n const groups: FieldGroup[] = [];\n let currentGroup: FieldGroup | null = null;\n\n for (const field of fields) {\n const category = field.category ?? \"\";\n \n if (!currentGroup || currentGroup.category !== category) {\n currentGroup = {\n category,\n categoryName: getCategoryName(category, categories),\n fields: []\n };\n groups.push(currentGroup);\n }\n \n currentGroup.fields.push(field);\n }\n\n return groups;\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { z } from \"zod\";\nimport {\n type UnifiedFormConfig,\n type PageConfig,\n type FieldData,\n type FieldReference,\n type ResolvedField,\n type Category,\n resolvePageFields,\n groupFieldsByCategory,\n applyDynamicTitles,\n type FieldGroup\n} from \"./survey-generator.js\";\nimport { evaluateExpression } from \"./utils.js\";\n\nexport interface RHFStep {\n id: number;\n title: string;\n description?: string;\n fields: ResolvedField[];\n showCategoryHeadings: boolean;\n layout?: \"default\" | \"grid\" | \"vertical\";\n}\n\nexport interface RHFSchemaOutput {\n zodSchema: z.ZodTypeAny; // Can be ZodEffects\n baseSchema: z.ZodObject<any>;\n defaultValues: Record<string, any>;\n fields: ResolvedField[];\n groupedFields: FieldGroup[];\n steps: RHFStep[];\n displayName: string;\n categories: Category[];\n templateIcon?: string;\n}\n\n/**\n * Apply visibility-aware validation to a Zod schema\n */\nfunction applyVisibilityValidation(\n baseObject: z.ZodObject<any>, \n fields: ResolvedField[]\n): z.ZodTypeAny {\n return baseObject.superRefine((data, ctx) => {\n fields.forEach((field) => {\n const isRequired = field.isRequired !== false && field.required !== false && field.type !== \"html\";\n if (!isRequired) return;\n\n // Determine Visibility\n let isVisible = field.visible !== false;\n if (isVisible && field.visibleIf) {\n isVisible = evaluateExpression(field.visibleIf, data);\n }\n\n if (isVisible) {\n const value = data[field.name];\n const isEmpty = \n value === undefined || \n value === null || \n value === \"\" || \n (Array.isArray(value) && value.length === 0);\n\n if (isEmpty) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"This field is required\",\n path: [field.name],\n });\n }\n }\n });\n });\n}\n\nexport function generateRHFSchema(config: UnifiedFormConfig): RHFSchemaOutput {\n // ... (existing logic for collecting fields/building shape)\n const pages = config.pages || [];\n const categories = config.categories || [];\n const fieldsMap = config.fields || {};\n\n if (pages.length === 0) {\n throw new Error(\"v2.0.0 templates must include a 'pages' configuration.\");\n }\n\n // 1. Collect all fields from all pages\n const allFields: ResolvedField[] = [];\n \n for (const page of pages) {\n const pageFields = resolvePageFields(page, fieldsMap);\n allFields.push(...pageFields);\n }\n\n // Apply dynamic titles\n const mergedFields = allFields.map(applyDynamicTitles);\n\n // 2. Build Zod Shape & Default Values\n const shape: Record<string, z.ZodTypeAny> = {};\n const defaultValues: Record<string, any> = {};\n\n mergedFields.forEach((field) => {\n let schema: z.ZodTypeAny = z.string();\n\n // Track base type before validators/wrapping transform it via .refine()\n // (instanceof checks won't work after .refine() converts ZodString → ZodEffects)\n let baseType: \"string\" | \"number\" | \"array\" | \"boolean\" | \"any\" = \"string\";\n\n // --- Base Type Handling ---\n if (field.inputType === \"number\" || field.type === \"number\" || field.type === \"slider\" || field.type === \"range\") {\n schema = z.coerce.number();\n baseType = \"number\";\n defaultValues[field.name] = field.defaultValue !== undefined ? Number(field.defaultValue) : \"\";\n } else if (field.type === \"checkbox\") {\n schema = z.array(z.string());\n baseType = \"array\";\n defaultValues[field.name] = [];\n } else if (field.type === \"file\") {\n schema = z.array(z.any());\n baseType = \"array\";\n defaultValues[field.name] = [];\n } else if (field.type === \"boolean\") {\n schema = z.boolean();\n baseType = \"boolean\";\n defaultValues[field.name] = field.defaultValue ?? false;\n } else if (field.type === \"html\") {\n schema = z.any().optional();\n baseType = \"any\";\n defaultValues[field.name] = \"\";\n } else {\n if (Array.isArray(field.defaultValue)) {\n defaultValues[field.name] = field.defaultValue[0] || \"\";\n } else {\n defaultValues[field.name] = field.defaultValue ?? \"\";\n }\n }\n\n // --- Validation Constraints ---\n\n // Min/Max for Numbers\n if (baseType === \"number\" && schema instanceof z.ZodNumber) {\n let numSchema = schema;\n if (field.min !== undefined) numSchema = numSchema.min(Number(field.min), { message: `Minimum value is ${field.min}` });\n if (field.max !== undefined) numSchema = numSchema.max(Number(field.max), { message: `Maximum value is ${field.max}` });\n schema = numSchema;\n }\n\n const isRequired = field.isRequired !== false && field.required !== false && field.type !== \"html\";\n const isAlwaysVisible = field.visible !== false && !field.visibleIf;\n const isActuallyInput = field.type !== \"html\";\n\n // --- Required .min(1) for always-visible fields ---\n // Must be applied BEFORE validators (.refine) which change the schema type.\n if (isRequired && isAlwaysVisible && isActuallyInput) {\n if (baseType === \"string\" && schema instanceof z.ZodString) {\n schema = schema.min(1, { message: \"This field is required\" });\n } else if (baseType === \"array\" && schema instanceof z.ZodArray) {\n schema = schema.min(1, { message: \"Please select at least one option\" });\n }\n }\n\n // --- Enhancements: Validators ---\n // Applied BEFORE optional wrapping so instanceof checks still work on the\n // base type. The .refine() calls here will transform the schema to ZodEffects,\n // which is why we use baseType for subsequent decisions instead of instanceof.\n\n // Email\n const hasExplicitEmailValidator = field.validators?.some(v => v.type === \"email\");\n if ((field.inputType === \"email\" || field.name === \"email\") && baseType === \"string\" && schema instanceof z.ZodString && !hasExplicitEmailValidator) {\n schema = schema.refine(val => val === \"\" || z.string().email().safeParse(val).success, {\n message: \"Invalid email address\"\n });\n }\n\n // Legacy Validators (Regex / Numeric)\n if (field.validators) {\n field.validators.forEach((v) => {\n if (v.type === \"regex\" && v.regex) {\n try {\n const regex = new RegExp(v.regex);\n if (baseType === \"string\") {\n schema = schema.refine((val: any) => val === \"\" || regex.test(val), {\n message: v.text || \"Invalid format\"\n });\n }\n } catch (e) {\n console.warn(`Invalid regex pattern for field ${field.name}:`, v.regex);\n }\n }\n if (v.type === \"email\" && baseType === \"string\") {\n schema = schema.refine((val: any) => val === \"\" || z.string().email().safeParse(val).success, {\n message: v.text || \"Invalid email\"\n });\n }\n if (v.type === \"numeric\" && schema instanceof z.ZodNumber) {\n let numSchema = schema;\n if (v.minValue !== undefined) numSchema = numSchema.min(v.minValue, { message: v.text });\n if (v.maxValue !== undefined) numSchema = numSchema.max(v.maxValue, { message: v.text });\n schema = numSchema;\n }\n });\n }\n\n // --- Final Wrapper: Optional for conditional/hidden fields ---\n // Uses baseType instead of instanceof since validators may have transformed the schema.\n if (!(isRequired && isAlwaysVisible && isActuallyInput)) {\n if (baseType === \"number\") {\n schema = schema.optional().or(z.literal(\"\")).or(z.null());\n } else if (baseType === \"array\") {\n schema = schema.optional();\n } else if (baseType === \"boolean\") {\n schema = schema.optional();\n } else if (baseType === \"string\") {\n schema = schema.optional().or(z.literal(\"\"));\n }\n }\n\n shape[field.name] = schema;\n });\n\n // 3. Group Fields by Category\n const groupedFields = groupFieldsByCategory(mergedFields, categories);\n\n // 4. Build Steps (Dynamic Wizard)\n const steps: RHFStep[] = pages.map((page, idx) => {\n const pageFields = resolvePageFields(page, fieldsMap);\n\n return {\n id: idx,\n title: page.title || \"\",\n description: page.description,\n fields: pageFields,\n showCategoryHeadings: page.showCategoryHeadings ?? false,\n layout: page.layout\n };\n });\n\n // 5. Build Final Schema with Visibility-Aware Validation\n const baseObject = z.object(shape);\n const zodSchema = applyVisibilityValidation(baseObject, mergedFields);\n\n return {\n zodSchema,\n baseSchema: baseObject,\n defaultValues,\n fields: mergedFields,\n groupedFields,\n steps,\n displayName: config.displayName || \"Application Form\",\n categories,\n templateIcon: config.templateIcon\n };\n}\n\n/**\n * Get Zod schema for a specific step\n */\nexport function getStepSchema(step: RHFStep, fullSchema: any): z.ZodTypeAny {\n const stepFieldNames = step.fields.map(f => f.name);\n const stepShape: Record<string, z.ZodTypeAny> = {};\n \n // 1. Determine the base ZodObject\n let baseObj: z.ZodObject<any> | undefined;\n\n if (fullSchema instanceof z.ZodObject) {\n baseObj = fullSchema;\n } else if (fullSchema && typeof fullSchema === \"object\" && \"baseSchema\" in fullSchema) {\n baseObj = fullSchema.baseSchema as z.ZodObject<any>;\n } else if (fullSchema && \"_def\" in fullSchema && fullSchema._def.schema instanceof z.ZodObject) {\n // Basic Unwrap for ZodEffects\n baseObj = fullSchema._def.schema;\n }\n\n if (!baseObj) {\n console.warn(\"[RHF Generator] Could not extract ZodObject shape for step validation\");\n return z.object({});\n }\n\n const shape = baseObj.shape;\n const stepFields: ResolvedField[] = [];\n \n stepFieldNames.forEach(name => {\n if (name in shape) {\n stepShape[name] = shape[name];\n // Keep track of which fields are in this step\n const fieldDef = step.fields.find(f => f.name === name);\n if (fieldDef) stepFields.push(fieldDef);\n }\n });\n \n const stepBaseObject = z.object(stepShape);\n return applyVisibilityValidation(stepBaseObject, stepFields);\n}\n\n/**\n * Extract default values for a specific step\n */\nexport function getStepDefaultValues(\n step: RHFStep, \n allDefaults: Record<string, any>\n): Record<string, any> {\n const stepDefaults: Record<string, any> = {};\n \n step.fields.forEach(field => {\n if (field.name in allDefaults) {\n stepDefaults[field.name] = allDefaults[field.name];\n }\n });\n \n return stepDefaults;\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport AjvModule, { ErrorObject } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport unifiedFormSchema from \"./schema/unified-form.schema.json\" with { type: \"json\" };\n\n// Interop for Ajv which can be exported differently in ESM/CJS\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\n// Interop for ajv-formats\nconst addFormatsFn = (addFormats as any).default || addFormats;\naddFormatsFn(ajv);\n\n// Register the unified schema\najv.addSchema(unifiedFormSchema, \"unified-form.schema.json\");\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: ErrorObject[];\n message?: string;\n}\n\n/**\n * Validates a unified form-config.json object against its schema\n */\nexport function validateFormConfig(data: unknown): ValidationResult {\n const validate = ajv.getSchema(\"unified-form.schema.json\");\n if (!validate) {\n return { valid: false, message: \"Could not load unified form schema\" };\n }\n\n const valid = validate(data);\n return {\n valid: !!valid,\n errors: validate.errors || undefined,\n };\n}\n\n// Legacy exports - these now just call validateFormConfig\n/** @deprecated Use validateFormConfig instead */\nexport function validateFormSpec(data: unknown): ValidationResult {\n return validateFormConfig(data);\n}\n\n/** @deprecated Use validateFormConfig instead */\nexport function validatePagesConfig(data: unknown): ValidationResult {\n return validateFormConfig(data);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Unified Form Configuration Schema\",\n \"description\": \"A unified schema combining field definitions and page layout configuration for multi-step forms.\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"description\": \"Reference to this JSON schema file\"\n },\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^v?[0-9]+\\\\.[0-9]+\\\\.[0-9]+$\",\n \"description\": \"Semantic version of the schema format (e.g., 'v2.0.0' or '2.0.0')\"\n },\n \"displayName\": {\n \"type\": \"string\",\n \"description\": \"The human-readable name of the loan product or form\"\n },\n \"templateIcon\": {\n \"type\": \"string\",\n \"description\": \"Icon identifier or path for the form template (used in FinSys editor)\"\n },\n \"categories\": {\n \"type\": \"array\",\n \"description\": \"Category definitions for field organization and grouping\",\n \"items\": {\n \"$ref\": \"#/definitions/category\"\n }\n },\n \"fields\": {\n \"type\": \"object\",\n \"description\": \"Master field definitions keyed by field name\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/fieldData\"\n }\n },\n \"pages\": {\n \"type\": \"array\",\n \"description\": \"Ordered list of pages in the form wizard. Optional for FinSys editor mode.\",\n \"items\": {\n \"$ref\": \"#/definitions/pageConfig\"\n }\n }\n },\n \"required\": [\"categories\", \"fields\", \"pages\"],\n \"definitions\": {\n \"category\": {\n \"type\": \"object\",\n \"description\": \"A category for grouping related form fields\",\n \"properties\": {\n \"id\": { \n \"type\": \"string\",\n \"description\": \"Unique identifier for the category (string)\" \n },\n \"name\": { \"type\": \"string\", \"description\": \"Display name for the category heading\" }\n },\n \"required\": [\"id\", \"name\"]\n },\n \"choice\": {\n \"type\": \"object\",\n \"description\": \"A selectable option for dropdown or radiogroup fields\",\n \"properties\": {\n \"value\": { \"type\": \"string\", \"description\": \"Value submitted when this choice is selected\" },\n \"text\": { \"type\": \"string\", \"description\": \"Display text for this choice\" }\n },\n \"required\": [\"value\", \"text\"]\n },\n \"validator\": {\n \"type\": \"object\",\n \"description\": \"Validation rule for a form field\",\n \"properties\": {\n \"type\": { \n \"type\": \"string\",\n \"enum\": [\"regex\", \"email\", \"numeric\", \"text\", \"expression\", \"answercount\", \"custom\"],\n \"description\": \"Type of validation to perform\"\n },\n \"text\": { \"type\": \"string\", \"description\": \"Error message to display on validation failure\" },\n \"regex\": { \"type\": \"string\", \"description\": \"Regular expression pattern (for type=regex)\" },\n \"minValue\": { \"type\": \"number\", \"description\": \"Minimum numeric value (for type=numeric)\" },\n \"maxValue\": { \"type\": \"number\", \"description\": \"Maximum numeric value (for type=numeric)\" },\n \"minLength\": { \"type\": \"integer\", \"description\": \"Minimum text length (for type=text)\" },\n \"maxLength\": { \"type\": \"integer\", \"description\": \"Maximum text length (for type=text)\" },\n \"minCount\": { \"type\": \"integer\", \"description\": \"Minimum selection count (for type=answercount)\" },\n \"maxCount\": { \"type\": \"integer\", \"description\": \"Maximum selection count (for type=answercount)\" },\n \"expression\": { \"type\": \"string\", \"description\": \"SurveyJS expression for custom validation\" },\n \"validator\": { \"type\": \"string\", \"description\": \"Name of the custom validator function (for type=custom)\" }\n },\n \"required\": [\"type\"]\n },\n \"fieldData\": {\n \"type\": \"object\",\n \"description\": \"Definition of a form field\",\n \"properties\": {\n \"name\": { \n \"type\": \"string\", \n \"description\": \"Field name (optional in fields{} since it's the key, required in arrays)\"\n },\n \"displayName\": { \n \"type\": \"string\",\n \"description\": \"Human-readable label for the field\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"text\", \"number\", \"email\", \"file\", \"dropdown\", \"checkbox\", \"boolean\", \"comment\", \"radiogroup\", \"range\", \"html\", \"slider\"],\n \"description\": \"Field type determining rendering and behavior\"\n },\n \"inputType\": { \n \"type\": \"string\", \n \"enum\": [\"text\", \"number\", \"tel\", \"date\", \"email\", \"password\", \"url\"],\n \"description\": \"HTML input type override for text fields\" \n },\n \"category\": { \n \"type\": \"string\",\n \"description\": \"Category ID this field belongs to (string to match category.id)\" \n },\n \"categoryId\": { \n \"type\": \"integer\",\n \"description\": \"Legacy integer category ID (deprecated, prefer 'category')\"\n },\n \"maxLength\": { \"type\": [\"integer\", \"string\"], \"description\": \"Maximum character length\" },\n \"min\": { \"type\": [\"integer\", \"string\"], \"description\": \"Minimum value for numeric/slider fields\" },\n \"max\": { \"type\": [\"integer\", \"string\"], \"description\": \"Maximum value for numeric/slider fields\" },\n \"step\": { \"type\": \"number\", \"description\": \"Step increment for slider/range fields\" },\n \"html\": { \"type\": \"string\", \"description\": \"HTML content for type=html fields\" },\n \"choices\": {\n \"type\": \"array\",\n \"description\": \"Options for dropdown or radiogroup fields\",\n \"items\": { \"$ref\": \"#/definitions/choice\" }\n },\n \"validators\": {\n \"type\": \"array\",\n \"description\": \"Validation rules to apply to this field\",\n \"items\": { \"$ref\": \"#/definitions/validator\" }\n },\n \"visible\": { \n \"type\": \"boolean\", \n \"default\": true,\n \"description\": \"Whether the field is visible\"\n },\n \"visibleIf\": { \n \"type\": \"string\", \n \"description\": \"SurveyJS expression for conditional visibility\" \n },\n \"required\": { \n \"type\": \"boolean\",\n \"description\": \"Whether the field is required for form submission\"\n },\n \"isRequired\": { \n \"type\": \"boolean\", \n \"description\": \"Alias for 'required' (SurveyJS compatibility)\" \n },\n \"placeholder\": { \n \"type\": \"string\",\n \"description\": \"Placeholder text shown in empty field\"\n },\n \"defaultValue\": { \n \"type\": [\"string\", \"number\", \"boolean\", \"array\"],\n \"description\": \"Default value for the field\"\n },\n \"readOnly\": { \n \"type\": \"boolean\",\n \"description\": \"Whether the field is read-only\"\n },\n \"startWithNewLine\": { \n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"If false, field appears on same line as previous field\" \n },\n \"enableIf\": { \n \"type\": \"string\", \n \"description\": \"SurveyJS expression for conditional enable/disable\" \n },\n \"titleLocation\": { \n \"type\": \"string\", \n \"enum\": [\"default\", \"top\", \"bottom\", \"left\", \"hidden\"],\n \"description\": \"Position of the field label\"\n },\n \"ihs_column_names\": {\n \"type\": \"array\",\n \"description\": \"FinSys IHS column mappings for file fields (used for data extraction)\",\n \"items\": { \"type\": \"string\" }\n },\n \"requiredForEvaluation\": { \n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Whether this field is required for loan evaluation (FinSys specific)\"\n }\n },\n \"required\": [\"type\"]\n },\n \"fieldReference\": {\n \"description\": \"Reference to a field in a page, supporting simple refs, refs with overrides, or inline definitions\",\n \"oneOf\": [\n { \n \"type\": \"string\", \n \"description\": \"Simple field name reference to a field defined in 'fields'\" \n },\n {\n \"type\": \"object\",\n \"description\": \"Field reference with optional property overrides\",\n \"properties\": {\n \"ref\": { \"type\": \"string\", \"description\": \"Reference to field name in 'fields' object\" },\n \"displayName\": { \"type\": \"string\", \"description\": \"Override display name for this page\" },\n \"type\": { \"type\": \"string\", \"description\": \"Override field type for this usage\" },\n \"defaultValue\": { \"type\": [\"string\", \"number\", \"boolean\", \"array\"] },\n \"readOnly\": { \"type\": \"boolean\" },\n \"visible\": { \"type\": \"boolean\" },\n \"visibleIf\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"min\": { \"type\": [\"integer\", \"string\"] },\n \"max\": { \"type\": [\"integer\", \"string\"] },\n \"choices\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/choice\" } }\n },\n \"required\": [\"ref\"]\n },\n {\n \"type\": \"object\",\n \"description\": \"Inline field definition (page-specific field not in master 'fields')\",\n \"properties\": {\n \"definition\": { \n \"allOf\": [\n { \"$ref\": \"#/definitions/fieldData\" },\n { \n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" }\n },\n \"required\": [\"name\"]\n }\n ]\n }\n },\n \"required\": [\"definition\"]\n }\n ]\n },\n \"pageConfig\": {\n \"type\": \"object\",\n \"description\": \"Configuration for a single page/step in the form wizard\",\n \"properties\": {\n \"id\": { \"type\": \"string\", \"description\": \"Unique page identifier\" },\n \"title\": { \"type\": \"string\", \"description\": \"Page title displayed to user\" },\n \"description\": { \"type\": \"string\", \"description\": \"Optional page description or instructions\" },\n \"showTOC\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Show table of contents\" },\n \"showProgressBar\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Show progress indicator\" },\n \"showCategoryHeadings\": { \n \"type\": \"boolean\", \n \"default\": false,\n \"description\": \"Render category names as section headings when category changes between fields\"\n },\n \"layout\": { \n \"type\": \"string\", \n \"enum\": [\"default\", \"grid\", \"vertical\"],\n \"description\": \"Layout mode for the page\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"description\": \"Ordered list of field references to display on this page\",\n \"items\": { \"$ref\": \"#/definitions/fieldReference\" }\n }\n },\n \"required\": [\"id\", \"fields\"]\n }\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class FormFieldCategory {\n private _id: string;\n private _name: string;\n\n constructor(id: string | number, name: string) {\n this._id = String(id);\n this._name = name;\n }\n\n get id(): string {\n return this._id;\n }\n\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n }\n\n toJSON() {\n return {\n id: this._id,\n name: this._name,\n };\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FieldData, Choice, Validator } from \"./survey-generator.js\";\n\nexport enum FieldType {\n FILE = 'file',\n TEXT = 'text',\n DROPDOWN = 'dropdown',\n BOOLEAN = 'boolean',\n CHECKBOX = 'checkbox',\n RADIOGROUP = 'radiogroup',\n SLIDER = 'slider',\n HTML = 'html',\n TAGBOX = 'tagbox',\n NUMBER = 'number',\n EMAIL = 'email',\n COMMENT = 'comment',\n RANGE = 'range',\n UNKNOWN = 'unknown',\n}\n\nexport interface FormFieldType {\n name: string;\n displayName: string;\n}\n\nexport interface FormFieldInputType {\n name: string;\n displayName: string;\n}\n\nexport interface FormFieldTypeDefinitions {\n version: number;\n types: FormFieldType[];\n input_types: FormFieldInputType[];\n}\n\nexport interface DropdownOption {\n id: number;\n name: string;\n displayName: string;\n choices: Choice[];\n}\n\nexport interface EditorValidator {\n id: number;\n displayName: string;\n class: string;\n description: string;\n isRequired: boolean;\n validators: Validator[];\n}\n\nfunction toFieldType(value: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n [FieldType.FILE]: FieldType.FILE,\n [FieldType.TEXT]: FieldType.TEXT,\n [FieldType.DROPDOWN]: FieldType.DROPDOWN,\n [FieldType.BOOLEAN]: FieldType.BOOLEAN,\n [FieldType.CHECKBOX]: FieldType.CHECKBOX,\n [FieldType.RADIOGROUP]: FieldType.RADIOGROUP,\n [FieldType.SLIDER]: FieldType.SLIDER,\n [FieldType.HTML]: FieldType.HTML,\n [FieldType.TAGBOX]: FieldType.TAGBOX,\n [FieldType.NUMBER]: FieldType.NUMBER,\n [FieldType.EMAIL]: FieldType.EMAIL,\n [FieldType.COMMENT]: FieldType.COMMENT,\n [FieldType.RANGE]: FieldType.RANGE,\n };\n return typeMap[value] || FieldType.UNKNOWN;\n}\n\nexport default abstract class FormField {\n fieldObject: FieldData;\n\n constructor(name: string, displayName: string, type: string, category: string) {\n this.fieldObject = {\n name,\n displayName,\n type,\n category,\n };\n }\n\n static fromObject(fieldObject: FieldData): FormField {\n if (!fieldObject.name) {\n throw new Error('Field name is required');\n }\n\n if (!fieldObject.displayName || !fieldObject.category) {\n throw new Error(\n `Invalid field object: '${fieldObject.name}' field missing displayName or category`\n );\n }\n\n const identifiedType = toFieldType(fieldObject.type as string);\n if (identifiedType === FieldType.UNKNOWN) {\n throw new Error(\n `'${fieldObject.name}' field has unsupported or missing type: ${fieldObject.type}`\n );\n }\n\n if (\n fieldObject.choices &&\n !['dropdown', 'checkbox', 'radiogroup', 'tagbox'].includes(fieldObject.type as string)\n ) {\n // Logic remained as is\n }\n\n if (fieldObject.type === 'dropdown' && !fieldObject.choices) {\n throw new Error(\n `Invalid field object: '${fieldObject.name}' field has type dropdown, but does not have choices`\n );\n }\n\n let field: FormField;\n if (fieldObject.type === 'file') {\n field = new FileFormField(\n fieldObject.name,\n fieldObject.displayName || fieldObject.name,\n fieldObject.type,\n String(fieldObject.category),\n fieldObject.ihs_column_names || []\n );\n } else {\n field = new BasicFormField(\n fieldObject.name,\n fieldObject.displayName || fieldObject.name,\n fieldObject.type || 'text',\n String(fieldObject.category)\n );\n }\n\n field.fieldObject = { ...fieldObject };\n field.fieldObject.category = String(field.fieldObject.category);\n\n // Remove legacy categoryId property\n delete (field.fieldObject as any).categoryId;\n\n return field;\n }\n\n abstract getFieldNames(): string[];\n\n protected cleanObject(obj: any): any {\n if (obj === null || obj === undefined) return obj;\n\n let target = obj;\n if (typeof obj.toJSON === 'function' && obj !== this) {\n target = obj.toJSON();\n }\n\n if (Array.isArray(target)) {\n return target.map((v: any) => (typeof v === 'object' ? this.cleanObject(v) : v));\n }\n\n if (typeof target !== 'object') return target;\n\n const cleaned: any = {};\n Object.keys(target).forEach((key) => {\n const value = target[key];\n if (value !== null && value !== undefined && value !== '') {\n if (typeof value === 'object') {\n cleaned[key] = this.cleanObject(value);\n } else {\n cleaned[key] = value;\n }\n }\n });\n return cleaned;\n }\n\n toJSON() {\n return this.cleanObject({ ...this.fieldObject });\n }\n\n get displayName(): string {\n return this.fieldObject.displayName || this.fieldObject.name || '';\n }\n\n set displayName(newDisplayName: string) {\n this.fieldObject.displayName = newDisplayName;\n }\n\n get name(): string {\n return this.fieldObject.name || '';\n }\n\n get type(): FieldType {\n return toFieldType(this.fieldObject.type as string);\n }\n\n get inputType(): string {\n return this.fieldObject.inputType ?? '';\n }\n\n get categoryId(): string {\n return String(this.fieldObject.category || '');\n }\n\n set categoryId(categoryId: string) {\n this.fieldObject.category = categoryId;\n }\n\n get defaultValue(): any {\n return this.fieldObject.defaultValue;\n }\n\n set defaultValue(value: any) {\n this.fieldObject.defaultValue = value;\n }\n\n get placeholder(): string | undefined {\n return this.fieldObject.placeholder;\n }\n\n get validators(): Validator[] | undefined {\n return this.fieldObject.validators as Validator[];\n }\n\n get choices(): Choice[] {\n return (this.fieldObject.choices as Choice[]) ?? [];\n }\n\n set choices(choices: Choice[]) {\n this.fieldObject.choices = choices;\n }\n\n get visible(): boolean {\n return this.fieldObject.visible ?? true;\n }\n\n get visibleIf(): string | undefined {\n return this.fieldObject.visibleIf;\n }\n\n get isRequired(): boolean {\n return this.fieldObject.required ?? this.fieldObject.isRequired ?? true;\n }\n\n get startWithNewLine(): boolean {\n return this.fieldObject.startWithNewLine ?? true;\n }\n\n get requiredForEvaluation(): boolean {\n return this.fieldObject.requiredForEvaluation ?? true;\n }\n\n get maxLength(): number | undefined {\n return typeof this.fieldObject.maxLength === 'string'\n ? Number.parseInt(this.fieldObject.maxLength)\n : this.fieldObject.maxLength;\n }\n\n get min(): number | undefined {\n return typeof this.fieldObject.min === 'string'\n ? Number.parseFloat(this.fieldObject.min)\n : this.fieldObject.min;\n }\n\n get max(): number | undefined {\n return typeof this.fieldObject.max === 'string'\n ? Number.parseFloat(this.fieldObject.max)\n : this.fieldObject.max;\n }\n}\n\nexport class BasicFormField extends FormField {\n constructor(name: string, displayName: string, type: string, category: string) {\n super(name, displayName, type, category);\n }\n\n getFieldNames(): string[] {\n if (this.fieldObject.requiredForEvaluation === false) {\n return [];\n }\n\n return [this.fieldObject.name!];\n }\n}\n\nexport class FileFormField extends FormField {\n constructor(\n name: string,\n displayName: string,\n type: string,\n category: string,\n ihs_column_names: string[]\n ) {\n super(name, displayName, type, category);\n this.fieldObject.ihs_column_names = ihs_column_names;\n }\n\n getFieldNames(): string[] {\n if (this.fieldObject.requiredForEvaluation === false) {\n return [];\n }\n\n return this.fieldObject.ihs_column_names || [];\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldCategory } from \"./form-field-category.js\";\nimport FormField from \"./form-field.js\";\nimport type { FieldData, PageConfig, UnifiedFormConfig } from \"./survey-generator.js\";\nimport { validateFormConfig } from \"./validator.js\";\nimport semver from \"semver\";\n\nexport class FormSpec {\n private _categories: FormFieldCategory[] = [];\n private _fields: FormField[] = [];\n private _displayName: string;\n private _templateIcon?: string;\n private _schemaVersion: string;\n private _pages: PageConfig[] = [];\n\n constructor(\n displayName: string,\n categories: FormFieldCategory[],\n fields: FormField[],\n pages: PageConfig[] = [],\n templateIcon?: string,\n schemaVersion: string = FormSpec.MAX_PARSER_SCHEMA_VERSION\n ) {\n this._displayName = displayName;\n this._templateIcon = templateIcon;\n this._categories = categories;\n this._fields = fields;\n this._pages = pages;\n this._schemaVersion = schemaVersion;\n }\n\n static readonly MIN_PARSER_SCHEMA_VERSION = 'v1.0.0';\n static readonly MAX_PARSER_SCHEMA_VERSION = 'v2.0.0';\n\n get fieldNames(): string[] {\n let names: string[] = [];\n\n this.fields.forEach((field) => {\n names = names.concat(field.getFieldNames());\n });\n\n return names;\n }\n\n get schemaVersion(): string {\n return this._schemaVersion;\n }\n\n get requiresUpgrade(): boolean {\n return semver.lt(this._schemaVersion, FormSpec.MAX_PARSER_SCHEMA_VERSION);\n }\n\n upgradeToV2(): void {\n this._schemaVersion = FormSpec.MAX_PARSER_SCHEMA_VERSION;\n }\n\n get displayName(): string {\n return this._displayName;\n }\n\n set displayName(newDisplayName: string) {\n this._displayName = newDisplayName;\n }\n\n get templateIcon(): string | undefined {\n return this._templateIcon;\n }\n\n set templateIcon(value: string | undefined) {\n this._templateIcon = value;\n }\n\n get categories(): FormFieldCategory[] {\n return this._categories;\n }\n\n set categories(categories: FormFieldCategory[]) {\n this._categories = categories;\n }\n\n get fields(): FormField[] {\n return this._fields;\n }\n\n set fields(fields: FormField[]) {\n this._fields = fields;\n }\n\n get pages(): PageConfig[] {\n return this._pages;\n }\n\n set pages(value: PageConfig[]) {\n this._pages = value;\n }\n\n addField(field: FormField): void {\n this._fields.push(field);\n }\n\n updateField(field: FormField): void {\n const index = this._fields.findIndex((f) => f.name === field.name);\n if (index !== -1) {\n this._fields[index] = field;\n } else {\n throw new Error(\n `${field.name} not found. Form Spec of ${this._displayName} cannot update ${field.name}`\n );\n }\n }\n\n removeField(fieldName: string): void {\n const fieldIndex = this._fields.findIndex((f) => f.name === fieldName);\n if (fieldIndex !== -1) {\n this._fields.splice(fieldIndex, 1);\n\n this._pages.forEach((page) => {\n page.fields = page.fields.filter((fieldRef) => {\n let refName: string | undefined;\n if (typeof fieldRef === 'string') {\n refName = fieldRef;\n } else if ('ref' in fieldRef) {\n refName = fieldRef.ref;\n } else if ('definition' in fieldRef) {\n refName = fieldRef.definition.name;\n }\n return refName !== fieldName;\n });\n });\n }\n }\n\n getFieldsByCategory(categoryName: string): FormField[] {\n const foundCategory = this.categories.find((category) => category.name === categoryName);\n\n if (!foundCategory) {\n return [];\n }\n\n return this._fields.filter((field) => field.categoryId === foundCategory.id);\n }\n\n validate(): { valid: boolean; errors?: any[] } {\n const config = this.toJSON() as UnifiedFormConfig;\n const result = validateFormConfig(config);\n const errors: any[] = [];\n\n if (result.errors) {\n result.errors.forEach((err: any) => {\n let path = err.instancePath || err.dataPath || '';\n path = path.replace(/^\\//, '').replace(/\\//g, '.');\n const prefix = path ? `${path}: ` : '';\n errors.push({\n message: `${prefix}${err.message}`,\n path: path,\n });\n });\n }\n\n if (!this._displayName || this._displayName.trim() === '') {\n errors.push({\n message: 'displayName: Form display name is required',\n path: 'displayName',\n });\n }\n\n const categoryIds = new Set(this._categories.map((c) => String(c.id)));\n this._fields.forEach((field) => {\n if (field.categoryId && !categoryIds.has(String(field.categoryId))) {\n errors.push({\n message: `fields.${field.name}.category: references non-existent category '${field.categoryId}'`,\n path: `fields.${field.name}.category`,\n });\n }\n });\n\n const fieldNames = new Set(this._fields.map((f) => f.name));\n this._pages.forEach((page, pageIndex) => {\n page.fields.forEach((fieldRef, fieldIndex) => {\n let refName: string | undefined;\n if (typeof fieldRef === 'string') {\n refName = fieldRef;\n } else if (fieldRef && (fieldRef as any).ref) {\n refName = (fieldRef as any).ref;\n } else if (fieldRef && (fieldRef as any).definition) {\n refName = (fieldRef as any).definition.name;\n }\n\n if (refName && !fieldNames.has(refName)) {\n errors.push({\n message: `pages.${pageIndex}.fields.${fieldIndex}: references non-existent field '${refName}'`,\n path: `pages.${pageIndex}.fields.${fieldIndex}`,\n });\n }\n });\n });\n\n return {\n valid: result.valid && errors.length === (result.errors?.length || 0),\n errors: errors.length > 0 ? errors : undefined,\n };\n }\n\n private cleanObject(obj: any): any {\n if (obj === null || obj === undefined) return obj;\n\n let target = obj;\n if (typeof obj.toJSON === 'function' && obj !== this) {\n target = obj.toJSON();\n }\n\n if (Array.isArray(target)) {\n return target.map((v: any) => (typeof v === 'object' ? this.cleanObject(v) : v));\n }\n\n if (typeof target !== 'object') return target;\n\n const cleaned: any = {};\n Object.keys(target).forEach((key) => {\n const value = target[key];\n if (value !== null && value !== undefined && value !== '') {\n if (typeof value === 'object') {\n cleaned[key] = this.cleanObject(value);\n } else {\n cleaned[key] = value;\n }\n }\n });\n return cleaned;\n }\n\n toJSON(): object {\n const fieldsMap: Record<string, any> = {};\n this._fields.forEach((field) => {\n fieldsMap[field.name] = field.toJSON();\n delete fieldsMap[field.name].name;\n });\n\n return this.cleanObject({\n $schema:\n '../../../node_modules/@finsys/core/dist/schema/unified-form.schema.json',\n schemaVersion: this._schemaVersion,\n displayName: this._displayName,\n templateIcon: this._templateIcon,\n categories: this._categories,\n fields: fieldsMap,\n pages: this._pages,\n });\n }\n\n static fromJSON(jsonString: string): FormSpec {\n let jsonData: any;\n try {\n jsonData = JSON.parse(jsonString);\n } catch (error) {\n console.error(`Error parsing JSON for Loantype with string: ${jsonString}`);\n throw error;\n }\n\n if (!jsonData.schemaVersion) {\n throw new Error('Invalid JSON: schemaVersion is missing or invalid');\n }\n\n if (semver.lt(jsonData.schemaVersion, FormSpec.MIN_PARSER_SCHEMA_VERSION)) {\n throw new Error(\n `This form spec file is using an outdated schema version ${jsonData.schemaVersion}. Minimum supported version is ${FormSpec.MIN_PARSER_SCHEMA_VERSION}`\n );\n }\n\n if (!jsonData.displayName) {\n throw new Error('Invalid JSON: displayName is missing or invalid');\n }\n\n if (!jsonData.categories) {\n throw new Error('Invalid JSON: categories is missing or invalid');\n }\n\n if (!jsonData.fields) {\n throw new Error('Invalid JSON: fields is missing or invalid');\n }\n\n if (!jsonData.pages || jsonData.pages.length === 0) {\n if (semver.satisfies(jsonData.schemaVersion, '>=2.0.0')) {\n console.warn(\n `v2.0.0 template ${jsonData.displayName} is missing pages. Generating default pages.`\n );\n }\n }\n\n let fieldObjects: FieldData[] = [];\n if (Array.isArray(jsonData.fields)) {\n fieldObjects = jsonData.fields;\n } else if (typeof jsonData.fields === 'object' && jsonData.fields !== null) {\n fieldObjects = Object.entries(jsonData.fields).map(([name, data]: [string, any]) => {\n return {\n name,\n ...data,\n };\n });\n }\n\n fieldObjects.forEach((f: any) => {\n if (f.categoryId && !f.category) {\n f.category = String(f.categoryId);\n } else if (f.category) {\n f.category = String(f.category);\n }\n });\n\n const categories = (jsonData.categories || []).map((cat: any) => {\n return new FormFieldCategory(String(cat.id), cat.name);\n });\n\n const fields: FormField[] = fieldObjects.map((fieldObject) => {\n return FormField.fromObject(fieldObject);\n });\n\n let pages = jsonData.pages || [];\n if (pages.length === 0) {\n const categoriesMap: Record<string, string[]> = {};\n fields.forEach((f) => {\n const catId = f.categoryId;\n if (!categoriesMap[catId]) {\n categoriesMap[catId] = [];\n }\n categoriesMap[catId].push(f.name);\n });\n\n pages = categories\n .map((cat: FormFieldCategory) => ({\n id: `page-${cat.id}`,\n title: cat.name,\n fields: categoriesMap[cat.id] || [],\n }))\n .filter((p: PageConfig) => p.fields.length > 0);\n }\n\n return new FormSpec(\n jsonData.displayName,\n categories,\n fields,\n pages,\n jsonData.templateIcon,\n jsonData.schemaVersion\n );\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Validator } from \"./survey-generator.js\";\nimport type { EditorValidator } from \"./form-field.js\";\n\nexport interface FormValidatorDefinitions {\n options: EditorValidator[];\n version: number;\n}\n\nexport class FormFieldValidator implements EditorValidator {\n id: number;\n displayName: string;\n class: string;\n description: string;\n isRequired: boolean;\n validators: Validator[];\n\n constructor(validatorData: EditorValidator) {\n this.id = validatorData.id;\n this.displayName = validatorData.displayName;\n this.class = validatorData.class;\n this.description = validatorData.description;\n this.isRequired = validatorData.isRequired;\n this.validators = validatorData.validators;\n }\n\n validate(value: any): boolean {\n for (const validator of this.validators) {\n switch (validator.type) {\n case 'numeric':\n if (!this.validateNumeric(value, validator.minValue, validator.maxValue)) {\n return false;\n }\n break;\n case 'text':\n if (!this.validateText(value, validator.minLength, validator.maxLength)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n\n private validateNumeric(value: number, min?: number, max?: number): boolean {\n if (min !== undefined && value < min) return false;\n if (max !== undefined && value > max) return false;\n return true;\n }\n\n private validateText(value: string, minLength?: number, maxLength?: number): boolean {\n if (minLength !== undefined && value.length < minLength) return false;\n if (maxLength !== undefined && value.length > maxLength) return false;\n return true;\n }\n}\n","{\n \"schemaVersion\": \"v2.0.0\",\n \"categories\": [\n {\n \"id\": \"1\",\n \"name\": \"Basic Information\"\n },\n {\n \"id\": \"2\",\n \"name\": \"Personal Information\"\n },\n {\n \"id\": \"3\",\n \"name\": \"Company Information\"\n },\n {\n \"id\": \"4\",\n \"name\": \"Financial Information\"\n },\n {\n \"id\": \"5\",\n \"name\": \"Employment Information\"\n },\n {\n \"id\": \"6\",\n \"name\": \"Consent and Legal Agreements\"\n },\n {\n \"id\": \"7\",\n \"name\": \"Address Information\"\n },\n {\n \"id\": \"8\",\n \"name\": \"Contact Information\"\n },\n {\n \"id\": \"9\",\n \"name\": \"Declarations\"\n },\n {\n \"id\": \"10\",\n \"name\": \"Account Information\"\n },\n {\n \"id\": \"11\",\n \"name\": \"Loan Information\"\n },\n {\n \"id\": \"12\",\n \"name\": \"Vehicle Information\"\n },\n {\n \"id\": \"13\",\n \"name\": \"Document Upload\"\n }\n ],\n \"fields\": [\n {\n \"name\": \"fullName\",\n \"displayName\": \"Full Name\",\n \"placeholder\": \"E.g. John Doe\",\n \"type\": \"text\",\n \"maxLength\": 80,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please make sure the name doesn't include extra spaces, numbers, or invalid symbols\",\n \"regex\": \"^[A-Za-z'-]+(?:\\\\s[A-Za-z'-]+)*\\\\s?[A-Za-z'-]+$\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"name\": \"email\",\n \"displayName\": \"Email\",\n \"placeholder\": \"E.g. johndoe@example.com\",\n \"type\": \"text\",\n \"inputType\": \"email\",\n \"maxLength\": 65,\n \"validators\": [\n {\n \"type\": \"email\",\n \"text\": \"Value must be a valid email\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"name\": \"mobilePhoneNoAreaCode\",\n \"displayName\": \"Mobile Phone Number Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"1\"\n },\n {\n \"name\": \"mobilePhoneNo\",\n \"displayName\": \"Mobile Phone Number\",\n \"placeholder\": \"Mobile Phone Number\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"maxLength\": 12,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^(011[0-9]{8}|01[2346789][0-9]{7}|[2-9][0-9]{0,8})$\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"type\": \"text\",\n \"name\": \"idNumber\",\n \"title\": \"ID Number\",\n \"placeholder\": \"E.g. 700513065143\",\n \"isRequired\": true,\n \"displayName\": \"IC Number\",\n \"maxLength\": 25,\n \"inputType\": \"text\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{12}$\",\n \"text\": \"Please enter exactly 12 digits numbers\"\n },\n {\n \"type\": \"regex\",\n \"regex\": \"^(\\\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\\\\d{6}$\",\n \"text\": \"First 6 digits must be valid birth year (00-99), month (01-12), and day (01-31)\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"dateOfBirth\",\n \"displayName\": \"Date of Birth\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"visible\": false,\n \"category\": \"2\"\n },\n {\n \"name\": \"companyName\",\n \"displayName\": \"Company Name\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"companyRegNo\",\n \"displayName\": \"Company Registration Number\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"natureOfBusiness\",\n \"displayName\": \"Nature of Business\",\n \"placeholder\": \"Select your Nature of Business\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Manufacturing\",\n \"text\": \"Manufacturing\"\n },\n {\n \"value\": \"Services\",\n \"text\": \"Services\"\n },\n {\n \"value\": \"Others\",\n \"text\": \"Others\"\n }\n ],\n \"maxLength\": 80,\n \"category\": \"3\"\n },\n {\n \"name\": \"officeFacilityType\",\n \"displayName\": \"Office Facility Type\",\n \"placeholder\": \"Select your facility type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Owned\",\n \"text\": \"Owned\"\n },\n {\n \"value\": \"Rented\",\n \"text\": \"Rented\"\n }\n ],\n \"maxLength\": 80,\n \"category\": \"3\"\n },\n {\n \"name\": \"companySize\",\n \"displayName\": \"Company Size\",\n \"placeholder\": \"Select your company size\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"selfEmplyed\",\n \"text\": \"Self-employed\"\n },\n {\n \"value\": \"1-10\",\n \"text\": \"1-10\"\n },\n {\n \"value\": \"11-20\",\n \"text\": \"11-20\"\n },\n {\n \"value\": \"21-30\",\n \"text\": \"21-30\"\n },\n {\n \"value\": \"31-50\",\n \"text\": \"31-50\"\n },\n {\n \"value\": \"51-100\",\n \"text\": \"51-100\"\n },\n {\n \"value\": \"101-500\",\n \"text\": \"101-500\"\n },\n {\n \"value\": \"500+\",\n \"text\": \"500+\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"facilityAddress\",\n \"displayName\": \"Facility Address\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"companyEntityType\",\n \"displayName\": \"Company Entity Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Branch office\",\n \"text\": \"Branch office\"\n },\n {\n \"value\": \"Company Limited by guarantee\",\n \"text\": \"Company Limited by guarantee\"\n },\n {\n \"value\": \"Enterprise or Sole Proprietorship\",\n \"text\": \"Enterprise or Sole Proprietorship\"\n },\n {\n \"value\": \"Foreign Companies\",\n \"text\": \"Foreign Companies\"\n },\n {\n \"value\": \"Limited Liability Partnership\",\n \"text\": \"Limited Liability Partnership\"\n },\n {\n \"value\": \"Partnership\",\n \"text\": \"Partnership\"\n },\n {\n \"value\": \"Private Limited Company (Sdn. Bhd.)\",\n \"text\": \"Private Limited Company (Sdn. Bhd.)\"\n },\n {\n \"value\": \"Public Limited Company (Bhd.)\",\n \"text\": \"Public Limited Company (Bhd.)\"\n },\n {\n \"value\": \"Proprietorship/ Partnership\",\n \"text\": \"Proprietorship/ Partnership\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"tnbTariff\",\n \"displayName\": \"TNB Tariff\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"B\",\n \"text\": \"B\"\n },\n {\n \"value\": \"C1\",\n \"text\": \"C1\"\n },\n {\n \"value\": \"C2\",\n \"text\": \"C2\"\n },\n {\n \"value\": \"D\",\n \"text\": \"D\"\n },\n {\n \"value\": \"E1\",\n \"text\": \"E1\"\n },\n {\n \"value\": \"E2\",\n \"text\": \"E2\"\n },\n {\n \"value\": \"E3\",\n \"text\": \"E3\"\n },\n {\n \"value\": \"H\",\n \"text\": \"H\"\n },\n {\n \"value\": \"H1\",\n \"text\": \"H1\"\n },\n {\n \"value\": \"H2\",\n \"text\": \"H2\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"avgMaximumDemand\",\n \"displayName\": \"Average Maximum Demand\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"ctRatio\",\n \"displayName\": \"CT Ratio\",\n \"type\": \"text\",\n \"category\": \"4\"\n },\n {\n \"name\": \"buildingType\",\n \"displayName\": \"Building Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Warehouse/Factory\",\n \"text\": \"Warehouse/Factory\"\n },\n {\n \"value\": \"Office building/Shoplot\",\n \"text\": \"Office building/Shoplot\"\n },\n {\n \"value\": \"Shopping Mall/Complex\",\n \"text\": \"Shopping Mall/Complex\"\n },\n {\n \"value\": \"School\",\n \"text\": \"School\"\n },\n {\n \"value\": \"Other\",\n \"text\": \"Other\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"tnbBills\",\n \"displayName\": \"TNB Bills\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"2\"\n },\n {\n \"name\": \"financingSelection\",\n \"displayName\": \"Financing Selection\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Loan\",\n \"text\": \"Loan\"\n },\n {\n \"value\": \"Leasing\",\n \"text\": \"Leasing\"\n },\n {\n \"value\": \"Extended Terms\",\n \"text\": \"Extended Terms\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"businessSector\",\n \"displayName\": \"Business Sector\",\n \"type\": \"text\",\n \"category\": \"5\"\n },\n {\n \"name\": \"companyBackground\",\n \"displayName\": \"Company Background\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"isApplication\",\n \"displayName\": \"Is Application\",\n \"type\": \"boolean\",\n \"category\": \"6\"\n },\n {\n \"name\": \"isReview\",\n \"displayName\": \"Is Review\",\n \"type\": \"boolean\",\n \"category\": \"6\"\n },\n {\n \"name\": \"addressLine1\",\n \"displayName\": \"Address Line 1\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressLine2\",\n \"displayName\": \"Address Line 2\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressLine3\",\n \"displayName\": \"Address Line 3\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressType\",\n \"displayName\": \"Address Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"P\",\n \"text\": \"Permanent\"\n },\n {\n \"value\": \"O\",\n \"text\": \"Office\"\n },\n {\n \"value\": \"R\",\n \"text\": \"Residence\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"city\",\n \"displayName\": \"City\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"country\",\n \"displayName\": \"Country\",\n \"type\": \"dropdown\",\n \"titleLocation\": \"hidden\",\n \"placeholder\": \"Country\",\n \"choices\": [\n {\n \"text\": \"Afghanistan\",\n \"value\": \"AFG\"\n },\n {\n \"text\": \"Angola\",\n \"value\": \"ANG\"\n },\n {\n \"text\": \"Albania\",\n \"value\": \"ALB\"\n },\n {\n \"text\": \"Andorra\",\n \"value\": \"AND\"\n },\n {\n \"text\": \"United Arab Emirates\",\n \"value\": \"UAE\"\n },\n {\n \"text\": \"Argentina\",\n \"value\": \"ARG\"\n },\n {\n \"text\": \"Armenia\",\n \"value\": \"ARM\"\n },\n {\n \"text\": \"Antigua and Barbuda\",\n \"value\": \"ANT\"\n },\n {\n \"text\": \"Australia\",\n \"value\": \"AUS\"\n },\n {\n \"text\": \"Austria\",\n \"value\": \"AUT\"\n },\n {\n \"text\": \"Azerbaijan\",\n \"value\": \"AZE\"\n },\n {\n \"text\": \"Burundi\",\n \"value\": \"BDI\"\n },\n {\n \"text\": \"Belgium\",\n \"value\": \"BEL\"\n },\n {\n \"text\": \"Benin\",\n \"value\": \"BEN\"\n },\n {\n \"text\": \"Burkina Faso\",\n \"value\": \"BFA\"\n },\n {\n \"text\": \"Bangladesh\",\n \"value\": \"BGD\"\n },\n {\n \"text\": \"Bulgaria\",\n \"value\": \"BUL\"\n },\n {\n \"text\": \"Bahrain\",\n \"value\": \"BRN\"\n },\n {\n \"text\": \"Bahamas\",\n \"value\": \"BAH\"\n },\n {\n \"text\": \"Bosnia and Herzegovina\",\n \"value\": \"BIH\"\n },\n {\n \"text\": \"Belarus\",\n \"value\": \"BLR\"\n },\n {\n \"text\": \"Belize\",\n \"value\": \"BIZ\"\n },\n {\n \"text\": \"Bolivia\",\n \"value\": \"BOL\"\n },\n {\n \"text\": \"Brazil\",\n \"value\": \"BRA\"\n },\n {\n \"text\": \"Barbados\",\n \"value\": \"BAR\"\n },\n {\n \"text\": \"Brunei\",\n \"value\": \"BRU\"\n },\n {\n \"text\": \"Bhutan\",\n \"value\": \"BHU\"\n },\n {\n \"text\": \"Botswana\",\n \"value\": \"BOT\"\n },\n {\n \"text\": \"Central African Republic\",\n \"value\": \"CAF\"\n },\n {\n \"text\": \"Canada\",\n \"value\": \"CAN\"\n },\n {\n \"text\": \"Switzerland\",\n \"value\": \"CHE\"\n },\n {\n \"text\": \"Chile\",\n \"value\": \"CHI\"\n },\n {\n \"text\": \"China\",\n \"value\": \"CHN\"\n },\n {\n \"text\": \"Ivory Coast\",\n \"value\": \"CIV\"\n },\n {\n \"text\": \"Cameroon\",\n \"value\": \"CMR\"\n },\n {\n \"text\": \"DR Congo\",\n \"value\": \"COD\"\n },\n {\n \"text\": \"Republic of the Congo\",\n \"value\": \"CGO\"\n },\n {\n \"text\": \"Colombia\",\n \"value\": \"COL\"\n },\n {\n \"text\": \"Comoros\",\n \"value\": \"COM\"\n },\n {\n \"text\": \"Cape Verde\",\n \"value\": \"CPV\"\n },\n {\n \"text\": \"Costa Rica\",\n \"value\": \"CRC\"\n },\n {\n \"text\": \"Cuba\",\n \"value\": \"CUB\"\n },\n {\n \"text\": \"Cyprus\",\n \"value\": \"CYP\"\n },\n {\n \"text\": \"Czechia\",\n \"value\": \"CZE\"\n },\n {\n \"text\": \"Germany\",\n \"value\": \"DEU\"\n },\n {\n \"text\": \"Djibouti\",\n \"value\": \"DJI\"\n },\n {\n \"text\": \"Dominica\",\n \"value\": \"DMA\"\n },\n {\n \"text\": \"Denmark\",\n \"value\": \"DEN\"\n },\n {\n \"text\": \"Dominican Republic\",\n \"value\": \"DOM\"\n },\n {\n \"text\": \"Algeria\",\n \"value\": \"ALG\"\n },\n {\n \"text\": \"Ecuador\",\n \"value\": \"ECU\"\n },\n {\n \"text\": \"Egypt\",\n \"value\": \"EGY\"\n },\n {\n \"text\": \"Eritrea\",\n \"value\": \"ERI\"\n },\n {\n \"text\": \"Spain\",\n \"value\": \"ESP\"\n },\n {\n \"text\": \"Estonia\",\n \"value\": \"EST\"\n },\n {\n \"text\": \"Ethiopia\",\n \"value\": \"ETH\"\n },\n {\n \"text\": \"Finland\",\n \"value\": \"FIN\"\n },\n {\n \"text\": \"Fiji\",\n \"value\": \"FIJ\"\n },\n {\n \"text\": \"France\",\n \"value\": \"FRA\"\n },\n {\n \"text\": \"Micronesia\",\n \"value\": \"FSM\"\n },\n {\n \"text\": \"Gabon\",\n \"value\": \"GAB\"\n },\n {\n \"text\": \"United Kingdom\",\n \"value\": \"GBR\"\n },\n {\n \"text\": \"Georgia\",\n \"value\": \"GEO\"\n },\n {\n \"text\": \"Ghana\",\n \"value\": \"GHA\"\n },\n {\n \"text\": \"Guinea\",\n \"value\": \"GUI\"\n },\n {\n \"text\": \"Gambia\",\n \"value\": \"GAM\"\n },\n {\n \"text\": \"Equatorial Guinea\",\n \"value\": \"GEQ\"\n },\n {\n \"text\": \"Greece\",\n \"value\": \"GRE\"\n },\n {\n \"text\": \"Grenada\",\n \"value\": \"GRN\"\n },\n {\n \"text\": \"Guatemala\",\n \"value\": \"GUA\"\n },\n {\n \"text\": \"Guyana\",\n \"value\": \"GUY\"\n },\n {\n \"text\": \"Honduras\",\n \"value\": \"HON\"\n },\n {\n \"text\": \"Croatia\",\n \"value\": \"CRO\"\n },\n {\n \"text\": \"Haiti\",\n \"value\": \"HAI\"\n },\n {\n \"text\": \"Hungary\",\n \"value\": \"HUN\"\n },\n {\n \"text\": \"Indonesia\",\n \"value\": \"INA\"\n },\n {\n \"text\": \"India\",\n \"value\": \"IND\"\n },\n {\n \"text\": \"Ireland\",\n \"value\": \"IRL\"\n },\n {\n \"text\": \"Iran\",\n \"value\": \"IRI\"\n },\n {\n \"text\": \"Iraq\",\n \"value\": \"IRQ\"\n },\n {\n \"text\": \"Iceland\",\n \"value\": \"ISL\"\n },\n {\n \"text\": \"Israel\",\n \"value\": \"ISR\"\n },\n {\n \"text\": \"Italy\",\n \"value\": \"ITA\"\n },\n {\n \"text\": \"Jamaica\",\n \"value\": \"JAM\"\n },\n {\n \"text\": \"Jordan\",\n \"value\": \"JOR\"\n },\n {\n \"text\": \"Japan\",\n \"value\": \"JPN\"\n },\n {\n \"text\": \"Kazakhstan\",\n \"value\": \"KAZ\"\n },\n {\n \"text\": \"Kenya\",\n \"value\": \"KEN\"\n },\n {\n \"text\": \"Kyrgyzstan\",\n \"value\": \"KGZ\"\n },\n {\n \"text\": \"Cambodia\",\n \"value\": \"KHM\"\n },\n {\n \"text\": \"Kiribati\",\n \"value\": \"KIR\"\n },\n {\n \"text\": \"Saint Kitts and Nevis\",\n \"value\": \"SKN\"\n },\n {\n \"text\": \"South Korea\",\n \"value\": \"KOR\"\n },\n {\n \"text\": \"Kuwait\",\n \"value\": \"KUW\"\n },\n {\n \"text\": \"Laos\",\n \"value\": \"LAO\"\n },\n {\n \"text\": \"Lebanon\",\n \"value\": \"LIB\"\n },\n {\n \"text\": \"Liberia\",\n \"value\": \"LBR\"\n },\n {\n \"text\": \"Libya\",\n \"value\": \"LBA\"\n },\n {\n \"text\": \"Saint Lucia\",\n \"value\": \"LCA\"\n },\n {\n \"text\": \"Liechtenstein\",\n \"value\": \"LIE\"\n },\n {\n \"text\": \"Sri Lanka\",\n \"value\": \"SRI\"\n },\n {\n \"text\": \"Lesotho\",\n \"value\": \"LES\"\n },\n {\n \"text\": \"Lithuania\",\n \"value\": \"LTU\"\n },\n {\n \"text\": \"Luxembourg\",\n \"value\": \"LUX\"\n },\n {\n \"text\": \"Latvia\",\n \"value\": \"LAT\"\n },\n {\n \"text\": \"Morocco\",\n \"value\": \"MAR\"\n },\n {\n \"text\": \"Monaco\",\n \"value\": \"MON\"\n },\n {\n \"text\": \"Moldova\",\n \"value\": \"MDA\"\n },\n {\n \"text\": \"Madagascar\",\n \"value\": \"MAD\"\n },\n {\n \"text\": \"Maldives\",\n \"value\": \"MDV\"\n },\n {\n \"text\": \"Mexico\",\n \"value\": \"MEX\"\n },\n {\n \"text\": \"Marshall Islands\",\n \"value\": \"MHL\"\n },\n {\n \"text\": \"North Macedonia\",\n \"value\": \"MKD\"\n },\n {\n \"text\": \"Mali\",\n \"value\": \"MLI\"\n },\n {\n \"text\": \"Malta\",\n \"value\": \"MLT\"\n },\n {\n \"text\": \"Myanmar\",\n \"value\": \"MYA\"\n },\n {\n \"text\": \"Montenegro\",\n \"value\": \"MNE\"\n },\n {\n \"text\": \"Mongolia\",\n \"value\": \"MGL\"\n },\n {\n \"text\": \"Mozambique\",\n \"value\": \"MOZ\"\n },\n {\n \"text\": \"Mauritania\",\n \"value\": \"MTN\"\n },\n {\n \"text\": \"Mauritius\",\n \"value\": \"MRI\"\n },\n {\n \"text\": \"Malawi\",\n \"value\": \"MAW\"\n },\n {\n \"text\": \"Malaysia\",\n \"value\": \"MAS\"\n },\n {\n \"text\": \"Namibia\",\n \"value\": \"NAM\"\n },\n {\n \"text\": \"Niger\",\n \"value\": \"NIG\"\n },\n {\n \"text\": \"Nigeria\",\n \"value\": \"NGR\"\n },\n {\n \"text\": \"Nicaragua\",\n \"value\": \"NCA\"\n },\n {\n \"text\": \"Netherlands\",\n \"value\": \"NED\"\n },\n {\n \"text\": \"Norway\",\n \"value\": \"NOR\"\n },\n {\n \"text\": \"Nepal\",\n \"value\": \"NEP\"\n },\n {\n \"text\": \"Nauru\",\n \"value\": \"NRU\"\n },\n {\n \"text\": \"New Zealand\",\n \"value\": \"NZL\"\n },\n {\n \"text\": \"Oman\",\n \"value\": \"OMA\"\n },\n {\n \"text\": \"Pakistan\",\n \"value\": \"PAK\"\n },\n {\n \"text\": \"Panama\",\n \"value\": \"PAN\"\n },\n {\n \"text\": \"Peru\",\n \"value\": \"PER\"\n },\n {\n \"text\": \"Philippines\",\n \"value\": \"PHI\"\n },\n {\n \"text\": \"Palau\",\n \"value\": \"PLW\"\n },\n {\n \"text\": \"Papua New Guinea\",\n \"value\": \"PNG\"\n },\n {\n \"text\": \"Poland\",\n \"value\": \"POL\"\n },\n {\n \"text\": \"North Korea\",\n \"value\": \"PRK\"\n },\n {\n \"text\": \"Portugal\",\n \"value\": \"POR\"\n },\n {\n \"text\": \"Paraguay\",\n \"value\": \"PAR\"\n },\n {\n \"text\": \"Qatar\",\n \"value\": \"QAT\"\n },\n {\n \"text\": \"Romania\",\n \"value\": \"ROU\"\n },\n {\n \"text\": \"Russia\",\n \"value\": \"RUS\"\n },\n {\n \"text\": \"Rwanda\",\n \"value\": \"RWA\"\n },\n {\n \"text\": \"Saudi Arabia\",\n \"value\": \"KSA\"\n },\n {\n \"text\": \"Sudan\",\n \"value\": \"SUD\"\n },\n {\n \"text\": \"Senegal\",\n \"value\": \"SEN\"\n },\n {\n \"text\": \"Singapore\",\n \"value\": \"SIN\"\n },\n {\n \"text\": \"Solomon Islands\",\n \"value\": \"SOL\"\n },\n {\n \"text\": \"Sierra Leone\",\n \"value\": \"SLE\"\n },\n {\n \"text\": \"El Salvador\",\n \"value\": \"ESA\"\n },\n {\n \"text\": \"San Marino\",\n \"value\": \"SMR\"\n },\n {\n \"text\": \"Somalia\",\n \"value\": \"SOM\"\n },\n {\n \"text\": \"Serbia\",\n \"value\": \"SRB\"\n },\n {\n \"text\": \"S\\u00e3o Tom\\u00e9 and Pr\\u00edncipe\",\n \"value\": \"STP\"\n },\n {\n \"text\": \"Suriname\",\n \"value\": \"SUR\"\n },\n {\n \"text\": \"Slovakia\",\n \"value\": \"SVK\"\n },\n {\n \"text\": \"Slovenia\",\n \"value\": \"SLO\"\n },\n {\n \"text\": \"Sweden\",\n \"value\": \"SWE\"\n },\n {\n \"text\": \"Eswatini\",\n \"value\": \"SWZ\"\n },\n {\n \"text\": \"Seychelles\",\n \"value\": \"SEY\"\n },\n {\n \"text\": \"Syria\",\n \"value\": \"SYR\"\n },\n {\n \"text\": \"Chad\",\n \"value\": \"CHA\"\n },\n {\n \"text\": \"Togo\",\n \"value\": \"TOG\"\n },\n {\n \"text\": \"Thailand\",\n \"value\": \"THA\"\n },\n {\n \"text\": \"Tajikistan\",\n \"value\": \"TJK\"\n },\n {\n \"text\": \"Turkmenistan\",\n \"value\": \"TKM\"\n },\n {\n \"text\": \"Timor-Leste\",\n \"value\": \"TLS\"\n },\n {\n \"text\": \"Tonga\",\n \"value\": \"TGA\"\n },\n {\n \"text\": \"Trinidad and Tobago\",\n \"value\": \"TTO\"\n },\n {\n \"text\": \"Tunisia\",\n \"value\": \"TUN\"\n },\n {\n \"text\": \"Turkey\",\n \"value\": \"TUR\"\n },\n {\n \"text\": \"Tuvalu\",\n \"value\": \"TUV\"\n },\n {\n \"text\": \"Tanzania\",\n \"value\": \"TAN\"\n },\n {\n \"text\": \"Uganda\",\n \"value\": \"UGA\"\n },\n {\n \"text\": \"Ukraine\",\n \"value\": \"UKR\"\n },\n {\n \"text\": \"Uruguay\",\n \"value\": \"URU\"\n },\n {\n \"text\": \"United States\",\n \"value\": \"USA\"\n },\n {\n \"text\": \"Uzbekistan\",\n \"value\": \"UZB\"\n },\n {\n \"text\": \"Saint Vincent and the Grenadines\",\n \"value\": \"VIN\"\n },\n {\n \"text\": \"Venezuela\",\n \"value\": \"VEN\"\n },\n {\n \"text\": \"Vietnam\",\n \"value\": \"VIE\"\n },\n {\n \"text\": \"Vanuatu\",\n \"value\": \"VAN\"\n },\n {\n \"text\": \"Samoa\",\n \"value\": \"SAM\"\n },\n {\n \"text\": \"Yemen\",\n \"value\": \"YEM\"\n },\n {\n \"text\": \"South Africa\",\n \"value\": \"RSA\"\n },\n {\n \"text\": \"Zambia\",\n \"value\": \"ZAM\"\n },\n {\n \"text\": \"Zimbabwe\",\n \"value\": \"ZIM\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"durationInCurrentResidenceMth\",\n \"displayName\": \"Duration in Current Residence (Months)\",\n \"placeholder\": \"Duration in Current Residence (Months)\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 2,\n \"min\": 0,\n \"max\": 11,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|10|11)$\",\n \"text\": \"Value must be a number between 0-11.\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"7\"\n },\n {\n \"name\": \"durationInCurrentResidenceYr\",\n \"displayName\": \"Duration in Current Residence (Years)\",\n \"placeholder\": \"Duration in Current Residence (Years)\",\n \"type\": \"text\",\n \"maxLength\": 2,\n \"min\": 0,\n \"max\": 99,\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|[1-9][0-9])$\",\n \"text\": \"Value must be a number between 0-99.\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"officePhoneNo\",\n \"displayName\": \"Employer Phone Number\",\n \"placeholder\": \"Employer Phone Number\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 12,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The phone number must be a valid Malaysian number\",\n \"regex\": \"^(011[0-9]{8}|(60[4-7]|004|005|006|007|009|609|012|013|014|016|017|019)[0-9]{7})$\"\n }\n ],\n \"inputType\": \"tel\",\n \"category\": \"5\"\n },\n {\n \"name\": \"officePhoneNoAreaCode\",\n \"displayName\": \"Office Phone Number Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"postcode\",\n \"displayName\": \"Postcode\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"state\",\n \"displayName\": \"Permanent State\",\n \"placeholder\": \"Select State Of The Permanenet Address\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"residenceAddress\",\n \"displayName\": \"Residence address same as permanent address?\",\n \"type\": \"boolean\",\n \"defaultValue\": false,\n \"requiredForEvaluation\": false,\n \"category\": \"7\"\n },\n {\n \"name\": \"officestate\",\n \"displayName\": \"Employer State\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"placeholder\": \"Select State Of The Employer Address\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"type\": \"text\",\n \"name\": \"age\",\n \"title\": \"Age\",\n \"isRequired\": true,\n \"displayName\": \"Age\",\n \"visible\": false,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number age between 21 and 55.\",\n \"regex\": \"^(2[1-9]|[3-4][0-9]|55)$\"\n }\n ],\n \"defaultValue\": \"21\",\n \"category\": \"2\"\n },\n {\n \"name\": \"consentCrossSelling\",\n \"displayName\": \"Consent Cross-Selling, Consent to Obtain Information from CTOS and Disclosure of Information\",\n \"type\": \"boolean\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{consentCrossSelling} = true\",\n \"text\": \"You must provide consent to Consent Cross-Selling.\"\n }\n ],\n \"defaultValue\": false,\n \"showTitle\": true,\n \"category\": \"9\"\n },\n {\n \"type\": \"text\",\n \"name\": \"consentObtainInfoFromCtos\",\n \"displayName\": \"Consent to Obtain Information from CTOS\",\n \"defaultValue\": \"yes\",\n \"showTitle\": true,\n \"visible\": false,\n \"category\": \"9\"\n },\n {\n \"name\": \"dateJoined\",\n \"displayName\": \"Date Joined\",\n \"placeholder\": \"Date Joined\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 10,\n \"inputType\": \"date\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"text\": \"Date must be in YYYY-MM-DD format\"\n },\n {\n \"type\": \"custom\",\n \"validator\": \"validateNotFutureDate\",\n \"text\": \"Date of joining cannot be in the future\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"disclosureOfInformation\",\n \"displayName\": \"Disclosure of Information\",\n \"type\": \"text\",\n \"defaultValue\": \"yes\",\n \"showTitle\": true,\n \"visible\": false,\n \"category\": \"9\"\n },\n {\n \"name\": \"educationLevel\",\n \"displayName\": \"Education Level\",\n \"placeholder\": \"Highest Education Level\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Primary\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Secondary/High school\"\n },\n {\n \"value\": \"03\",\n \"text\": \"College graduate-certificate/Diploma holder\"\n },\n {\n \"value\": \"04\",\n \"text\": \"University Degree/Associate Degree\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Master Degree\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Doctorate\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"emerContactTelNo1\",\n \"displayName\": \"Emergency Contact Telephone Number 1\",\n \"startWithNewLine\": false,\n \"placeholder\": \"Emergency Contact Telephone Number 1\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^((60[4-79]|0[4-79])[0-9]{7}|011[0-9]{8}|01[2346789][0-9]{7})$\"\n }\n ],\n \"type\": \"text\",\n \"maxLength\": 18,\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"emerContactTelNo1AreaCode\",\n \"displayName\": \"Emergency Contact Telephone Number 1 Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"emergencyContactName\",\n \"displayName\": \"Emergency Contact Name\",\n \"placeholder\": \"Emergency Contact Name\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"8\"\n },\n {\n \"name\": \"employerName\",\n \"displayName\": \"Employer Name\",\n \"placeholder\": \"Employer Name\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentSector\",\n \"displayName\": \"Employment Sector\",\n \"placeholder\": \"Select Employment Sector\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"0010\",\n \"text\": \"Accounting\"\n },\n {\n \"value\": \"0020\",\n \"text\": \"Actuarial / Statistic\"\n },\n {\n \"value\": \"0030\",\n \"text\": \"Advertising / Marketing / PR\"\n },\n {\n \"value\": \"0040\",\n \"text\": \"Aerospace\"\n },\n {\n \"value\": \"0050\",\n \"text\": \"Agricultural / Chemicals / Forest Products\"\n },\n {\n \"value\": \"0060\",\n \"text\": \"Architecture\"\n },\n {\n \"value\": \"0070\",\n \"text\": \"Automotive / Manufacturing / Production\"\n },\n {\n \"value\": \"0080\",\n \"text\": \"Aviation\"\n },\n {\n \"value\": \"0090\",\n \"text\": \"Buying / Retail\"\n },\n {\n \"value\": \"0100\",\n \"text\": \"Computers / Electronics\"\n },\n {\n \"value\": \"0110\",\n \"text\": \"Construction\"\n },\n {\n \"value\": \"0120\",\n \"text\": \"Creative / Graphics\"\n },\n {\n \"value\": \"0130\",\n \"text\": \"Customer Service\"\n },\n {\n \"value\": \"0140\",\n \"text\": \"Education (includes students) / Training\"\n },\n {\n \"value\": \"0150\",\n \"text\": \"Energy / Mining\"\n },\n {\n \"value\": \"0160\",\n \"text\": \"Engineering\"\n },\n {\n \"value\": \"0170\",\n \"text\": \"Finance / Banking / Insurance\"\n },\n {\n \"value\": \"0180\",\n \"text\": \"Freight / Shipping\"\n },\n {\n \"value\": \"0190\",\n \"text\": \"Government / Military / Public Service\"\n },\n {\n \"value\": \"0200\",\n \"text\": \"Recreation / Hospitality / Sports\"\n },\n {\n \"value\": \"0210\",\n \"text\": \"Hotel / Food\"\n },\n {\n \"value\": \"0220\",\n \"text\": \"Human Resources\"\n },\n {\n \"value\": \"0230\",\n \"text\": \"Investment\"\n },\n {\n \"value\": \"0240\",\n \"text\": \"Journalist / Editor\"\n },\n {\n \"value\": \"0250\",\n \"text\": \"Media / Publishing\"\n },\n {\n \"value\": \"0260\",\n \"text\": \"Medical / Health Services\"\n },\n {\n \"value\": \"0270\",\n \"text\": \"Non-Profit Organization\"\n },\n {\n \"value\": \"0280\",\n \"text\": \"Geology\"\n },\n {\n \"value\": \"0290\",\n \"text\": \"Pharmaceuticals\"\n },\n {\n \"value\": \"0300\",\n \"text\": \"Real Estate\"\n },\n {\n \"value\": \"0310\",\n \"text\": \"Administrative and Support Service Activities\"\n },\n {\n \"value\": \"0320\",\n \"text\": \"Social Services\"\n },\n {\n \"value\": \"0330\",\n \"text\": \"Telecommunications / Networking\"\n },\n {\n \"value\": \"0340\",\n \"text\": \"Travel\"\n },\n {\n \"value\": \"0350\",\n \"text\": \"Transportation\"\n },\n {\n \"value\": \"0360\",\n \"text\": \"Entertainment / Arts\"\n },\n {\n \"value\": \"0370\",\n \"text\": \"Electricity, Gas, Steam and Air Conditioning Supply\"\n },\n {\n \"value\": \"0380\",\n \"text\": \"Water Supply; Sewerage, Waste Management and Remediation Activities\"\n },\n {\n \"value\": \"0390\",\n \"text\": \"Activities of Households as Employers; Undifferentiated Goods and Services Producing Activities of Households for Own Use\"\n },\n {\n \"value\": \"0400\",\n \"text\": \"Activities of Extraterritorial Organisations and Bodies\"\n },\n {\n \"value\": \"0410\",\n \"text\": \"Unemployed/ Outside Labour Force\"\n },\n {\n \"value\": \"0420\",\n \"text\": \"Other Service Activities\"\n },\n {\n \"value\": \"0430\",\n \"text\": \"Legal Services\"\n },\n {\n \"value\": \"0440\",\n \"text\": \"Research & Experimental Development Services\"\n },\n {\n \"value\": \"0450\",\n \"text\": \"Other Professional, Scientific and Technical Activities\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentStatus\",\n \"displayName\": \"Employment Status\",\n \"placeholder\": \"Select Employment Status\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '08', '09']\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"CON\",\n \"text\": \"Contract\"\n },\n {\n \"value\": \"FRL\",\n \"text\": \"Freelance\"\n },\n {\n \"value\": \"OTH\",\n \"text\": \"Others\"\n },\n {\n \"value\": \"PER\",\n \"text\": \"Permanent\"\n },\n {\n \"value\": \"PRT\",\n \"text\": \"Part Time\"\n },\n {\n \"value\": \"TMP\",\n \"text\": \"Temporary\"\n },\n {\n \"value\": \"UPROB\",\n \"text\": \"Under Probation\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentType\",\n \"displayName\": \"Employment Type\",\n \"placeholder\": \"Select Employment Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Private Employee\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Employer\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Housewife\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Retired\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Student\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Unemployed\"\n },\n {\n \"value\": \"07\",\n \"text\": \"Self-employed/Own Account Worker\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Government Employee\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Reporting Entity Employee\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Unpaid Family Worker\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"gender\",\n \"displayName\": \"Gender\",\n \"placeholder\": \"Select Gender\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"M\",\n \"text\": \"Male\"\n },\n {\n \"value\": \"F\",\n \"text\": \"Female\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"idType\",\n \"displayName\": \"ID Type\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"MyKad\",\n \"choices\": [\n {\n \"value\": \"MK\",\n \"text\": \"MyKad\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"lengthOfServiceMonth\",\n \"displayName\": \"Length of Service (Months)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"lengthOfServiceYear\",\n \"displayName\": \"Length of Service (Years)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"mailingBillingAddressInd\",\n \"displayName\": \"Preferred Mailing Address\",\n \"placeholder\": \"Select Preferred Mailing Address\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"O\",\n \"text\": \"Office\"\n },\n {\n \"value\": \"R\",\n \"text\": \"Residence\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"maritalStatus\",\n \"displayName\": \"Marital Status\",\n \"placeholder\": \"Select Marital Status\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"S\",\n \"text\": \"Single\"\n },\n {\n \"value\": \"M\",\n \"text\": \"Married\"\n },\n {\n \"value\": \"W\",\n \"text\": \"Widowed\"\n },\n {\n \"value\": \"D\",\n \"text\": \"Divorced\"\n },\n {\n \"value\": \"E\",\n \"text\": \"Separated\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"monthlyGrossIncome\",\n \"displayName\": \"Monthly Gross Income\",\n \"placeholder\": \"E.g. 6000\",\n \"visibleIf\": \"{employmentType} anyof ['01', '07', '08', '09', '10']\",\n \"type\": \"text\",\n \"maxLength\": 15,\n \"inputType\": \"number\",\n \"min\": 2000,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d+(\\\\.\\\\d+)?$\",\n \"text\": \"Please enter a valid non-negative number.\"\n },\n {\n \"type\": \"expression\",\n \"expression\": \"{monthlyGrossIncome} >= 2000\",\n \"text\": \"Income must be at least RM 2000.\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"monthlyNetIncome\",\n \"displayName\": \"Monthly Net Income\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"nationality\",\n \"displayName\": \"Nationality\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"noOfDependants\",\n \"displayName\": \"Number of Dependants\",\n \"placeholder\": \"Number Of Dependants\",\n \"type\": \"text\",\n \"startWithNewLine\": false,\n \"maxLength\": 3,\n \"inputType\": \"number\",\n \"min\": 0,\n \"max\": 99,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number between 0 and 99.\",\n \"regex\": \"^[0-9][0-9]?$\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"occupation\",\n \"displayName\": \"Occupation\",\n \"placeholder\": \"Select Occupation\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"001\",\n \"text\": \"Accountant\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Army Officer\"\n },\n {\n \"value\": \"007\",\n \"text\": \"Assistant Director\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Assistant Manager\"\n },\n {\n \"value\": \"009\",\n \"text\": \"Auditor\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Baker\"\n },\n {\n \"value\": \"011\",\n \"text\": \"Beautician\"\n },\n {\n \"value\": \"012\",\n \"text\": \"Broker\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Business Partner\"\n },\n {\n \"value\": \"014\",\n \"text\": \"Businessman/Businesswoman\"\n },\n {\n \"value\": \"015\",\n \"text\": \"Carpenter\"\n },\n {\n \"value\": \"016\",\n \"text\": \"Cashier\"\n },\n {\n \"value\": \"017\",\n \"text\": \"CEO\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Chairman\"\n },\n {\n \"value\": \"019\",\n \"text\": \"Chief Accountant\"\n },\n {\n \"value\": \"020\",\n \"text\": \"Chief Auditor\"\n },\n {\n \"value\": \"022\",\n \"text\": \"Co-Director\"\n },\n {\n \"value\": \"023\",\n \"text\": \"Consultant\"\n },\n {\n \"value\": \"024\",\n \"text\": \"Contractor\"\n },\n {\n \"value\": \"025\",\n \"text\": \"Financial Controller\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Coordinator\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Copywriter\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Dealer/Distributor\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Dentist\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Despatch\"\n },\n {\n \"value\": \"032\",\n \"text\": \"Detective\"\n },\n {\n \"value\": \"034\",\n \"text\": \"Diplomat\"\n },\n {\n \"value\": \"035\",\n \"text\": \"Director\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Doctor\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Electrician\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Executive\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Executive Director\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Exporter\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Farmer\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Foreman\"\n },\n {\n \"value\": \"045\",\n \"text\": \"Gardener\"\n },\n {\n \"value\": \"046\",\n \"text\": \"General Manager\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Goldsmith\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Hairdresser\"\n },\n {\n \"value\": \"049\",\n \"text\": \"Hawker\"\n },\n {\n \"value\": \"050\",\n \"text\": \"Housewife\"\n },\n {\n \"value\": \"051\",\n \"text\": \"Homemaker\"\n },\n {\n \"value\": \"053\",\n \"text\": \"Investor\"\n },\n {\n \"value\": \"054\",\n \"text\": \"Jeweller\"\n },\n {\n \"value\": \"055\",\n \"text\": \"Judge\"\n },\n {\n \"value\": \"057\",\n \"text\": \"Lawyer/Barrister/Solicitor\"\n },\n {\n \"value\": \"058\",\n \"text\": \"Lender\"\n },\n {\n \"value\": \"060\",\n \"text\": \"Managing Director\"\n },\n {\n \"value\": \"061\",\n \"text\": \"Manufacturer\"\n },\n {\n \"value\": \"063\",\n \"text\": \"Money Lender\"\n },\n {\n \"value\": \"064\",\n \"text\": \"Money-Changer\"\n },\n {\n \"value\": \"068\",\n \"text\": \"Owner/Co-Owner\"\n },\n {\n \"value\": \"070\",\n \"text\": \"Partner\"\n },\n {\n \"value\": \"071\",\n \"text\": \"Pastor\"\n },\n {\n \"value\": \"072\",\n \"text\": \"Physician\"\n },\n {\n \"value\": \"073\",\n \"text\": \"Plumber\"\n },\n {\n \"value\": \"075\",\n \"text\": \"Principal\"\n },\n {\n \"value\": \"076\",\n \"text\": \"Programmer\"\n },\n {\n \"value\": \"077\",\n \"text\": \"Quantity Surveyor\"\n },\n {\n \"value\": \"078\",\n \"text\": \"Remiser\"\n },\n {\n \"value\": \"079\",\n \"text\": \"Retailer\"\n },\n {\n \"value\": \"080\",\n \"text\": \"Retiree\"\n },\n {\n \"value\": \"082\",\n \"text\": \"Secretary\"\n },\n {\n \"value\": \"083\",\n \"text\": \"Self-Employed\"\n },\n {\n \"value\": \"084\",\n \"text\": \"Smallholder\"\n },\n {\n \"value\": \"085\",\n \"text\": \"Stockbroker\"\n },\n {\n \"value\": \"086\",\n \"text\": \"Store-Keeper\"\n },\n {\n \"value\": \"087\",\n \"text\": \"Student\"\n },\n {\n \"value\": \"088\",\n \"text\": \"Sub-contractor\"\n },\n {\n \"value\": \"090\",\n \"text\": \"Supplier\"\n },\n {\n \"value\": \"091\",\n \"text\": \"Tailor/Dressmaker\"\n },\n {\n \"value\": \"094\",\n \"text\": \"Tourist Guide\"\n },\n {\n \"value\": \"095\",\n \"text\": \"Trader\"\n },\n {\n \"value\": \"096\",\n \"text\": \"Valuer\"\n },\n {\n \"value\": \"097\",\n \"text\": \"Vice President\"\n },\n {\n \"value\": \"098\",\n \"text\": \"Waiter/Waitress\"\n },\n {\n \"value\": \"099\",\n \"text\": \"Welder\"\n },\n {\n \"value\": \"100\",\n \"text\": \"Wholesaler\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Fisherman\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Grocer\"\n },\n {\n \"value\": \"104\",\n \"text\": \"Unemployed\"\n },\n {\n \"value\": \"105\",\n \"text\": \"Babysitter\"\n },\n {\n \"value\": \"107\",\n \"text\": \"Sole Proprietor\"\n },\n {\n \"value\": \"108\",\n \"text\": \"Politician\"\n },\n {\n \"value\": \"109\",\n \"text\": \"Actor\"\n },\n {\n \"value\": \"110\",\n \"text\": \"Adjusters\"\n },\n {\n \"value\": \"111\",\n \"text\": \"Air Hostess\"\n },\n {\n \"value\": \"112\",\n \"text\": \"Aquaculture\"\n },\n {\n \"value\": \"115\",\n \"text\": \"Athlete\"\n },\n {\n \"value\": \"116\",\n \"text\": \"Auctioneer\"\n },\n {\n \"value\": \"117\",\n \"text\": \"Author\"\n },\n {\n \"value\": \"118\",\n \"text\": \"Bell Boy\"\n },\n {\n \"value\": \"119\",\n \"text\": \"Biographer\"\n },\n {\n \"value\": \"120\",\n \"text\": \"Butcher\"\n },\n {\n \"value\": \"121\",\n \"text\": \"Catering\"\n },\n {\n \"value\": \"122\",\n \"text\": \"Chargeman\"\n },\n {\n \"value\": \"123\",\n \"text\": \"Chemist, Physicist\"\n },\n {\n \"value\": \"124\",\n \"text\": \"Choreographer/Dancer\"\n },\n {\n \"value\": \"125\",\n \"text\": \"Circus Performer\"\n },\n {\n \"value\": \"126\",\n \"text\": \"Civil Servant\"\n },\n {\n \"value\": \"127\",\n \"text\": \"Clergy\"\n },\n {\n \"value\": \"128\",\n \"text\": \"Coach\"\n },\n {\n \"value\": \"129\",\n \"text\": \"Composer\"\n },\n {\n \"value\": \"130\",\n \"text\": \"Decorator\"\n },\n {\n \"value\": \"131\",\n \"text\": \"Direct Sales\"\n },\n {\n \"value\": \"132\",\n \"text\": \"Economist\"\n },\n {\n \"value\": \"133\",\n \"text\": \"Editor\"\n },\n {\n \"value\": \"135\",\n \"text\": \"Fireman\"\n },\n {\n \"value\": \"136\",\n \"text\": \"Fishmonger\"\n },\n {\n \"value\": \"137\",\n \"text\": \"Florist\"\n },\n {\n \"value\": \"138\",\n \"text\": \"Forestry\"\n },\n {\n \"value\": \"139\",\n \"text\": \"Freight Forwarding Services\"\n },\n {\n \"value\": \"140\",\n \"text\": \"General Worker\"\n },\n {\n \"value\": \"142\",\n \"text\": \"Hunter\"\n },\n {\n \"value\": \"143\",\n \"text\": \"Journalist\"\n },\n {\n \"value\": \"144\",\n \"text\": \"Launderer/Dry Cleaner\"\n },\n {\n \"value\": \"145\",\n \"text\": \"Librarian/Curator\"\n },\n {\n \"value\": \"146\",\n \"text\": \"Locksmith\"\n },\n {\n \"value\": \"147\",\n \"text\": \"Magician\"\n },\n {\n \"value\": \"149\",\n \"text\": \"Model\"\n },\n {\n \"value\": \"150\",\n \"text\": \"Newscaster\"\n },\n {\n \"value\": \"151\",\n \"text\": \"NGO Staff/Volunteer\"\n },\n {\n \"value\": \"152\",\n \"text\": \"Nursery Worker & Gardener\"\n },\n {\n \"value\": \"154\",\n \"text\": \"Pharmacist\"\n },\n {\n \"value\": \"155\",\n \"text\": \"Photographer\"\n },\n {\n \"value\": \"156\",\n \"text\": \"Postman\"\n },\n {\n \"value\": \"157\",\n \"text\": \"Priest/Nun\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Promoter\"\n },\n {\n \"value\": \"159\",\n \"text\": \"Proof Reader\"\n },\n {\n \"value\": \"160\",\n \"text\": \"Psychiatrist\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Psychologist\"\n },\n {\n \"value\": \"162\",\n \"text\": \"Sailor\"\n },\n {\n \"value\": \"163\",\n \"text\": \"Security/Bodyguard\"\n },\n {\n \"value\": \"164\",\n \"text\": \"Shop Assistant\"\n },\n {\n \"value\": \"165\",\n \"text\": \"Singer\"\n },\n {\n \"value\": \"166\",\n \"text\": \"Social Worker\"\n },\n {\n \"value\": \"168\",\n \"text\": \"Town Planner\"\n },\n {\n \"value\": \"169\",\n \"text\": \"Translator/Interpreter\"\n },\n {\n \"value\": \"170\",\n \"text\": \"Upholsterer\"\n },\n {\n \"value\": \"171\",\n \"text\": \"Warden\"\n },\n {\n \"value\": \"172\",\n \"text\": \"Bank Officer\"\n },\n {\n \"value\": \"175\",\n \"text\": \"Astronaut/Astronomer/Astrologer\"\n },\n {\n \"value\": \"176\",\n \"text\": \"President\"\n },\n {\n \"value\": \"200\",\n \"text\": \"Production and Manufacturing Managers\"\n },\n {\n \"value\": \"201\",\n \"text\": \"Hospitality, Retail and Other Services Managers\"\n },\n {\n \"value\": \"202\",\n \"text\": \"Information and Communications Technology Managers\"\n },\n {\n \"value\": \"203\",\n \"text\": \"Services Managers\"\n },\n {\n \"value\": \"204\",\n \"text\": \"Meteorologists and Seismologists\"\n },\n {\n \"value\": \"205\",\n \"text\": \"Geologists and Geophysicists\"\n },\n {\n \"value\": \"206\",\n \"text\": \"Farming, Forestry and Fisheries Advisers\"\n },\n {\n \"value\": \"207\",\n \"text\": \"Other Life Science Professionals\"\n },\n {\n \"value\": \"208\",\n \"text\": \"Landscape Architects\"\n },\n {\n \"value\": \"209\",\n \"text\": \"Product and Garment Designers\"\n },\n {\n \"value\": \"210\",\n \"text\": \"Graphic and Multimedia Designers\"\n },\n {\n \"value\": \"211\",\n \"text\": \"Ships Engineers\"\n },\n {\n \"value\": \"212\",\n \"text\": \"Aircraft Pilots and Related Professionals\"\n },\n {\n \"value\": \"213\",\n \"text\": \"Other Ship, Aircraft and Train/Locomotive Controllers\"\n },\n {\n \"value\": \"214\",\n \"text\": \"University and Higher Education Teachers\"\n },\n {\n \"value\": \"215\",\n \"text\": \"Vocational Education Teachers\"\n },\n {\n \"value\": \"216\",\n \"text\": \"Secondary Education Teachers\"\n },\n {\n \"value\": \"217\",\n \"text\": \"Primary School and Early Childhood Teachers\"\n },\n {\n \"value\": \"218\",\n \"text\": \"Music, Arts and Performing Arts Teachers\"\n },\n {\n \"value\": \"219\",\n \"text\": \"Language Teachers\"\n },\n {\n \"value\": \"220\",\n \"text\": \"Technology Skill and Technical Trainers\"\n },\n {\n \"value\": \"221\",\n \"text\": \"System Analysts\"\n },\n {\n \"value\": \"222\",\n \"text\": \"Web and Multimedia Developers\"\n },\n {\n \"value\": \"223\",\n \"text\": \"Software and Applications Developers and Analysts n.e.c.\"\n },\n {\n \"value\": \"224\",\n \"text\": \"Database Designers and Administrators\"\n },\n {\n \"value\": \"225\",\n \"text\": \"Information Technology System Administrators\"\n },\n {\n \"value\": \"226\",\n \"text\": \"Other Database and Network Professionals\"\n },\n {\n \"value\": \"227\",\n \"text\": \"Legal Professionals n.e.c.\"\n },\n {\n \"value\": \"228\",\n \"text\": \"Sociologists, Anthropologists and Related Professionals\"\n },\n {\n \"value\": \"229\",\n \"text\": \"Philosophers, Historians and Political Scientists\"\n },\n {\n \"value\": \"230\",\n \"text\": \"Film, Stage and Related Directors and Producers\"\n },\n {\n \"value\": \"231\",\n \"text\": \"Animals Keepers and Trainers\"\n },\n {\n \"value\": \"232\",\n \"text\": \"Professional Customs and Border Inspectors\"\n },\n {\n \"value\": \"233\",\n \"text\": \"Professional Taxation and Excise Officials\"\n },\n {\n \"value\": \"234\",\n \"text\": \"Professional Government Social Benefits Officials\"\n },\n {\n \"value\": \"235\",\n \"text\": \"Professional Government Licensing Officials\"\n },\n {\n \"value\": \"236\",\n \"text\": \"Professional Civil Defence Officials\"\n },\n {\n \"value\": \"237\",\n \"text\": \"Physical and Engineering Science Technicians\"\n },\n {\n \"value\": \"238\",\n \"text\": \"Mining, Manufacturing and Construction Supervisors\"\n },\n {\n \"value\": \"239\",\n \"text\": \"Process Control Technicians\"\n },\n {\n \"value\": \"240\",\n \"text\": \"Life Science Technicians and Related Associate Professionals\"\n },\n {\n \"value\": \"241\",\n \"text\": \"Ship, Aircraft and Train Technicians\"\n },\n {\n \"value\": \"242\",\n \"text\": \"Nuclear Science Associate Professionals\"\n },\n {\n \"value\": \"243\",\n \"text\": \"Medical and Pharmaceutical Technicians\"\n },\n {\n \"value\": \"244\",\n \"text\": \"Traditional and Complementary Medicine Associate Professionals\"\n },\n {\n \"value\": \"245\",\n \"text\": \"Veterinary Technicians and Assistants\"\n },\n {\n \"value\": \"246\",\n \"text\": \"Dental Assistants and Therapists\"\n },\n {\n \"value\": \"247\",\n \"text\": \"Medical Records and Health Information Technicians\"\n },\n {\n \"value\": \"248\",\n \"text\": \"Dispensing Opticians\"\n },\n {\n \"value\": \"249\",\n \"text\": \"Physiotherapy Technicians and Assistants\"\n },\n {\n \"value\": \"250\",\n \"text\": \"Medical Assistants\"\n },\n {\n \"value\": \"251\",\n \"text\": \"Health Associate Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"252\",\n \"text\": \"Statistical, Mathematical and Actuarial Associate Professionals\"\n },\n {\n \"value\": \"253\",\n \"text\": \"Insurance Agent\"\n },\n {\n \"value\": \"254\",\n \"text\": \"Commercial Sales Agent\"\n },\n {\n \"value\": \"255\",\n \"text\": \"Buyers\"\n },\n {\n \"value\": \"256\",\n \"text\": \"Administrative Associate Professionals\"\n },\n {\n \"value\": \"257\",\n \"text\": \"Administrative and Executive Secretaries\"\n },\n {\n \"value\": \"258\",\n \"text\": \"Other Administrative and Specialized Associate Professionals\"\n },\n {\n \"value\": \"259\",\n \"text\": \"Legal Associate Professionals\"\n },\n {\n \"value\": \"260\",\n \"text\": \"Social and Religious Associate Professionals\"\n },\n {\n \"value\": \"261\",\n \"text\": \"Fitness and Recreation Instructors and Program Leaders\"\n },\n {\n \"value\": \"262\",\n \"text\": \"Gallery, Museum and Library Technicians\"\n },\n {\n \"value\": \"263\",\n \"text\": \"Cultural Associate Professionals\"\n },\n {\n \"value\": \"264\",\n \"text\": \"Artistic and Cultural Associate Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"265\",\n \"text\": \"Customs and Border Inspector Associate Professionals\"\n },\n {\n \"value\": \"266\",\n \"text\": \"Taxation and Excise Official Associate Professionals\"\n },\n {\n \"value\": \"267\",\n \"text\": \"Government Social Benefit Official Associate Professionals\"\n },\n {\n \"value\": \"268\",\n \"text\": \"Government Licensing Official Associate Professionals\"\n },\n {\n \"value\": \"269\",\n \"text\": \"Civil Defence Associate Professionals\"\n },\n {\n \"value\": \"270\",\n \"text\": \"General Office Clerks\"\n },\n {\n \"value\": \"271\",\n \"text\": \"Data Entry Clerks\"\n },\n {\n \"value\": \"272\",\n \"text\": \"Bank Tellers and Related Clerks\"\n },\n {\n \"value\": \"273\",\n \"text\": \"Travel Consultants and Related Clerks\"\n },\n {\n \"value\": \"274\",\n \"text\": \"Contact/Call Centre Information Clerks\"\n },\n {\n \"value\": \"275\",\n \"text\": \"Telephone Switchboard Operators\"\n },\n {\n \"value\": \"276\",\n \"text\": \"Receptionists\"\n },\n {\n \"value\": \"277\",\n \"text\": \"Enquiry Clerks\"\n },\n {\n \"value\": \"278\",\n \"text\": \"Numerical and Material Recording Clerks\"\n },\n {\n \"value\": \"279\",\n \"text\": \"Transport Conductors\"\n },\n {\n \"value\": \"280\",\n \"text\": \"Cooks\"\n },\n {\n \"value\": \"281\",\n \"text\": \"Building and Housekeeping Supervisors\"\n },\n {\n \"value\": \"282\",\n \"text\": \"Street Food Salespersons\"\n },\n {\n \"value\": \"283\",\n \"text\": \"Sales Demonstrators\"\n },\n {\n \"value\": \"284\",\n \"text\": \"Teachers Aide\"\n },\n {\n \"value\": \"285\",\n \"text\": \"Personal Care Workers in Health Services Not Elsewhere Classified\"\n },\n {\n \"value\": \"286\",\n \"text\": \"Immigration/Custom Officers and Assistants\"\n },\n {\n \"value\": \"287\",\n \"text\": \"Protective Services Workers n.e.c.\"\n },\n {\n \"value\": \"288\",\n \"text\": \"Livestock and Dairy Producers\"\n },\n {\n \"value\": \"289\",\n \"text\": \"Animal Producers and Related Workers Not Elsewhere Classified\"\n },\n {\n \"value\": \"290\",\n \"text\": \"Mixed Crop and Animal Producers\"\n },\n {\n \"value\": \"291\",\n \"text\": \"Subsistence Farmers, Fishermen, Hunters and Gatherers\"\n },\n {\n \"value\": \"292\",\n \"text\": \"House Builders\"\n },\n {\n \"value\": \"293\",\n \"text\": \"Air Conditioning and Refrigeration Mechanics\"\n },\n {\n \"value\": \"294\",\n \"text\": \"Other Building Finishers and Related Trades Workers\"\n },\n {\n \"value\": \"295\",\n \"text\": \"Spray Painters and Varnishers\"\n },\n {\n \"value\": \"296\",\n \"text\": \"Building Structure Cleaners\"\n },\n {\n \"value\": \"297\",\n \"text\": \"Metal Moulders and Coremakers\"\n },\n {\n \"value\": \"298\",\n \"text\": \"Other Sheet and Structural Metal Workers, Moulders, Welders and Related Workers\"\n },\n {\n \"value\": \"299\",\n \"text\": \"Metal Working Machine Tool Setters and Operators\"\n },\n {\n \"value\": \"300\",\n \"text\": \"Aircraft Engine Mechanics and Repairers\"\n },\n {\n \"value\": \"301\",\n \"text\": \"Agricultural and Industrial Machinery Mechanics and Repairers\"\n },\n {\n \"value\": \"302\",\n \"text\": \"Bicycle and Related Repairers\"\n },\n {\n \"value\": \"303\",\n \"text\": \"Machinery Mechanics and Repairers Not Elsewhere Classified\"\n },\n {\n \"value\": \"304\",\n \"text\": \"Sign Writers, Decorative Painters, Engravers and Etchers\"\n },\n {\n \"value\": \"305\",\n \"text\": \"Pre-press Workers\"\n },\n {\n \"value\": \"306\",\n \"text\": \"Other Printing Trades Workers\"\n },\n {\n \"value\": \"307\",\n \"text\": \"Electrical Mechanics and Fitters\"\n },\n {\n \"value\": \"308\",\n \"text\": \"Electronics Mechanics and Servicers\"\n },\n {\n \"value\": \"309\",\n \"text\": \"Information and Communications Technology Installers and Services\"\n },\n {\n \"value\": \"310\",\n \"text\": \"Other Food Processing and Related Trades Workers\"\n },\n {\n \"value\": \"311\",\n \"text\": \"Woodworking-Machine Tool Setters and Operators\"\n },\n {\n \"value\": \"312\",\n \"text\": \"Other Wood Treaters, Cabinet-Makers and Related Trades Workers\"\n },\n {\n \"value\": \"313\",\n \"text\": \"Other Garment and Related Trades Workers\"\n },\n {\n \"value\": \"314\",\n \"text\": \"Other Craft and Related Workers\"\n },\n {\n \"value\": \"315\",\n \"text\": \"Stationary Plant and Machine Operators\"\n },\n {\n \"value\": \"316\",\n \"text\": \"Mechanical Machinery Assemblers\"\n },\n {\n \"value\": \"317\",\n \"text\": \"Assemblers Not Elsewhere Classified\"\n },\n {\n \"value\": \"318\",\n \"text\": \"Machine-Tool Setter-Operators\"\n },\n {\n \"value\": \"319\",\n \"text\": \"Locomotive Engine Drivers\"\n },\n {\n \"value\": \"320\",\n \"text\": \"Railway Brake, Signal and Switch Operators\"\n },\n {\n \"value\": \"321\",\n \"text\": \"Heavy Truck and Bus Drivers\"\n },\n {\n \"value\": \"322\",\n \"text\": \"Mobile Plant Operators\"\n },\n {\n \"value\": \"323\",\n \"text\": \"Mining and Construction Labourers\"\n },\n {\n \"value\": \"324\",\n \"text\": \"Hand and Pedal Vehicle Drivers\"\n },\n {\n \"value\": \"325\",\n \"text\": \"Animal-Drawn Machinery and Vehicle Drivers\"\n },\n {\n \"value\": \"326\",\n \"text\": \"Transport and Storage Labourers\"\n },\n {\n \"value\": \"327\",\n \"text\": \"Shelf Fillers\"\n },\n {\n \"value\": \"328\",\n \"text\": \"Food Preparation Assistant\"\n },\n {\n \"value\": \"329\",\n \"text\": \"Street and Related Sales and Services Workers\"\n },\n {\n \"value\": \"330\",\n \"text\": \"Refuse Workers and Other Elementary Workers\"\n },\n {\n \"value\": \"331\",\n \"text\": \"Nursing and Midwifery Associate Professionals\"\n },\n {\n \"value\": \"332\",\n \"text\": \"Police Officers - Protective Service Workers\"\n },\n {\n \"value\": \"333\",\n \"text\": \"Other Outside Labour Force\"\n },\n {\n \"value\": \"334\",\n \"text\": \"Financial and Investment Advisers\"\n },\n {\n \"value\": \"335\",\n \"text\": \"Business Services Agent\"\n },\n {\n \"value\": \"336\",\n \"text\": \"Health Care Assistants\"\n },\n {\n \"value\": \"337\",\n \"text\": \"Other Clerical Support Workers\"\n },\n {\n \"value\": \"338\",\n \"text\": \"Interior Designers and Decorators\"\n },\n {\n \"value\": \"339\",\n \"text\": \"Software Developers\"\n },\n {\n \"value\": \"340\",\n \"text\": \"Car, Van and Motorcycle Drivers\"\n },\n {\n \"value\": \"341\",\n \"text\": \"Engineering Professionals (including Electrotechnology)\"\n },\n {\n \"value\": \"342\",\n \"text\": \"Driving Instructors\"\n },\n {\n \"value\": \"343\",\n \"text\": \"Manufacturing Labourers\"\n },\n {\n \"value\": \"344\",\n \"text\": \"Administrative and Commercial Managers\"\n },\n {\n \"value\": \"345\",\n \"text\": \"Motor Vehicle Mechanics and Repairers\"\n },\n {\n \"value\": \"346\",\n \"text\": \"Nursing and Midwifery Professionals\"\n },\n {\n \"value\": \"347\",\n \"text\": \"Typist and Word Processor Operators\"\n },\n {\n \"value\": \"348\",\n \"text\": \"Painters and Related Workers\"\n },\n {\n \"value\": \"349\",\n \"text\": \"Police Officers\"\n },\n {\n \"value\": \"350\",\n \"text\": \"Stall and Market Salespersons\"\n },\n {\n \"value\": \"351\",\n \"text\": \"Shop Supervisors\"\n },\n {\n \"value\": \"352\",\n \"text\": \"Other Teaching Professionals\"\n },\n {\n \"value\": \"353\",\n \"text\": \"Information and Communications Technicians\"\n },\n {\n \"value\": \"354\",\n \"text\": \"Ships Deck Officers and Pilots\"\n },\n {\n \"value\": \"355\",\n \"text\": \"Chefs\"\n },\n {\n \"value\": \"356\",\n \"text\": \"Building Architects\"\n },\n {\n \"value\": \"357\",\n \"text\": \"Visual Artists\"\n },\n {\n \"value\": \"358\",\n \"text\": \"Creative and Performing Artists n.e.c.\"\n },\n {\n \"value\": \"359\",\n \"text\": \"Regulatory Government Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"360\",\n \"text\": \"Cleaners and Helpers\"\n },\n {\n \"value\": \"361\",\n \"text\": \"Optometrists and Ophthalmic Opticians\"\n },\n {\n \"value\": \"362\",\n \"text\": \"Mathematicians, Actuaries and Statisticians\"\n },\n {\n \"value\": \"363\",\n \"text\": \"Financial Analysts\"\n },\n {\n \"value\": \"364\",\n \"text\": \"Administrative Professional\"\n },\n {\n \"value\": \"365\",\n \"text\": \"Other Legislators and Senior Officials\"\n },\n {\n \"value\": \"366\",\n \"text\": \"Personal Assistant\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"preferredLanguage\",\n \"displayName\": \"Preferred Language\",\n \"placeholder\": \"Select Preferred Language\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"English\"\n },\n {\n \"value\": \" 02\",\n \"text\": \"Bahasa\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"race\",\n \"displayName\": \"Race\",\n \"placeholder\": \"Select Race\",\n \"type\": \"dropdown\",\n \"startWithNewLine\": false,\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Malaysian - Chinese\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Malaysian - Bumiputra - Malay\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Malaysian - Bumiputra - Non Malay\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Malaysian - Indian\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Malaysian - Other Race\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"relationshiptoContactName\",\n \"displayName\": \"Relationship to Contact Name\",\n \"type\": \"dropdown\",\n \"placeholder\": \"Relationship to contact Name\",\n \"choices\": [\n {\n \"value\": \"07\",\n \"text\": \"Father\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Mother\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Brother\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Sister\"\n },\n {\n \"value\": \"11\",\n \"text\": \"Spouse\"\n },\n {\n \"value\": \"12\",\n \"text\": \"Son\"\n },\n {\n \"value\": \"13\",\n \"text\": \"Daughter\"\n },\n {\n \"value\": \"14\",\n \"text\": \"Uncle\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Aunt\"\n },\n {\n \"value\": \"40\",\n \"text\": \"Relative\"\n }\n ],\n \"category\": \"8\"\n },\n {\n \"name\": \"residenceType\",\n \"displayName\": \"Residence Type\",\n \"placeholder\": \"Residence Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"PL0001\",\n \"text\": \"Own Property\"\n },\n {\n \"value\": \"PL0002\",\n \"text\": \"Mortgaged\"\n },\n {\n \"value\": \"PL0003\",\n \"text\": \"Employers\"\n },\n {\n \"value\": \"PL0004\",\n \"text\": \"Rented\"\n },\n {\n \"value\": \"PL0005\",\n \"text\": \"Parents\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"salutation\",\n \"displayName\": \"Salutation\",\n \"placeholder\": \"Select Salutation\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"002\",\n \"text\": \"CIK\"\n },\n {\n \"value\": \"004\",\n \"text\": \"DATIN\"\n },\n {\n \"value\": \"009\",\n \"text\": \"Datin Seri\"\n },\n {\n \"value\": \"011\",\n \"text\": \"DATO`\"\n },\n {\n \"value\": \"018\",\n \"text\": \"DATO SERI\"\n },\n {\n \"value\": \"023\",\n \"text\": \"DATUK\"\n },\n {\n \"value\": \"028\",\n \"text\": \"DOCTOR\"\n },\n {\n \"value\": \"033\",\n \"text\": \"ENCIK\"\n },\n {\n \"value\": \"043\",\n \"text\": \"DYTM\"\n },\n {\n \"value\": \"053\",\n \"text\": \"MADAM\"\n },\n {\n \"value\": \"061\",\n \"text\": \"MISS\"\n },\n {\n \"value\": \"062\",\n \"text\": \"MR\"\n },\n {\n \"value\": \"072\",\n \"text\": \"PUAN\"\n },\n {\n \"value\": \"075\",\n \"text\": \"PUAN SRI\"\n },\n {\n \"value\": \"079\",\n \"text\": \"TAN SRI\"\n },\n {\n \"value\": \"090\",\n \"text\": \"Toh Puan\"\n },\n {\n \"value\": \"102\",\n \"text\": \"YAM\"\n },\n {\n \"value\": \"151\",\n \"text\": \"DATO SRI\"\n },\n {\n \"value\": \"157\",\n \"text\": \"TYT TUN DATUK SERI PANGLIMA\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Ms\"\n },\n {\n \"value\": \"159\",\n \"text\": \"KDYTM\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"sourceOfWealth\",\n \"displayName\": \"Source of Wealth\",\n \"placeholder\": \"Source of Wealth\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Accumulated Saving\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Employment income\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Inheritance\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Trust Fund\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Retirement Income\"\n },\n {\n \"value\": \"06\",\n \"text\": \"EPF\"\n },\n {\n \"value\": \"07\",\n \"text\": \"Disposal of Assets/Shares\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Insurance Maturity/Surrender\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Return on investment\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Legal Settlement\"\n },\n {\n \"value\": \"11\",\n \"text\": \"Income from own business\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"statementType\",\n \"displayName\": \"Statement Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"E\",\n \"text\": \"Email\"\n },\n {\n \"value\": \"R\",\n \"text\": \"RHB Now\"\n }\n ],\n \"category\": \"10\"\n },\n {\n \"name\": \"subEmploymentSector\",\n \"displayName\": \"Sub Employment Sector\",\n \"placeholder\": \"Select Sub Employment Sector\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"0011\",\n \"text\": \"Accounting\"\n },\n {\n \"value\": \"0021\",\n \"text\": \"Actuarial / Statistic\"\n },\n {\n \"value\": \"0031\",\n \"text\": \"Advertising\"\n },\n {\n \"value\": \"0032\",\n \"text\": \"Public Relations\"\n },\n {\n \"value\": \"0041\",\n \"text\": \"Aerospace\"\n },\n {\n \"value\": \"0051\",\n \"text\": \"Agricultural / Chemicals / Forest Products\"\n },\n {\n \"value\": \"0052\",\n \"text\": \"Support activities to agriculture and post-harvest crops activities\"\n },\n {\n \"value\": \"0053\",\n \"text\": \"Growing paddy, sugar cane, vegetables and melons, roots, tubers, perennial crops\"\n },\n {\n \"value\": \"0054\",\n \"text\": \"Raising of animals\"\n },\n {\n \"value\": \"0055\",\n \"text\": \"Mixed farming\"\n },\n {\n \"value\": \"0056\",\n \"text\": \"Fishing / aquaculture\"\n },\n {\n \"value\": \"0057\",\n \"text\": \"Plantation (e.g. oil palm, rubber tree, cocoa, coconut etc.)\"\n },\n {\n \"value\": \"0058\",\n \"text\": \"Silviculture and forestry activities\"\n },\n {\n \"value\": \"0059\",\n \"text\": \"Veterinary activities\"\n },\n {\n \"value\": \"0061\",\n \"text\": \"Architecture\"\n },\n {\n \"value\": \"0062\",\n \"text\": \"Engineering Services\"\n },\n {\n \"value\": \"0063\",\n \"text\": \"Engineering technical services\"\n },\n {\n \"value\": \"0064\",\n \"text\": \"Surveying Services\"\n },\n {\n \"value\": \"0071\",\n \"text\": \"Manufacture of Switchgear and Switchboard Apparatus\"\n },\n {\n \"value\": \"0072\",\n \"text\": \"Manufacture of Insulated wire and cable\"\n },\n {\n \"value\": \"0073\",\n \"text\": \"Manufacture of TV radio communication equipment\"\n },\n {\n \"value\": \"0074\",\n \"text\": \"Manufacture of Typesetting; Platemaking and Related Services\"\n },\n {\n \"value\": \"0075\",\n \"text\": \"Manufacture of Aircraft and related machinery\"\n },\n {\n \"value\": \"0076\",\n \"text\": \"Manufacture of Consumer goods & Pharmaceuticals\"\n },\n {\n \"value\": \"0077\",\n \"text\": \"Manufacture of jewellery, bijouterie & related articles\"\n },\n {\n \"value\": \"0078\",\n \"text\": \"Manufacture of machinery/ motor vehicles/ other transport equipment\"\n },\n {\n \"value\": \"0079\",\n \"text\": \"Manufacture of other fabricated metal product\"\n },\n {\n \"value\": \"0081\",\n \"text\": \"Aviation\"\n },\n {\n \"value\": \"0091\",\n \"text\": \"Radio, Television, and Consumer Electronics Stores\"\n },\n {\n \"value\": \"0092\",\n \"text\": \"Retail garments / apparels\"\n },\n {\n \"value\": \"0093\",\n \"text\": \"Household goods\"\n },\n {\n \"value\": \"0094\",\n \"text\": \"Furniture stores\"\n },\n {\n \"value\": \"0095\",\n \"text\": \"Retail sale of Chinaware Glassware\"\n },\n {\n \"value\": \"0096\",\n \"text\": \"Other retail trade (except for motor vehicle, f&b, health care and grocery)\"\n },\n {\n \"value\": \"0097\",\n \"text\": \"Other retail sale in non-specialized stores\"\n },\n {\n \"value\": \"0098\",\n \"text\": \"Retail sale of beer, wine and spirits\"\n },\n {\n \"value\": \"0099\",\n \"text\": \"Retail sale of tobacco products in specialized store\"\n },\n {\n \"value\": \"0101\",\n \"text\": \"Radio and Television Repair Shops\"\n },\n {\n \"value\": \"0102\",\n \"text\": \"Repair Shops and Related Services, N.E.C.;\"\n },\n {\n \"value\": \"0103\",\n \"text\": \"Refrigeration and Air-Conditioning Service and Repair Shops;\"\n },\n {\n \"value\": \"0104\",\n \"text\": \"Computer related activities;\"\n },\n {\n \"value\": \"0105\",\n \"text\": \"Electrical and Electronic Repair Shops, N.E.C\"\n },\n {\n \"value\": \"00110\",\n \"text\": \"Construction of other civil engineering projects (specialised)\"\n },\n {\n \"value\": \"0111\",\n \"text\": \"Building Construction\"\n },\n {\n \"value\": \"00111\",\n \"text\": \"Construction of other civil engineering projects (not specialised)\"\n },\n {\n \"value\": \"00112\",\n \"text\": \"Electrical, Installation and plumbing\"\n },\n {\n \"value\": \"00113\",\n \"text\": \"Demolition and site preparation\"\n },\n {\n \"value\": \"00114\",\n \"text\": \"Construction of utility projects\"\n },\n {\n \"value\": \"0114\",\n \"text\": \"Construction of Residential house (landed property)\"\n },\n {\n \"value\": \"00115\",\n \"text\": \"Other specialized construction activities\"\n },\n {\n \"value\": \"0115\",\n \"text\": \"Construction of other residentials\"\n },\n {\n \"value\": \"00116\",\n \"text\": \"Roofing, Siding, and Sheet Metal Work\"\n },\n {\n \"value\": \"0116\",\n \"text\": \"Construction of industrial building & factories\"\n },\n {\n \"value\": \"00117\",\n \"text\": \"Water, Sewer, Pipeline, and Communications and Power Line Construction\"\n },\n {\n \"value\": \"0117\",\n \"text\": \"Construction of office buildings\"\n },\n {\n \"value\": \"00118\",\n \"text\": \"Assembly and erection of prefabricated constructions on the site\"\n },\n {\n \"value\": \"0118\",\n \"text\": \"Construction of commercial complex\"\n },\n {\n \"value\": \"0119\",\n \"text\": \"Construction of infrastructure\"\n },\n {\n \"value\": \"00119\",\n \"text\": \"Construction of hotels\"\n },\n {\n \"value\": \"00120\",\n \"text\": \"Construction of condominiums/apartments\"\n },\n {\n \"value\": \"0121\",\n \"text\": \"Creative / Graphics\"\n },\n {\n \"value\": \"0131\",\n \"text\": \"Customer Service\"\n },\n {\n \"value\": \"0141\",\n \"text\": \"Higher Education with significant reliance on foreign/international students\"\n },\n {\n \"value\": \"0142\",\n \"text\": \"Higher Education with no significant reliance on foreign students\"\n },\n {\n \"value\": \"0143\",\n \"text\": \"Administration of the State and the economic and social policy of the community\"\n },\n {\n \"value\": \"0144\",\n \"text\": \"Public - Pre school, primary and secondary level education\"\n },\n {\n \"value\": \"0145\",\n \"text\": \"Private - Pre school, primary and secondary level education\"\n },\n {\n \"value\": \"0151\",\n \"text\": \"O&G - Upstream i.e. drilling, extraction, exploration and field services\"\n },\n {\n \"value\": \"0152\",\n \"text\": \"O&G - Other than Upstream\"\n },\n {\n \"value\": \"0153\",\n \"text\": \"Mining of iron ores and other non-ferrous metal ores\"\n },\n {\n \"value\": \"0154\",\n \"text\": \"Stonequarrying, clay & sand pits\"\n },\n {\n \"value\": \"155\",\n \"text\": \"Chemical & fertilizer mining\"\n },\n {\n \"value\": \"0155\",\n \"text\": \"Chemical & fertiliser mining\"\n },\n {\n \"value\": \"156\",\n \"text\": \"Other than oil and gas\"\n },\n {\n \"value\": \"0156\",\n \"text\": \"Other than oil and gas\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Engineering Services & Engineering Technical Services\"\n },\n {\n \"value\": \"0161\",\n \"text\": \"Engineering Services & Engineering Technical Services\"\n },\n {\n \"value\": \"171\",\n \"text\": \"Banking services\"\n },\n {\n \"value\": \"0171\",\n \"text\": \"Banking services\"\n },\n {\n \"value\": \"172\",\n \"text\": \"Finance services\"\n },\n {\n \"value\": \"0172\",\n \"text\": \"Finance services\"\n },\n {\n \"value\": \"0173\",\n \"text\": \"Insurance services\"\n },\n {\n \"value\": \"173\",\n \"text\": \"Insurance services\"\n },\n {\n \"value\": \"0174\",\n \"text\": \"Money lenders / Money Changers/ Remittance Services/ Money Transmitter/ Check Cashing Business/ Currency Exchange\"\n },\n {\n \"value\": \"0175\",\n \"text\": \"Pawnshop\"\n },\n {\n \"value\": \"0176\",\n \"text\": \"Activity of holding companies\"\n },\n {\n \"value\": \"0177\",\n \"text\": \"Financial leasing activities\"\n },\n {\n \"value\": \"0178\",\n \"text\": \"Finance - credit card services\"\n },\n {\n \"value\": \"0179\",\n \"text\": \"Consultancy services\"\n },\n {\n \"value\": \"0181\",\n \"text\": \"Freight Forwarding Services\"\n },\n {\n \"value\": \"0191\",\n \"text\": \"Government\"\n },\n {\n \"value\": \"0192\",\n \"text\": \"Public Service\"\n },\n {\n \"value\": \"0193\",\n \"text\": \"Military\"\n },\n {\n \"value\": \"0201\",\n \"text\": \"Tourism & Hospitality\"\n },\n {\n \"value\": \"0202\",\n \"text\": \"Recreational related services / activities\"\n },\n {\n \"value\": \"0211\",\n \"text\": \"Food Service Activities\"\n },\n {\n \"value\": \"0212\",\n \"text\": \"Organization Hotel, Lodging Houses, chalet, rest house, homestay, Inn, motels, rooming sporting, and recreational camp\"\n },\n {\n \"value\": \"0213\",\n \"text\": \"Other short term accommodation not mentioned above\"\n },\n {\n \"value\": \"0214\",\n \"text\": \"Restaurants, bars and canteens\"\n },\n {\n \"value\": \"0215\",\n \"text\": \"Restaurant, bar (other discretionary items and significant reliance on dine-in)\"\n },\n {\n \"value\": \"0216\",\n \"text\": \"Event catering and other food service activities\"\n },\n {\n \"value\": \"0217\",\n \"text\": \"Eating Places, Except Food Service, Institutional\"\n },\n {\n \"value\": \"0221\",\n \"text\": \"Human Resources\"\n },\n {\n \"value\": \"0231\",\n \"text\": \"Investment advisory services\"\n },\n {\n \"value\": \"0241\",\n \"text\": \"Journalist / Editor\"\n },\n {\n \"value\": \"0251\",\n \"text\": \"Motion picture, video and television programme production, sound recording and music publishing activities\"\n },\n {\n \"value\": \"0252\",\n \"text\": \"Programming and broadcasting activities\"\n },\n {\n \"value\": \"0253\",\n \"text\": \"News agency activities\"\n },\n {\n \"value\": \"0254\",\n \"text\": \"Media, culture and recreational activities\"\n },\n {\n \"value\": \"0261\",\n \"text\": \"Medical / Health Services\"\n },\n {\n \"value\": \"0262\",\n \"text\": \"Kidney Dialysis Centers\"\n },\n {\n \"value\": \"0263\",\n \"text\": \"Intermediate Care Facilities\"\n },\n {\n \"value\": \"0264\",\n \"text\": \"Home Health Care Services Facilities\"\n },\n {\n \"value\": \"0271\",\n \"text\": \"Non-Profit Organization\"\n },\n {\n \"value\": \"0281\",\n \"text\": \"Geology\"\n },\n {\n \"value\": \"0291\",\n \"text\": \"Pharmaceuticals products\"\n },\n {\n \"value\": \"0301\",\n \"text\": \"Real estate operations - shopping complex\"\n },\n {\n \"value\": \"0302\",\n \"text\": \"Appraisal services for real estate\"\n },\n {\n \"value\": \"0303\",\n \"text\": \"Real estate activities on a fee or contract basis\"\n },\n {\n \"value\": \"0304\",\n \"text\": \"Buying, selling, renting and operating of residential buildings or land\"\n },\n {\n \"value\": \"0305\",\n \"text\": \"Real estate operations - shophouse\"\n },\n {\n \"value\": \"0306\",\n \"text\": \"Real estate Operation - Industrial building & factories\"\n },\n {\n \"value\": \"0307\",\n \"text\": \"Real estate Operation - office building\"\n },\n {\n \"value\": \"0308\",\n \"text\": \"Real estate Operation - other commercial building\"\n },\n {\n \"value\": \"0309\",\n \"text\": \"Real estate operation not related above\"\n },\n {\n \"value\": \"0311\",\n \"text\": \"Administrative and Support Service Activities\"\n },\n {\n \"value\": \"0321\",\n \"text\": \"Social Work Activites\"\n },\n {\n \"value\": \"0331\",\n \"text\": \"Wired / Wireless telecommunications activities\"\n },\n {\n \"value\": \"0341\",\n \"text\": \"Tour operators\"\n },\n {\n \"value\": \"0342\",\n \"text\": \"Travel Agencies\"\n },\n {\n \"value\": \"0351\",\n \"text\": \"Rail transport\"\n },\n {\n \"value\": \"0352\",\n \"text\": \"Transportation Services, N.E.C.\"\n },\n {\n \"value\": \"0353\",\n \"text\": \"Service activities incidental to land / road transportation\"\n },\n {\n \"value\": \"0354\",\n \"text\": \"Scheduled and Non-Scheduled Air Transport (Transport of passengers by air over regular routes and on regular schedules)\"\n },\n {\n \"value\": \"0355\",\n \"text\": \"Aircrafts, Aircraft engine / parts, space vehicles\"\n },\n {\n \"value\": \"0356\",\n \"text\": \"Tanks and Tank components\"\n },\n {\n \"value\": \"0357\",\n \"text\": \"Warehousing and storage\"\n },\n {\n \"value\": \"0358\",\n \"text\": \"Water transport\"\n },\n {\n \"value\": \"0359\",\n \"text\": \"Other transportation support activities n.e.c. (e.g. arranging transportation services, terminal maintenance services, etc)\"\n },\n {\n \"value\": \"0361\",\n \"text\": \"Casinos including Junket Operators\"\n },\n {\n \"value\": \"0362\",\n \"text\": \"Karaoke lounges, internet cafe or video arcade\"\n },\n {\n \"value\": \"0363\",\n \"text\": \"Amusement and Recreation Services\"\n },\n {\n \"value\": \"0364\",\n \"text\": \"Membership Sports and Recreation Clubs\"\n },\n {\n \"value\": \"0365\",\n \"text\": \"Entertainment services\"\n },\n {\n \"value\": \"0366\",\n \"text\": \"Arts & Theatrical\"\n },\n {\n \"value\": \"0371\",\n \"text\": \"Electricty power generation\"\n },\n {\n \"value\": \"0372\",\n \"text\": \"Steam and air conditioning supply\"\n },\n {\n \"value\": \"0373\",\n \"text\": \"Water collection, treatment and supply\"\n },\n {\n \"value\": \"0381\",\n \"text\": \"Water Supply\"\n },\n {\n \"value\": \"0382\",\n \"text\": \"Sewerage\"\n },\n {\n \"value\": \"0383\",\n \"text\": \"Waste Management and Remediation Activities\"\n },\n {\n \"value\": \"0384\",\n \"text\": \"Recycling of non-metal (including rubber & textile fibre)\"\n },\n {\n \"value\": \"0385\",\n \"text\": \"Recycling of tin and other metal waste and scrap\"\n },\n {\n \"value\": \"0391\",\n \"text\": \"Activities of Households as Employers; Undifferentiated Goods and Services Producing Activities of Households for Own Use\"\n },\n {\n \"value\": \"0401\",\n \"text\": \"Activities of Extraterritorial Organisations and Bodies\"\n },\n {\n \"value\": \"0411\",\n \"text\": \"Unemployed/ Outside Labour Force\"\n },\n {\n \"value\": \"0421\",\n \"text\": \"Activities of membership organisations (Political/Religious/Trade Union)\"\n },\n {\n \"value\": \"0422\",\n \"text\": \"International Business Corporations and other similar entities\"\n },\n {\n \"value\": \"0423\",\n \"text\": \"Business Activities - Intermediary activities - trustee/ nominee/ agent OR Shell Companies\"\n },\n {\n \"value\": \"0424\",\n \"text\": \"Other Services\"\n },\n {\n \"value\": \"0425\",\n \"text\": \"Offshore Corporations (or their subsidiaries) and bank set up in tax and/or secrecy havens\"\n },\n {\n \"value\": \"0426\",\n \"text\": \"Building Cleaning and Maintenance Services, N.E.C.\"\n },\n {\n \"value\": \"0427\",\n \"text\": \"Detective, Guard, and Armored Car Services\"\n },\n {\n \"value\": \"0428\",\n \"text\": \"Rental, Leasing and Packaging ( tour operator, reservation services and related activities, Organisation of conventions and trade shows)\"\n },\n {\n \"value\": \"0429\",\n \"text\": \"Funeral Service and Crematories\"\n },\n {\n \"value\": \"0431\",\n \"text\": \"Legal Services\"\n },\n {\n \"value\": \"0441\",\n \"text\": \"Research & Experiemental Development Services\"\n },\n {\n \"value\": \"0451\",\n \"text\": \"Other Professional, scientific and Technical activities\"\n },\n {\n \"value\": \"00510\",\n \"text\": \"Hunting, trapping and related service activities\"\n },\n {\n \"value\": \"00511\",\n \"text\": \"Logging\"\n },\n {\n \"value\": \"00710\",\n \"text\": \"Manufacture of watches and clocks\"\n },\n {\n \"value\": \"0711\",\n \"text\": \"Manufacture of others\"\n },\n {\n \"value\": \"00711\",\n \"text\": \"Manufacture of others\"\n },\n {\n \"value\": \"0712\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"00712\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"0713\",\n \"text\": \"Manufacture of furniture\"\n },\n {\n \"value\": \"00713\",\n \"text\": \"Manufacture of furniture\"\n },\n {\n \"value\": \"0714\",\n \"text\": \"Manufacture of packaging and stretch film\"\n },\n {\n \"value\": \"00714\",\n \"text\": \"Manufacture of packaging and stretch film\"\n },\n {\n \"value\": \"0715\",\n \"text\": \"Manufacture of plastic product\"\n },\n {\n \"value\": \"00715\",\n \"text\": \"Manufacture of plastic product\"\n },\n {\n \"value\": \"0716\",\n \"text\": \"Manufacture of rubber product\"\n },\n {\n \"value\": \"00716\",\n \"text\": \"Manufacture of rubber product\"\n },\n {\n \"value\": \"00717\",\n \"text\": \"Manufacture of processed food or beverages products\"\n },\n {\n \"value\": \"0717\",\n \"text\": \"Manufacture of processed food or beverages products\"\n },\n {\n \"value\": \"00718\",\n \"text\": \"Manufacture of wood product except furniture\"\n },\n {\n \"value\": \"0718\",\n \"text\": \"Manufacture of wood product except furniture\"\n },\n {\n \"value\": \"00719\",\n \"text\": \"Manufacture of refined petroleum products\"\n },\n {\n \"value\": \"0719\",\n \"text\": \"Manufacture of refined petroleum products\"\n },\n {\n \"value\": \"00720\",\n \"text\": \"Manufacture of chemicals and chemical products (except for refined petroleum products)\"\n },\n {\n \"value\": \"0720\",\n \"text\": \"Manufacture of chemicals and chemical products (except for refined petroleum products)\"\n },\n {\n \"value\": \"00721\",\n \"text\": \"Manufacture of electrical equipment or components\"\n },\n {\n \"value\": \"00722\",\n \"text\": \"Manufacture of dairy food\"\n },\n {\n \"value\": \"00723\",\n \"text\": \"Manufacture of grain mills\"\n },\n {\n \"value\": \"00724\",\n \"text\": \"Manufacture of other food product (except dairy food and grain mills, starches and starch products)\"\n },\n {\n \"value\": \"00725\",\n \"text\": \"Manufacture of vegetable and animal oils and fats\"\n },\n {\n \"value\": \"00726\",\n \"text\": \"Manufacture of textiles\"\n },\n {\n \"value\": \"00727\",\n \"text\": \"Manufacture of footwear\"\n },\n {\n \"value\": \"00728\",\n \"text\": \"Manufacture of building materials\"\n },\n {\n \"value\": \"00729\",\n \"text\": \"Manufacture of glass and glass products\"\n },\n {\n \"value\": \"00730\",\n \"text\": \"Manufacture of mineral products\"\n },\n {\n \"value\": \"00731\",\n \"text\": \"Manufacture of medical and dental instruments and supplies\"\n },\n {\n \"value\": \"00732\",\n \"text\": \"Manufacturing of automobile or autopart\"\n },\n {\n \"value\": \"00733\",\n \"text\": \"Manufacture of paper and paper products\"\n },\n {\n \"value\": \"00734\",\n \"text\": \"Manufacture of gas and distribution of gaseous fuels through mains\"\n },\n {\n \"value\": \"00735\",\n \"text\": \"Manufacture of fertiliser pesticides\"\n },\n {\n \"value\": \"00736\",\n \"text\": \"Production of natural mineral water and other bottled water\"\n },\n {\n \"value\": \"00901\",\n \"text\": \"Retail trade not in stores, stalls or markets\"\n },\n {\n \"value\": \"00902\",\n \"text\": \"Retail sale via stalls and markets\"\n },\n {\n \"value\": \"00903\",\n \"text\": \"Wholesale of beer, wine and spirits\"\n },\n {\n \"value\": \"00904\",\n \"text\": \"Wholesale of tobacco, cigar, cigarettes\"\n },\n {\n \"value\": \"00905\",\n \"text\": \"Wholesale of construction and civil engineering machinery and equipment\"\n },\n {\n \"value\": \"00906\",\n \"text\": \"Wholesale of other machinery for use in industry, trade and navigation and other services n.e.c.\"\n },\n {\n \"value\": \"00907\",\n \"text\": \"Motor Vehicle dealer (Used)\"\n },\n {\n \"value\": \"00908\",\n \"text\": \"Jewel / Gem / Precious Metal\"\n },\n {\n \"value\": \"00909\",\n \"text\": \"Automobile and autoparts\"\n },\n {\n \"value\": \"00910\",\n \"text\": \"Hardware / construction material\"\n },\n {\n \"value\": \"00911\",\n \"text\": \"Electrical products\"\n },\n {\n \"value\": \"00912\",\n \"text\": \"Chemical / Petrochemical\"\n },\n {\n \"value\": \"00913\",\n \"text\": \"Cosmetics\"\n },\n {\n \"value\": \"00914\",\n \"text\": \"Import / Export\"\n },\n {\n \"value\": \"00915\",\n \"text\": \"Medical related products\"\n },\n {\n \"value\": \"00916\",\n \"text\": \"Automatic Merchandising Machine Operators\"\n },\n {\n \"value\": \"00917\",\n \"text\": \"Direct Selling Establishments\"\n },\n {\n \"value\": \"00918\",\n \"text\": \"Liquefied Petroleum Gas (Bottled Gas) Dealers\"\n },\n {\n \"value\": \"00919\",\n \"text\": \"Motor Vehicle Dealers (New )\"\n },\n {\n \"value\": \"00920\",\n \"text\": \"Office equipment\"\n },\n {\n \"value\": \"00921\",\n \"text\": \"Stationery, books, periodical and newspapers\"\n },\n {\n \"value\": \"00922\",\n \"text\": \"Retail - Petrol Station\"\n },\n {\n \"value\": \"00923\",\n \"text\": \"Retail / wholesaler other than above\"\n },\n {\n \"value\": \"01700\",\n \"text\": \"Other monetary intermediation\"\n },\n {\n \"value\": \"1700\",\n \"text\": \"Other monetary intermediation\"\n },\n {\n \"value\": \"01701\",\n \"text\": \"Research & Experiemental Development Services\"\n },\n {\n \"value\": \"1701\",\n \"text\": \"Research & Experimental Development Services\"\n },\n {\n \"value\": \"01702\",\n \"text\": \"licensed money lending activities, co-operative with credit functions and factoring companies\"\n },\n {\n \"value\": \"1702\",\n \"text\": \"licensed money lending activities, co-operative with credit functions and factoring companies\"\n },\n {\n \"value\": \"03510\",\n \"text\": \"Postal and courier activities\"\n },\n {\n \"value\": \"04201\",\n \"text\": \"Beauty Shops\"\n },\n {\n \"value\": \"04202\",\n \"text\": \"Barber Shops\"\n },\n {\n \"value\": \"04203\",\n \"text\": \"Libraries, archives, museums and other cultural activities\"\n },\n {\n \"value\": \"04204\",\n \"text\": \"Reupholstery and Furniture Repair\"\n },\n {\n \"value\": \"04205\",\n \"text\": \"Armature Rewinding Shops\"\n },\n {\n \"value\": \"04206\",\n \"text\": \"Welding Repair\"\n },\n {\n \"value\": \"04207\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"04208\",\n \"text\": \"Renting and leasing of motor vehicle, household good, machinery, equipment and tangible goods\"\n },\n {\n \"value\": \"04209\",\n \"text\": \"Business management consultancy services\"\n },\n {\n \"value\": \"04210\",\n \"text\": \"Activties of collection agencies / credit bureaus\"\n },\n {\n \"value\": \"04211\",\n \"text\": \"Repair of bicycles\"\n },\n {\n \"value\": \"04212\",\n \"text\": \"Repair of footwear and other leather goods\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"dateApplied\",\n \"displayName\": \"Date Applied\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"11\"\n },\n {\n \"name\": \"entity\",\n \"displayName\": \"Entity\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"C\",\n \"text\": \"Conventional\"\n },\n {\n \"value\": \"I\",\n \"text\": \"Islamic\"\n }\n ],\n \"category\": \"10\"\n },\n {\n \"name\": \"facilityPackage\",\n \"displayName\": \"Facility Package\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"purposeOfAcquisition\",\n \"displayName\": \"Purpose of Acquisition\",\n \"placeholder\": \"Select your Purpose of Acquisition\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Internal Use\",\n \"text\": \"Internal Use\"\n },\n {\n \"value\": \"Tender\",\n \"text\": \"Tender\"\n },\n {\n \"value\": \"Service\",\n \"text\": \"Service\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityPurpose\",\n \"displayName\": \"Facility Purpose\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"Refinancing of property\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Staff ASB - Untuk Kegunaan Sendiri dalam Pelaburan ASB\"\n },\n {\n \"value\": \"02\",\n \"text\": \"ASB - Untuk Kegunaan Sendiri dalam pelaburan ASB\"\n },\n {\n \"value\": \"002\",\n \"text\": \"Finance purchase of property/land for INVESTMENT.\"\n },\n {\n \"value\": \"03\",\n \"text\": \"ASB2 - Untuk Kegunaan Sendiri dalam Pelaburan ASB2\"\n },\n {\n \"value\": \"003\",\n \"text\": \"Finance purchase of prop/land for own occupation\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Personal Consumption Against ASB/ASM2W Certificate\"\n },\n {\n \"value\": \"05\",\n \"text\": \"ASB/ASM2W for Sole-prop Business\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Personal consumption\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Construction of property\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Purchase of property for INVESTMENT & consumption.\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Purchase of car park\"\n },\n {\n \"value\": \"015\",\n \"text\": \"To finance renovation/upgrading cost\"\n },\n {\n \"value\": \"016\",\n \"text\": \"To part finance Car Park and Renovation Cost\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Staff - Renovation of property under staff rate\"\n },\n {\n \"value\": \"023\",\n \"text\": \"Refinancing of property\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Staff Sundry Loan - Calamities\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Staff-To part finance Medical Expenses\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Staff-To part finance the purchase of a personal computer\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Staff-Purchase of new car\"\n },\n {\n \"value\": \"030\",\n \"text\": \"Staff- study loan\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Staff-Purchase of motorcycle\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Staff-Staff Sundry loan\"\n },\n {\n \"value\": \"037\",\n \"text\": \"Booking Fee - Car\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Debt Consolidation\"\n },\n {\n \"value\": \"039\",\n \"text\": \"Education\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Electrical Goods\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Home Furnishing/Equipment\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Medical Expenses\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Online Financing\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Personal Refinancing\"\n },\n {\n \"value\": \"045\",\n \"text\": \"Property/House Downpayment\"\n },\n {\n \"value\": \"046\",\n \"text\": \"Renovation\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Travel\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Additional Financing for Revival of Abandoned Project\"\n },\n {\n \"value\": \"100\",\n \"text\": \"Purchase of Resident / Non Resident Property for personal purpose\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Purchase of securities quoted on the Bursa Malaysia and/or financing of IPO shares\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Purchase of securities quoted on the Bursa Malaysia and/or financing of IPO shares\"\n },\n {\n \"value\": \"COM01AF\",\n \"text\": \"PURCHASE OF COMMERCIAL VEHICLES\"\n },\n {\n \"value\": \"PRI01AF\",\n \"text\": \"PURCHASE OF PRIVATE VEHICLES\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityType\",\n \"displayName\": \"Facility Type (Personal)\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"PLFT001\",\n \"text\": \"Conventional\"\n },\n {\n \"value\": \"PLFT002\",\n \"text\": \"Private Sector\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityType\",\n \"displayName\": \"Facility Type (Auto)\",\n \"placeholder\": \"Facility Type\",\n \"startWithNewLine\": false,\n \"visible\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"HPFAC04\",\n \"text\": \" Islamic - Variable rate\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"financingTenure\",\n \"displayName\": \"Financing Tenure (Years)\",\n \"placeholder\": \"Financing Tenure (Years)\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 3,\n \"min\": 1,\n \"max\": 7,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"product\",\n \"displayName\": \"Product (Auto)\",\n \"placeholder\": \"Product\",\n \"startWithNewLine\": false,\n \"visible\": false,\n \"isRequired\": true,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"AFI04\",\n \"text\": \"Vehicle Financing-i (Variable Rate SBR)\"\n }\n ],\n \"maxLength\": 40,\n \"category\": \"11\"\n },\n {\n \"name\": \"purposeOfAcctOpen\",\n \"displayName\": \"Purpose of Account Opening\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"Personal Loan/Financing\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Payroll/Salary\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Savings/Fixed/Term Deposits\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Remittance (Local/Foreign)\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Household/Family Expenses\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Investment\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Standing Instruction\"\n },\n {\n \"value\": \"11\",\n \"text\": \"EPF Withdrawals\"\n },\n {\n \"value\": \"12\",\n \"text\": \"Personal Loan/Financing\"\n },\n {\n \"value\": \"14\",\n \"text\": \"Equipment & Machinery Expenses\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Business Operating Account\"\n },\n {\n \"value\": \"16\",\n \"text\": \"Client's Account\"\n },\n {\n \"value\": \"17\",\n \"text\": \"Sales Proceed\"\n },\n {\n \"value\": \"18\",\n \"text\": \"Capital Injection\"\n },\n {\n \"value\": \"19\",\n \"text\": \"Administration of Estate Account\"\n },\n {\n \"value\": \"20\",\n \"text\": \"Liquidation/Disposal of Asset\"\n },\n {\n \"value\": \"21\",\n \"text\": \"Financing Payment/Drawdown\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"sourceOfFund\",\n \"displayName\": \"Source of Fund\",\n \"placeholder\": \"Source of Fund\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Income/Salary\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Own Bank Transfer (within RHB)\"\n },\n {\n \"value\": \"04\",\n \"text\": \"EPF/SOCSO/Pension/Gratuity\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Savings/Investment\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Scholarship/Allowance/Edu Loan\"\n },\n {\n \"value\": \"13\",\n \"text\": \"Trust Funds\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Divorce Sett/Compensation\"\n },\n {\n \"value\": \"17\",\n \"text\": \"Sale of Inves/Shares/Prop/Land\"\n },\n {\n \"value\": \"18\",\n \"text\": \"Dividends/Profits\"\n },\n {\n \"value\": \"20\",\n \"text\": \"Rental Proceeds\"\n },\n {\n \"value\": \"21\",\n \"text\": \"Commission\"\n },\n {\n \"value\": \"22\",\n \"text\": \"Directors Fee/Salary\"\n },\n {\n \"value\": \"23\",\n \"text\": \"Welfare Allowance\"\n },\n {\n \"value\": \"24\",\n \"text\": \"Return on Investment\"\n },\n {\n \"value\": \"25\",\n \"text\": \"FD Placement Roll Over/Renewal\"\n },\n {\n \"value\": \"26\",\n \"text\": \"Insurance Maturity/Surrender\"\n },\n {\n \"value\": \"27\",\n \"text\": \"Legal Settlement\"\n },\n {\n \"value\": \"28\",\n \"text\": \"Credit Facility Approve by FI\"\n },\n {\n \"value\": \"29\",\n \"text\": \"Trf frm Parent/Holding/Subs\"\n },\n {\n \"value\": \"30\",\n \"text\": \"Trf frm Own Acct with Oth FI\"\n },\n {\n \"value\": \"31\",\n \"text\": \"Spouse/Parents/Children\"\n },\n {\n \"value\": \"32\",\n \"text\": \"Financial Aid/Subsidies\"\n },\n {\n \"value\": \"33\",\n \"text\": \"Part-time Income\"\n },\n {\n \"value\": \"34\",\n \"text\": \"Inheritance\"\n },\n {\n \"value\": \"35\",\n \"text\": \"Gift/Donation\"\n },\n {\n \"value\": \"36\",\n \"text\": \"Winning-legal Gambling/Contest\"\n },\n {\n \"value\": \"37\",\n \"text\": \"Business/Sales Proceeds\"\n },\n {\n \"value\": \"38\",\n \"text\": \"Crypto Currency/Digital Asset Investment Proceeds\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"preferredBranch\",\n \"displayName\": \"Preferred Branch\",\n \"placeholder\": \"Select Preferred Branch\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"000\",\n \"text\": \"Head Office (KL)\"\n },\n {\n \"value\": \"002\",\n \"text\": \"JALAN SILANG (WITH KUP)\"\n },\n {\n \"value\": \"003\",\n \"text\": \"Jalan Bukit Bintang (WITH BBI)\"\n },\n {\n \"value\": \"004\",\n \"text\": \"Jln Tun Sambanthan, Ipoh\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Kampar\"\n },\n {\n \"value\": \"006\",\n \"text\": \"Johor Bahru City Square\"\n },\n {\n \"value\": \"007\",\n \"text\": \"Wisma Khoo, Sandakan\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Putra Square, Kuantan\"\n },\n {\n \"value\": \"009\",\n \"text\": \"New Town, Petaling Jaya\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Seri Kembangan\"\n },\n {\n \"value\": \"011\",\n \"text\": \"Kajang\"\n },\n {\n \"value\": \"012\",\n \"text\": \"Lebuh Pantai\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Bentung\"\n },\n {\n \"value\": \"014\",\n \"text\": \"Batu Pahat\"\n },\n {\n \"value\": \"015\",\n \"text\": \"Kepong\"\n },\n {\n \"value\": \"016\",\n \"text\": \"Tanjung Sepat\"\n },\n {\n \"value\": \"017\",\n \"text\": \"Jln Tunku Ibrahim, Alor Setar\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Jln Tok Hakim, Kota Bharu\"\n },\n {\n \"value\": \"019\",\n \"text\": \"Kuala Terengganu\"\n },\n {\n \"value\": \"020\",\n \"text\": \"Air Tawar\"\n },\n {\n \"value\": \"021\",\n \"text\": \"Kulai\"\n },\n {\n \"value\": \"022\",\n \"text\": \"Jln Gaya, Kota Kinabalu\"\n },\n {\n \"value\": \"024\",\n \"text\": \"Setapak\"\n },\n {\n \"value\": \"025\",\n \"text\": \"Jelapang\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Jln Niaga, Shah Alam\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Bukit Baru\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Jln Chain Ferry, Prai\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Yung Kong\"\n },\n {\n \"value\": \"030\",\n \"text\": \"Kenanga Wholesale City\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Tmn Sg. Besi\"\n },\n {\n \"value\": \"032\",\n \"text\": \"Damansara Jaya\"\n },\n {\n \"value\": \"033\",\n \"text\": \"Kluang\"\n },\n {\n \"value\": \"034\",\n \"text\": \"Jerantut\"\n },\n {\n \"value\": \"035\",\n \"text\": \"Kuala Kurau\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Raub\"\n },\n {\n \"value\": \"037\",\n \"text\": \"Port Klang\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Jln Bakar Arang, Sg. Petani\"\n },\n {\n \"value\": \"039\",\n \"text\": \"Kemaman\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Pasir Gudang\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Bandar Baru Sg. Buloh\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Jelutong\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Tmn Suntex\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Tmn Johor Jaya, Johor Bahru\"\n },\n {\n \"value\": \"045\",\n \"text\": \"JALAN TUN RAZAK (WITH PAS)\"\n },\n {\n \"value\": \"046\",\n \"text\": \"Jln Nakhoda Gampar, Miri\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Tawau\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Inanam\"\n },\n {\n \"value\": \"049\",\n \"text\": \"Tmn Pelangi, Johor Bahru\"\n },\n {\n \"value\": \"050\",\n \"text\": \"Tmn Ungku Tun Aminah\"\n },\n {\n \"value\": \"051\",\n \"text\": \"Jln Tunku Osman, Sibu\"\n },\n {\n \"value\": \"052\",\n \"text\": \"BUKIT MERTAJAM 1(WITH BMT)\"\n },\n {\n \"value\": \"053\",\n \"text\": \"Bandar Baru Uda, Tampoi\"\n },\n {\n \"value\": \"054\",\n \"text\": \"Rawang\"\n },\n {\n \"value\": \"055\",\n \"text\": \"Jln SS15 Subang Jaya\"\n },\n {\n \"value\": \"056\",\n \"text\": \"Mid Valley\"\n },\n {\n \"value\": \"057\",\n \"text\": \"Pandan Indah\"\n },\n {\n \"value\": \"058\",\n \"text\": \"Bayan Baru\"\n },\n {\n \"value\": \"059\",\n \"text\": \"Pasar Borong, Selayang\"\n },\n {\n \"value\": \"060\",\n \"text\": \"IOI Boulevard Puchong\"\n },\n {\n \"value\": \"061\",\n \"text\": \"KLCC\"\n },\n {\n \"value\": \"062\",\n \"text\": \"Bandar Baru Ampang\"\n },\n {\n \"value\": \"063\",\n \"text\": \"Tangkak\"\n },\n {\n \"value\": \"064\",\n \"text\": \"Mentakab\"\n },\n {\n \"value\": \"065\",\n \"text\": \"Bandar Baru Klang\"\n },\n {\n \"value\": \"066\",\n \"text\": \"Wisma Mahmud, Kuching\"\n },\n {\n \"value\": \"067\",\n \"text\": \"First Avenue\"\n },\n {\n \"value\": \"068\",\n \"text\": \"Kuala Lumpur Main\"\n },\n {\n \"value\": \"069\",\n \"text\": \"Kuala Kedah\"\n },\n {\n \"value\": \"070\",\n \"text\": \"Kulim\"\n },\n {\n \"value\": \"073\",\n \"text\": \"Lahad Datu\"\n },\n {\n \"value\": \"074\",\n \"text\": \"The Trillium, Lakefields\"\n },\n {\n \"value\": \"075\",\n \"text\": \"Mergong, Alor Setar\"\n },\n {\n \"value\": \"076\",\n \"text\": \"Ampang Point\"\n },\n {\n \"value\": \"077\",\n \"text\": \"Ayer Itam\"\n },\n {\n \"value\": \"078\",\n \"text\": \"Bangsar Shopping Centre\"\n },\n {\n \"value\": \"079\",\n \"text\": \"Bekok\"\n },\n {\n \"value\": \"080\",\n \"text\": \"Butterworth\"\n },\n {\n \"value\": \"081\",\n \"text\": \"Gopeng\"\n },\n {\n \"value\": \"082\",\n \"text\": \"Gunung Rapat, Ipoh\"\n },\n {\n \"value\": \"083\",\n \"text\": \"Ipoh Garden South\"\n },\n {\n \"value\": \"084\",\n \"text\": \"Jln Bukit Bintang\"\n },\n {\n \"value\": \"086\",\n \"text\": \"Jln Ipoh\"\n },\n {\n \"value\": \"087\",\n \"text\": \"Jln Pasar\"\n },\n {\n \"value\": \"088\",\n \"text\": \"JALAN RAJA LAUT(WITH JIP)\"\n },\n {\n \"value\": \"089\",\n \"text\": \"Jln Raja Uda, Butterworth\"\n },\n {\n \"value\": \"091\",\n \"text\": \"Jementah\"\n },\n {\n \"value\": \"092\",\n \"text\": \"Tmn Sentosa, Johor Bahru\"\n },\n {\n \"value\": \"093\",\n \"text\": \"Kangar\"\n },\n {\n \"value\": \"094\",\n \"text\": \"Ketereh\"\n },\n {\n \"value\": \"095\",\n \"text\": \"Persiaran Sultan Ibrahim, Kelang\"\n },\n {\n \"value\": \"096\",\n \"text\": \"Kluang 2 (WITH KLU)\"\n },\n {\n \"value\": \"098\",\n \"text\": \"Jln Tun HS Lee\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Jln Burma\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Jln Hang Tuah\"\n },\n {\n \"value\": \"103\",\n \"text\": \"Plaza OSK, Jln Ampang\"\n },\n {\n \"value\": \"104\",\n \"text\": \"Meru\"\n },\n {\n \"value\": \"106\",\n \"text\": \"Permas Jaya, Johor Bahru\"\n },\n {\n \"value\": \"107\",\n \"text\": \"RHB SOHO IPOH\"\n },\n {\n \"value\": \"110\",\n \"text\": \"Rantau\"\n },\n {\n \"value\": \"111\",\n \"text\": \"Bandar Sri Permaisuri\"\n },\n {\n \"value\": \"112\",\n \"text\": \"Section 14, Petaling Jaya\"\n },\n {\n \"value\": \"113\",\n \"text\": \"Segamat\"\n },\n {\n \"value\": \"115\",\n \"text\": \"Senai\"\n },\n {\n \"value\": \"116\",\n \"text\": \"Seremban\"\n },\n {\n \"value\": \"118\",\n \"text\": \"Jln Tengku Ampuan Zabedah, Shah Alam\"\n },\n {\n \"value\": \"121\",\n \"text\": \"Bandar Sri Damansara\"\n },\n {\n \"value\": \"123\",\n \"text\": \"Sg. Bakap\"\n },\n {\n \"value\": \"124\",\n \"text\": \"Kg. Baru Sg. Buloh\"\n },\n {\n \"value\": \"125\",\n \"text\": \"Sg. Pelek\"\n },\n {\n \"value\": \"126\",\n \"text\": \"Tmn Pekan Baru, Sg. Petani\"\n },\n {\n \"value\": \"128\",\n \"text\": \"Sungkai\"\n },\n {\n \"value\": \"130\",\n \"text\": \"Tmn Indah\"\n },\n {\n \"value\": \"131\",\n \"text\": \"Tmn Megah\"\n },\n {\n \"value\": \"132\",\n \"text\": \"Tmn Molek, Johor Bahru\"\n },\n {\n \"value\": \"133\",\n \"text\": \"Dataran Wangsa\"\n },\n {\n \"value\": \"134\",\n \"text\": \"Tmn Shamelin\"\n },\n {\n \"value\": \"136\",\n \"text\": \"Tmn Taming Jaya\"\n },\n {\n \"value\": \"139\",\n \"text\": \"UEP Subang Jaya\"\n },\n {\n \"value\": \"140\",\n \"text\": \"Ulu Tiram\"\n },\n {\n \"value\": \"142\",\n \"text\": \"Bandar Baru Nilai\"\n },\n {\n \"value\": \"144\",\n \"text\": \"Menglembu\"\n },\n {\n \"value\": \"145\",\n \"text\": \"Bayan Point\"\n },\n {\n \"value\": \"150\",\n \"text\": \"Jln Masjid, Bintulu\"\n },\n {\n \"value\": \"153\",\n \"text\": \"Damansara Utama\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Plentong, Johor Bahru\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Bagan Serai\"\n },\n {\n \"value\": \"163\",\n \"text\": \"Bahau\"\n },\n {\n \"value\": \"165\",\n \"text\": \"Bukit Mertajam\"\n },\n {\n \"value\": \"169\",\n \"text\": \"Simpang Empat, Hutan Melintang\"\n },\n {\n \"value\": \"176\",\n \"text\": \"Jenjarom\"\n },\n {\n \"value\": \"177\",\n \"text\": \"Jinjang Utara\"\n },\n {\n \"value\": \"182\",\n \"text\": \"Kerteh\"\n },\n {\n \"value\": \"183\",\n \"text\": \"Jln Stesen, Kelang\"\n },\n {\n \"value\": \"187\",\n \"text\": \"Kuala Dungun\"\n },\n {\n \"value\": \"188\",\n \"text\": \"Kuala Kangsar\"\n },\n {\n \"value\": \"190\",\n \"text\": \"Kuala Pilah\"\n },\n {\n \"value\": \"195\",\n \"text\": \"Jln Tun Mustapha\"\n },\n {\n \"value\": \"196\",\n \"text\": \"Pulau Langkawi\"\n },\n {\n \"value\": \"198\",\n \"text\": \"LEBUH PANTAI 3 (WITH PNG)\"\n },\n {\n \"value\": \"202\",\n \"text\": \"Jln Abdullah, Muar\"\n },\n {\n \"value\": \"203\",\n \"text\": \"Overseas Union Garden\"\n },\n {\n \"value\": \"204\",\n \"text\": \"Padang Serai\"\n },\n {\n \"value\": \"205\",\n \"text\": \"Parit Buntar\"\n },\n {\n \"value\": \"207\",\n \"text\": \"Pasir Mas\"\n },\n {\n \"value\": \"208\",\n \"text\": \"Pontian Kecil\"\n },\n {\n \"value\": \"213\",\n \"text\": \"Segambut\"\n },\n {\n \"value\": \"216\",\n \"text\": \"SETAPAK 3 (WITH STP)\"\n },\n {\n \"value\": \"218\",\n \"text\": \"Simpang Renggam\"\n },\n {\n \"value\": \"219\",\n \"text\": \"Sitiawan\"\n },\n {\n \"value\": \"223\",\n \"text\": \"Sg. Siput\"\n },\n {\n \"value\": \"224\",\n \"text\": \"SS2 Petaling Jaya\"\n },\n {\n \"value\": \"225\",\n \"text\": \"Taiping\"\n },\n {\n \"value\": \"228\",\n \"text\": \"Tmn Midah\"\n },\n {\n \"value\": \"231\",\n \"text\": \"Tmn Tun Dr Ismail\"\n },\n {\n \"value\": \"232\",\n \"text\": \"Tanjong Karang\"\n },\n {\n \"value\": \"233\",\n \"text\": \"Tasek, Ipoh\"\n },\n {\n \"value\": \"235\",\n \"text\": \"Teluk Intan\"\n },\n {\n \"value\": \"237\",\n \"text\": \"Yong Peng\"\n },\n {\n \"value\": \"239\",\n \"text\": \"Plaza Damas 3\"\n },\n {\n \"value\": \"240\",\n \"text\": \"Putrajaya\"\n },\n {\n \"value\": \"242\",\n \"text\": \"Lawas\"\n },\n {\n \"value\": \"252\",\n \"text\": \"Melaka Raya\"\n },\n {\n \"value\": \"260\",\n \"text\": \"Prima Square, Sandakan\"\n },\n {\n \"value\": \"261\",\n \"text\": \"Jln Kulas, Kuching\"\n },\n {\n \"value\": \"264\",\n \"text\": \"Simpang Tiga, Kuching\"\n },\n {\n \"value\": \"266\",\n \"text\": \"Boulevard Centre, Miri\"\n },\n {\n \"value\": \"268\",\n \"text\": \"Lundu\"\n },\n {\n \"value\": \"269\",\n \"text\": \"Kanowit\"\n },\n {\n \"value\": \"271\",\n \"text\": \"Dalat\"\n },\n {\n \"value\": \"272\",\n \"text\": \"Kota Samarahan, Kuching\"\n },\n {\n \"value\": \"273\",\n \"text\": \"Sarikei\"\n },\n {\n \"value\": \"275\",\n \"text\": \"Tabuan Jaya, Kuching\"\n },\n {\n \"value\": \"276\",\n \"text\": \"Siburan\"\n },\n {\n \"value\": \"278\",\n \"text\": \"Matang Jaya, Kuching\"\n },\n {\n \"value\": \"280\",\n \"text\": \"Batu Kawah, Kuching\"\n },\n {\n \"value\": \"281\",\n \"text\": \"Lintas Station Complex, Kota Kinabalu\"\n },\n {\n \"value\": \"282\",\n \"text\": \"Limbang\"\n },\n {\n \"value\": \"286\",\n \"text\": \"Taipan Senawang\"\n },\n {\n \"value\": \"288\",\n \"text\": \"Kota Damansara\"\n },\n {\n \"value\": \"289\",\n \"text\": \"The Vertical, Bangsar South\"\n },\n {\n \"value\": \"290\",\n \"text\": \"Tmn Mount Austin, Johor Bahru\"\n },\n {\n \"value\": \"291\",\n \"text\": \"Menara Shell\"\n },\n {\n \"value\": \"293\",\n \"text\": \"Paradigm Mall, Kelana Jaya\"\n },\n {\n \"value\": \"294\",\n \"text\": \"Utropolis Mall, Glenmarie\"\n },\n {\n \"value\": \"295\",\n \"text\": \"Bandar Bukit Tinggi\"\n },\n {\n \"value\": \"296\",\n \"text\": \"Jitra\"\n },\n {\n \"value\": \"297\",\n \"text\": \"Air Putih, Kuantan\"\n },\n {\n \"value\": \"298\",\n \"text\": \"Sg. Merah, Sibu\"\n },\n {\n \"value\": \"299\",\n \"text\": \"Tmn Nusa Bestari, Johor Bahru\"\n },\n {\n \"value\": \"300\",\n \"text\": \"Keningau\"\n },\n {\n \"value\": \"301\",\n \"text\": \"1 Lagenda\"\n },\n {\n \"value\": \"302\",\n \"text\": \"Triang\"\n },\n {\n \"value\": \"303\",\n \"text\": \"Tmn Connaught\"\n },\n {\n \"value\": \"304\",\n \"text\": \"MetroTown, Kota Kinabalu\"\n },\n {\n \"value\": \"305\",\n \"text\": \"Kota Kemuning\"\n },\n {\n \"value\": \"306\",\n \"text\": \"Kota Tinggi\"\n },\n {\n \"value\": \"307\",\n \"text\": \"Setia Alam\"\n },\n {\n \"value\": \"308\",\n \"text\": \"Alam Avenue\"\n },\n {\n \"value\": \"309\",\n \"text\": \"Malim\"\n },\n {\n \"value\": \"310\",\n \"text\": \"Mukah\"\n },\n {\n \"value\": \"312\",\n \"text\": \"Bandar Mahkota Cheras\"\n },\n {\n \"value\": \"313\",\n \"text\": \"Seremban 2\"\n },\n {\n \"value\": \"314\",\n \"text\": \"Banting\"\n },\n {\n \"value\": \"315\",\n \"text\": \"IOI Resort City\"\n },\n {\n \"value\": \"316\",\n \"text\": \"Bandar Sri Petaling\"\n },\n {\n \"value\": \"317\",\n \"text\": \"Tanjung Tokong\"\n },\n {\n \"value\": \"319\",\n \"text\": \"Bandar Penawar\"\n },\n {\n \"value\": \"320\",\n \"text\": \"Kelana Jaya\"\n },\n {\n \"value\": \"321\",\n \"text\": \"RHB Bank Jalan Raja Laut, Kuala Lumpur\"\n },\n {\n \"value\": \"322\",\n \"text\": \"Auto City, Juru\"\n },\n {\n \"value\": \"323\",\n \"text\": \"Tmn Setia Tropika, Johor Bahru\"\n },\n {\n \"value\": \"389\",\n \"text\": \"Tmn Flora Utama, Batu Pahat\"\n },\n {\n \"value\": \"399\",\n \"text\": \"Caw. Utama\"\n },\n {\n \"value\": \"400\",\n \"text\": \"Caw. Jln Satok, Kuching\"\n },\n {\n \"value\": \"401\",\n \"text\": \"Caw. Kelana Jaya\"\n },\n {\n \"value\": \"402\",\n \"text\": \"Caw. Tmn Flora Utama, Batu Pahat\"\n },\n {\n \"value\": \"403\",\n \"text\": \"Caw. Kubang Kerian, Kota Bharu\"\n },\n {\n \"value\": \"404\",\n \"text\": \"Caw. Tmn Setia Tropika, Johor Bahru\"\n },\n {\n \"value\": \"405\",\n \"text\": \"Caw. Bandar Baru Bangi\"\n },\n {\n \"value\": \"407\",\n \"text\": \"Caw. Kuala Terengganu\"\n },\n {\n \"value\": \"408\",\n \"text\": \"Caw. Jln Raja Laut\"\n },\n {\n \"value\": \"409\",\n \"text\": \"Caw. Auto City\"\n },\n {\n \"value\": \"411\",\n \"text\": \"Caw. Lagenda Heights, Sg. Petani\"\n },\n {\n \"value\": \"412\",\n \"text\": \"Caw. Laman Seri, Shah Alam\"\n },\n {\n \"value\": \"457\",\n \"text\": \"RHB Bank Sales Centre AEON Taman Equine\"\n },\n {\n \"value\": \"473\",\n \"text\": \"RHB EASY - Kompleks Teruntum\"\n },\n {\n \"value\": \"479\",\n \"text\": \"RHB EASY - Giant Plentong\"\n },\n {\n \"value\": \"491\",\n \"text\": \"RHB EASY - Mydin Mall MITC Melaka\"\n },\n {\n \"value\": \"630\",\n \"text\": \"RHB EASY - Mydin Kubang Kerian\"\n },\n {\n \"value\": \"637\",\n \"text\": \"RHB EASY - Mydin Meru Raya\"\n },\n {\n \"value\": \"710\",\n \"text\": \"RHB EASY - E-Mart Commercial Centre\"\n },\n {\n \"value\": \"712\",\n \"text\": \"RHB EASY - Giant Hypermarket Bayan Baru\"\n },\n {\n \"value\": \"861\",\n \"text\": \"RHB EASY Warisan Square\"\n },\n {\n \"value\": \"931\",\n \"text\": \"CC EMBOSSING\"\n },\n {\n \"value\": \"RD08\",\n \"text\": \"PERAK REGION\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"bdmMoreThan2500kg\",\n \"displayName\": \"BDM More Than 2500kg\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"chassisNo\",\n \"displayName\": \"Chassis Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"engineNo\",\n \"displayName\": \"Engine Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"marketValue\",\n \"displayName\": \"Market Value\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"12\"\n },\n {\n \"name\": \"modelOfVehicle\",\n \"displayName\": \"Model of Vehicle\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"type\": \"text\",\n \"name\": \"purchasePriceOTR\",\n \"title\": \"carPrice\",\n \"placeholder\": \"car Price (MYR)\",\n \"isRequired\": true,\n \"displayName\": \"Car Price (MYR)\",\n \"maxLength\": 23,\n \"min\": 2000,\n \"max\": 150000,\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n },\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ],\n \"category\": \"12\"\n },\n {\n \"name\": \"registrationDate\",\n \"displayName\": \"Registration Date\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"12\"\n },\n {\n \"name\": \"registrationNo\",\n \"displayName\": \"Registration Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"vehicleCondition\",\n \"displayName\": \"Condition\",\n \"placeholder\": \"Vehicle Condition\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"N\",\n \"text\": \"New\"\n },\n {\n \"value\": \"U\",\n \"text\": \"Used\"\n },\n {\n \"value\": \"UN\",\n \"text\": \"UnRegistered Recon\"\n },\n {\n \"value\": \"UR\",\n \"text\": \"Used Recon\"\n },\n {\n \"value\": \"PR\",\n \"text\": \"Pre-registered\"\n }\n ],\n \"category\": \"12\"\n },\n {\n \"name\": \"yearMake\",\n \"displayName\": \"Year Make\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"startWithNewLine\": false,\n \"placeholder\": \"Year\",\n \"min\": 2014,\n \"max\": 2100,\n \"category\": \"12\"\n },\n {\n \"name\": \"makeOfVehicle\",\n \"displayName\": \"Make of Vehicle\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"permanentaddressLine1\",\n \"displayName\": \"Permanent Address Line 1\",\n \"placeholder\": \"Permanent Address Line 1\",\n \"maxLength\": 40,\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressLine2\",\n \"displayName\": \"Permanent Address Line 2\",\n \"placeholder\": \"Permanent Address Line 2 (optional)\",\n \"isRequired\": false,\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressLine3\",\n \"displayName\": \"Permanent Address Line 3\",\n \"maxLength\": 40,\n \"placeholder\": \"Permanent Address Line 3 (optional)\",\n \"isRequired\": false,\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressType\",\n \"displayName\": \"Permanent Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentcity\",\n \"displayName\": \"Permanent City\",\n \"placeholder\": \"City of the Permanent Address\",\n \"type\": \"text\",\n \"maxLength\": 20,\n \"startWithNewLine\": false,\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentpostcode\",\n \"displayName\": \"Permanent Postcode\",\n \"placeholder\": \"Postcode of the Permanent Address\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine1\",\n \"displayName\": \"Residential Address Line 1\",\n \"placeholder\": \"Residential Address Line 1\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine2\",\n \"displayName\": \"Residential Address Line 2\",\n \"placeholder\": \"Residential Address Line 2 (optional)\",\n \"isRequired\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine3\",\n \"displayName\": \"Residential Address Line 3\",\n \"placeholder\": \"Residential Address Line 3 (optional)\",\n \"isRequired\": false,\n \"startWithNewLine\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressType\",\n \"displayName\": \"Residential Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialcity\",\n \"displayName\": \"Residential City\",\n \"placeholder\": \"City of the Residential Address\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialpostcode\",\n \"displayName\": \"Residential Postcode\",\n \"placeholder\": \"Postcode of the Residential Address\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialstate\",\n \"displayName\": \"Residential State\",\n \"placeholder\": \"Select State Of The Residential Address\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"officeaddressLine1\",\n \"displayName\": \"Employer Address Line 1\",\n \"placeholder\": \"Employer Address Line 1\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressLine2\",\n \"displayName\": \"Employer Address Line 2\",\n \"placeholder\": \"Employer Address Line 2 (optional)\",\n \"isRequired\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressLine3\",\n \"displayName\": \"Employer Address Line 3\",\n \"placeholder\": \"Employer Address Line 3 (optional)\",\n \"startWithNewLine\": false,\n \"isRequired\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressType\",\n \"displayName\": \"Office Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"officecity\",\n \"displayName\": \"Employer City\",\n \"placeholder\": \"Employer City\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"5\"\n },\n {\n \"name\": \"officepostcode\",\n \"displayName\": \"Employer Postcode\",\n \"placeholder\": \"Employer Postcode\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"computationMode\",\n \"displayName\": \"Computation Mode\",\n \"type\": \"text\",\n \"category\": \"10\"\n },\n {\n \"name\": \"countryOfPermanentResident\",\n \"displayName\": \"Country of Permanent Resident\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"foreignPR\",\n \"displayName\": \"Foreign PR\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"internationalExtensionPhoneNo\",\n \"displayName\": \"International Extension Phone No\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"internationalPhoneNo\",\n \"displayName\": \"International Phone No\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"internationalPhoneNoAreaCode\",\n \"displayName\": \"International Phone No Area Code\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"pRIDNo\",\n \"displayName\": \"PR ID No\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"dealerName\",\n \"displayName\": \"Dealer Name\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"cashDownpayment\",\n \"displayName\": \"Cash Downpayment\",\n \"placeholder\": \"Cash Downpayment\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"11\"\n },\n {\n \"name\": \"downpayment\",\n \"displayName\": \"Down Payment (%)\",\n \"placeholder\": \"Down Payment (%)\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"bankName\",\n \"displayName\": \"Bank Name\",\n \"placeholder\": \"Bank Name\",\n \"visible\": false,\n \"type\": \"text\",\n \"startWithNewLine\": false,\n \"category\": \"11\"\n },\n {\n \"name\": \"bankRates\",\n \"displayName\": \"Bank Rate\",\n \"placeholder\": \"Bank Rate\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"startWithNewLine\": false,\n \"category\": \"11\"\n },\n {\n \"name\": \"monthlyRepayment\",\n \"displayName\": \"Monthly Repayment\",\n \"placeholder\": \"Monthly Repayment\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityTenureYears\",\n \"displayName\": \"Repayment Term (Years)\",\n \"placeholder\": \"Payment Term\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"totalFinancing\",\n \"displayName\": \"Financing Amount (RM)\",\n \"placeholder\": \"How much do you want to borrow?\",\n \"type\": \"text\",\n \"maxLength\": 15,\n \"min\": 2000,\n \"max\": 150000,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n },\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"myKadOrPassport\",\n \"displayName\": \"MyKad or Passport\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"incomeEPF_iakaun\",\n \"displayName\": \"Income EPF i-Akaun\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"phoneNumber\",\n \"displayName\": \"Phone Number\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"1\"\n },\n {\n \"name\": \"incorporatedDate\",\n \"displayName\": \"Incorporated Date\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"3\"\n },\n {\n \"name\": \"shareCapital\",\n \"displayName\": \"Share Capital\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"tangibleAssets\",\n \"displayName\": \"Tangible Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalCurrentLiabilities\",\n \"displayName\": \"Total Current Liabilities\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalCurrentAssets\",\n \"displayName\": \"Total Current Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"endOfYearCash\",\n \"displayName\": \"Cash and Cash Equivalent at end of the Financial Year or Period\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"shortTermLiabilities\",\n \"displayName\": \"Short Term Liabilities\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"ebitda\",\n \"displayName\": \"Earning Before Interest, Tax, Depreciation and Amortization (EBITDA)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalAssets\",\n \"displayName\": \"Total Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netOperatingCashFlow\",\n \"displayName\": \"Net Operating Cash Flow\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netProfitT1\",\n \"displayName\": \"Net Profit/ Loss and Total Comprehensive Income (year T-1)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalEquityT1\",\n \"displayName\": \"Total Equity/Owner equity/Total Net (year T-1)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netProfitT2\",\n \"displayName\": \"Net Profit/ Loss and Total Comprehensive Income (year T-2)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalEquityT2\",\n \"displayName\": \"Total Equity/Owner equity/Total Net (year T-2)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"facilityInterestRate\",\n \"displayName\": \"Interest Rate\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppProduct\",\n \"displayName\": \"EPP Product Name\",\n \"type\": \"text\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppPrice\",\n \"displayName\": \"EPP Price\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppNoOfPax\",\n \"displayName\": \"EPP No. of Pax\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"housingLoanMonthlyInstallment\",\n \"displayName\": \"Housing Loan Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"hirePurchaseMonthlyInstallment\",\n \"displayName\": \"Hire Purchase Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"personalLoanMonthlyInstallment\",\n \"displayName\": \"Personal Loan Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"creditCardMonthlyInstallment\",\n \"displayName\": \"Credit Card Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"otherFinancingMonthlyInstallment\",\n \"displayName\": \"Other Financing Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"bank_statement_t1\",\n \"displayName\": \"Bank Statement (Month T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT1\",\n \"statementDateT1\",\n \"bankNameT1\",\n \"accountNumberT1\",\n \"totalCreditsT1\",\n \"totalDebitsT1\",\n \"openingBalanceT1\",\n \"bankBalanceT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t2\",\n \"displayName\": \"Bank Statement (Month T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT2\",\n \"statementDateT2\",\n \"bankNameT2\",\n \"accountNumberT2\",\n \"totalCreditsT2\",\n \"totalDebitsT2\",\n \"openingBalanceT2\",\n \"bankBalanceT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t3\",\n \"displayName\": \"Bank Statement (Month T-3)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT3\",\n \"statementDateT3\",\n \"bankNameT3\",\n \"accountNumberT3\",\n \"totalCreditsT3\",\n \"totalDebitsT3\",\n \"openingBalanceT3\",\n \"bankBalanceT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t4\",\n \"displayName\": \"Bank Statement (Month T-4)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT4\",\n \"statementDateT4\",\n \"bankNameT4\",\n \"accountNumberT4\",\n \"totalCreditsT4\",\n \"totalDebitsT4\",\n \"openingBalanceT4\",\n \"bankBalanceT4\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t5\",\n \"displayName\": \"Bank Statement (Month T-5)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT5\",\n \"statementDateT5\",\n \"bankNameT5\",\n \"accountNumberT5\",\n \"totalCreditsT5\",\n \"totalDebitsT5\",\n \"openingBalanceT5\",\n \"bankBalanceT5\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t6\",\n \"displayName\": \"Bank Statement (Month T-6)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT6\",\n \"statementDateT6\",\n \"bankNameT6\",\n \"accountNumberT6\",\n \"totalCreditsT6\",\n \"totalDebitsT6\",\n \"openingBalanceT6\",\n \"bankBalanceT6\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials\",\n \"displayName\": \"Audited Financial Statement\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"shareCapital\",\n \"totalEquityT1\",\n \"totalEquityT2\",\n \"totalCurrentLiabilities\",\n \"shortTermLiabilities\",\n \"totalAssets\",\n \"totalCurrentAssets\",\n \"tangibleAssets\",\n \"netProfitT1\",\n \"netProfitT2\",\n \"endOfYearCash\",\n \"netOperatingCashFlow\",\n \"ebitda\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials_fincap_t1\",\n \"displayName\": \"Audited Financial Statement (T-1) (FinCap)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"nonCurrentAssetsSubsidiaryCompaniesT1\",\n \"nonCurrentAssetsAssociatedCompaniesT1\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT1\",\n \"nonCurrentAssetInvestmentPropertiesT1\",\n \"nonCurrentAssetsInvestmentsT1\",\n \"nonCurrentAssetInvestmentSecuritiesT1\",\n \"nonCurrentAssetDeferredAssetsT1\",\n \"nonCurrentAssetDepositsT1\",\n \"nonCurrentAssetOwnGoodwillT1\",\n \"nonCurrentAssetGoodwillOnConsolidationT1\",\n \"nonCurrentAssetSinkingFundT1\",\n \"nonCurrentAssetPropertyPlantEquipmentT1\",\n \"nonCurrentAssetInventoriesT1\",\n \"nonCurrentAssetRightOfUseAssetsT1\",\n \"nonCurrentAssetIntangibleAssetsT1\",\n \"nonCurrentAssetPrepaidLeasePaymentsT1\",\n \"nonCurrentAssetFinancialAssetAtFairValueT1\",\n \"nonCurrentAssetLandUseRightT1\",\n \"nonCurrentAssetTradeReceivablesT1\",\n \"nonCurrentAssetOtherReceivablesT1\",\n \"nonCurrentAssetTradeAndOtherReceivablesT1\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT1\",\n \"totalNonCurrentAssetsT1\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT1\",\n \"currentAssetShortTermInvestmentsT1\",\n \"currentAssetTradeDebtorsT1\",\n \"currentAssetShortTermDepositsT1\",\n \"currentAssetAmountDueFromHoldingCompanyT1\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT1\",\n \"currentAssetAmountDueFromAssociatedCompaniesT1\",\n \"currentAssetAmountDueFromDirectorT1\",\n \"currentAssetAmountDueFromCustomerT1\",\n \"currentAssetAmountOwingByShareholdersT1\",\n \"currentAssetInventoriesT1\",\n \"currentAssetFinancialAssetAtFairValueT1\",\n \"currentAssetLandUseRightT1\",\n \"currentAssetTaxRecoverableT1\",\n \"currentAssetContractAssetsT1\",\n \"currentAssetCurrentTaxAssetsT1\",\n \"currentAssetPrepaymentsT1\",\n \"currentAssetDerivativeT1\",\n \"currentAssetCashAndBankBalancesT1\",\n \"currentAssetOtherReceivablesT1\",\n \"currentAssetRestrictedCashT1\",\n \"currentAssetCashAndCashEquivalentsT1\",\n \"currentAssetDepositsCashAndBankBalancesT1\",\n \"currentAssetCashAtBanksT1\",\n \"currentAssetCashOnHandT1\",\n \"currentAssetDepositsAndPrepaymentsT1\",\n \"currentAssetTradeAndOtherReceivablesT1\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT1\",\n \"currentAssetOtherReceivablesAndDepositsT1\",\n \"currentAssetOtherReceivablesAndPrepaymentsT1\",\n \"currentAssetCashT1\",\n \"totalCurrentAssetsT1\",\n \"totalAssetsT1\",\n \"currentLiabilitiesTradeCreditorsT1\",\n \"currentLiabilitiesHirePurchasePayablesT1\",\n \"currentLiabilitiesBankOverdraftT1\",\n \"currentLiabilitiesBankAcceptanceT1\",\n \"currentLiabilitiesBorrowingsOrTermLoansT1\",\n \"currentLiabilitiesBankborrowingsT1\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT1\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT1\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT1\",\n \"currentLiabilitiesAmountsOwingToDirectorT1\",\n \"currentLiabilitiesProvisionForTaxationT1\",\n \"currentLiabilitiesLeasePayablesT1\",\n \"currentLiabilitiesFinanceLeasePayablesT1\",\n \"currentLiabilitiesOtherPayablesT1\",\n \"currentLiabilitiesDividendPayablesT1\",\n \"currentLiabilitiesTradeAndOtherPayablesT1\",\n \"currentLiabilitiesDepositsFromCustomersT1\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT1\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT1\",\n \"currentLiabilitiesContractLiabilitiesT1\",\n \"currentLiabilitiesDerivativeT1\",\n \"totalCurrentLiabilitiesT1\",\n \"shortTermLiabilitiesT1\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT1\",\n \"nonCurrentLiabilitiesBankBorrowingsT1\",\n \"nonCurrentLiabilitiesLeaseObligationsT1\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT1\",\n \"nonCurrentLiabilitiesDeferredTaxationT1\",\n \"nonCurrentLiabilitiesRetirementBenefitsT1\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT1\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT1\",\n \"nonCurrentLiabilitiesContractLiabilitiesT1\",\n \"totalNonCurrentLiabilitiesT1\",\n \"totalLiabilitiesT1\",\n \"tangibleAssetsT1\",\n \"shareCapitalT1\",\n \"preferenceShareCapitalT1\",\n \"sharePremiumT1\",\n \"reservesT1\",\n \"capitalReservesT1\",\n \"revaluationReservesT1\",\n \"exchangeEqualisationOrFluctuationReservesT1\",\n \"retainedEarningsT1\",\n \"totalEquityT1\",\n \"revenueT1\",\n \"costOfGoodsSoldT1\",\n \"grossProfitT1\",\n \"otherIncomeT1\",\n \"profitFromOperationsT1\",\n \"financeCostT1\",\n \"ebitdaT1\",\n \"taxesT1\",\n \"zakatT1\",\n \"profitAfterTaxT1\",\n \"netProfitT1\",\n \"netOperatingCashFlowT1\",\n \"depreciationT1\",\n \"depreciationOfPropertyPlantEquipmentT1\",\n \"depreciationRightOfUseAssetsT1\",\n \"depreciationOfInvestmentPropertiesT1\",\n \"depreciationOfInvestmentSecuritiesT1\",\n \"endOfYearCashT1\",\n \"nonCurrentAssetsSubsidiaryCompaniesT2\",\n \"nonCurrentAssetsAssociatedCompaniesT2\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT2\",\n \"nonCurrentAssetInvestmentPropertiesT2\",\n \"nonCurrentAssetsInvestmentsT2\",\n \"nonCurrentAssetInvestmentSecuritiesT2\",\n \"nonCurrentAssetDeferredAssetsT2\",\n \"nonCurrentAssetDepositsT2\",\n \"nonCurrentAssetOwnGoodwillT2\",\n \"nonCurrentAssetGoodwillOnConsolidationT2\",\n \"nonCurrentAssetSinkingFundT2\",\n \"nonCurrentAssetPropertyPlantEquipmentT2\",\n \"nonCurrentAssetInventoriesT2\",\n \"nonCurrentAssetRightOfUseAssetsT2\",\n \"nonCurrentAssetIntangibleAssetsT2\",\n \"nonCurrentAssetPrepaidLeasePaymentsT2\",\n \"nonCurrentAssetFinancialAssetAtFairValueT2\",\n \"nonCurrentAssetLandUseRightT2\",\n \"nonCurrentAssetTradeReceivablesT2\",\n \"nonCurrentAssetOtherReceivablesT2\",\n \"nonCurrentAssetTradeAndOtherReceivablesT2\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT2\",\n \"totalNonCurrentAssetsT2\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT2\",\n \"currentAssetShortTermInvestmentsT2\",\n \"currentAssetTradeDebtorsT2\",\n \"currentAssetShortTermDepositsT2\",\n \"currentAssetAmountDueFromHoldingCompanyT2\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT2\",\n \"currentAssetAmountDueFromAssociatedCompaniesT2\",\n \"currentAssetAmountDueFromDirectorT2\",\n \"currentAssetAmountDueFromCustomerT2\",\n \"currentAssetAmountOwingByShareholdersT2\",\n \"currentAssetInventoriesT2\",\n \"currentAssetFinancialAssetAtFairValueT2\",\n \"currentAssetLandUseRightT2\",\n \"currentAssetTaxRecoverableT2\",\n \"currentAssetContractAssetsT2\",\n \"currentAssetCurrentTaxAssetsT2\",\n \"currentAssetPrepaymentsT2\",\n \"currentAssetDerivativeT2\",\n \"currentAssetCashAndBankBalancesT2\",\n \"currentAssetOtherReceivablesT2\",\n \"currentAssetRestrictedCashT2\",\n \"currentAssetCashAndCashEquivalentsT2\",\n \"currentAssetDepositsCashAndBankBalancesT2\",\n \"currentAssetCashAtBanksT2\",\n \"currentAssetCashOnHandT2\",\n \"currentAssetDepositsAndPrepaymentsT2\",\n \"currentAssetTradeAndOtherReceivablesT2\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT2\",\n \"currentAssetOtherReceivablesAndDepositsT2\",\n \"currentAssetOtherReceivablesAndPrepaymentsT2\",\n \"currentAssetCashT2\",\n \"totalCurrentAssetsT2\",\n \"totalAssetsT2\",\n \"currentLiabilitiesTradeCreditorsT2\",\n \"currentLiabilitiesHirePurchasePayablesT2\",\n \"currentLiabilitiesBankOverdraftT2\",\n \"currentLiabilitiesBankAcceptanceT2\",\n \"currentLiabilitiesBorrowingsOrTermLoansT2\",\n \"currentLiabilitiesBankborrowingsT2\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT2\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT2\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT2\",\n \"currentLiabilitiesAmountsOwingToDirectorT2\",\n \"currentLiabilitiesProvisionForTaxationT2\",\n \"currentLiabilitiesLeasePayablesT2\",\n \"currentLiabilitiesFinanceLeasePayablesT2\",\n \"currentLiabilitiesOtherPayablesT2\",\n \"currentLiabilitiesDividendPayablesT2\",\n \"currentLiabilitiesTradeAndOtherPayablesT2\",\n \"currentLiabilitiesDepositsFromCustomersT2\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT2\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT2\",\n \"currentLiabilitiesContractLiabilitiesT2\",\n \"currentLiabilitiesDerivativeT2\",\n \"totalCurrentLiabilitiesT2\",\n \"shortTermLiabilitiesT2\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT2\",\n \"nonCurrentLiabilitiesBankBorrowingsT2\",\n \"nonCurrentLiabilitiesLeaseObligationsT2\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT2\",\n \"nonCurrentLiabilitiesDeferredTaxationT2\",\n \"nonCurrentLiabilitiesRetirementBenefitsT2\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT2\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT2\",\n \"nonCurrentLiabilitiesContractLiabilitiesT2\",\n \"totalNonCurrentLiabilitiesT2\",\n \"totalLiabilitiesT2\",\n \"tangibleAssetsT2\",\n \"shareCapitalT2\",\n \"preferenceShareCapitalT2\",\n \"sharePremiumT2\",\n \"reservesT2\",\n \"capitalReservesT2\",\n \"revaluationReservesT2\",\n \"exchangeEqualisationOrFluctuationReservesT2\",\n \"retainedEarningsT2\",\n \"totalEquityT2\",\n \"revenueT2\",\n \"costOfGoodsSoldT2\",\n \"grossProfitT2\",\n \"otherIncomeT2\",\n \"profitFromOperationsT2\",\n \"financeCostT2\",\n \"ebitdaT2\",\n \"taxesT2\",\n \"zakatT2\",\n \"profitAfterTaxT2\",\n \"netProfitT2\",\n \"netOperatingCashFlowT2\",\n \"depreciationT2\",\n \"depreciationOfPropertyPlantEquipmentT2\",\n \"depreciationRightOfUseAssetsT2\",\n \"depreciationOfInvestmentPropertiesT2\",\n \"depreciationOfInvestmentSecuritiesT2\",\n \"endOfYearCashT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials_fincap_t2\",\n \"displayName\": \"Audited Financial Statement (T-2) (FinCap)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"nonCurrentAssetsSubsidiaryCompaniesT3\",\n \"nonCurrentAssetsAssociatedCompaniesT3\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT3\",\n \"nonCurrentAssetInvestmentPropertiesT3\",\n \"nonCurrentAssetsInvestmentsT3\",\n \"nonCurrentAssetInvestmentSecuritiesT3\",\n \"nonCurrentAssetDeferredAssetsT3\",\n \"nonCurrentAssetDepositsT3\",\n \"nonCurrentAssetOwnGoodwillT3\",\n \"nonCurrentAssetGoodwillOnConsolidationT3\",\n \"nonCurrentAssetSinkingFundT3\",\n \"nonCurrentAssetPropertyPlantEquipmentT3\",\n \"nonCurrentAssetInventoriesT3\",\n \"nonCurrentAssetRightOfUseAssetsT3\",\n \"nonCurrentAssetIntangibleAssetsT3\",\n \"nonCurrentAssetPrepaidLeasePaymentsT3\",\n \"nonCurrentAssetFinancialAssetAtFairValueT3\",\n \"nonCurrentAssetLandUseRightT3\",\n \"nonCurrentAssetTradeReceivablesT3\",\n \"nonCurrentAssetOtherReceivablesT3\",\n \"nonCurrentAssetTradeAndOtherReceivablesT3\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT3\",\n \"totalNonCurrentAssetsT3\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT3\",\n \"currentAssetShortTermInvestmentsT3\",\n \"currentAssetTradeDebtorsT3\",\n \"currentAssetShortTermDepositsT3\",\n \"currentAssetAmountDueFromHoldingCompanyT3\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT3\",\n \"currentAssetAmountDueFromAssociatedCompaniesT3\",\n \"currentAssetAmountDueFromDirectorT3\",\n \"currentAssetAmountDueFromCustomerT3\",\n \"currentAssetAmountOwingByShareholdersT3\",\n \"currentAssetInventoriesT3\",\n \"currentAssetFinancialAssetAtFairValueT3\",\n \"currentAssetLandUseRightT3\",\n \"currentAssetTaxRecoverableT3\",\n \"currentAssetContractAssetsT3\",\n \"currentAssetCurrentTaxAssetsT3\",\n \"currentAssetPrepaymentsT3\",\n \"currentAssetDerivativeT3\",\n \"currentAssetCashAndBankBalancesT3\",\n \"currentAssetOtherReceivablesT3\",\n \"currentAssetRestrictedCashT3\",\n \"currentAssetCashAndCashEquivalentsT3\",\n \"currentAssetDepositsCashAndBankBalancesT3\",\n \"currentAssetCashAtBanksT3\",\n \"currentAssetCashOnHandT3\",\n \"currentAssetDepositsAndPrepaymentsT3\",\n \"currentAssetTradeAndOtherReceivablesT3\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT3\",\n \"currentAssetOtherReceivablesAndDepositsT3\",\n \"currentAssetOtherReceivablesAndPrepaymentsT3\",\n \"currentAssetCashT3\",\n \"totalCurrentAssetsT3\",\n \"totalAssetsT3\",\n \"currentLiabilitiesTradeCreditorsT3\",\n \"currentLiabilitiesHirePurchasePayablesT3\",\n \"currentLiabilitiesBankOverdraftT3\",\n \"currentLiabilitiesBankAcceptanceT3\",\n \"currentLiabilitiesBorrowingsOrTermLoansT3\",\n \"currentLiabilitiesBankborrowingsT3\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT3\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT3\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT3\",\n \"currentLiabilitiesAmountsOwingToDirectorT3\",\n \"currentLiabilitiesProvisionForTaxationT3\",\n \"currentLiabilitiesLeasePayablesT3\",\n \"currentLiabilitiesFinanceLeasePayablesT3\",\n \"currentLiabilitiesOtherPayablesT3\",\n \"currentLiabilitiesDividendPayablesT3\",\n \"currentLiabilitiesTradeAndOtherPayablesT3\",\n \"currentLiabilitiesDepositsFromCustomersT3\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT3\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT3\",\n \"currentLiabilitiesContractLiabilitiesT3\",\n \"currentLiabilitiesDerivativeT3\",\n \"totalCurrentLiabilitiesT3\",\n \"shortTermLiabilitiesT3\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT3\",\n \"nonCurrentLiabilitiesBankBorrowingsT3\",\n \"nonCurrentLiabilitiesLeaseObligationsT3\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT3\",\n \"nonCurrentLiabilitiesDeferredTaxationT3\",\n \"nonCurrentLiabilitiesRetirementBenefitsT3\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT3\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT3\",\n \"nonCurrentLiabilitiesContractLiabilitiesT3\",\n \"totalNonCurrentLiabilitiesT3\",\n \"totalLiabilitiesT3\",\n \"tangibleAssetsT3\",\n \"shareCapitalT3\",\n \"preferenceShareCapitalT3\",\n \"sharePremiumT3\",\n \"reservesT3\",\n \"capitalReservesT3\",\n \"revaluationReservesT3\",\n \"exchangeEqualisationOrFluctuationReservesT3\",\n \"retainedEarningsT3\",\n \"totalEquityT3\",\n \"revenueT3\",\n \"costOfGoodsSoldT3\",\n \"grossProfitT3\",\n \"otherIncomeT3\",\n \"profitFromOperationsT3\",\n \"financeCostT3\",\n \"ebitdaT3\",\n \"taxesT3\",\n \"zakatT3\",\n \"profitAfterTaxT3\",\n \"netProfitT3\",\n \"netOperatingCashFlowT3\",\n \"depreciationT3\",\n \"depreciationOfPropertyPlantEquipmentT3\",\n \"depreciationRightOfUseAssetsT3\",\n \"depreciationOfInvestmentPropertiesT3\",\n \"depreciationOfInvestmentSecuritiesT3\",\n \"endOfYearCashT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"ssm\",\n \"displayName\": \"Form 9 / Section 17 / Form D\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"incorporatedDate\",\n \"companyName\",\n \"companyRegNo\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"ssm_business_information\",\n \"displayName\": \"SSM Company Profile\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"ssmCompanyName\",\n \"ssmCompanyRegNo\",\n \"ssmIncorporatedDate\",\n \"businessCommencementDate\",\n \"businessNature\",\n \"companyStatus\",\n \"shareholders\",\n \"directors\",\n \"previousDirectors\",\n \"totalShareIssued\",\n \"companyLastOldName\",\n \"companyNameDateOfChange\",\n \"businessOrigin\",\n \"registeredAddress\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"ic_front\",\n \"displayName\": \"Identification Card (Front)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"icNumber\",\n \"icName\",\n \"icAddress\",\n \"icGender\",\n \"icReligion\",\n \"icDateOfBirth\",\n \"icPlaceOfBirth\",\n \"icNationality\",\n \"icRace\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"epf_statement_t1\",\n \"displayName\": \"Employees' Provident Fund (T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"epfAccountHolderNameT1\",\n \"epfAccountHolderAddressT1\",\n \"epfStatementYearT1\",\n \"epfKwspMemberNumberT1\",\n \"epfIcNumberT1\",\n \"epfEmployerNumberT1\",\n \"epfDateOfStatementT1\",\n \"epfTotalContributionT1\",\n \"epfTotalCurrentContributionT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"epf_statement_t2\",\n \"displayName\": \"Employees' Provident Fund (T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"epfAccountHolderNameT2\",\n \"epfAccountHolderAddressT2\",\n \"epfStatementYearT2\",\n \"epfKwspMemberNumberT2\",\n \"epfIcNumberT2\",\n \"epfEmployerNumberT2\",\n \"epfDateOfStatementT2\",\n \"epfTotalContributionT2\",\n \"epfTotalCurrentContributionT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t1\",\n \"displayName\": \"Payslip Statement (Month T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT1\",\n \"payslipEmployeeNameT1\",\n \"payslipPayPeriodT1\",\n \"payslipPayDateT1\",\n \"payslipGrossPayT1\",\n \"payslipDeductionT1\",\n \"payslipEmployeeEpfContributionT1\",\n \"payslipEmployeeSocsoContributionT1\",\n \"payslipNetPayT1\",\n \"payslipBasicPayT1\",\n \"payslipFixedAllowancesT1\",\n \"payslipVariableIncomeT1\",\n \"payslipEmployeeEisContributionT1\",\n \"payslipEmployeeTaxT1\",\n \"payslipOtherDeductionT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t2\",\n \"displayName\": \"Payslip Statement (Month T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT2\",\n \"payslipEmployeeNameT2\",\n \"payslipPayPeriodT2\",\n \"payslipPayDateT2\",\n \"payslipGrossPayT2\",\n \"payslipDeductionT2\",\n \"payslipEmployeeEpfContributionT2\",\n \"payslipEmployeeSocsoContributionT2\",\n \"payslipNetPayT2\",\n \"payslipBasicPayT2\",\n \"payslipFixedAllowancesT2\",\n \"payslipVariableIncomeT2\",\n \"payslipEmployeeEisContributionT2\",\n \"payslipEmployeeTaxT2\",\n \"payslipOtherDeductionT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t3\",\n \"displayName\": \"Payslip Statement (Month T-3)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT3\",\n \"payslipEmployeeNameT3\",\n \"payslipPayPeriodT3\",\n \"payslipPayDateT3\",\n \"payslipGrossPayT3\",\n \"payslipDeductionT3\",\n \"payslipEmployeeEpfContributionT3\",\n \"payslipEmployeeSocsoContributionT3\",\n \"payslipNetPayT3\",\n \"payslipBasicPayT3\",\n \"payslipFixedAllowancesT3\",\n \"payslipVariableIncomeT3\",\n \"payslipEmployeeEisContributionT3\",\n \"payslipEmployeeTaxT3\",\n \"payslipOtherDeductionT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t4\",\n \"displayName\": \"Payslip Statement (Month T-4)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT4\",\n \"payslipEmployeeNameT4\",\n \"payslipPayPeriodT4\",\n \"payslipPayDateT4\",\n \"payslipGrossPayT4\",\n \"payslipDeductionT4\",\n \"payslipEmployeeEpfContributionT4\",\n \"payslipEmployeeSocsoContributionT4\",\n \"payslipNetPayT4\",\n \"payslipBasicPayT4\",\n \"payslipFixedAllowancesT4\",\n \"payslipVariableIncomeT4\",\n \"payslipEmployeeEisContributionT4\",\n \"payslipEmployeeTaxT4\",\n \"payslipOtherDeductionT4\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t5\",\n \"displayName\": \"Payslip Statement (Month T-5)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT5\",\n \"payslipEmployeeNameT5\",\n \"payslipPayPeriodT5\",\n \"payslipPayDateT5\",\n \"payslipGrossPayT5\",\n \"payslipDeductionT5\",\n \"payslipEmployeeEpfContributionT5\",\n \"payslipEmployeeSocsoContributionT5\",\n \"payslipNetPayT5\",\n \"payslipBasicPayT5\",\n \"payslipFixedAllowancesT5\",\n \"payslipVariableIncomeT5\",\n \"payslipEmployeeEisContributionT5\",\n \"payslipEmployeeTaxT5\",\n \"payslipOtherDeductionT5\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t6\",\n \"displayName\": \"Payslip Statement (Month T-6)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT6\",\n \"payslipEmployeeNameT6\",\n \"payslipPayPeriodT6\",\n \"payslipPayDateT6\",\n \"payslipGrossPayT6\",\n \"payslipDeductionT6\",\n \"payslipEmployeeEpfContributionT6\",\n \"payslipEmployeeSocsoContributionT6\",\n \"payslipNetPayT6\",\n \"payslipBasicPayT6\",\n \"payslipFixedAllowancesT6\",\n \"payslipVariableIncomeT6\",\n \"payslipEmployeeEisContributionT6\",\n \"payslipEmployeeTaxT6\",\n \"payslipOtherDeductionT6\"\n ],\n \"category\": \"13\"\n }\n ]\n}\n","{\n \"version\": 2,\n \"types\": [\n {\n \"displayName\": \"Text\",\n \"name\": \"text\"\n },\n {\n \"displayName\": \"Number\",\n \"name\": \"number\"\n },\n {\n \"displayName\": \"Email\",\n \"name\": \"email\"\n },\n {\n \"displayName\": \"Dropdown\",\n \"name\": \"dropdown\"\n },\n {\n \"displayName\": \"Checkbox\",\n \"name\": \"checkbox\"\n },\n {\n \"displayName\": \"Radio Group\",\n \"name\": \"radiogroup\"\n },\n {\n \"displayName\": \"Boolean\",\n \"name\": \"boolean\"\n },\n {\n \"displayName\": \"File\",\n \"name\": \"file\"\n },\n {\n \"displayName\": \"Slider\",\n \"name\": \"slider\"\n },\n {\n \"displayName\": \"Range\",\n \"name\": \"range\"\n },\n {\n \"displayName\": \"Long Text (Comment)\",\n \"name\": \"comment\"\n },\n {\n \"displayName\": \"HTML Content\",\n \"name\": \"html\"\n }\n ],\n \"input_types\": [\n {\n \"displayName\": \"Text\",\n \"name\": \"text\"\n },\n {\n \"displayName\": \"Number\",\n \"name\": \"number\"\n },\n {\n \"displayName\": \"Email\",\n \"name\": \"email\"\n },\n {\n \"displayName\": \"Tel\",\n \"name\": \"tel\"\n },\n {\n \"displayName\": \"Date\",\n \"name\": \"date\"\n },\n {\n \"displayName\": \"Password\",\n \"name\": \"password\"\n },\n {\n \"displayName\": \"URL\",\n \"name\": \"url\"\n }\n ]\n}\n","{\n \"version\": 1,\n \"options\": [\n {\n \"id\": 1,\n \"displayName\": \"Numeric Validator\",\n \"class\": \"NumericValidator\",\n \"description\": \"Ensures the answer is a number within the specified range of minValue and maxValue.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"numeric\",\n \"text\": \"Value must be within the range of 0 to 100\",\n \"minValue\": 0,\n \"maxValue\": 100\n }\n ]\n },\n {\n \"id\": 2,\n \"displayName\": \"Text Length Validator\",\n \"class\": \"TextValidator\",\n \"description\": \"Confirms the length of entered text is between minLength and maxLength.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"text\",\n \"minLength\": 10,\n \"maxLength\": 280\n }\n ]\n },\n {\n \"id\": 3,\n \"displayName\": \"Regex Validator\",\n \"class\": \"RegexValidator\",\n \"description\": \"Throws an error if an entered value does not match a regular expression defined in the regex property.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The value must match the required pattern.\",\n \"regex\": \"your-regex-pattern-here\"\n }\n ]\n },\n {\n \"id\": 4,\n \"displayName\": \"Email Validator\",\n \"class\": \"EmailValidator\",\n \"description\": \"Confirms that the entered value is a valid e-mail address.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"email\",\n \"text\": \"Value must be a valid email\"\n }\n ]\n },\n {\n \"id\": 5,\n \"displayName\": \"Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the field's expression always evaluates to true.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{fields} = true\",\n \"text\": \"The value must be true and cannot be false.\"\n }\n ]\n },\n {\n \"id\": 6,\n \"displayName\": \"Answer Count Validator\",\n \"class\": \"AnswerCountValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures selection of an appropriate number of choices, keeping responses within the minCount and maxCount range.\",\n \"validators\": [\n {\n \"type\": \"answercount\",\n \"minCount\": 2,\n \"maxCount\": 4\n }\n ]\n },\n {\n \"id\": 7,\n \"displayName\": \"Full Name Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the entered value is a valid full name.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please make sure the name doesn't include extra spaces, numbers, or invalid symbols\",\n \"regex\": \"^[A-Za-z'-]+(?:\\\\s[A-Za-z'-]+)*\\\\s?[A-Za-z'-]+$\"\n }\n ]\n },\n {\n \"id\": 8,\n \"displayName\": \"Mobile Phone No Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures valid Malaysia phone number is entered.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^(011[0-9]{8}|01[2346789][0-9]{7}|[2-9][0-9]{0,8})$\"\n }\n ]\n },\n {\n \"id\": 9,\n \"displayName\": \"IC Number Total Digits Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures exactly 12 digits are entered for the IC number.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{12}$\",\n \"text\": \"Please enter exactly 12 digits numbers\"\n }\n ]\n },\n {\n \"id\": 10,\n \"displayName\": \"IC Number Valid Birth Year, Month, and Date Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures valid birth year, month, and day are entered for the IC number.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^(\\\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\\\\d{6}$\",\n \"text\": \"First 6 digits must be valid birth year (00-99), month (01-12), and day (01-31)\"\n }\n ]\n },\n {\n \"id\": 11,\n \"displayName\": \"Duration in Current Residence (Months) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures duration includes a number between 0-11.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|10|11)$\",\n \"text\": \"Value must be a number between 0-11.\"\n }\n ]\n },\n {\n \"id\": 12,\n \"displayName\": \"Duration in Current Residence (Years) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures duration includes a number between 0-99.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|[1-9][0-9])$\",\n \"text\": \"Value must be a number between 0-99.\"\n }\n ]\n },\n {\n \"id\": 13,\n \"displayName\": \"Office Phone No. Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures office phone number is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The phone number must be a valid Malaysian number\",\n \"regex\": \"^(011[0-9]{8}|(60[4-7]|004|005|006|007|009|609|012|013|014|016|017|019)[0-9]{7})$\"\n }\n ]\n },\n {\n \"id\": 14,\n \"displayName\": \"Age Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures age entered is between 21-55.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number age between 21 and 55.\",\n \"regex\": \"^(2[1-9]|[3-4][0-9]|55)$\"\n }\n ]\n },\n {\n \"id\": 15,\n \"displayName\": \"Consent(s) Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the field's expression always evaluates to true.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{consentCrossSelling} = true\",\n \"text\": \"You must provide consent to Consent Cross-Selling.\"\n }\n ]\n },\n {\n \"id\": 16,\n \"displayName\": \"Date Joined Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures date joined is in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"text\": \"Date must be in YYYY-MM-DD format\"\n }\n ]\n },\n {\n \"id\": 17,\n \"displayName\": \"Date Joined Custom Validator\",\n \"class\": \"CustomValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures date joined is not in the future.\",\n \"validators\": [\n {\n \"type\": \"custom\",\n \"validator\": \"validateNotFutureDate\",\n \"text\": \"Date of joining cannot be in the future\"\n }\n ]\n },\n {\n \"id\": 18,\n \"displayName\": \"Emergency Contact No. Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures emergency contact number is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^((60[4-79]|0[4-79])[0-9]{7}|011[0-9]{8}|01[2346789][0-9]{7})$\"\n }\n ]\n },\n {\n \"id\": 19,\n \"displayName\": \"Monthly Gross Income Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures monthly gross income is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d+(\\\\.\\\\d+)?$\",\n \"text\": \"Please enter a valid non-negative number.\"\n }\n ]\n },\n {\n \"id\": 20,\n \"displayName\": \"Monthly Gross Income Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures monthly gross income is at least RM 2000.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{monthlyGrossIncome} >= 2000\",\n \"text\": \"Income must be at least RM 2000.\"\n }\n ]\n },\n {\n \"id\": 21,\n \"displayName\": \"No of Dependants Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures number of dependants is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number between 0 and 99.\",\n \"regex\": \"^[0-9][0-9]?$\"\n }\n ]\n },\n {\n \"id\": 22,\n \"displayName\": \"Financing Tenure (Years) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing tenure is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ]\n },\n {\n \"id\": 23,\n \"displayName\": \"Financing Amount Range Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing amount is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n }\n ]\n },\n {\n \"id\": 24,\n \"displayName\": \"Financing Amount Incrementals Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing amount is entered incrementally in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ]\n }\n ]\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FieldData, Category } from \"./survey-generator.js\";\nimport type { FormFieldTypeDefinitions, EditorValidator } from \"./form-field.js\";\nimport type { FormValidatorDefinitions } from \"./form-field-validator.js\";\nimport FormField from \"./form-field.js\";\nimport baseSpecsData from \"./data/form-field-base-specs.json\" with { type: \"json\" };\nimport typeDefsData from \"./data/form-field-types.json\" with { type: \"json\" };\nimport validatorDefsData from \"./data/form-field-validators.json\" with { type: \"json\" };\n\nexport const BASE_FIELD_SPECS: {\n schemaVersion: string;\n categories: Category[];\n fields: FieldData[];\n} = baseSpecsData as any;\n\nexport const FIELD_TYPE_DEFINITIONS: FormFieldTypeDefinitions = typeDefsData as FormFieldTypeDefinitions;\n\nexport const DEFAULT_VALIDATOR_DEFINITIONS: FormValidatorDefinitions = {\n version: (validatorDefsData as any).version,\n options: (validatorDefsData as any).options as EditorValidator[],\n};\n\nexport function getBaseFieldSpecs(): FieldData[] {\n return BASE_FIELD_SPECS.fields;\n}\n\nexport function getBaseCategories(): Category[] {\n return BASE_FIELD_SPECS.categories;\n}\n\nlet cachedFieldSpecMap: Map<string, FieldData> | null = null;\n\n/**\n * Returns a cached Map of base field name → FieldData.\n * Keyed by each field's `name` property from the base specs.\n */\nexport function getBaseFieldSpecMap(): Map<string, FieldData> {\n if (cachedFieldSpecMap) {\n return cachedFieldSpecMap;\n }\n\n const map = new Map<string, FieldData>();\n for (const field of BASE_FIELD_SPECS.fields) {\n if (field.name) {\n map.set(field.name, field);\n }\n }\n\n cachedFieldSpecMap = map;\n return cachedFieldSpecMap;\n}\n\nlet cachedFieldNames: string[] | null = null;\n\nexport function getBaseFieldNames(): string[] {\n if (cachedFieldNames) {\n return cachedFieldNames;\n }\n\n const fields = BASE_FIELD_SPECS.fields;\n const names: string[] = [];\n\n for (const field of fields) {\n try {\n const formField = FormField.fromObject(field);\n names.push(...formField.getFieldNames());\n } catch {\n // Skip fields that fail to parse\n }\n }\n\n cachedFieldNames = [...new Set(names)];\n return cachedFieldNames;\n}\n","/*\n * IHS data processing types.\n * Used by finsys-client and finhub-adonisjs to render application details.\n */\n\nexport enum IhsValueFormat {\n STRING = 'string',\n CURRENCY = 'currency',\n NUMBER = 'number',\n PERCENTAGE = 'percentage',\n DATE = 'date',\n TABLE = 'table',\n}\n\nexport interface IhsFieldDetail {\n name: string\n displayName: string\n category: string\n value: unknown\n valueFormat: IhsValueFormat\n}\n\nexport interface IhsDetailCategory {\n category: string\n items: { name: string; displayName: string; value: unknown; valueFormat: IhsValueFormat }[]\n}\n\nexport enum FileFieldTableType {\n TIME_SERIES = 'timeSeries',\n KEY_VALUE = 'keyValue',\n}\n\nexport interface FileFieldTableItem {\n displayName: string\n timePeriods: string[]\n data: Record<string, unknown>\n formattedData: Record<string, string>\n type: FileFieldTableType\n isNumeric: boolean\n}\n\nexport interface FileFieldTableData {\n name: string\n displayName: string\n type: FileFieldTableType\n items: FileFieldTableItem[]\n hasData: boolean\n}\n","{\n \"accountHolderName\": \"Account Holder Name\",\n \"statementDate\": \"Statement Date\",\n \"bankName\": \"Bank Name\",\n \"accountNumber\": \"Account Number\",\n \"totalCredits\": \"Total Credits\",\n \"totalDebits\": \"Total Debits\",\n \"openingBalance\": \"Opening Balance\",\n \"bankBalance\": \"Bank Balance\",\n \"nonCurrentAssetsSubsidiaryCompanies\": \"Subsidiary Companies (Non-Current Assets)\",\n \"nonCurrentAssetsAssociatedCompanies\": \"Associated Companies (Non-Current Assets)\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditure\": \"Development Properties/Expenditure (Non-Current Assets)\",\n \"nonCurrentAssetInvestmentProperties\": \"Investment Properties (Non-Current Assets)\",\n \"nonCurrentAssetsInvestments\": \"Investments (Non-Current Assets)\",\n \"nonCurrentAssetInvestmentSecurities\": \"Investment Securities (Non-Current Assets)\",\n \"nonCurrentAssetDeferredAssets\": \"Deferred Assets (Non-Current Assets)\",\n \"nonCurrentAssetDeposits\": \"Deposits (Non-Current Assets)\",\n \"nonCurrentAssetOwnGoodwill\": \"Own Goodwill (Non-Current Assets)\",\n \"nonCurrentAssetGoodwillOnConsolidation\": \"Goodwill on Consolidation (Non-Current Assets)\",\n \"nonCurrentAssetSinkingFund\": \"Sinking Fund (Non-Current Assets)\",\n \"nonCurrentAssetPropertyPlantEquipment\": \"Property, Plant & Equipment (Non-Current Assets)\",\n \"nonCurrentAssetInventories\": \"Inventories (Non-Current Assets)\",\n \"nonCurrentAssetRightOfUseAssets\": \"Right of Use Assets (Non-Current Assets)\",\n \"nonCurrentAssetIntangibleAssets\": \"Intangible Assets (Non-Current Assets)\",\n \"nonCurrentAssetPrepaidLeasePayments\": \"Prepaid Lease Payments (Non-Current Assets)\",\n \"nonCurrentAssetFinancialAssetAtFairValue\": \"Financial Assets at Fair Value (Non-Current Assets)\",\n \"nonCurrentAssetLandUseRight\": \"Land Use Rights (Non-Current Assets)\",\n \"nonCurrentAssetTradeReceivables\": \"Trade Receivables (Non-Current Assets)\",\n \"nonCurrentAssetOtherReceivables\": \"Other Receivables (Non-Current Assets)\",\n \"nonCurrentAssetTradeAndOtherReceivables\": \"Trade and Other Receivables (Non-Current Assets)\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepayments\": \"Other Receivables, Deposits and Prepayments (Non-Current Assets)\",\n \"totalNonCurrentAssets\": \"Total Non-Current Assets\",\n \"currentAssetDevelopmentPropertiesOrExpenditure\": \"Development Properties/Expenditure (Current Assets)\",\n \"currentAssetShortTermInvestments\": \"Short Term Investments (Current Assets)\",\n \"currentAssetTradeDebtors\": \"Trade Debtors (Current Assets)\",\n \"currentAssetShortTermDeposits\": \"Short Term Deposits (Current Assets)\",\n \"currentAssetAmountDueFromHoldingCompany\": \"Amount Due from Holding Company (Current Assets)\",\n \"currentAssetAmountDueFromSubsidiaryCompanies\": \"Amount Due from Subsidiary Companies (Current Assets)\",\n \"currentAssetAmountDueFromAssociatedCompanies\": \"Amount Due from Associated Companies (Current Assets)\",\n \"currentAssetAmountDueFromDirector\": \"Amount Due from Director (Current Assets)\",\n \"currentAssetAmountDueFromCustomer\": \"Amount Due from Customer (Current Assets)\",\n \"currentAssetAmountOwingByShareholders\": \"Amount Owing by Shareholders (Current Assets)\",\n \"currentAssetInventories\": \"Inventories (Current Assets)\",\n \"currentAssetFinancialAssetAtFairValue\": \"Financial Assets at Fair Value (Current Assets)\",\n \"currentAssetLandUseRight\": \"Land Use Rights (Current Assets)\",\n \"currentAssetTaxRecoverable\": \"Tax Recoverable (Current Assets)\",\n \"currentAssetContractAssets\": \"Contract Assets (Current Assets)\",\n \"currentAssetCurrentTaxAssets\": \"Current Tax Assets (Current Assets)\",\n \"currentAssetPrepayments\": \"Prepayments (Current Assets)\",\n \"currentAssetDerivative\": \"Derivatives (Current Assets)\",\n \"currentAssetCashAndBankBalances\": \"Cash and Bank Balances (Current Assets)\",\n \"currentAssetOtherReceivables\": \"Other Receivables (Current Assets)\",\n \"currentAssetRestrictedCash\": \"Restricted Cash (Current Assets)\",\n \"currentAssetCashAndCashEquivalents\": \"Cash and Cash Equivalents (Current Assets)\",\n \"currentAssetDepositsCashAndBankBalances\": \"Deposits, Cash and Bank Balances (Current Assets)\",\n \"currentAssetCashAtBanks\": \"Cash at Banks (Current Assets)\",\n \"currentAssetCashOnHand\": \"Cash on Hand (Current Assets)\",\n \"currentAssetDepositsAndPrepayments\": \"Deposits and Prepayments (Current Assets)\",\n \"currentAssetTradeAndOtherReceivables\": \"Trade and Other Receivables (Current Assets)\",\n \"currentAssetOtherReceivablesDepositsAndPrepayments\": \"Other Receivables, Deposits and Prepayments (Current Assets)\",\n \"currentAssetOtherReceivablesAndDeposits\": \"Other Receivables and Deposits (Current Assets)\",\n \"currentAssetOtherReceivablesAndPrepayments\": \"Other Receivables and Prepayments (Current Assets)\",\n \"currentAssetCash\": \"Cash (Current Assets)\",\n \"totalCurrentAssets\": \"Total Current Assets\",\n \"totalAssets\": \"Total Assets\",\n \"currentLiabilitiesTradeCreditors\": \"Trade Creditors (Current Liabilities)\",\n \"currentLiabilitiesHirePurchasePayables\": \"Hire Purchase Payables (Current Liabilities)\",\n \"currentLiabilitiesBankOverdraft\": \"Bank Overdraft (Current Liabilities)\",\n \"currentLiabilitiesBankAcceptance\": \"Bank Acceptance (Current Liabilities)\",\n \"currentLiabilitiesBorrowingsOrTermLoans\": \"Borrowings/Term Loans (Current Liabilities)\",\n \"currentLiabilitiesBankborrowings\": \"Bank Borrowings (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToHoldingCompany\": \"Amounts Owing to Holding Company (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompanies\": \"Amounts Owing to Subsidiary Companies (Current Liabilities)\",\n \"currentLiabilitiesAmountOwingToAssociatedCompanies\": \"Amount Owing to Associated Companies (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToDirector\": \"Amounts Owing to Director (Current Liabilities)\",\n \"currentLiabilitiesProvisionForTaxation\": \"Provision for Taxation (Current Liabilities)\",\n \"currentLiabilitiesLeasePayables\": \"Lease Payables (Current Liabilities)\",\n \"currentLiabilitiesFinanceLeasePayables\": \"Finance Lease Payables (Current Liabilities)\",\n \"currentLiabilitiesOtherPayables\": \"Other Payables (Current Liabilities)\",\n \"currentLiabilitiesDividendPayables\": \"Dividend Payables (Current Liabilities)\",\n \"currentLiabilitiesTradeAndOtherPayables\": \"Trade and Other Payables (Current Liabilities)\",\n \"currentLiabilitiesDepositsFromCustomers\": \"Deposits from Customers (Current Liabilities)\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDeposits\": \"Other Payables, Accruals and Deposits (Current Liabilities)\",\n \"currentLiabilitiesOtherPayablesAndAccruals\": \"Other Payables and Accruals (Current Liabilities)\",\n \"currentLiabilitiesContractLiabilities\": \"Contract Liabilities (Current Liabilities)\",\n \"currentLiabilitiesDerivative\": \"Derivative Liabilities (Current Liabilities)\",\n \"totalCurrentLiabilities\": \"Total Current Liabilities\",\n \"shortTermLiabilities\": \"Short Term Liabilities\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoans\": \"Borrowings/Term Loans (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesBankBorrowings\": \"Bank Borrowings (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesLeaseObligations\": \"Lease Obligations (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesFinanceLeaseObligations\": \"Finance Lease Obligations (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesDeferredTaxation\": \"Deferred Taxation (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesRetirementBenefits\": \"Retirement Benefits (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesHirePurchasePayables\": \"Hire Purchase Payables (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesDepositsFromCustomers\": \"Deposits from Customers (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesContractLiabilities\": \"Contract Liabilities (Non-Current Liabilities)\",\n \"totalNonCurrentLiabilities\": \"Total Non-Current Liabilities\",\n \"totalLiabilities\": \"Total Liabilities\",\n \"tangibleAssets\": \"Tangible Assets\",\n \"shareCapital\": \"Share Capital\",\n \"preferenceShareCapital\": \"Preference Share Capital\",\n \"sharePremium\": \"Share Premium\",\n \"reserves\": \"Reserves\",\n \"capitalReserves\": \"Capital Reserves\",\n \"revaluationReserves\": \"Revaluation Reserves\",\n \"exchangeEqualisationOrFluctuationReserves\": \"Exchange Equalisation/Fluctuation Reserves\",\n \"retainedEarnings\": \"Retained Earnings\",\n \"totalEquity\": \"Total Equity\",\n \"revenue\": \"Revenue\",\n \"costOfGoodsSold\": \"Cost of Goods Sold\",\n \"grossProfit\": \"Gross Profit\",\n \"otherIncome\": \"Other Income\",\n \"profitFromOperations\": \"Profit from Operations\",\n \"financeCost\": \"Finance Cost\",\n \"ebitda\": \"Profit Before Tax\",\n \"taxes\": \"Taxes\",\n \"zakat\": \"Zakat\",\n \"profitAfterTax\": \"Profit After Tax\",\n \"netProfit\": \"Net Profit\",\n \"netOperatingCashFlow\": \"Net Operating Cash Flow\",\n \"depreciation\": \"Depreciation\",\n \"depreciationOfPropertyPlantEquipment\": \"Depreciation of Property, Plant & Equipment\",\n \"depreciationRightOfUseAssets\": \"Depreciation of Right of Use Assets\",\n \"depreciationOfInvestmentProperties\": \"Depreciation of Investment Properties\",\n \"depreciationOfInvestmentSecurities\": \"Depreciation of Investment Securities\",\n \"endOfYearCash\": \"End of Year Cash\",\n \"epfAccountHolderName\": \"Account Holder Name\",\n \"epfAccountHolderAddress\": \"Account Holder Address\",\n \"epfStatementYear\": \"Statement Year\",\n \"epfKwspMemberNumber\": \"KWSP Member Number\",\n \"epfIcNumber\": \"IC No.\",\n \"epfEmployerNumber\": \"Employer Number\",\n \"epfDateOfStatement\": \"Date Of Statement\",\n \"epfTotalContribution\": \"Total Contribution\",\n \"epfTotalCurrentContribution\": \"Total Current Contribution\",\n \"payslipEmployerName\": \"Employer Name\",\n \"payslipEmployeeName\": \"Employee Name\",\n \"payslipPayPeriod\": \"Pay Period\",\n \"payslipPayDate\": \"Pay Date\",\n \"payslipGrossPay\": \"Gross Pay\",\n \"payslipDeduction\": \"Deduction\",\n \"payslipEmployeeEpfContribution\": \"Employee EPF Contribution\",\n \"payslipEmployeeSocsoContribution\": \"Employee SOCSO Contribution\",\n \"payslipNetPay\": \"Net Pay\",\n \"incorporatedDate\": \"Incorporated Date\",\n \"companyName\": \"Company Name\",\n \"companyRegNo\": \"Company Registration No.\",\n \"ssmCompanyName\": \"Company Name (SSM)\",\n \"ssmCompanyRegNo\": \"Registration No. (SSM)\",\n \"ssmIncorporatedDate\": \"Incorporated Date (SSM)\",\n \"businessCommencementDate\": \"Business Commencement Date\",\n \"businessNature\": \"Business Nature\",\n \"companyStatus\": \"Company Status\",\n \"shareholders\": \"Shareholders\",\n \"directors\": \"Directors\",\n \"previousDirectors\": \"Previous Directors\",\n \"totalShareIssued\": \"Total Shares Issued\",\n \"companyLastOldName\": \"Previous Company Name\",\n \"companyNameDateOfChange\": \"Company Name Change Date\",\n \"businessOrigin\": \"Business Origin\",\n \"registeredAddress\": \"Registered Address\",\n \"icName\": \"Name (IC)\",\n \"icNumber\": \"IC Number\",\n \"icAddress\": \"Address (IC)\",\n \"icGender\": \"Gender (IC)\",\n \"icReligion\": \"Religion (IC)\",\n \"icDateOfBirth\": \"Date of Birth (IC)\",\n \"icPlaceOfBirth\": \"Place of Birth (IC)\",\n \"icNationality\": \"Nationality (IC)\",\n \"icRace\": \"Race (IC)\"\n}\n","/*\n * IHS data processing functions.\n *\n * Pure data transformations for extracting structured detail and\n * file-field table data from raw IHS API responses. Used by both\n * finsys-client and finhub-adonisjs.\n */\n\nimport type { FieldData } from './survey-generator.js'\nimport {\n IhsValueFormat,\n FileFieldTableType,\n} from './ihs-types.js'\nimport type {\n IhsFieldDetail,\n IhsDetailCategory,\n FileFieldTableData,\n FileFieldTableItem,\n} from './ihs-types.js'\nimport { getBaseFieldSpecs, getBaseCategories, getBaseFieldSpecMap } from './catalogs.js'\nimport displayNamesData from './data/form-field-display-names.json' with { type: 'json' }\n\n// ── Display names ──────────────────────────────────────────────\n\nconst displayNames: Record<string, string> = displayNamesData as Record<string, string>\n\n/** Returns the full display name registry (extraction column → human label). */\nexport function getDisplayNames(): Record<string, string> {\n return displayNames\n}\n\n/** Looks up a display name. Falls back to camelCase → Title Case conversion. */\nexport function getDisplayName(fieldName: string): string {\n if (displayNames[fieldName]) return displayNames[fieldName]\n return fieldName\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (s) => s.toUpperCase())\n .trim()\n}\n\n// ── Time-period utilities ──────────────────────────────────────\n\nconst TIME_PERIOD_REGEX = /T(\\d+)$/\n\nexport function extractTimePeriods(columnNames: string[]): string[] {\n const periods = new Set<string>()\n for (const col of columnNames) {\n const match = TIME_PERIOD_REGEX.exec(col)\n if (match) periods.add(`T${match[1]}`)\n }\n return [...periods].sort((a, b) => {\n const numA = parseInt(a.slice(1), 10)\n const numB = parseInt(b.slice(1), 10)\n return numA - numB\n })\n}\n\nexport function groupColumnsByTimePeriod(\n columnNames: string[]\n): Record<string, Record<string, string>> {\n const groups: Record<string, Record<string, string>> = {}\n for (const col of columnNames) {\n const match = /^(.+?)(T\\d+)$/.exec(col)\n if (!match) continue\n const [, baseName, period] = match\n if (!groups[baseName]) groups[baseName] = {}\n groups[baseName][period] = col\n }\n return groups\n}\n\n// ── Field grouping ─────────────────────────────────────────────\n\nconst FIELD_GROUP_PREFIXES: [string, string][] = [\n ['bank_statement', 'bank_statements'],\n ['financials', 'financials'],\n ['epf_statement', 'epf_statements'],\n ['payslip_statement', 'payslip_statements'],\n ['ssm_business_information', 'ssm_company_profile'],\n ['ssm', 'ssm_documents'],\n ['ic_', 'ic_documents'],\n]\n\nexport function groupFieldsByPattern(fields: FieldData[]): Record<string, FieldData[]> {\n const groups: Record<string, FieldData[]> = {}\n for (const field of fields) {\n if (!field.name) continue\n let groupName = field.name\n for (const [prefix, group] of FIELD_GROUP_PREFIXES) {\n if (field.name.startsWith(prefix)) {\n groupName = group\n break\n }\n }\n if (!groups[groupName]) groups[groupName] = []\n groups[groupName].push(field)\n }\n return groups\n}\n\n/** Human-friendly display names for field groups (when a group combines multiple fields). */\nconst GROUP_DISPLAY_NAMES: Record<string, string> = {\n bank_statements: 'Bank Statements',\n financials: 'Audited Financial Statements',\n epf_statements: 'EPF Statements',\n payslip_statements: 'Payslip Statements',\n ssm_documents: 'Form 9 / Section 17 / Form D',\n ssm_company_profile: 'SSM Company Profile',\n ic_documents: 'Identification Card',\n}\n\n// ── File-field table building ──────────────────────────────────\n\nfunction isNumericField(fieldName: string): boolean {\n const patterns = [\n 'balance',\n 'amount',\n 'credit',\n 'debit',\n 'total',\n 'revenue',\n 'cost',\n 'income',\n 'expense',\n 'liability',\n 'asset',\n 'equity',\n 'profit',\n 'loss',\n 'cash',\n 'tax',\n 'interest',\n ]\n const lower = fieldName.toLowerCase()\n return patterns.some((p) => lower.includes(p))\n}\n\nfunction formatValue(value: unknown, numeric: boolean): string {\n if (value === null || value === undefined || value === '') return '-'\n if (numeric) {\n const num = Number(value)\n if (!isNaN(num))\n return num.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })\n }\n return String(value)\n}\n\nfunction buildTableForGroup(\n groupName: string,\n fields: FieldData[],\n ihsData: Record<string, unknown>\n): FileFieldTableData | null {\n const allColumns: string[] = []\n for (const field of fields) {\n if (field.ihs_column_names) {\n allColumns.push(...field.ihs_column_names)\n }\n }\n if (allColumns.length === 0) return null\n\n const periods = extractTimePeriods(allColumns)\n const isTimeSeries = periods.length > 0\n const tableType = isTimeSeries ? FileFieldTableType.TIME_SERIES : FileFieldTableType.KEY_VALUE\n const groupDisplayName =\n GROUP_DISPLAY_NAMES[groupName] || fields[0]?.displayName || getDisplayName(groupName)\n\n if (isTimeSeries) {\n const columnGroups = groupColumnsByTimePeriod(allColumns)\n const items: FileFieldTableItem[] = []\n\n for (const [baseName, periodMap] of Object.entries(columnGroups)) {\n const numeric = isNumericField(baseName)\n const data: Record<string, unknown> = {}\n const formattedData: Record<string, string> = {}\n\n for (const period of periods) {\n const colName = periodMap[period]\n const value = colName ? (ihsData[colName] ?? null) : null\n data[period] = value\n formattedData[period] = formatValue(value, numeric)\n }\n\n items.push({\n displayName: getDisplayName(baseName),\n timePeriods: periods,\n data,\n formattedData,\n type: tableType,\n isNumeric: numeric,\n })\n }\n\n const hasData = items.some((item) =>\n Object.values(item.data).some((v) => v !== null && v !== undefined && v !== '')\n )\n return { name: groupName, displayName: groupDisplayName, type: tableType, items, hasData }\n } else {\n const items: FileFieldTableItem[] = []\n for (const colName of allColumns) {\n const value = ihsData[colName] ?? null\n const numeric = isNumericField(colName)\n items.push({\n displayName: getDisplayName(colName),\n timePeriods: [],\n data: { value },\n formattedData: { value: formatValue(value, numeric) },\n type: tableType,\n isNumeric: numeric,\n })\n }\n const hasData = items.some((item) => {\n const v = item.data['value']\n return v !== null && v !== undefined && v !== ''\n })\n return { name: groupName, displayName: groupDisplayName, type: tableType, items, hasData }\n }\n}\n\nexport function buildFileFieldTables(\n ihsData: Record<string, unknown>\n): Record<string, FileFieldTableData> {\n const specs = getBaseFieldSpecs()\n const fileFields = specs.filter((f) => f.type === 'file' && f.ihs_column_names?.length)\n const grouped = groupFieldsByPattern(fileFields)\n\n const tables: Record<string, FileFieldTableData> = {}\n for (const [groupName, fields] of Object.entries(grouped)) {\n const table = buildTableForGroup(groupName, fields, ihsData)\n if (table && table.hasData) {\n tables[groupName] = table\n }\n }\n return tables\n}\n\n// ── IHS detail processing ──────────────────────────────────────\n\nfunction isFileOrFinancialColumn(fieldName: string, fileColumnSet: Set<string>): boolean {\n return (\n fileColumnSet.has(fieldName) ||\n fieldName.startsWith('financials') ||\n fieldName.startsWith('bank_statement')\n )\n}\n\nfunction inferValueFormat(fieldName: string, value: unknown): IhsValueFormat {\n const currencyFields = new Set([\n 'totalFinancing',\n 'monthlyGrossIncome',\n 'approvedAmount',\n 'monthlyInstallment',\n ])\n if (currencyFields.has(fieldName)) return IhsValueFormat.CURRENCY\n\n const numberFields = new Set([\n 'age',\n 'noOfDependants',\n 'financingTenure',\n 'ihsId',\n 'programId',\n 'borrowerAgentId',\n ])\n if (numberFields.has(fieldName)) return IhsValueFormat.NUMBER\n\n const tableFields = new Set(['shareholders', 'directors', 'previousDirectors'])\n if (tableFields.has(fieldName)) return IhsValueFormat.TABLE\n\n if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) return IhsValueFormat.DATE\n\n return IhsValueFormat.STRING\n}\n\nconst EXCLUDED_FIELDS = new Set([\n 'updatedAt',\n 'programIds',\n 'borrowerAgentId',\n 'programId',\n '__v',\n '_id',\n 'id',\n])\n\nexport function processIhsDetails(ihsData: Record<string, unknown>): IhsFieldDetail[] {\n const specs = getBaseFieldSpecs()\n const fileColumnSet = new Set<string>()\n for (const field of specs) {\n if (field.type === 'file' && field.ihs_column_names) {\n for (const col of field.ihs_column_names) {\n fileColumnSet.add(col)\n }\n }\n }\n\n const specMap = getBaseFieldSpecMap()\n const categories = getBaseCategories()\n const categoryNameMap: Record<string, string> = {}\n for (const cat of categories) {\n categoryNameMap[String(cat.id)] = cat.name\n }\n\n const details: IhsFieldDetail[] = []\n\n for (const [key, value] of Object.entries(ihsData)) {\n if (value === null || value === undefined || value === '' || value === 'Not Specified') continue\n if (value === false) continue\n if (EXCLUDED_FIELDS.has(key)) continue\n if (isFileOrFinancialColumn(key, fileColumnSet)) continue\n\n const spec = specMap.get(key)\n const categoryId = spec?.category ? String(spec.category) : '0'\n const category = categoryNameMap[categoryId] || 'General'\n\n details.push({\n name: key,\n displayName: getDisplayName(key),\n category,\n value,\n valueFormat: inferValueFormat(key, value),\n })\n }\n\n return details\n}\n\nexport function groupDetailsByCategory(details: IhsFieldDetail[]): IhsDetailCategory[] {\n const groups: Record<string, IhsFieldDetail[]> = {}\n for (const detail of details) {\n if (!groups[detail.category]) groups[detail.category] = []\n groups[detail.category].push(detail)\n }\n\n return Object.entries(groups)\n .filter(([cat]) => cat !== 'Default Category' && cat !== 'General')\n .map(([category, items]) => ({\n category,\n items: items.map((d) => ({\n name: d.name,\n displayName: d.displayName,\n value: d.value,\n valueFormat: d.valueFormat,\n })),\n }))\n}\n"],"mappings":";AAoBO,SAAS,kBAAkB,WAA2B;AAC3D,QAAM,OAAO,oBAAI,KAAK;AACtB,OAAK,QAAQ,CAAC;AACd,OAAK,SAAS,KAAK,SAAS,IAAI,SAAS;AACzC,SAAO,KAAK,eAAe,WAAW,EAAE,OAAO,OAAO,CAAC;AACzD;AAEO,SAAS,iBAAiB,UAA0B;AACzD,QAAM,OAAO,oBAAI,KAAK;AACtB,UAAQ,KAAK,YAAY,IAAI,UAAU,SAAS;AAClD;AASO,SAAS,mBAAmB,YAAoB,MAAoB;AACzE,MAAI,CAAC,WAAY,QAAO;AAExB,MAAI;AAEF,QAAI,eAAe,WAAW,QAAQ,gBAAgB,CAAC,GAAG,QAAQ;AAEhE,aAAO,SAAS,IAAI,KAAK,CAAC;AAAA,IAC5B,CAAC;AAKD,mBAAe,aAAa,QAAQ,wBAAwB,IAAI;AAQhE,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,cAAc,GAAG;AAAA,IAC3C;AAOA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,GAAG,GAAG,mBAAmB,GAAG;AAAA,IAC/C;AAMA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,qBAAqB,GAAG;AAAA,IAClD;AAGA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,KAAK,GAAG,qBAAqB,GAAG;AAAA,IACnD;AAGA,UAAM,OAAO,IAAI,SAAS,UAAU,YAAY,GAAG;AACnD,WAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,EAC/B,SAAS,GAAG;AAEV,WAAO;AAAA,EACT;AACF;;;ACqEA,SAAS,eAAe,OAAqC;AAE3D,QAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa;AACpE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,IACV;AAAA,EACF;AACF;AAKA,SAAS,sBACP,KACA,QACsB;AACtB,MAAI,OAAO,QAAQ,UAAU;AAE3B,UAAM,WAAW,OAAO,GAAG;AAC3B,QAAI,CAAC,UAAU;AACb,cAAQ,KAAK,UAAU,GAAG,kCAAkC;AAC5D,aAAO;AAAA,IACT;AACA,WAAO,eAAe,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;AAAA,EAClD;AAEA,MAAI,gBAAgB,KAAK;AAEvB,WAAO,eAAe,IAAI,UAA2B;AAAA,EACvD;AAEA,MAAI,SAAS,KAAK;AAEhB,UAAM,WAAW,OAAO,IAAI,GAAG;AAC/B,QAAI,CAAC,UAAU;AACb,cAAQ,KAAK,UAAU,IAAI,GAAG,kCAAkC;AAChE,aAAO;AAAA,IACT;AACA,UAAM,EAAE,KAAK,WAAW,GAAG,UAAU,IAAI;AACzC,WAAO,eAAe,EAAE,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,EACtE;AAEA,SAAO;AACT;AAMO,SAAS,mBAAmB,OAAqC;AACtE,QAAM,qBAAqB,MAAM,KAAK,MAAM,yBAAyB;AACrE,MAAI,oBAAoB;AACtB,UAAM,YAAY,SAAS,mBAAmB,CAAC,GAAG,EAAE;AACpD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa,mBAAmB,kBAAkB,SAAS,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,MAAI,MAAM,SAAS,cAAc;AAC/B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa,gCAAgC,iBAAiB,CAAC,CAAC;AAAA,IAClE;AAAA,EACF;AACA,SAAO;AACT;AAKO,SAAS,mBAAmB,QAA+D;AAChG,MAAI,CAAC,OAAO,SAAS,OAAO,MAAM,WAAW,EAAG,QAAO,CAAC;AAExD,QAAM,YAAY,OAAO,MAAM,KAAK,OAAK,EAAE,OAAO,iBAAiB;AACnE,MAAI,CAAC,UAAW,QAAO,CAAC;AAExB,QAAM,aAAa,OAAO,cAAc,CAAC;AACzC,QAAM,cAAsC,WAAW,OAAO,CAAC,KAAK,QAAQ;AAC1E,QAAI,IAAI,EAAE,IAAI,IAAI;AAClB,WAAO;AAAA,EACT,GAAG,CAAC,CAA2B;AAG/B,QAAM,kBAAkB,UAAU,OAC/B,IAAI,SAAO,sBAAsB,KAAK,OAAO,MAAM,CAAC,EACpD,OAAO,CAAC,MAA0B,MAAM,IAAI,EAC5C,IAAI,OAAK,mBAAmB,CAAC,CAAC,EAC9B,IAAI,OAAK,mBAAmB,CAAC,CAAC;AAGjC,QAAM,UAAU,gBAAgB,OAAO,CAAC,KAA0C,UAAU;AAC1F,UAAM,UAAU,YAAY,MAAM,QAAkB,KAAK;AACzD,QAAI,CAAC,IAAI,OAAO,EAAG,KAAI,OAAO,IAAI,CAAC;AACnC,QAAI,OAAO,EAAE,KAAK,KAAK;AACvB,WAAO;AAAA,EACT,GAAG,CAAC,CAAwC;AAG5C,QAAM,QAA0B,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,cAAc,QAAQ,OAAO;AAAA,IACzF,MAAM,aAAa,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACpD,OAAO,UAAU,yBAAyB,QAAQ,KAAK;AAAA,IACvD,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,MAAM,GAAG,aAAa,YAAY,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAE;AAEF,SAAO;AAAA,IACL,OAAO,OAAO,eAAe;AAAA,IAC7B,cAAc;AAAA,IACd;AAAA,IACA,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,IACvB,eAAe;AAAA,IACf,SAAS,UAAU,WAAW;AAAA,IAC9B,cAAc;AAAA,IACd,2BAA2B;AAAA,IAC3B,iBAAiB,UAAU,oBAAoB,QAAQ,QAAQ;AAAA,IAC/D,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AACF;AAKA,SAAS,mBAAmB,OAAyC;AACnE,QAAM,UAA6B;AAAA,IACjC,MAAM,MAAM;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,GAAI,MAAM,eAAe,EAAE,OAAO,MAAM,YAAY;AAAA,IACpD,YAAY,MAAM,cAAc,MAAM,YAAY;AAAA,IAClD,GAAI,MAAM,aAAa,EAAE,WAAW,OAAO,MAAM,SAAS,EAAE;AAAA,EAC9D;AAEA,MAAI,MAAM,SAAS,QAAQ;AACzB,YAAQ,kBAAkB;AAAA,EAC5B;AAGA,QAAM,cAAc,CAAC,eAAe,YAAY,UAAU;AAC1D,SAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,QAAI,EAAE,OAAO,YAAY,CAAC,YAAY,SAAS,GAAG,KAAK,MAAM,GAAG,MAAM,QAAW;AAC/E,cAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC;AAGD,UAAQ,WAAW,MAAM,YAAY;AAErC,SAAO;AACT;AAKO,SAAS,kBACd,MACA,QACiB;AACjB,SAAO,KAAK,OACT,IAAI,SAAO,sBAAsB,KAAK,MAAM,CAAC,EAC7C,OAAO,CAAC,MAA0B,MAAM,IAAI,EAC5C,IAAI,OAAK,mBAAmB,CAAC,CAAC;AACnC;AAKO,SAAS,gBACd,YACA,YACQ;AACR,MAAI,eAAe,OAAW,QAAO;AACrC,QAAM,MAAM,WAAW,KAAK,OAAK,EAAE,OAAO,UAAU;AACpD,SAAO,KAAK,QAAQ;AACtB;AAWO,SAAS,sBACd,QACA,YACc;AACd,QAAM,SAAuB,CAAC;AAC9B,MAAI,eAAkC;AAEtC,aAAW,SAAS,QAAQ;AAC1B,UAAM,WAAW,MAAM,YAAY;AAEnC,QAAI,CAAC,gBAAgB,aAAa,aAAa,UAAU;AACvD,qBAAe;AAAA,QACb;AAAA,QACA,cAAc,gBAAgB,UAAU,UAAU;AAAA,QAClD,QAAQ,CAAC;AAAA,MACX;AACA,aAAO,KAAK,YAAY;AAAA,IAC1B;AAEA,iBAAa,OAAO,KAAK,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;;;AC5WA,SAAS,SAAS;AAuClB,SAAS,0BACP,YACA,QACc;AACd,SAAO,WAAW,YAAY,CAAC,MAAM,QAAQ;AAC3C,WAAO,QAAQ,CAAC,UAAU;AACxB,YAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa,SAAS,MAAM,SAAS;AAC5F,UAAI,CAAC,WAAY;AAGjB,UAAI,YAAY,MAAM,YAAY;AAClC,UAAI,aAAa,MAAM,WAAW;AAChC,oBAAY,mBAAmB,MAAM,WAAW,IAAI;AAAA,MACtD;AAEA,UAAI,WAAW;AACb,cAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,cAAM,UACJ,UAAU,UACV,UAAU,QACV,UAAU,MACT,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAE5C,YAAI,SAAS;AACX,cAAI,SAAS;AAAA,YACX,MAAM,EAAE,aAAa;AAAA,YACrB,SAAS;AAAA,YACT,MAAM,CAAC,MAAM,IAAI;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAAS,kBAAkB,QAA4C;AAE5E,QAAM,QAAQ,OAAO,SAAS,CAAC;AAC/B,QAAM,aAAa,OAAO,cAAc,CAAC;AACzC,QAAM,YAAY,OAAO,UAAU,CAAC;AAEpC,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AAGA,QAAM,YAA6B,CAAC;AAEpC,aAAW,QAAQ,OAAO;AACxB,UAAM,aAAa,kBAAkB,MAAM,SAAS;AACpD,cAAU,KAAK,GAAG,UAAU;AAAA,EAC9B;AAGA,QAAM,eAAe,UAAU,IAAI,kBAAkB;AAGrD,QAAM,QAAsC,CAAC;AAC7C,QAAM,gBAAqC,CAAC;AAE5C,eAAa,QAAQ,CAAC,UAAU;AAC9B,QAAI,SAAuB,EAAE,OAAO;AAIpC,QAAI,WAA8D;AAGlE,QAAI,MAAM,cAAc,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS,SAAS;AAChH,eAAS,EAAE,OAAO,OAAO;AACzB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,MAAM,iBAAiB,SAAY,OAAO,MAAM,YAAY,IAAI;AAAA,IAC9F,WAAW,MAAM,SAAS,YAAY;AACpC,eAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3B,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B,WAAW,MAAM,SAAS,QAAQ;AAChC,eAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AACxB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B,WAAW,MAAM,SAAS,WAAW;AACnC,eAAS,EAAE,QAAQ;AACnB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,MAAM,gBAAgB;AAAA,IACpD,WAAW,MAAM,SAAS,QAAQ;AAChC,eAAS,EAAE,IAAI,EAAE,SAAS;AAC1B,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI;AAAA,IAC9B,OAAO;AACL,UAAI,MAAM,QAAQ,MAAM,YAAY,GAAG;AACrC,sBAAc,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,KAAK;AAAA,MACvD,OAAO;AACL,sBAAc,MAAM,IAAI,IAAI,MAAM,gBAAgB;AAAA,MACpD;AAAA,IACF;AAKA,QAAI,aAAa,YAAY,kBAAkB,EAAE,WAAW;AAC1D,UAAI,YAAY;AAChB,UAAI,MAAM,QAAQ,OAAW,aAAY,UAAU,IAAI,OAAO,MAAM,GAAG,GAAG,EAAE,SAAS,oBAAoB,MAAM,GAAG,GAAG,CAAC;AACtH,UAAI,MAAM,QAAQ,OAAW,aAAY,UAAU,IAAI,OAAO,MAAM,GAAG,GAAG,EAAE,SAAS,oBAAoB,MAAM,GAAG,GAAG,CAAC;AACtH,eAAS;AAAA,IACX;AAEA,UAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa,SAAS,MAAM,SAAS;AAC5F,UAAM,kBAAkB,MAAM,YAAY,SAAS,CAAC,MAAM;AAC1D,UAAM,kBAAkB,MAAM,SAAS;AAIvC,QAAI,cAAc,mBAAmB,iBAAiB;AACpD,UAAI,aAAa,YAAY,kBAAkB,EAAE,WAAW;AAC1D,iBAAS,OAAO,IAAI,GAAG,EAAE,SAAS,yBAAyB,CAAC;AAAA,MAC9D,WAAW,aAAa,WAAW,kBAAkB,EAAE,UAAU;AAC/D,iBAAS,OAAO,IAAI,GAAG,EAAE,SAAS,oCAAoC,CAAC;AAAA,MACzE;AAAA,IACF;AAQA,UAAM,4BAA4B,MAAM,YAAY,KAAK,OAAK,EAAE,SAAS,OAAO;AAChF,SAAK,MAAM,cAAc,WAAW,MAAM,SAAS,YAAY,aAAa,YAAY,kBAAkB,EAAE,aAAa,CAAC,2BAA2B;AACnJ,eAAS,OAAO,OAAO,SAAO,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,SAAS;AAAA,QACrF,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAGA,QAAI,MAAM,YAAY;AACpB,YAAM,WAAW,QAAQ,CAAC,MAAM;AAC9B,YAAI,EAAE,SAAS,WAAW,EAAE,OAAO;AACjC,cAAI;AACF,kBAAM,QAAQ,IAAI,OAAO,EAAE,KAAK;AAChC,gBAAI,aAAa,UAAU;AACzB,uBAAS,OAAO,OAAO,CAAC,QAAa,QAAQ,MAAM,MAAM,KAAK,GAAG,GAAG;AAAA,gBAClE,SAAS,EAAE,QAAQ;AAAA,cACrB,CAAC;AAAA,YACH;AAAA,UACF,SAAS,GAAG;AACV,oBAAQ,KAAK,mCAAmC,MAAM,IAAI,KAAK,EAAE,KAAK;AAAA,UACxE;AAAA,QACF;AACA,YAAI,EAAE,SAAS,WAAW,aAAa,UAAU;AAC/C,mBAAS,OAAO,OAAO,CAAC,QAAa,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,SAAS;AAAA,YAC5F,SAAS,EAAE,QAAQ;AAAA,UACrB,CAAC;AAAA,QACH;AACA,YAAI,EAAE,SAAS,aAAa,kBAAkB,EAAE,WAAW;AACzD,cAAI,YAAY;AAChB,cAAI,EAAE,aAAa,OAAW,aAAY,UAAU,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACvF,cAAI,EAAE,aAAa,OAAW,aAAY,UAAU,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACvF,mBAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AAIA,QAAI,EAAE,cAAc,mBAAmB,kBAAkB;AACvD,UAAI,aAAa,UAAU;AACzB,iBAAS,OAAO,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAAA,MAC1D,WAAW,aAAa,SAAS;AAC/B,iBAAS,OAAO,SAAS;AAAA,MAC3B,WAAW,aAAa,WAAW;AACjC,iBAAS,OAAO,SAAS;AAAA,MAC3B,WAAW,aAAa,UAAU;AAChC,iBAAS,OAAO,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAAA,MAC7C;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,IAAI;AAAA,EACtB,CAAC;AAGD,QAAM,gBAAgB,sBAAsB,cAAc,UAAU;AAGpE,QAAM,QAAmB,MAAM,IAAI,CAAC,MAAM,QAAQ;AAChD,UAAM,aAAa,kBAAkB,MAAM,SAAS;AAEpD,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OAAO,KAAK,SAAS;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB,QAAQ;AAAA,MACR,sBAAsB,KAAK,wBAAwB;AAAA,MACnD,QAAQ,KAAK;AAAA,IACf;AAAA,EACF,CAAC;AAGD,QAAM,aAAa,EAAE,OAAO,KAAK;AACjC,QAAM,YAAY,0BAA0B,YAAY,YAAY;AAEpE,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,aAAa,OAAO,eAAe;AAAA,IACnC;AAAA,IACA,cAAc,OAAO;AAAA,EACvB;AACF;AAKO,SAAS,cAAc,MAAe,YAA+B;AAC1E,QAAM,iBAAiB,KAAK,OAAO,IAAI,OAAK,EAAE,IAAI;AAClD,QAAM,YAA0C,CAAC;AAGjD,MAAI;AAEJ,MAAI,sBAAsB,EAAE,WAAW;AACrC,cAAU;AAAA,EACZ,WAAW,cAAc,OAAO,eAAe,YAAY,gBAAgB,YAAY;AACrF,cAAU,WAAW;AAAA,EACvB,WAAW,cAAc,UAAU,cAAc,WAAW,KAAK,kBAAkB,EAAE,WAAW;AAE9F,cAAU,WAAW,KAAK;AAAA,EAC5B;AAEA,MAAI,CAAC,SAAS;AACZ,YAAQ,KAAK,uEAAuE;AACpF,WAAO,EAAE,OAAO,CAAC,CAAC;AAAA,EACpB;AAEA,QAAM,QAAQ,QAAQ;AACtB,QAAM,aAA8B,CAAC;AAErC,iBAAe,QAAQ,UAAQ;AAC7B,QAAI,QAAQ,OAAO;AACjB,gBAAU,IAAI,IAAI,MAAM,IAAI;AAE5B,YAAM,WAAW,KAAK,OAAO,KAAK,OAAK,EAAE,SAAS,IAAI;AACtD,UAAI,SAAU,YAAW,KAAK,QAAQ;AAAA,IACxC;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,EAAE,OAAO,SAAS;AACzC,SAAO,0BAA0B,gBAAgB,UAAU;AAC7D;AAKO,SAAS,qBACd,MACA,aACqB;AACrB,QAAM,eAAoC,CAAC;AAE3C,OAAK,OAAO,QAAQ,WAAS;AAC3B,QAAI,MAAM,QAAQ,aAAa;AAC7B,mBAAa,MAAM,IAAI,IAAI,YAAY,MAAM,IAAI;AAAA,IACnD;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ACpTA,OAAO,eAAgC;AACvC,OAAO,gBAAgB;;;ACjBvB;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,eAAiB;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,aAAe;AAAA,IACjB;AAAA,IACA,aAAe;AAAA,MACb,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,cAAgB;AAAA,MACd,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,sBAAwB;AAAA,QACtB,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC,cAAc,UAAU,OAAO;AAAA,EAC5C,aAAe;AAAA,IACb,UAAY;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,IAAM;AAAA,UACJ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ,EAAE,MAAQ,UAAU,aAAe,wCAAwC;AAAA,MACrF;AAAA,MACA,UAAY,CAAC,MAAM,MAAM;AAAA,IAC3B;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,OAAS,EAAE,MAAQ,UAAU,aAAe,+CAA+C;AAAA,QAC3F,MAAQ,EAAE,MAAQ,UAAU,aAAe,+BAA+B;AAAA,MAC5E;AAAA,MACA,UAAY,CAAC,SAAS,MAAM;AAAA,IAC9B;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,MAAQ,CAAC,SAAS,SAAS,WAAW,QAAQ,cAAc,eAAe,QAAQ;AAAA,UACnF,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ,EAAE,MAAQ,UAAU,aAAe,iDAAiD;AAAA,QAC5F,OAAS,EAAE,MAAQ,UAAU,aAAe,8CAA8C;AAAA,QAC1F,UAAY,EAAE,MAAQ,UAAU,aAAe,2CAA2C;AAAA,QAC1F,UAAY,EAAE,MAAQ,UAAU,aAAe,2CAA2C;AAAA,QAC1F,WAAa,EAAE,MAAQ,WAAW,aAAe,sCAAsC;AAAA,QACvF,WAAa,EAAE,MAAQ,WAAW,aAAe,sCAAsC;AAAA,QACvF,UAAY,EAAE,MAAQ,WAAW,aAAe,iDAAiD;AAAA,QACjG,UAAY,EAAE,MAAQ,WAAW,aAAe,iDAAiD;AAAA,QACjG,YAAc,EAAE,MAAQ,UAAU,aAAe,4CAA4C;AAAA,QAC7F,WAAa,EAAE,MAAQ,UAAU,aAAe,0DAA0D;AAAA,MAC5G;AAAA,MACA,UAAY,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,MAAQ,CAAC,QAAQ,UAAU,SAAS,QAAQ,YAAY,YAAY,WAAW,WAAW,cAAc,SAAS,QAAQ,QAAQ;AAAA,UACjI,aAAe;AAAA,QACjB;AAAA,QACA,WAAa;AAAA,UACX,MAAQ;AAAA,UACR,MAAQ,CAAC,QAAQ,UAAU,OAAO,QAAQ,SAAS,YAAY,KAAK;AAAA,UACpE,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,WAAa,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,2BAA2B;AAAA,QACxF,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,0CAA0C;AAAA,QACjG,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,0CAA0C;AAAA,QACjG,MAAQ,EAAE,MAAQ,UAAU,aAAe,yCAAyC;AAAA,QACpF,MAAQ,EAAE,MAAQ,UAAU,aAAe,oCAAoC;AAAA,QAC/E,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,uBAAuB;AAAA,QAC5C;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,0BAA0B;AAAA,QAC/C;AAAA,QACA,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,WAAa;AAAA,UACX,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,cAAgB;AAAA,UACd,MAAQ,CAAC,UAAU,UAAU,WAAW,OAAO;AAAA,UAC/C,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,eAAiB;AAAA,UACf,MAAQ;AAAA,UACR,MAAQ,CAAC,WAAW,OAAO,UAAU,QAAQ,QAAQ;AAAA,UACrD,aAAe;AAAA,QACjB;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC9B;AAAA,QACA,uBAAyB;AAAA,UACvB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,MACF;AAAA,MACA,UAAY,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,gBAAkB;AAAA,MAChB,aAAe;AAAA,MACf,OAAS;AAAA,QACP;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,YAAc;AAAA,YACZ,KAAO,EAAE,MAAQ,UAAU,aAAe,6CAA6C;AAAA,YACvF,aAAe,EAAE,MAAQ,UAAU,aAAe,sCAAsC;AAAA,YACxF,MAAQ,EAAE,MAAQ,UAAU,aAAe,qCAAqC;AAAA,YAChF,cAAgB,EAAE,MAAQ,CAAC,UAAU,UAAU,WAAW,OAAO,EAAE;AAAA,YACnE,UAAY,EAAE,MAAQ,UAAU;AAAA,YAChC,SAAW,EAAE,MAAQ,UAAU;AAAA,YAC/B,WAAa,EAAE,MAAQ,SAAS;AAAA,YAChC,UAAY,EAAE,MAAQ,UAAU;AAAA,YAChC,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,EAAE;AAAA,YACvC,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,EAAE;AAAA,YACvC,SAAW,EAAE,MAAQ,SAAS,OAAS,EAAE,MAAQ,uBAAuB,EAAE;AAAA,UAC5E;AAAA,UACA,UAAY,CAAC,KAAK;AAAA,QACpB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,YAAc;AAAA,YACZ,YAAc;AAAA,cACZ,OAAS;AAAA,gBACP,EAAE,MAAQ,0BAA0B;AAAA,gBACpC;AAAA,kBACE,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,kBAC7B;AAAA,kBACA,UAAY,CAAC,MAAM;AAAA,gBACrB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA,UAAY,CAAC,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,IAAM,EAAE,MAAQ,UAAU,aAAe,yBAAyB;AAAA,QAClE,OAAS,EAAE,MAAQ,UAAU,aAAe,+BAA+B;AAAA,QAC3E,aAAe,EAAE,MAAQ,UAAU,aAAe,4CAA4C;AAAA,QAC9F,SAAW,EAAE,MAAQ,WAAW,SAAW,OAAO,aAAe,yBAAyB;AAAA,QAC1F,iBAAmB,EAAE,MAAQ,WAAW,SAAW,OAAO,aAAe,0BAA0B;AAAA,QACnG,sBAAwB;AAAA,UACtB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ,CAAC,WAAW,QAAQ,UAAU;AAAA,UACtC,aAAe;AAAA,QACjB;AAAA,QACA,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,+BAA+B;AAAA,QACpD;AAAA,MACF;AAAA,MACA,UAAY,CAAC,MAAM,QAAQ;AAAA,IAC7B;AAAA,EACF;AACF;;;ADpPA,IAAM,MAAO,UAAkB,WAAW;AAC1C,IAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AAGtD,IAAM,eAAgB,WAAmB,WAAW;AACpD,aAAa,GAAG;AAGhB,IAAI,UAAU,6BAAmB,0BAA0B;AAWpD,SAAS,mBAAmB,MAAiC;AAClE,QAAM,WAAW,IAAI,UAAU,0BAA0B;AACzD,MAAI,CAAC,UAAU;AACb,WAAO,EAAE,OAAO,OAAO,SAAS,qCAAqC;AAAA,EACvE;AAEA,QAAM,QAAQ,SAAS,IAAI;AAC3B,SAAO;AAAA,IACL,OAAO,CAAC,CAAC;AAAA,IACT,QAAQ,SAAS,UAAU;AAAA,EAC7B;AACF;AAIO,SAAS,iBAAiB,MAAiC;AAChE,SAAO,mBAAmB,IAAI;AAChC;AAGO,SAAS,oBAAoB,MAAiC;AACnE,SAAO,mBAAmB,IAAI;AAChC;;;AE9CO,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,IAAqB,MAAc;AAC7C,SAAK,MAAM,OAAO,EAAE;AACpB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAI,KAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,KAAK,OAAe;AACtB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AACF;;;ACzBO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,aAAU;AAdA,SAAAA;AAAA,GAAA;AAiDZ,SAAS,YAAY,OAA0B;AAC7C,QAAM,UAAqC;AAAA,IACzC,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,yBAAkB,GAAG;AAAA,IACtB,CAAC,uBAAiB,GAAG;AAAA,IACrB,CAAC,yBAAkB,GAAG;AAAA,IACtB,CAAC,6BAAoB,GAAG;AAAA,IACxB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,mBAAe,GAAG;AAAA,IACnB,CAAC,uBAAiB,GAAG;AAAA,IACrB,CAAC,mBAAe,GAAG;AAAA,EACrB;AACA,SAAO,QAAQ,KAAK,KAAK;AAC3B;AAEA,IAA8B,YAA9B,MAAwC;AAAA,EAGtC,YAAY,MAAc,aAAqB,MAAc,UAAkB;AAC7E,SAAK,cAAc;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,aAAmC;AACnD,QAAI,CAAC,YAAY,MAAM;AACrB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,CAAC,YAAY,eAAe,CAAC,YAAY,UAAU;AACrD,YAAM,IAAI;AAAA,QACR,0BAA0B,YAAY,IAAI;AAAA,MAC5C;AAAA,IACF;AAEA,UAAM,iBAAiB,YAAY,YAAY,IAAc;AAC7D,QAAI,mBAAmB,yBAAmB;AACxC,YAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,4CAA4C,YAAY,IAAI;AAAA,MAClF;AAAA,IACF;AAEA,QACE,YAAY,WACZ,CAAC,CAAC,YAAY,YAAY,cAAc,QAAQ,EAAE,SAAS,YAAY,IAAc,GACrF;AAAA,IAEF;AAEA,QAAI,YAAY,SAAS,cAAc,CAAC,YAAY,SAAS;AAC3D,YAAM,IAAI;AAAA,QACR,0BAA0B,YAAY,IAAI;AAAA,MAC5C;AAAA,IACF;AAEA,QAAI;AACJ,QAAI,YAAY,SAAS,QAAQ;AAC/B,cAAQ,IAAI;AAAA,QACV,YAAY;AAAA,QACZ,YAAY,eAAe,YAAY;AAAA,QACvC,YAAY;AAAA,QACZ,OAAO,YAAY,QAAQ;AAAA,QAC3B,YAAY,oBAAoB,CAAC;AAAA,MACnC;AAAA,IACF,OAAO;AACL,cAAQ,IAAI;AAAA,QACV,YAAY;AAAA,QACZ,YAAY,eAAe,YAAY;AAAA,QACvC,YAAY,QAAQ;AAAA,QACpB,OAAO,YAAY,QAAQ;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,cAAc,EAAE,GAAG,YAAY;AACrC,UAAM,YAAY,WAAW,OAAO,MAAM,YAAY,QAAQ;AAG9D,WAAQ,MAAM,YAAoB;AAElC,WAAO;AAAA,EACT;AAAA,EAIU,YAAY,KAAe;AACnC,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO;AAE9C,QAAI,SAAS;AACb,QAAI,OAAO,IAAI,WAAW,cAAc,QAAQ,MAAM;AACpD,eAAS,IAAI,OAAO;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,IAAI,CAAC,MAAY,OAAO,MAAM,WAAW,KAAK,YAAY,CAAC,IAAI,CAAE;AAAA,IACjF;AAEA,QAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,UAAM,UAAe,CAAC;AACtB,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IAAI;AACzD,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,GAAG,IAAI,KAAK,YAAY,KAAK;AAAA,QACvC,OAAO;AACL,kBAAQ,GAAG,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,YAAY,EAAE,GAAG,KAAK,YAAY,CAAC;AAAA,EACjD;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK,YAAY,eAAe,KAAK,YAAY,QAAQ;AAAA,EAClE;AAAA,EAEA,IAAI,YAAY,gBAAwB;AACtC,SAAK,YAAY,cAAc;AAAA,EACjC;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,YAAY,QAAQ;AAAA,EAClC;AAAA,EAEA,IAAI,OAAkB;AACpB,WAAO,YAAY,KAAK,YAAY,IAAc;AAAA,EACpD;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK,YAAY,aAAa;AAAA,EACvC;AAAA,EAEA,IAAI,aAAqB;AACvB,WAAO,OAAO,KAAK,YAAY,YAAY,EAAE;AAAA,EAC/C;AAAA,EAEA,IAAI,WAAW,YAAoB;AACjC,SAAK,YAAY,WAAW;AAAA,EAC9B;AAAA,EAEA,IAAI,eAAoB;AACtB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAa,OAAY;AAC3B,SAAK,YAAY,eAAe;AAAA,EAClC;AAAA,EAEA,IAAI,cAAkC;AACpC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAsC;AACxC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,UAAoB;AACtB,WAAQ,KAAK,YAAY,WAAwB,CAAC;AAAA,EACpD;AAAA,EAEA,IAAI,QAAQ,SAAmB;AAC7B,SAAK,YAAY,UAAU;AAAA,EAC7B;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,YAAY,WAAW;AAAA,EACrC;AAAA,EAEA,IAAI,YAAgC;AAClC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAsB;AACxB,WAAO,KAAK,YAAY,YAAY,KAAK,YAAY,cAAc;AAAA,EACrE;AAAA,EAEA,IAAI,mBAA4B;AAC9B,WAAO,KAAK,YAAY,oBAAoB;AAAA,EAC9C;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO,KAAK,YAAY,yBAAyB;AAAA,EACnD;AAAA,EAEA,IAAI,YAAgC;AAClC,WAAO,OAAO,KAAK,YAAY,cAAc,WACzC,OAAO,SAAS,KAAK,YAAY,SAAS,IAC1C,KAAK,YAAY;AAAA,EACvB;AAAA,EAEA,IAAI,MAA0B;AAC5B,WAAO,OAAO,KAAK,YAAY,QAAQ,WACnC,OAAO,WAAW,KAAK,YAAY,GAAG,IACtC,KAAK,YAAY;AAAA,EACvB;AAAA,EAEA,IAAI,MAA0B;AAC5B,WAAO,OAAO,KAAK,YAAY,QAAQ,WACnC,OAAO,WAAW,KAAK,YAAY,GAAG,IACtC,KAAK,YAAY;AAAA,EACvB;AACF;AAEO,IAAM,iBAAN,cAA6B,UAAU;AAAA,EAC5C,YAAY,MAAc,aAAqB,MAAc,UAAkB;AAC7E,UAAM,MAAM,aAAa,MAAM,QAAQ;AAAA,EACzC;AAAA,EAEA,gBAA0B;AACxB,QAAI,KAAK,YAAY,0BAA0B,OAAO;AACpD,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,CAAC,KAAK,YAAY,IAAK;AAAA,EAChC;AACF;AAEO,IAAM,gBAAN,cAA4B,UAAU;AAAA,EAC3C,YACE,MACA,aACA,MACA,UACA,kBACA;AACA,UAAM,MAAM,aAAa,MAAM,QAAQ;AACvC,SAAK,YAAY,mBAAmB;AAAA,EACtC;AAAA,EAEA,gBAA0B;AACxB,QAAI,KAAK,YAAY,0BAA0B,OAAO;AACpD,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,oBAAoB,CAAC;AAAA,EAC/C;AACF;;;ACtSA,OAAO,YAAY;AAEZ,IAAM,YAAN,MAAM,UAAS;AAAA,EAQpB,YACE,aACA,YACA,QACA,QAAsB,CAAC,GACvB,cACA,gBAAwB,UAAS,2BACjC;AAdF,SAAQ,cAAmC,CAAC;AAC5C,SAAQ,UAAuB,CAAC;AAIhC,SAAQ,SAAuB,CAAC;AAU9B,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAKA,IAAI,aAAuB;AACzB,QAAI,QAAkB,CAAC;AAEvB,SAAK,OAAO,QAAQ,CAAC,UAAU;AAC7B,cAAQ,MAAM,OAAO,MAAM,cAAc,CAAC;AAAA,IAC5C,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,gBAAwB;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,kBAA2B;AAC7B,WAAO,OAAO,GAAG,KAAK,gBAAgB,UAAS,yBAAyB;AAAA,EAC1E;AAAA,EAEA,cAAoB;AAClB,SAAK,iBAAiB,UAAS;AAAA,EACjC;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAY,gBAAwB;AACtC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,IAAI,eAAmC;AACrC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,aAAa,OAA2B;AAC1C,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,IAAI,aAAkC;AACpC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,WAAW,YAAiC;AAC9C,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,IAAI,SAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAO,QAAqB;AAC9B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,QAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,MAAM,OAAqB;AAC7B,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS,OAAwB;AAC/B,SAAK,QAAQ,KAAK,KAAK;AAAA,EACzB;AAAA,EAEA,YAAY,OAAwB;AAClC,UAAM,QAAQ,KAAK,QAAQ,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AACjE,QAAI,UAAU,IAAI;AAChB,WAAK,QAAQ,KAAK,IAAI;AAAA,IACxB,OAAO;AACL,YAAM,IAAI;AAAA,QACR,GAAG,MAAM,IAAI,4BAA4B,KAAK,YAAY,kBAAkB,MAAM,IAAI;AAAA,MACxF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAY,WAAyB;AACnC,UAAM,aAAa,KAAK,QAAQ,UAAU,CAAC,MAAM,EAAE,SAAS,SAAS;AACrE,QAAI,eAAe,IAAI;AACrB,WAAK,QAAQ,OAAO,YAAY,CAAC;AAEjC,WAAK,OAAO,QAAQ,CAAC,SAAS;AAC5B,aAAK,SAAS,KAAK,OAAO,OAAO,CAAC,aAAa;AAC7C,cAAI;AACJ,cAAI,OAAO,aAAa,UAAU;AAChC,sBAAU;AAAA,UACZ,WAAW,SAAS,UAAU;AAC5B,sBAAU,SAAS;AAAA,UACrB,WAAW,gBAAgB,UAAU;AACnC,sBAAU,SAAS,WAAW;AAAA,UAChC;AACA,iBAAO,YAAY;AAAA,QACrB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,oBAAoB,cAAmC;AACrD,UAAM,gBAAgB,KAAK,WAAW,KAAK,CAAC,aAAa,SAAS,SAAS,YAAY;AAEvF,QAAI,CAAC,eAAe;AAClB,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,KAAK,QAAQ,OAAO,CAAC,UAAU,MAAM,eAAe,cAAc,EAAE;AAAA,EAC7E;AAAA,EAEA,WAA+C;AAC7C,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,SAAS,mBAAmB,MAAM;AACxC,UAAM,SAAgB,CAAC;AAEvB,QAAI,OAAO,QAAQ;AACjB,aAAO,OAAO,QAAQ,CAAC,QAAa;AAClC,YAAI,OAAO,IAAI,gBAAgB,IAAI,YAAY;AAC/C,eAAO,KAAK,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,GAAG;AACjD,cAAM,SAAS,OAAO,GAAG,IAAI,OAAO;AACpC,eAAO,KAAK;AAAA,UACV,SAAS,GAAG,MAAM,GAAG,IAAI,OAAO;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,KAAK,gBAAgB,KAAK,aAAa,KAAK,MAAM,IAAI;AACzD,aAAO,KAAK;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAEA,UAAM,cAAc,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,CAAC,CAAC;AACrE,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,UAAI,MAAM,cAAc,CAAC,YAAY,IAAI,OAAO,MAAM,UAAU,CAAC,GAAG;AAClE,eAAO,KAAK;AAAA,UACV,SAAS,UAAU,MAAM,IAAI,gDAAgD,MAAM,UAAU;AAAA,UAC7F,MAAM,UAAU,MAAM,IAAI;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,aAAa,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1D,SAAK,OAAO,QAAQ,CAAC,MAAM,cAAc;AACvC,WAAK,OAAO,QAAQ,CAAC,UAAU,eAAe;AAC5C,YAAI;AACJ,YAAI,OAAO,aAAa,UAAU;AAChC,oBAAU;AAAA,QACZ,WAAW,YAAa,SAAiB,KAAK;AAC5C,oBAAW,SAAiB;AAAA,QAC9B,WAAW,YAAa,SAAiB,YAAY;AACnD,oBAAW,SAAiB,WAAW;AAAA,QACzC;AAEA,YAAI,WAAW,CAAC,WAAW,IAAI,OAAO,GAAG;AACvC,iBAAO,KAAK;AAAA,YACV,SAAS,SAAS,SAAS,WAAW,UAAU,oCAAoC,OAAO;AAAA,YAC3F,MAAM,SAAS,SAAS,WAAW,UAAU;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,WAAO;AAAA,MACL,OAAO,OAAO,SAAS,OAAO,YAAY,OAAO,QAAQ,UAAU;AAAA,MACnE,QAAQ,OAAO,SAAS,IAAI,SAAS;AAAA,IACvC;AAAA,EACF;AAAA,EAEQ,YAAY,KAAe;AACjC,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO;AAE9C,QAAI,SAAS;AACb,QAAI,OAAO,IAAI,WAAW,cAAc,QAAQ,MAAM;AACpD,eAAS,IAAI,OAAO;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,IAAI,CAAC,MAAY,OAAO,MAAM,WAAW,KAAK,YAAY,CAAC,IAAI,CAAE;AAAA,IACjF;AAEA,QAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,UAAM,UAAe,CAAC;AACtB,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IAAI;AACzD,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,GAAG,IAAI,KAAK,YAAY,KAAK;AAAA,QACvC,OAAO;AACL,kBAAQ,GAAG,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAiB;AACf,UAAM,YAAiC,CAAC;AACxC,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,gBAAU,MAAM,IAAI,IAAI,MAAM,OAAO;AACrC,aAAO,UAAU,MAAM,IAAI,EAAE;AAAA,IAC/B,CAAC;AAED,WAAO,KAAK,YAAY;AAAA,MACtB,SACE;AAAA,MACF,eAAe,KAAK;AAAA,MACpB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,QAAQ;AAAA,MACR,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,SAAS,YAA8B;AAC5C,QAAI;AACJ,QAAI;AACF,iBAAW,KAAK,MAAM,UAAU;AAAA,IAClC,SAAS,OAAO;AACd,cAAQ,MAAM,gDAAgD,UAAU,EAAE;AAC1E,YAAM;AAAA,IACR;AAEA,QAAI,CAAC,SAAS,eAAe;AAC3B,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAEA,QAAI,OAAO,GAAG,SAAS,eAAe,UAAS,yBAAyB,GAAG;AACzE,YAAM,IAAI;AAAA,QACR,2DAA2D,SAAS,aAAa,kCAAkC,UAAS,yBAAyB;AAAA,MACvJ;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,aAAa;AACzB,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACnE;AAEA,QAAI,CAAC,SAAS,YAAY;AACxB,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AAEA,QAAI,CAAC,SAAS,QAAQ;AACpB,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,QAAI,CAAC,SAAS,SAAS,SAAS,MAAM,WAAW,GAAG;AAClD,UAAI,OAAO,UAAU,SAAS,eAAe,SAAS,GAAG;AACvD,gBAAQ;AAAA,UACN,mBAAmB,SAAS,WAAW;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAEA,QAAI,eAA4B,CAAC;AACjC,QAAI,MAAM,QAAQ,SAAS,MAAM,GAAG;AAClC,qBAAe,SAAS;AAAA,IAC1B,WAAW,OAAO,SAAS,WAAW,YAAY,SAAS,WAAW,MAAM;AAC1E,qBAAe,OAAO,QAAQ,SAAS,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAqB;AAClF,eAAO;AAAA,UACL;AAAA,UACA,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,IACH;AAEA,iBAAa,QAAQ,CAAC,MAAW;AAC/B,UAAI,EAAE,cAAc,CAAC,EAAE,UAAU;AAC/B,UAAE,WAAW,OAAO,EAAE,UAAU;AAAA,MAClC,WAAW,EAAE,UAAU;AACrB,UAAE,WAAW,OAAO,EAAE,QAAQ;AAAA,MAChC;AAAA,IACF,CAAC;AAED,UAAM,cAAc,SAAS,cAAc,CAAC,GAAG,IAAI,CAAC,QAAa;AAC/D,aAAO,IAAI,kBAAkB,OAAO,IAAI,EAAE,GAAG,IAAI,IAAI;AAAA,IACvD,CAAC;AAED,UAAM,SAAsB,aAAa,IAAI,CAAC,gBAAgB;AAC5D,aAAO,UAAU,WAAW,WAAW;AAAA,IACzC,CAAC;AAED,QAAI,QAAQ,SAAS,SAAS,CAAC;AAC/B,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,gBAA0C,CAAC;AACjD,aAAO,QAAQ,CAAC,MAAM;AACpB,cAAM,QAAQ,EAAE;AAChB,YAAI,CAAC,cAAc,KAAK,GAAG;AACzB,wBAAc,KAAK,IAAI,CAAC;AAAA,QAC1B;AACA,sBAAc,KAAK,EAAE,KAAK,EAAE,IAAI;AAAA,MAClC,CAAC;AAED,cAAQ,WACL,IAAI,CAAC,SAA4B;AAAA,QAChC,IAAI,QAAQ,IAAI,EAAE;AAAA,QAClB,OAAO,IAAI;AAAA,QACX,QAAQ,cAAc,IAAI,EAAE,KAAK,CAAC;AAAA,MACpC,EAAE,EACD,OAAO,CAAC,MAAkB,EAAE,OAAO,SAAS,CAAC;AAAA,IAClD;AAEA,WAAO,IAAI;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAnVa,UAwBK,4BAA4B;AAxBjC,UAyBK,4BAA4B;AAzBvC,IAAM,WAAN;;;ACEA,IAAM,qBAAN,MAAoD;AAAA,EAQzD,YAAY,eAAgC;AAC1C,SAAK,KAAK,cAAc;AACxB,SAAK,cAAc,cAAc;AACjC,SAAK,QAAQ,cAAc;AAC3B,SAAK,cAAc,cAAc;AACjC,SAAK,aAAa,cAAc;AAChC,SAAK,aAAa,cAAc;AAAA,EAClC;AAAA,EAEA,SAAS,OAAqB;AAC5B,eAAW,aAAa,KAAK,YAAY;AACvC,cAAQ,UAAU,MAAM;AAAA,QACtB,KAAK;AACH,cAAI,CAAC,KAAK,gBAAgB,OAAO,UAAU,UAAU,UAAU,QAAQ,GAAG;AACxE,mBAAO;AAAA,UACT;AACA;AAAA,QACF,KAAK;AACH,cAAI,CAAC,KAAK,aAAa,OAAO,UAAU,WAAW,UAAU,SAAS,GAAG;AACvE,mBAAO;AAAA,UACT;AACA;AAAA,MACJ;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,OAAe,KAAc,KAAuB;AAC1E,QAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,QAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,WAAO;AAAA,EACT;AAAA,EAEQ,aAAa,OAAe,WAAoB,WAA6B;AACnF,QAAI,cAAc,UAAa,MAAM,SAAS,UAAW,QAAO;AAChE,QAAI,cAAc,UAAa,MAAM,SAAS,UAAW,QAAO;AAChE,WAAO;AAAA,EACT;AACF;;;ACtEA;AAAA,EACE,eAAiB;AAAA,EACjB,YAAc;AAAA,IACZ;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,QAAU;AAAA,IACR;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,aAAe;AAAA,MACf,YAAc;AAAA,MACd,aAAe;AAAA,MACf,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,SAAW;AAAA,MACX,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,eAAiB;AAAA,MACjB,aAAe;AAAA,MACf,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,KAAO;AAAA,MACP,KAAO;AAAA,MACP,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,KAAO;AAAA,MACP,KAAO;AAAA,MACP,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,cAAgB;AAAA,MAChB,uBAAyB;AAAA,MACzB,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,WAAa;AAAA,MACb,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,YAAc;AAAA,MACd,aAAe;AAAA,MACf,SAAW;AAAA,MACX,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,cAAgB;AAAA,MAChB,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,YAAc;AAAA,UACd,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,cAAgB;AAAA,MAChB,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,cAAgB;AAAA,MAChB,WAAa;AAAA,MACb,SAAW;AAAA,MACX,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,cAAgB;AAAA,MAChB,WAAa;AAAA,MACb,SAAW;AAAA,MACX,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,aAAe;AAAA,MACf,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,WAAa;AAAA,MACb,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAA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,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA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CV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QA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AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;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AAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;A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AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QA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","names":["FieldType","IhsValueFormat","FileFieldTableType"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/survey-generator.ts","../src/rhf-generator.ts","../src/validator.ts","../src/schema/unified-form.schema.json","../src/form-field-category.ts","../src/form-field.ts","../src/form-spec.ts","../src/form-field-validator.ts","../src/data/form-field-base-specs.json","../src/data/form-field-types.json","../src/data/form-field-validators.json","../src/catalogs.ts","../src/ihs-types.ts","../src/data/form-field-display-names.json","../src/ihs-processing.ts","../src/roles.ts"],"sourcesContent":["/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Utility functions for @finsys/core\n */\n\nexport function getPastMonthLabel(monthsAgo: number): string {\n const date = new Date();\n date.setDate(1); // Avoid day-of-month rollover (e.g. Mar 31 → \"February\" would roll to March)\n date.setMonth(date.getMonth() - monthsAgo);\n return date.toLocaleString('default', { month: 'long' });\n}\n\nexport function getPastYearLabel(yearsAgo: number): string {\n const date = new Date();\n return (date.getFullYear() - yearsAgo).toString();\n}\n\n/**\n * Evaluate a SurveyJS-style expression against a data object.\n * e.g. \"{totalFinancing} > 50000\"\n * \n * NOTE: This is a simplified evaluator that replaces {key} with data[key] access.\n * It does not support complex SurveyJS functions like age() or complicated nested paths unless handled by JS.\n */\nexport function evaluateExpression(expression: string, data: any): boolean {\n if (!expression) return true;\n \n try {\n // 1. Replace {variable} with this['variable'] safely\n let jsExpression = expression.replace(/\\{([^}]+)\\}/g, (_, key) => {\n // Clean key if needed (trim)\n return `this['${key.trim()}']`;\n });\n\n // 2. Map SurveyJS comparison operators to JS operators FIRST\n // (before array operator transforms inject JS code containing '=' assignments)\n // Replace single '=' with '==' if it's not already '==' or '!=' or '>=' or '<='\n jsExpression = jsExpression.replace(/(?<![<>!=])=(?![=])/g, '==');\n\n // 3. Map SurveyJS array operators to JS equivalents\n // These run AFTER the '=' transform so their generated JS won't be mangled.\n\n // \"anyof\" → value is one of the items in the array\n // e.g. this['employmentType'] anyof ['01','08','09']\n // → (['01','08','09']).includes(this['employmentType'])\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+anyof\\s+(\\[[^\\]]+\\])/gi,\n (_, ref, arr) => `(${arr}).includes(${ref})`\n );\n\n // \"allof\" → value (expected to be an array) contains all items\n // e.g. this['skills'] allof ['a','b']\n // → ['a','b'].every(item => (this['skills'] || []).includes(item))\n // Arrow functions inherit `this` from enclosing scope (the new Function call),\n // so this works correctly with Function.call(data).\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+allof\\s+(\\[[^\\]]+\\])/gi,\n (_, ref, arr) => `${arr}.every(item => (${ref} || []).includes(item))`\n );\n\n // \"contains\" → string/array contains value\n // e.g. this['roles'] contains 'admin'\n // Uses || [] fallback to handle both string and array values correctly.\n // (|| '' would stringify arrays causing false positives)\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+contains\\s+'([^']+)'/gi,\n (_, ref, val) => `(${ref} || []).includes('${val}')`\n );\n\n // \"notcontains\" → string/array does not contain value\n jsExpression = jsExpression.replace(\n /(this\\['[^']+'\\])\\s+notcontains\\s+'([^']+)'/gi,\n (_, ref, val) => `!(${ref} || []).includes('${val}')`\n );\n\n // 4. Execute with Function, binding 'data' as 'this'\n const func = new Function(`return ${jsExpression};`);\n return !!func.call(data || {});\n } catch (e) {\n // console.warn(`Failed to evaluate expression: \"${expression}\"`, e);\n return false;\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Survey Generator - Converts unified form configurations into SurveyJS-compatible JSON\n *\n * This module converts a unified form-config.json into SurveyJS-compatible JSON,\n * resolving field references, applying dynamic titles, and grouping by category.\n */\n\n// Re-export survey-core types for consumers\nexport type { IQuestion, IPage, ISurvey, IPanel, IElement } from \"survey-core\";\nimport { getPastMonthLabel, getPastYearLabel } from \"./utils.js\";\n\n// ============ Unified Form Config Types ============\n\nexport interface Category {\n id: string;\n name: string;\n}\n\nexport interface Choice {\n value: string;\n text: string;\n}\n\nexport interface Validator {\n type: \"regex\" | \"email\" | \"numeric\" | \"text\" | \"expression\" | \"answercount\" | \"custom\";\n text?: string;\n regex?: string;\n minValue?: number;\n maxValue?: number;\n minLength?: number;\n maxLength?: number;\n minCount?: number;\n maxCount?: number;\n expression?: string;\n validator?: string; // For custom validator name\n}\n\n/**\n * FieldData - Field definition in the unified form config\n */\nexport interface FieldData {\n name?: string; // Optional in fields{} (key is name), required in arrays\n displayName?: string;\n type: string;\n inputType?: \"text\" | \"number\" | \"tel\" | \"date\" | \"email\" | \"password\" | \"url\";\n category?: string; // Category ID (strictly string)\n maxLength?: number | string;\n min?: number | string;\n max?: number | string;\n step?: number;\n html?: string;\n choices?: Choice[];\n validators?: Validator[];\n visible?: boolean;\n visibleIf?: string;\n required?: boolean;\n isRequired?: boolean; // SurveyJS compat alias\n placeholder?: string;\n defaultValue?: string | number | boolean | string[];\n readOnly?: boolean;\n startWithNewLine?: boolean;\n enableIf?: string;\n titleLocation?: \"default\" | \"top\" | \"bottom\" | \"left\" | \"hidden\";\n // FinSys-specific fields\n ihs_column_names?: string[];\n requiredForEvaluation?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * FieldReference - How fields are referenced in pages\n */\nexport type FieldReference = \n | string // Simple field name reference\n | { ref: string; [key: string]: unknown } // Reference with overrides\n | { definition: FieldData & { name: string } }; // Inline definition\n\nexport interface PageConfig {\n id: string;\n title?: string;\n description?: string;\n showTOC?: boolean;\n showProgressBar?: boolean;\n showCategoryHeadings?: boolean;\n layout?: \"default\" | \"grid\" | \"vertical\";\n fields: FieldReference[];\n}\n\n/**\n * UnifiedFormConfig - The main configuration type for the unified form format\n */\nexport interface UnifiedFormConfig {\n $schema?: string;\n schemaVersion?: string;\n displayName?: string;\n templateIcon?: string; // Icon identifier for form template editors\n categories: Category[];\n fields: Record<string, FieldData>;\n pages?: PageConfig[]; // Optional when used in editor-only mode (no rendered form)\n}\n\n\n// ============ Output Types (SurveyJS JSON compatible) ============\n\nexport interface SurveyElementJSON {\n type: string;\n name: string;\n title?: string;\n isRequired?: boolean;\n maxLength?: number;\n storeDataAsText?: boolean;\n category?: string;\n [key: string]: unknown;\n}\n\nexport interface SurveyPageJSON {\n name: string;\n title: string;\n elements: Array<{\n type: string;\n name: string;\n elements: SurveyElementJSON[];\n }>;\n}\n\nexport interface SurveyJSON {\n title: string;\n logoPosition?: string;\n pages: SurveyPageJSON[];\n showQuestionNumbers?: string;\n questionErrorLocation?: string;\n completedHtml?: string;\n showTOC?: boolean;\n completeText?: string;\n showPreviewBeforeComplete?: string;\n showProgressBar?: string;\n widthMode?: string;\n width?: string;\n}\n\n// ============ Helper Types ============\n\nexport interface ResolvedField extends FieldData {\n name: string;\n}\n\n/**\n * Normalize a field to ensure backward compatibility\n * - Sets both `required` and `isRequired` to the same value\n */\nfunction normalizeField(field: ResolvedField): ResolvedField {\n // Spec: Fields are required by default unless explicitly false\n const isRequired = field.isRequired !== false && field.required !== false;\n return {\n ...field,\n required: isRequired,\n isRequired: isRequired\n };\n}\n\n/**\n * Resolve a field reference to a full field definition\n */\nfunction resolveFieldReference(\n ref: FieldReference, \n fields: Record<string, FieldData>\n): ResolvedField | null {\n if (typeof ref === \"string\") {\n // Simple string reference\n const fieldDef = fields[ref];\n if (!fieldDef) {\n console.warn(`Field \"${ref}\" not found in fields definition`);\n return null;\n }\n return normalizeField({ name: ref, ...fieldDef });\n }\n \n if (\"definition\" in ref) {\n // Inline definition\n return normalizeField(ref.definition as ResolvedField);\n }\n \n if (\"ref\" in ref) {\n // Reference with overrides\n const fieldDef = fields[ref.ref];\n if (!fieldDef) {\n console.warn(`Field \"${ref.ref}\" not found in fields definition`);\n return null;\n }\n const { ref: fieldName, ...overrides } = ref;\n return normalizeField({ name: fieldName, ...fieldDef, ...overrides });\n }\n \n return null;\n}\n\n/**\n * Apply dynamic title logic (e.g., bank statements with dynamic month labels,\n * financial statements with dynamic year labels)\n */\nexport function applyDynamicTitles(field: ResolvedField): ResolvedField {\n const bankStatementMatch = field.name.match(/^bank_statement_t(\\d+)$/);\n if (bankStatementMatch) {\n const monthsAgo = parseInt(bankStatementMatch[1], 10);\n return {\n ...field,\n displayName: `Bank Statement (${getPastMonthLabel(monthsAgo)})`\n };\n }\n if (field.name === \"financials\") {\n return {\n ...field,\n displayName: `Audited Financial Statement (${getPastYearLabel(1)})`\n };\n }\n return field;\n}\n\n/**\n * Generate SurveyJS JSON from unified form config\n */\nexport function generateSurveyJson(config: UnifiedFormConfig): SurveyJSON | Record<string, never> {\n if (!config.pages || config.pages.length === 0) return {};\n \n const firstPage = config.pages.find(p => p.id !== \"success-message\");\n if (!firstPage) return {};\n\n const categories = config.categories || [];\n const categoryMap: Record<string, string> = categories.reduce((acc, cat) => {\n acc[cat.id] = cat.name;\n return acc;\n }, {} as Record<string, string>);\n\n // Process all fields from the first page\n const processedFields = firstPage.fields\n .map(ref => resolveFieldReference(ref, config.fields))\n .filter((f): f is ResolvedField => f !== null)\n .map(f => applyDynamicTitles(f))\n .map(f => mapFieldToSurveyJS(f));\n\n // Group by Category\n const grouped = processedFields.reduce((acc: Record<string, SurveyElementJSON[]>, field) => {\n const catName = categoryMap[field.category as string] || \"Default\";\n if (!acc[catName]) acc[catName] = [];\n acc[catName].push(field);\n return acc;\n }, {} as Record<string, SurveyElementJSON[]>);\n\n // Build Pages (One Page per Category for Wizard effect)\n const pages: SurveyPageJSON[] = Object.entries(grouped).map(([categoryName, elements]) => ({\n name: categoryName.toLowerCase().replace(/\\s+/g, \"-\"),\n title: firstPage.showCategoryHeadings === false ? \"\" : categoryName,\n elements: [\n {\n type: \"panel\",\n name: `${categoryName.toLowerCase().replace(/\\s+/g, \"-\")}-panel`,\n elements: elements,\n },\n ],\n }));\n\n return {\n title: config.displayName || \"Flexible Financing Program\",\n logoPosition: \"right\",\n pages,\n showQuestionNumbers: \"off\",\n questionErrorLocation: \"bottom\",\n completedHtml: \"<h3>Thank you for completing the form</h3>\",\n showTOC: firstPage.showTOC ?? true,\n completeText: \"Submit\",\n showPreviewBeforeComplete: \"showAllQuestions\",\n showProgressBar: firstPage.showProgressBar === false ? \"off\" : \"top\",\n widthMode: \"responsive\",\n width: \"100%\",\n };\n}\n\n/**\n * Map a field definition to SurveyJS element format\n */\nfunction mapFieldToSurveyJS(field: ResolvedField): SurveyElementJSON {\n const element: SurveyElementJSON = {\n type: field.type,\n name: field.name,\n ...(field.displayName && { title: field.displayName }),\n isRequired: field.isRequired ?? field.required ?? false,\n ...(field.maxLength && { maxLength: Number(field.maxLength) }),\n };\n\n if (field.type === \"file\") {\n element.storeDataAsText = false;\n }\n\n // Copy other properties\n const excludeKeys = [\"displayName\", \"required\", \"category\"];\n Object.keys(field).forEach((key) => {\n if (!(key in element) && !excludeKeys.includes(key) && field[key] !== undefined) {\n element[key] = field[key];\n }\n });\n\n // Store category for grouping\n element.category = field.category ?? \"\";\n\n return element;\n}\n\n/**\n * Resolve all fields from a page to full field definitions\n */\nexport function resolvePageFields(\n page: PageConfig,\n fields: Record<string, FieldData>\n): ResolvedField[] {\n return page.fields\n .map(ref => resolveFieldReference(ref, fields))\n .filter((f): f is ResolvedField => f !== null)\n .map(f => applyDynamicTitles(f));\n}\n\n/**\n * Get category name from category ID (supports string or number IDs)\n */\nexport function getCategoryName(\n categoryId: string | undefined,\n categories: Category[]\n): string {\n if (categoryId === undefined) return \"Other\";\n const cat = categories.find(c => c.id === categoryId);\n return cat?.name || \"Other\";\n}\n\n/**\n * Group fields by their category, maintaining order and creating section breaks\n */\nexport interface FieldGroup {\n category: string;\n categoryName: string;\n fields: ResolvedField[];\n}\n\nexport function groupFieldsByCategory(\n fields: ResolvedField[],\n categories: Category[]\n): FieldGroup[] {\n const groups: FieldGroup[] = [];\n let currentGroup: FieldGroup | null = null;\n\n for (const field of fields) {\n const category = field.category ?? \"\";\n \n if (!currentGroup || currentGroup.category !== category) {\n currentGroup = {\n category,\n categoryName: getCategoryName(category, categories),\n fields: []\n };\n groups.push(currentGroup);\n }\n \n currentGroup.fields.push(field);\n }\n\n return groups;\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { z } from \"zod\";\nimport {\n type UnifiedFormConfig,\n type PageConfig,\n type FieldData,\n type FieldReference,\n type ResolvedField,\n type Category,\n resolvePageFields,\n groupFieldsByCategory,\n applyDynamicTitles,\n type FieldGroup\n} from \"./survey-generator.js\";\nimport { evaluateExpression } from \"./utils.js\";\n\nexport interface RHFStep {\n id: number;\n title: string;\n description?: string;\n fields: ResolvedField[];\n showCategoryHeadings: boolean;\n layout?: \"default\" | \"grid\" | \"vertical\";\n}\n\nexport interface RHFSchemaOutput {\n zodSchema: z.ZodTypeAny; // Can be ZodEffects\n baseSchema: z.ZodObject<any>;\n defaultValues: Record<string, any>;\n fields: ResolvedField[];\n groupedFields: FieldGroup[];\n steps: RHFStep[];\n displayName: string;\n categories: Category[];\n templateIcon?: string;\n}\n\n/**\n * Apply visibility-aware validation to a Zod schema\n */\nfunction applyVisibilityValidation(\n baseObject: z.ZodObject<any>, \n fields: ResolvedField[]\n): z.ZodTypeAny {\n return baseObject.superRefine((data, ctx) => {\n fields.forEach((field) => {\n const isRequired = field.isRequired !== false && field.required !== false && field.type !== \"html\";\n if (!isRequired) return;\n\n // Determine Visibility\n let isVisible = field.visible !== false;\n if (isVisible && field.visibleIf) {\n isVisible = evaluateExpression(field.visibleIf, data);\n }\n\n if (isVisible) {\n const value = data[field.name];\n const isEmpty = \n value === undefined || \n value === null || \n value === \"\" || \n (Array.isArray(value) && value.length === 0);\n\n if (isEmpty) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"This field is required\",\n path: [field.name],\n });\n }\n }\n });\n });\n}\n\nexport function generateRHFSchema(config: UnifiedFormConfig): RHFSchemaOutput {\n // ... (existing logic for collecting fields/building shape)\n const pages = config.pages || [];\n const categories = config.categories || [];\n const fieldsMap = config.fields || {};\n\n if (pages.length === 0) {\n throw new Error(\"v2.0.0 templates must include a 'pages' configuration.\");\n }\n\n // 1. Collect all fields from all pages\n const allFields: ResolvedField[] = [];\n \n for (const page of pages) {\n const pageFields = resolvePageFields(page, fieldsMap);\n allFields.push(...pageFields);\n }\n\n // Apply dynamic titles\n const mergedFields = allFields.map(applyDynamicTitles);\n\n // 2. Build Zod Shape & Default Values\n const shape: Record<string, z.ZodTypeAny> = {};\n const defaultValues: Record<string, any> = {};\n\n mergedFields.forEach((field) => {\n let schema: z.ZodTypeAny = z.string();\n\n // Track base type before validators/wrapping transform it via .refine()\n // (instanceof checks won't work after .refine() converts ZodString → ZodEffects)\n let baseType: \"string\" | \"number\" | \"array\" | \"boolean\" | \"any\" = \"string\";\n\n // --- Base Type Handling ---\n if (field.inputType === \"number\" || field.type === \"number\" || field.type === \"slider\" || field.type === \"range\") {\n schema = z.coerce.number();\n baseType = \"number\";\n defaultValues[field.name] = field.defaultValue !== undefined ? Number(field.defaultValue) : \"\";\n } else if (field.type === \"checkbox\") {\n schema = z.array(z.string());\n baseType = \"array\";\n defaultValues[field.name] = [];\n } else if (field.type === \"file\") {\n schema = z.array(z.any());\n baseType = \"array\";\n defaultValues[field.name] = [];\n } else if (field.type === \"boolean\") {\n schema = z.boolean();\n baseType = \"boolean\";\n defaultValues[field.name] = field.defaultValue ?? false;\n } else if (field.type === \"html\") {\n schema = z.any().optional();\n baseType = \"any\";\n defaultValues[field.name] = \"\";\n } else {\n if (Array.isArray(field.defaultValue)) {\n defaultValues[field.name] = field.defaultValue[0] || \"\";\n } else {\n defaultValues[field.name] = field.defaultValue ?? \"\";\n }\n }\n\n // --- Validation Constraints ---\n\n // Min/Max for Numbers\n if (baseType === \"number\" && schema instanceof z.ZodNumber) {\n let numSchema = schema;\n if (field.min !== undefined) numSchema = numSchema.min(Number(field.min), { message: `Minimum value is ${field.min}` });\n if (field.max !== undefined) numSchema = numSchema.max(Number(field.max), { message: `Maximum value is ${field.max}` });\n schema = numSchema;\n }\n\n const isRequired = field.isRequired !== false && field.required !== false && field.type !== \"html\";\n const isAlwaysVisible = field.visible !== false && !field.visibleIf;\n const isActuallyInput = field.type !== \"html\";\n\n // --- Required .min(1) for always-visible fields ---\n // Must be applied BEFORE validators (.refine) which change the schema type.\n if (isRequired && isAlwaysVisible && isActuallyInput) {\n if (baseType === \"string\" && schema instanceof z.ZodString) {\n schema = schema.min(1, { message: \"This field is required\" });\n } else if (baseType === \"array\" && schema instanceof z.ZodArray) {\n schema = schema.min(1, { message: \"Please select at least one option\" });\n }\n }\n\n // --- Enhancements: Validators ---\n // Applied BEFORE optional wrapping so instanceof checks still work on the\n // base type. The .refine() calls here will transform the schema to ZodEffects,\n // which is why we use baseType for subsequent decisions instead of instanceof.\n\n // Email\n const hasExplicitEmailValidator = field.validators?.some(v => v.type === \"email\");\n if ((field.inputType === \"email\" || field.name === \"email\") && baseType === \"string\" && schema instanceof z.ZodString && !hasExplicitEmailValidator) {\n schema = schema.refine(val => val === \"\" || z.string().email().safeParse(val).success, {\n message: \"Invalid email address\"\n });\n }\n\n // Legacy Validators (Regex / Numeric)\n if (field.validators) {\n field.validators.forEach((v) => {\n if (v.type === \"regex\" && v.regex) {\n try {\n const regex = new RegExp(v.regex);\n if (baseType === \"string\") {\n schema = schema.refine((val: any) => val === \"\" || regex.test(val), {\n message: v.text || \"Invalid format\"\n });\n }\n } catch (e) {\n console.warn(`Invalid regex pattern for field ${field.name}:`, v.regex);\n }\n }\n if (v.type === \"email\" && baseType === \"string\") {\n schema = schema.refine((val: any) => val === \"\" || z.string().email().safeParse(val).success, {\n message: v.text || \"Invalid email\"\n });\n }\n if (v.type === \"numeric\" && schema instanceof z.ZodNumber) {\n let numSchema = schema;\n if (v.minValue !== undefined) numSchema = numSchema.min(v.minValue, { message: v.text });\n if (v.maxValue !== undefined) numSchema = numSchema.max(v.maxValue, { message: v.text });\n schema = numSchema;\n }\n });\n }\n\n // --- Final Wrapper: Optional for conditional/hidden fields ---\n // Uses baseType instead of instanceof since validators may have transformed the schema.\n if (!(isRequired && isAlwaysVisible && isActuallyInput)) {\n if (baseType === \"number\") {\n schema = schema.optional().or(z.literal(\"\")).or(z.null());\n } else if (baseType === \"array\") {\n schema = schema.optional();\n } else if (baseType === \"boolean\") {\n schema = schema.optional();\n } else if (baseType === \"string\") {\n schema = schema.optional().or(z.literal(\"\"));\n }\n }\n\n shape[field.name] = schema;\n });\n\n // 3. Group Fields by Category\n const groupedFields = groupFieldsByCategory(mergedFields, categories);\n\n // 4. Build Steps (Dynamic Wizard)\n const steps: RHFStep[] = pages.map((page, idx) => {\n const pageFields = resolvePageFields(page, fieldsMap);\n\n return {\n id: idx,\n title: page.title || \"\",\n description: page.description,\n fields: pageFields,\n showCategoryHeadings: page.showCategoryHeadings ?? false,\n layout: page.layout\n };\n });\n\n // 5. Build Final Schema with Visibility-Aware Validation\n const baseObject = z.object(shape);\n const zodSchema = applyVisibilityValidation(baseObject, mergedFields);\n\n return {\n zodSchema,\n baseSchema: baseObject,\n defaultValues,\n fields: mergedFields,\n groupedFields,\n steps,\n displayName: config.displayName || \"Application Form\",\n categories,\n templateIcon: config.templateIcon\n };\n}\n\n/**\n * Get Zod schema for a specific step\n */\nexport function getStepSchema(step: RHFStep, fullSchema: any): z.ZodTypeAny {\n const stepFieldNames = step.fields.map(f => f.name);\n const stepShape: Record<string, z.ZodTypeAny> = {};\n \n // 1. Determine the base ZodObject\n let baseObj: z.ZodObject<any> | undefined;\n\n if (fullSchema instanceof z.ZodObject) {\n baseObj = fullSchema;\n } else if (fullSchema && typeof fullSchema === \"object\" && \"baseSchema\" in fullSchema) {\n baseObj = fullSchema.baseSchema as z.ZodObject<any>;\n } else if (fullSchema && \"_def\" in fullSchema && fullSchema._def.schema instanceof z.ZodObject) {\n // Basic Unwrap for ZodEffects\n baseObj = fullSchema._def.schema;\n }\n\n if (!baseObj) {\n console.warn(\"[RHF Generator] Could not extract ZodObject shape for step validation\");\n return z.object({});\n }\n\n const shape = baseObj.shape;\n const stepFields: ResolvedField[] = [];\n \n stepFieldNames.forEach(name => {\n if (name in shape) {\n stepShape[name] = shape[name];\n // Keep track of which fields are in this step\n const fieldDef = step.fields.find(f => f.name === name);\n if (fieldDef) stepFields.push(fieldDef);\n }\n });\n \n const stepBaseObject = z.object(stepShape);\n return applyVisibilityValidation(stepBaseObject, stepFields);\n}\n\n/**\n * Extract default values for a specific step\n */\nexport function getStepDefaultValues(\n step: RHFStep, \n allDefaults: Record<string, any>\n): Record<string, any> {\n const stepDefaults: Record<string, any> = {};\n \n step.fields.forEach(field => {\n if (field.name in allDefaults) {\n stepDefaults[field.name] = allDefaults[field.name];\n }\n });\n \n return stepDefaults;\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport AjvModule, { ErrorObject } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport unifiedFormSchema from \"./schema/unified-form.schema.json\" with { type: \"json\" };\n\n// Interop for Ajv which can be exported differently in ESM/CJS\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\n// Interop for ajv-formats\nconst addFormatsFn = (addFormats as any).default || addFormats;\naddFormatsFn(ajv);\n\n// Register the unified schema\najv.addSchema(unifiedFormSchema, \"unified-form.schema.json\");\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: ErrorObject[];\n message?: string;\n}\n\n/**\n * Validates a unified form-config.json object against its schema\n */\nexport function validateFormConfig(data: unknown): ValidationResult {\n const validate = ajv.getSchema(\"unified-form.schema.json\");\n if (!validate) {\n return { valid: false, message: \"Could not load unified form schema\" };\n }\n\n const valid = validate(data);\n return {\n valid: !!valid,\n errors: validate.errors || undefined,\n };\n}\n\n// Legacy exports - these now just call validateFormConfig\n/** @deprecated Use validateFormConfig instead */\nexport function validateFormSpec(data: unknown): ValidationResult {\n return validateFormConfig(data);\n}\n\n/** @deprecated Use validateFormConfig instead */\nexport function validatePagesConfig(data: unknown): ValidationResult {\n return validateFormConfig(data);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Unified Form Configuration Schema\",\n \"description\": \"A unified schema combining field definitions and page layout configuration for multi-step forms.\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"description\": \"Reference to this JSON schema file\"\n },\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^v?[0-9]+\\\\.[0-9]+\\\\.[0-9]+$\",\n \"description\": \"Semantic version of the schema format (e.g., 'v2.0.0' or '2.0.0')\"\n },\n \"displayName\": {\n \"type\": \"string\",\n \"description\": \"The human-readable name of the loan product or form\"\n },\n \"templateIcon\": {\n \"type\": \"string\",\n \"description\": \"Icon identifier or path for the form template (used in FinSys editor)\"\n },\n \"categories\": {\n \"type\": \"array\",\n \"description\": \"Category definitions for field organization and grouping\",\n \"items\": {\n \"$ref\": \"#/definitions/category\"\n }\n },\n \"fields\": {\n \"type\": \"object\",\n \"description\": \"Master field definitions keyed by field name\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/fieldData\"\n }\n },\n \"pages\": {\n \"type\": \"array\",\n \"description\": \"Ordered list of pages in the form wizard. Optional for FinSys editor mode.\",\n \"items\": {\n \"$ref\": \"#/definitions/pageConfig\"\n }\n }\n },\n \"required\": [\"categories\", \"fields\", \"pages\"],\n \"definitions\": {\n \"category\": {\n \"type\": \"object\",\n \"description\": \"A category for grouping related form fields\",\n \"properties\": {\n \"id\": { \n \"type\": \"string\",\n \"description\": \"Unique identifier for the category (string)\" \n },\n \"name\": { \"type\": \"string\", \"description\": \"Display name for the category heading\" }\n },\n \"required\": [\"id\", \"name\"]\n },\n \"choice\": {\n \"type\": \"object\",\n \"description\": \"A selectable option for dropdown or radiogroup fields\",\n \"properties\": {\n \"value\": { \"type\": \"string\", \"description\": \"Value submitted when this choice is selected\" },\n \"text\": { \"type\": \"string\", \"description\": \"Display text for this choice\" }\n },\n \"required\": [\"value\", \"text\"]\n },\n \"validator\": {\n \"type\": \"object\",\n \"description\": \"Validation rule for a form field\",\n \"properties\": {\n \"type\": { \n \"type\": \"string\",\n \"enum\": [\"regex\", \"email\", \"numeric\", \"text\", \"expression\", \"answercount\", \"custom\"],\n \"description\": \"Type of validation to perform\"\n },\n \"text\": { \"type\": \"string\", \"description\": \"Error message to display on validation failure\" },\n \"regex\": { \"type\": \"string\", \"description\": \"Regular expression pattern (for type=regex)\" },\n \"minValue\": { \"type\": \"number\", \"description\": \"Minimum numeric value (for type=numeric)\" },\n \"maxValue\": { \"type\": \"number\", \"description\": \"Maximum numeric value (for type=numeric)\" },\n \"minLength\": { \"type\": \"integer\", \"description\": \"Minimum text length (for type=text)\" },\n \"maxLength\": { \"type\": \"integer\", \"description\": \"Maximum text length (for type=text)\" },\n \"minCount\": { \"type\": \"integer\", \"description\": \"Minimum selection count (for type=answercount)\" },\n \"maxCount\": { \"type\": \"integer\", \"description\": \"Maximum selection count (for type=answercount)\" },\n \"expression\": { \"type\": \"string\", \"description\": \"SurveyJS expression for custom validation\" },\n \"validator\": { \"type\": \"string\", \"description\": \"Name of the custom validator function (for type=custom)\" }\n },\n \"required\": [\"type\"]\n },\n \"fieldData\": {\n \"type\": \"object\",\n \"description\": \"Definition of a form field\",\n \"properties\": {\n \"name\": { \n \"type\": \"string\", \n \"description\": \"Field name (optional in fields{} since it's the key, required in arrays)\"\n },\n \"displayName\": { \n \"type\": \"string\",\n \"description\": \"Human-readable label for the field\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"text\", \"number\", \"email\", \"file\", \"dropdown\", \"checkbox\", \"boolean\", \"comment\", \"radiogroup\", \"range\", \"html\", \"slider\"],\n \"description\": \"Field type determining rendering and behavior\"\n },\n \"inputType\": { \n \"type\": \"string\", \n \"enum\": [\"text\", \"number\", \"tel\", \"date\", \"email\", \"password\", \"url\"],\n \"description\": \"HTML input type override for text fields\" \n },\n \"category\": { \n \"type\": \"string\",\n \"description\": \"Category ID this field belongs to (string to match category.id)\" \n },\n \"categoryId\": { \n \"type\": \"integer\",\n \"description\": \"Legacy integer category ID (deprecated, prefer 'category')\"\n },\n \"maxLength\": { \"type\": [\"integer\", \"string\"], \"description\": \"Maximum character length\" },\n \"min\": { \"type\": [\"integer\", \"string\"], \"description\": \"Minimum value for numeric/slider fields\" },\n \"max\": { \"type\": [\"integer\", \"string\"], \"description\": \"Maximum value for numeric/slider fields\" },\n \"step\": { \"type\": \"number\", \"description\": \"Step increment for slider/range fields\" },\n \"html\": { \"type\": \"string\", \"description\": \"HTML content for type=html fields\" },\n \"choices\": {\n \"type\": \"array\",\n \"description\": \"Options for dropdown or radiogroup fields\",\n \"items\": { \"$ref\": \"#/definitions/choice\" }\n },\n \"validators\": {\n \"type\": \"array\",\n \"description\": \"Validation rules to apply to this field\",\n \"items\": { \"$ref\": \"#/definitions/validator\" }\n },\n \"visible\": { \n \"type\": \"boolean\", \n \"default\": true,\n \"description\": \"Whether the field is visible\"\n },\n \"visibleIf\": { \n \"type\": \"string\", \n \"description\": \"SurveyJS expression for conditional visibility\" \n },\n \"required\": { \n \"type\": \"boolean\",\n \"description\": \"Whether the field is required for form submission\"\n },\n \"isRequired\": { \n \"type\": \"boolean\", \n \"description\": \"Alias for 'required' (SurveyJS compatibility)\" \n },\n \"placeholder\": { \n \"type\": \"string\",\n \"description\": \"Placeholder text shown in empty field\"\n },\n \"defaultValue\": { \n \"type\": [\"string\", \"number\", \"boolean\", \"array\"],\n \"description\": \"Default value for the field\"\n },\n \"readOnly\": { \n \"type\": \"boolean\",\n \"description\": \"Whether the field is read-only\"\n },\n \"startWithNewLine\": { \n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"If false, field appears on same line as previous field\" \n },\n \"enableIf\": { \n \"type\": \"string\", \n \"description\": \"SurveyJS expression for conditional enable/disable\" \n },\n \"titleLocation\": { \n \"type\": \"string\", \n \"enum\": [\"default\", \"top\", \"bottom\", \"left\", \"hidden\"],\n \"description\": \"Position of the field label\"\n },\n \"ihs_column_names\": {\n \"type\": \"array\",\n \"description\": \"FinSys IHS column mappings for file fields (used for data extraction)\",\n \"items\": { \"type\": \"string\" }\n },\n \"requiredForEvaluation\": { \n \"type\": \"boolean\",\n \"default\": true,\n \"description\": \"Whether this field is required for loan evaluation (FinSys specific)\"\n }\n },\n \"required\": [\"type\"]\n },\n \"fieldReference\": {\n \"description\": \"Reference to a field in a page, supporting simple refs, refs with overrides, or inline definitions\",\n \"oneOf\": [\n { \n \"type\": \"string\", \n \"description\": \"Simple field name reference to a field defined in 'fields'\" \n },\n {\n \"type\": \"object\",\n \"description\": \"Field reference with optional property overrides\",\n \"properties\": {\n \"ref\": { \"type\": \"string\", \"description\": \"Reference to field name in 'fields' object\" },\n \"displayName\": { \"type\": \"string\", \"description\": \"Override display name for this page\" },\n \"type\": { \"type\": \"string\", \"description\": \"Override field type for this usage\" },\n \"defaultValue\": { \"type\": [\"string\", \"number\", \"boolean\", \"array\"] },\n \"readOnly\": { \"type\": \"boolean\" },\n \"visible\": { \"type\": \"boolean\" },\n \"visibleIf\": { \"type\": \"string\" },\n \"required\": { \"type\": \"boolean\" },\n \"min\": { \"type\": [\"integer\", \"string\"] },\n \"max\": { \"type\": [\"integer\", \"string\"] },\n \"choices\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/choice\" } }\n },\n \"required\": [\"ref\"]\n },\n {\n \"type\": \"object\",\n \"description\": \"Inline field definition (page-specific field not in master 'fields')\",\n \"properties\": {\n \"definition\": { \n \"allOf\": [\n { \"$ref\": \"#/definitions/fieldData\" },\n { \n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" }\n },\n \"required\": [\"name\"]\n }\n ]\n }\n },\n \"required\": [\"definition\"]\n }\n ]\n },\n \"pageConfig\": {\n \"type\": \"object\",\n \"description\": \"Configuration for a single page/step in the form wizard\",\n \"properties\": {\n \"id\": { \"type\": \"string\", \"description\": \"Unique page identifier\" },\n \"title\": { \"type\": \"string\", \"description\": \"Page title displayed to user\" },\n \"description\": { \"type\": \"string\", \"description\": \"Optional page description or instructions\" },\n \"showTOC\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Show table of contents\" },\n \"showProgressBar\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Show progress indicator\" },\n \"showCategoryHeadings\": { \n \"type\": \"boolean\", \n \"default\": false,\n \"description\": \"Render category names as section headings when category changes between fields\"\n },\n \"layout\": { \n \"type\": \"string\", \n \"enum\": [\"default\", \"grid\", \"vertical\"],\n \"description\": \"Layout mode for the page\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"description\": \"Ordered list of field references to display on this page\",\n \"items\": { \"$ref\": \"#/definitions/fieldReference\" }\n }\n },\n \"required\": [\"id\", \"fields\"]\n }\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class FormFieldCategory {\n private _id: string;\n private _name: string;\n\n constructor(id: string | number, name: string) {\n this._id = String(id);\n this._name = name;\n }\n\n get id(): string {\n return this._id;\n }\n\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n }\n\n toJSON() {\n return {\n id: this._id,\n name: this._name,\n };\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FieldData, Choice, Validator } from \"./survey-generator.js\";\n\nexport enum FieldType {\n FILE = 'file',\n TEXT = 'text',\n DROPDOWN = 'dropdown',\n BOOLEAN = 'boolean',\n CHECKBOX = 'checkbox',\n RADIOGROUP = 'radiogroup',\n SLIDER = 'slider',\n HTML = 'html',\n TAGBOX = 'tagbox',\n NUMBER = 'number',\n EMAIL = 'email',\n COMMENT = 'comment',\n RANGE = 'range',\n UNKNOWN = 'unknown',\n}\n\nexport interface FormFieldType {\n name: string;\n displayName: string;\n}\n\nexport interface FormFieldInputType {\n name: string;\n displayName: string;\n}\n\nexport interface FormFieldTypeDefinitions {\n version: number;\n types: FormFieldType[];\n input_types: FormFieldInputType[];\n}\n\nexport interface DropdownOption {\n id: number;\n name: string;\n displayName: string;\n choices: Choice[];\n}\n\nexport interface EditorValidator {\n id: number;\n displayName: string;\n class: string;\n description: string;\n isRequired: boolean;\n validators: Validator[];\n}\n\nfunction toFieldType(value: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n [FieldType.FILE]: FieldType.FILE,\n [FieldType.TEXT]: FieldType.TEXT,\n [FieldType.DROPDOWN]: FieldType.DROPDOWN,\n [FieldType.BOOLEAN]: FieldType.BOOLEAN,\n [FieldType.CHECKBOX]: FieldType.CHECKBOX,\n [FieldType.RADIOGROUP]: FieldType.RADIOGROUP,\n [FieldType.SLIDER]: FieldType.SLIDER,\n [FieldType.HTML]: FieldType.HTML,\n [FieldType.TAGBOX]: FieldType.TAGBOX,\n [FieldType.NUMBER]: FieldType.NUMBER,\n [FieldType.EMAIL]: FieldType.EMAIL,\n [FieldType.COMMENT]: FieldType.COMMENT,\n [FieldType.RANGE]: FieldType.RANGE,\n };\n return typeMap[value] || FieldType.UNKNOWN;\n}\n\nexport default abstract class FormField {\n fieldObject: FieldData;\n\n constructor(name: string, displayName: string, type: string, category: string) {\n this.fieldObject = {\n name,\n displayName,\n type,\n category,\n };\n }\n\n static fromObject(fieldObject: FieldData): FormField {\n if (!fieldObject.name) {\n throw new Error('Field name is required');\n }\n\n if (!fieldObject.displayName || !fieldObject.category) {\n throw new Error(\n `Invalid field object: '${fieldObject.name}' field missing displayName or category`\n );\n }\n\n const identifiedType = toFieldType(fieldObject.type as string);\n if (identifiedType === FieldType.UNKNOWN) {\n throw new Error(\n `'${fieldObject.name}' field has unsupported or missing type: ${fieldObject.type}`\n );\n }\n\n if (\n fieldObject.choices &&\n !['dropdown', 'checkbox', 'radiogroup', 'tagbox'].includes(fieldObject.type as string)\n ) {\n // Logic remained as is\n }\n\n if (fieldObject.type === 'dropdown' && !fieldObject.choices) {\n throw new Error(\n `Invalid field object: '${fieldObject.name}' field has type dropdown, but does not have choices`\n );\n }\n\n let field: FormField;\n if (fieldObject.type === 'file') {\n field = new FileFormField(\n fieldObject.name,\n fieldObject.displayName || fieldObject.name,\n fieldObject.type,\n String(fieldObject.category),\n fieldObject.ihs_column_names || []\n );\n } else {\n field = new BasicFormField(\n fieldObject.name,\n fieldObject.displayName || fieldObject.name,\n fieldObject.type || 'text',\n String(fieldObject.category)\n );\n }\n\n field.fieldObject = { ...fieldObject };\n field.fieldObject.category = String(field.fieldObject.category);\n\n // Remove legacy categoryId property\n delete (field.fieldObject as any).categoryId;\n\n return field;\n }\n\n abstract getFieldNames(): string[];\n\n protected cleanObject(obj: any): any {\n if (obj === null || obj === undefined) return obj;\n\n let target = obj;\n if (typeof obj.toJSON === 'function' && obj !== this) {\n target = obj.toJSON();\n }\n\n if (Array.isArray(target)) {\n return target.map((v: any) => (typeof v === 'object' ? this.cleanObject(v) : v));\n }\n\n if (typeof target !== 'object') return target;\n\n const cleaned: any = {};\n Object.keys(target).forEach((key) => {\n const value = target[key];\n if (value !== null && value !== undefined && value !== '') {\n if (typeof value === 'object') {\n cleaned[key] = this.cleanObject(value);\n } else {\n cleaned[key] = value;\n }\n }\n });\n return cleaned;\n }\n\n toJSON() {\n return this.cleanObject({ ...this.fieldObject });\n }\n\n get displayName(): string {\n return this.fieldObject.displayName || this.fieldObject.name || '';\n }\n\n set displayName(newDisplayName: string) {\n this.fieldObject.displayName = newDisplayName;\n }\n\n get name(): string {\n return this.fieldObject.name || '';\n }\n\n get type(): FieldType {\n return toFieldType(this.fieldObject.type as string);\n }\n\n get inputType(): string {\n return this.fieldObject.inputType ?? '';\n }\n\n get categoryId(): string {\n return String(this.fieldObject.category || '');\n }\n\n set categoryId(categoryId: string) {\n this.fieldObject.category = categoryId;\n }\n\n get defaultValue(): any {\n return this.fieldObject.defaultValue;\n }\n\n set defaultValue(value: any) {\n this.fieldObject.defaultValue = value;\n }\n\n get placeholder(): string | undefined {\n return this.fieldObject.placeholder;\n }\n\n get validators(): Validator[] | undefined {\n return this.fieldObject.validators as Validator[];\n }\n\n get choices(): Choice[] {\n return (this.fieldObject.choices as Choice[]) ?? [];\n }\n\n set choices(choices: Choice[]) {\n this.fieldObject.choices = choices;\n }\n\n get visible(): boolean {\n return this.fieldObject.visible ?? true;\n }\n\n get visibleIf(): string | undefined {\n return this.fieldObject.visibleIf;\n }\n\n get isRequired(): boolean {\n return this.fieldObject.required ?? this.fieldObject.isRequired ?? true;\n }\n\n get startWithNewLine(): boolean {\n return this.fieldObject.startWithNewLine ?? true;\n }\n\n get requiredForEvaluation(): boolean {\n return this.fieldObject.requiredForEvaluation ?? true;\n }\n\n get maxLength(): number | undefined {\n return typeof this.fieldObject.maxLength === 'string'\n ? Number.parseInt(this.fieldObject.maxLength)\n : this.fieldObject.maxLength;\n }\n\n get min(): number | undefined {\n return typeof this.fieldObject.min === 'string'\n ? Number.parseFloat(this.fieldObject.min)\n : this.fieldObject.min;\n }\n\n get max(): number | undefined {\n return typeof this.fieldObject.max === 'string'\n ? Number.parseFloat(this.fieldObject.max)\n : this.fieldObject.max;\n }\n}\n\nexport class BasicFormField extends FormField {\n constructor(name: string, displayName: string, type: string, category: string) {\n super(name, displayName, type, category);\n }\n\n getFieldNames(): string[] {\n if (this.fieldObject.requiredForEvaluation === false) {\n return [];\n }\n\n return [this.fieldObject.name!];\n }\n}\n\nexport class FileFormField extends FormField {\n constructor(\n name: string,\n displayName: string,\n type: string,\n category: string,\n ihs_column_names: string[]\n ) {\n super(name, displayName, type, category);\n this.fieldObject.ihs_column_names = ihs_column_names;\n }\n\n getFieldNames(): string[] {\n if (this.fieldObject.requiredForEvaluation === false) {\n return [];\n }\n\n return this.fieldObject.ihs_column_names || [];\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldCategory } from \"./form-field-category.js\";\nimport FormField from \"./form-field.js\";\nimport type { FieldData, PageConfig, UnifiedFormConfig } from \"./survey-generator.js\";\nimport { validateFormConfig } from \"./validator.js\";\nimport semver from \"semver\";\n\nexport class FormSpec {\n private _categories: FormFieldCategory[] = [];\n private _fields: FormField[] = [];\n private _displayName: string;\n private _templateIcon?: string;\n private _schemaVersion: string;\n private _pages: PageConfig[] = [];\n\n constructor(\n displayName: string,\n categories: FormFieldCategory[],\n fields: FormField[],\n pages: PageConfig[] = [],\n templateIcon?: string,\n schemaVersion: string = FormSpec.MAX_PARSER_SCHEMA_VERSION\n ) {\n this._displayName = displayName;\n this._templateIcon = templateIcon;\n this._categories = categories;\n this._fields = fields;\n this._pages = pages;\n this._schemaVersion = schemaVersion;\n }\n\n static readonly MIN_PARSER_SCHEMA_VERSION = 'v1.0.0';\n static readonly MAX_PARSER_SCHEMA_VERSION = 'v2.0.0';\n\n get fieldNames(): string[] {\n let names: string[] = [];\n\n this.fields.forEach((field) => {\n names = names.concat(field.getFieldNames());\n });\n\n return names;\n }\n\n get schemaVersion(): string {\n return this._schemaVersion;\n }\n\n get requiresUpgrade(): boolean {\n return semver.lt(this._schemaVersion, FormSpec.MAX_PARSER_SCHEMA_VERSION);\n }\n\n upgradeToV2(): void {\n this._schemaVersion = FormSpec.MAX_PARSER_SCHEMA_VERSION;\n }\n\n get displayName(): string {\n return this._displayName;\n }\n\n set displayName(newDisplayName: string) {\n this._displayName = newDisplayName;\n }\n\n get templateIcon(): string | undefined {\n return this._templateIcon;\n }\n\n set templateIcon(value: string | undefined) {\n this._templateIcon = value;\n }\n\n get categories(): FormFieldCategory[] {\n return this._categories;\n }\n\n set categories(categories: FormFieldCategory[]) {\n this._categories = categories;\n }\n\n get fields(): FormField[] {\n return this._fields;\n }\n\n set fields(fields: FormField[]) {\n this._fields = fields;\n }\n\n get pages(): PageConfig[] {\n return this._pages;\n }\n\n set pages(value: PageConfig[]) {\n this._pages = value;\n }\n\n addField(field: FormField): void {\n this._fields.push(field);\n }\n\n updateField(field: FormField): void {\n const index = this._fields.findIndex((f) => f.name === field.name);\n if (index !== -1) {\n this._fields[index] = field;\n } else {\n throw new Error(\n `${field.name} not found. Form Spec of ${this._displayName} cannot update ${field.name}`\n );\n }\n }\n\n removeField(fieldName: string): void {\n const fieldIndex = this._fields.findIndex((f) => f.name === fieldName);\n if (fieldIndex !== -1) {\n this._fields.splice(fieldIndex, 1);\n\n this._pages.forEach((page) => {\n page.fields = page.fields.filter((fieldRef) => {\n let refName: string | undefined;\n if (typeof fieldRef === 'string') {\n refName = fieldRef;\n } else if ('ref' in fieldRef) {\n refName = fieldRef.ref;\n } else if ('definition' in fieldRef) {\n refName = fieldRef.definition.name;\n }\n return refName !== fieldName;\n });\n });\n }\n }\n\n getFieldsByCategory(categoryName: string): FormField[] {\n const foundCategory = this.categories.find((category) => category.name === categoryName);\n\n if (!foundCategory) {\n return [];\n }\n\n return this._fields.filter((field) => field.categoryId === foundCategory.id);\n }\n\n validate(): { valid: boolean; errors?: any[] } {\n const config = this.toJSON() as UnifiedFormConfig;\n const result = validateFormConfig(config);\n const errors: any[] = [];\n\n if (result.errors) {\n result.errors.forEach((err: any) => {\n let path = err.instancePath || err.dataPath || '';\n path = path.replace(/^\\//, '').replace(/\\//g, '.');\n const prefix = path ? `${path}: ` : '';\n errors.push({\n message: `${prefix}${err.message}`,\n path: path,\n });\n });\n }\n\n if (!this._displayName || this._displayName.trim() === '') {\n errors.push({\n message: 'displayName: Form display name is required',\n path: 'displayName',\n });\n }\n\n const categoryIds = new Set(this._categories.map((c) => String(c.id)));\n this._fields.forEach((field) => {\n if (field.categoryId && !categoryIds.has(String(field.categoryId))) {\n errors.push({\n message: `fields.${field.name}.category: references non-existent category '${field.categoryId}'`,\n path: `fields.${field.name}.category`,\n });\n }\n });\n\n const fieldNames = new Set(this._fields.map((f) => f.name));\n this._pages.forEach((page, pageIndex) => {\n page.fields.forEach((fieldRef, fieldIndex) => {\n let refName: string | undefined;\n if (typeof fieldRef === 'string') {\n refName = fieldRef;\n } else if (fieldRef && (fieldRef as any).ref) {\n refName = (fieldRef as any).ref;\n } else if (fieldRef && (fieldRef as any).definition) {\n refName = (fieldRef as any).definition.name;\n }\n\n if (refName && !fieldNames.has(refName)) {\n errors.push({\n message: `pages.${pageIndex}.fields.${fieldIndex}: references non-existent field '${refName}'`,\n path: `pages.${pageIndex}.fields.${fieldIndex}`,\n });\n }\n });\n });\n\n return {\n valid: result.valid && errors.length === (result.errors?.length || 0),\n errors: errors.length > 0 ? errors : undefined,\n };\n }\n\n private cleanObject(obj: any): any {\n if (obj === null || obj === undefined) return obj;\n\n let target = obj;\n if (typeof obj.toJSON === 'function' && obj !== this) {\n target = obj.toJSON();\n }\n\n if (Array.isArray(target)) {\n return target.map((v: any) => (typeof v === 'object' ? this.cleanObject(v) : v));\n }\n\n if (typeof target !== 'object') return target;\n\n const cleaned: any = {};\n Object.keys(target).forEach((key) => {\n const value = target[key];\n if (value !== null && value !== undefined && value !== '') {\n if (typeof value === 'object') {\n cleaned[key] = this.cleanObject(value);\n } else {\n cleaned[key] = value;\n }\n }\n });\n return cleaned;\n }\n\n toJSON(): object {\n const fieldsMap: Record<string, any> = {};\n this._fields.forEach((field) => {\n fieldsMap[field.name] = field.toJSON();\n delete fieldsMap[field.name].name;\n });\n\n return this.cleanObject({\n $schema:\n '../../../node_modules/@finsys/core/dist/schema/unified-form.schema.json',\n schemaVersion: this._schemaVersion,\n displayName: this._displayName,\n templateIcon: this._templateIcon,\n categories: this._categories,\n fields: fieldsMap,\n pages: this._pages,\n });\n }\n\n static fromJSON(jsonString: string): FormSpec {\n let jsonData: any;\n try {\n jsonData = JSON.parse(jsonString);\n } catch (error) {\n console.error(`Error parsing JSON for Loantype with string: ${jsonString}`);\n throw error;\n }\n\n if (!jsonData.schemaVersion) {\n throw new Error('Invalid JSON: schemaVersion is missing or invalid');\n }\n\n if (semver.lt(jsonData.schemaVersion, FormSpec.MIN_PARSER_SCHEMA_VERSION)) {\n throw new Error(\n `This form spec file is using an outdated schema version ${jsonData.schemaVersion}. Minimum supported version is ${FormSpec.MIN_PARSER_SCHEMA_VERSION}`\n );\n }\n\n if (!jsonData.displayName) {\n throw new Error('Invalid JSON: displayName is missing or invalid');\n }\n\n if (!jsonData.categories) {\n throw new Error('Invalid JSON: categories is missing or invalid');\n }\n\n if (!jsonData.fields) {\n throw new Error('Invalid JSON: fields is missing or invalid');\n }\n\n if (!jsonData.pages || jsonData.pages.length === 0) {\n if (semver.satisfies(jsonData.schemaVersion, '>=2.0.0')) {\n console.warn(\n `v2.0.0 template ${jsonData.displayName} is missing pages. Generating default pages.`\n );\n }\n }\n\n let fieldObjects: FieldData[] = [];\n if (Array.isArray(jsonData.fields)) {\n fieldObjects = jsonData.fields;\n } else if (typeof jsonData.fields === 'object' && jsonData.fields !== null) {\n fieldObjects = Object.entries(jsonData.fields).map(([name, data]: [string, any]) => {\n return {\n name,\n ...data,\n };\n });\n }\n\n fieldObjects.forEach((f: any) => {\n if (f.categoryId && !f.category) {\n f.category = String(f.categoryId);\n } else if (f.category) {\n f.category = String(f.category);\n }\n });\n\n const categories = (jsonData.categories || []).map((cat: any) => {\n return new FormFieldCategory(String(cat.id), cat.name);\n });\n\n const fields: FormField[] = fieldObjects.map((fieldObject) => {\n return FormField.fromObject(fieldObject);\n });\n\n let pages = jsonData.pages || [];\n if (pages.length === 0) {\n const categoriesMap: Record<string, string[]> = {};\n fields.forEach((f) => {\n const catId = f.categoryId;\n if (!categoriesMap[catId]) {\n categoriesMap[catId] = [];\n }\n categoriesMap[catId].push(f.name);\n });\n\n pages = categories\n .map((cat: FormFieldCategory) => ({\n id: `page-${cat.id}`,\n title: cat.name,\n fields: categoriesMap[cat.id] || [],\n }))\n .filter((p: PageConfig) => p.fields.length > 0);\n }\n\n return new FormSpec(\n jsonData.displayName,\n categories,\n fields,\n pages,\n jsonData.templateIcon,\n jsonData.schemaVersion\n );\n }\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Validator } from \"./survey-generator.js\";\nimport type { EditorValidator } from \"./form-field.js\";\n\nexport interface FormValidatorDefinitions {\n options: EditorValidator[];\n version: number;\n}\n\nexport class FormFieldValidator implements EditorValidator {\n id: number;\n displayName: string;\n class: string;\n description: string;\n isRequired: boolean;\n validators: Validator[];\n\n constructor(validatorData: EditorValidator) {\n this.id = validatorData.id;\n this.displayName = validatorData.displayName;\n this.class = validatorData.class;\n this.description = validatorData.description;\n this.isRequired = validatorData.isRequired;\n this.validators = validatorData.validators;\n }\n\n validate(value: any): boolean {\n for (const validator of this.validators) {\n switch (validator.type) {\n case 'numeric':\n if (!this.validateNumeric(value, validator.minValue, validator.maxValue)) {\n return false;\n }\n break;\n case 'text':\n if (!this.validateText(value, validator.minLength, validator.maxLength)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n\n private validateNumeric(value: number, min?: number, max?: number): boolean {\n if (min !== undefined && value < min) return false;\n if (max !== undefined && value > max) return false;\n return true;\n }\n\n private validateText(value: string, minLength?: number, maxLength?: number): boolean {\n if (minLength !== undefined && value.length < minLength) return false;\n if (maxLength !== undefined && value.length > maxLength) return false;\n return true;\n }\n}\n","{\n \"schemaVersion\": \"v2.0.0\",\n \"categories\": [\n {\n \"id\": \"1\",\n \"name\": \"Basic Information\"\n },\n {\n \"id\": \"2\",\n \"name\": \"Personal Information\"\n },\n {\n \"id\": \"3\",\n \"name\": \"Company Information\"\n },\n {\n \"id\": \"4\",\n \"name\": \"Financial Information\"\n },\n {\n \"id\": \"5\",\n \"name\": \"Employment Information\"\n },\n {\n \"id\": \"6\",\n \"name\": \"Consent and Legal Agreements\"\n },\n {\n \"id\": \"7\",\n \"name\": \"Address Information\"\n },\n {\n \"id\": \"8\",\n \"name\": \"Contact Information\"\n },\n {\n \"id\": \"9\",\n \"name\": \"Declarations\"\n },\n {\n \"id\": \"10\",\n \"name\": \"Account Information\"\n },\n {\n \"id\": \"11\",\n \"name\": \"Loan Information\"\n },\n {\n \"id\": \"12\",\n \"name\": \"Vehicle Information\"\n },\n {\n \"id\": \"13\",\n \"name\": \"Document Upload\"\n }\n ],\n \"fields\": [\n {\n \"name\": \"fullName\",\n \"displayName\": \"Full Name\",\n \"placeholder\": \"E.g. John Doe\",\n \"type\": \"text\",\n \"maxLength\": 80,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please make sure the name doesn't include extra spaces, numbers, or invalid symbols\",\n \"regex\": \"^[A-Za-z'-]+(?:\\\\s[A-Za-z'-]+)*\\\\s?[A-Za-z'-]+$\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"name\": \"email\",\n \"displayName\": \"Email\",\n \"placeholder\": \"E.g. johndoe@example.com\",\n \"type\": \"text\",\n \"inputType\": \"email\",\n \"maxLength\": 65,\n \"validators\": [\n {\n \"type\": \"email\",\n \"text\": \"Value must be a valid email\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"name\": \"mobilePhoneNoAreaCode\",\n \"displayName\": \"Mobile Phone Number Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"1\"\n },\n {\n \"name\": \"mobilePhoneNo\",\n \"displayName\": \"Mobile Phone Number\",\n \"placeholder\": \"Mobile Phone Number\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"maxLength\": 12,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^(011[0-9]{8}|01[2346789][0-9]{7}|[2-9][0-9]{0,8})$\"\n }\n ],\n \"category\": \"1\"\n },\n {\n \"type\": \"text\",\n \"name\": \"idNumber\",\n \"title\": \"ID Number\",\n \"placeholder\": \"E.g. 700513065143\",\n \"isRequired\": true,\n \"displayName\": \"IC Number\",\n \"maxLength\": 25,\n \"inputType\": \"text\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{12}$\",\n \"text\": \"Please enter exactly 12 digits numbers\"\n },\n {\n \"type\": \"regex\",\n \"regex\": \"^(\\\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\\\\d{6}$\",\n \"text\": \"First 6 digits must be valid birth year (00-99), month (01-12), and day (01-31)\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"dateOfBirth\",\n \"displayName\": \"Date of Birth\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"visible\": false,\n \"category\": \"2\"\n },\n {\n \"name\": \"companyName\",\n \"displayName\": \"Company Name\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"companyRegNo\",\n \"displayName\": \"Company Registration Number\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"natureOfBusiness\",\n \"displayName\": \"Nature of Business\",\n \"placeholder\": \"Select your Nature of Business\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Manufacturing\",\n \"text\": \"Manufacturing\"\n },\n {\n \"value\": \"Services\",\n \"text\": \"Services\"\n },\n {\n \"value\": \"Others\",\n \"text\": \"Others\"\n }\n ],\n \"maxLength\": 80,\n \"category\": \"3\"\n },\n {\n \"name\": \"officeFacilityType\",\n \"displayName\": \"Office Facility Type\",\n \"placeholder\": \"Select your facility type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Owned\",\n \"text\": \"Owned\"\n },\n {\n \"value\": \"Rented\",\n \"text\": \"Rented\"\n }\n ],\n \"maxLength\": 80,\n \"category\": \"3\"\n },\n {\n \"name\": \"companySize\",\n \"displayName\": \"Company Size\",\n \"placeholder\": \"Select your company size\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"selfEmplyed\",\n \"text\": \"Self-employed\"\n },\n {\n \"value\": \"1-10\",\n \"text\": \"1-10\"\n },\n {\n \"value\": \"11-20\",\n \"text\": \"11-20\"\n },\n {\n \"value\": \"21-30\",\n \"text\": \"21-30\"\n },\n {\n \"value\": \"31-50\",\n \"text\": \"31-50\"\n },\n {\n \"value\": \"51-100\",\n \"text\": \"51-100\"\n },\n {\n \"value\": \"101-500\",\n \"text\": \"101-500\"\n },\n {\n \"value\": \"500+\",\n \"text\": \"500+\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"facilityAddress\",\n \"displayName\": \"Facility Address\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"companyEntityType\",\n \"displayName\": \"Company Entity Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Branch office\",\n \"text\": \"Branch office\"\n },\n {\n \"value\": \"Company Limited by guarantee\",\n \"text\": \"Company Limited by guarantee\"\n },\n {\n \"value\": \"Enterprise or Sole Proprietorship\",\n \"text\": \"Enterprise or Sole Proprietorship\"\n },\n {\n \"value\": \"Foreign Companies\",\n \"text\": \"Foreign Companies\"\n },\n {\n \"value\": \"Limited Liability Partnership\",\n \"text\": \"Limited Liability Partnership\"\n },\n {\n \"value\": \"Partnership\",\n \"text\": \"Partnership\"\n },\n {\n \"value\": \"Private Limited Company (Sdn. Bhd.)\",\n \"text\": \"Private Limited Company (Sdn. Bhd.)\"\n },\n {\n \"value\": \"Public Limited Company (Bhd.)\",\n \"text\": \"Public Limited Company (Bhd.)\"\n },\n {\n \"value\": \"Proprietorship/ Partnership\",\n \"text\": \"Proprietorship/ Partnership\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"tnbTariff\",\n \"displayName\": \"TNB Tariff\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"B\",\n \"text\": \"B\"\n },\n {\n \"value\": \"C1\",\n \"text\": \"C1\"\n },\n {\n \"value\": \"C2\",\n \"text\": \"C2\"\n },\n {\n \"value\": \"D\",\n \"text\": \"D\"\n },\n {\n \"value\": \"E1\",\n \"text\": \"E1\"\n },\n {\n \"value\": \"E2\",\n \"text\": \"E2\"\n },\n {\n \"value\": \"E3\",\n \"text\": \"E3\"\n },\n {\n \"value\": \"H\",\n \"text\": \"H\"\n },\n {\n \"value\": \"H1\",\n \"text\": \"H1\"\n },\n {\n \"value\": \"H2\",\n \"text\": \"H2\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"avgMaximumDemand\",\n \"displayName\": \"Average Maximum Demand\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"ctRatio\",\n \"displayName\": \"CT Ratio\",\n \"type\": \"text\",\n \"category\": \"4\"\n },\n {\n \"name\": \"buildingType\",\n \"displayName\": \"Building Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Warehouse/Factory\",\n \"text\": \"Warehouse/Factory\"\n },\n {\n \"value\": \"Office building/Shoplot\",\n \"text\": \"Office building/Shoplot\"\n },\n {\n \"value\": \"Shopping Mall/Complex\",\n \"text\": \"Shopping Mall/Complex\"\n },\n {\n \"value\": \"School\",\n \"text\": \"School\"\n },\n {\n \"value\": \"Other\",\n \"text\": \"Other\"\n }\n ],\n \"category\": \"3\"\n },\n {\n \"name\": \"tnbBills\",\n \"displayName\": \"TNB Bills\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"2\"\n },\n {\n \"name\": \"financingSelection\",\n \"displayName\": \"Financing Selection\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Loan\",\n \"text\": \"Loan\"\n },\n {\n \"value\": \"Leasing\",\n \"text\": \"Leasing\"\n },\n {\n \"value\": \"Extended Terms\",\n \"text\": \"Extended Terms\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"businessSector\",\n \"displayName\": \"Business Sector\",\n \"type\": \"text\",\n \"category\": \"5\"\n },\n {\n \"name\": \"companyBackground\",\n \"displayName\": \"Company Background\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"isApplication\",\n \"displayName\": \"Is Application\",\n \"type\": \"boolean\",\n \"category\": \"6\"\n },\n {\n \"name\": \"isReview\",\n \"displayName\": \"Is Review\",\n \"type\": \"boolean\",\n \"category\": \"6\"\n },\n {\n \"name\": \"addressLine1\",\n \"displayName\": \"Address Line 1\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressLine2\",\n \"displayName\": \"Address Line 2\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressLine3\",\n \"displayName\": \"Address Line 3\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"addressType\",\n \"displayName\": \"Address Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"P\",\n \"text\": \"Permanent\"\n },\n {\n \"value\": \"O\",\n \"text\": \"Office\"\n },\n {\n \"value\": \"R\",\n \"text\": \"Residence\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"city\",\n \"displayName\": \"City\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"country\",\n \"displayName\": \"Country\",\n \"type\": \"dropdown\",\n \"titleLocation\": \"hidden\",\n \"placeholder\": \"Country\",\n \"choices\": [\n {\n \"text\": \"Afghanistan\",\n \"value\": \"AFG\"\n },\n {\n \"text\": \"Angola\",\n \"value\": \"ANG\"\n },\n {\n \"text\": \"Albania\",\n \"value\": \"ALB\"\n },\n {\n \"text\": \"Andorra\",\n \"value\": \"AND\"\n },\n {\n \"text\": \"United Arab Emirates\",\n \"value\": \"UAE\"\n },\n {\n \"text\": \"Argentina\",\n \"value\": \"ARG\"\n },\n {\n \"text\": \"Armenia\",\n \"value\": \"ARM\"\n },\n {\n \"text\": \"Antigua and Barbuda\",\n \"value\": \"ANT\"\n },\n {\n \"text\": \"Australia\",\n \"value\": \"AUS\"\n },\n {\n \"text\": \"Austria\",\n \"value\": \"AUT\"\n },\n {\n \"text\": \"Azerbaijan\",\n \"value\": \"AZE\"\n },\n {\n \"text\": \"Burundi\",\n \"value\": \"BDI\"\n },\n {\n \"text\": \"Belgium\",\n \"value\": \"BEL\"\n },\n {\n \"text\": \"Benin\",\n \"value\": \"BEN\"\n },\n {\n \"text\": \"Burkina Faso\",\n \"value\": \"BFA\"\n },\n {\n \"text\": \"Bangladesh\",\n \"value\": \"BGD\"\n },\n {\n \"text\": \"Bulgaria\",\n \"value\": \"BUL\"\n },\n {\n \"text\": \"Bahrain\",\n \"value\": \"BRN\"\n },\n {\n \"text\": \"Bahamas\",\n \"value\": \"BAH\"\n },\n {\n \"text\": \"Bosnia and Herzegovina\",\n \"value\": \"BIH\"\n },\n {\n \"text\": \"Belarus\",\n \"value\": \"BLR\"\n },\n {\n \"text\": \"Belize\",\n \"value\": \"BIZ\"\n },\n {\n \"text\": \"Bolivia\",\n \"value\": \"BOL\"\n },\n {\n \"text\": \"Brazil\",\n \"value\": \"BRA\"\n },\n {\n \"text\": \"Barbados\",\n \"value\": \"BAR\"\n },\n {\n \"text\": \"Brunei\",\n \"value\": \"BRU\"\n },\n {\n \"text\": \"Bhutan\",\n \"value\": \"BHU\"\n },\n {\n \"text\": \"Botswana\",\n \"value\": \"BOT\"\n },\n {\n \"text\": \"Central African Republic\",\n \"value\": \"CAF\"\n },\n {\n \"text\": \"Canada\",\n \"value\": \"CAN\"\n },\n {\n \"text\": \"Switzerland\",\n \"value\": \"CHE\"\n },\n {\n \"text\": \"Chile\",\n \"value\": \"CHI\"\n },\n {\n \"text\": \"China\",\n \"value\": \"CHN\"\n },\n {\n \"text\": \"Ivory Coast\",\n \"value\": \"CIV\"\n },\n {\n \"text\": \"Cameroon\",\n \"value\": \"CMR\"\n },\n {\n \"text\": \"DR Congo\",\n \"value\": \"COD\"\n },\n {\n \"text\": \"Republic of the Congo\",\n \"value\": \"CGO\"\n },\n {\n \"text\": \"Colombia\",\n \"value\": \"COL\"\n },\n {\n \"text\": \"Comoros\",\n \"value\": \"COM\"\n },\n {\n \"text\": \"Cape Verde\",\n \"value\": \"CPV\"\n },\n {\n \"text\": \"Costa Rica\",\n \"value\": \"CRC\"\n },\n {\n \"text\": \"Cuba\",\n \"value\": \"CUB\"\n },\n {\n \"text\": \"Cyprus\",\n \"value\": \"CYP\"\n },\n {\n \"text\": \"Czechia\",\n \"value\": \"CZE\"\n },\n {\n \"text\": \"Germany\",\n \"value\": \"DEU\"\n },\n {\n \"text\": \"Djibouti\",\n \"value\": \"DJI\"\n },\n {\n \"text\": \"Dominica\",\n \"value\": \"DMA\"\n },\n {\n \"text\": \"Denmark\",\n \"value\": \"DEN\"\n },\n {\n \"text\": \"Dominican Republic\",\n \"value\": \"DOM\"\n },\n {\n \"text\": \"Algeria\",\n \"value\": \"ALG\"\n },\n {\n \"text\": \"Ecuador\",\n \"value\": \"ECU\"\n },\n {\n \"text\": \"Egypt\",\n \"value\": \"EGY\"\n },\n {\n \"text\": \"Eritrea\",\n \"value\": \"ERI\"\n },\n {\n \"text\": \"Spain\",\n \"value\": \"ESP\"\n },\n {\n \"text\": \"Estonia\",\n \"value\": \"EST\"\n },\n {\n \"text\": \"Ethiopia\",\n \"value\": \"ETH\"\n },\n {\n \"text\": \"Finland\",\n \"value\": \"FIN\"\n },\n {\n \"text\": \"Fiji\",\n \"value\": \"FIJ\"\n },\n {\n \"text\": \"France\",\n \"value\": \"FRA\"\n },\n {\n \"text\": \"Micronesia\",\n \"value\": \"FSM\"\n },\n {\n \"text\": \"Gabon\",\n \"value\": \"GAB\"\n },\n {\n \"text\": \"United Kingdom\",\n \"value\": \"GBR\"\n },\n {\n \"text\": \"Georgia\",\n \"value\": \"GEO\"\n },\n {\n \"text\": \"Ghana\",\n \"value\": \"GHA\"\n },\n {\n \"text\": \"Guinea\",\n \"value\": \"GUI\"\n },\n {\n \"text\": \"Gambia\",\n \"value\": \"GAM\"\n },\n {\n \"text\": \"Equatorial Guinea\",\n \"value\": \"GEQ\"\n },\n {\n \"text\": \"Greece\",\n \"value\": \"GRE\"\n },\n {\n \"text\": \"Grenada\",\n \"value\": \"GRN\"\n },\n {\n \"text\": \"Guatemala\",\n \"value\": \"GUA\"\n },\n {\n \"text\": \"Guyana\",\n \"value\": \"GUY\"\n },\n {\n \"text\": \"Honduras\",\n \"value\": \"HON\"\n },\n {\n \"text\": \"Croatia\",\n \"value\": \"CRO\"\n },\n {\n \"text\": \"Haiti\",\n \"value\": \"HAI\"\n },\n {\n \"text\": \"Hungary\",\n \"value\": \"HUN\"\n },\n {\n \"text\": \"Indonesia\",\n \"value\": \"INA\"\n },\n {\n \"text\": \"India\",\n \"value\": \"IND\"\n },\n {\n \"text\": \"Ireland\",\n \"value\": \"IRL\"\n },\n {\n \"text\": \"Iran\",\n \"value\": \"IRI\"\n },\n {\n \"text\": \"Iraq\",\n \"value\": \"IRQ\"\n },\n {\n \"text\": \"Iceland\",\n \"value\": \"ISL\"\n },\n {\n \"text\": \"Israel\",\n \"value\": \"ISR\"\n },\n {\n \"text\": \"Italy\",\n \"value\": \"ITA\"\n },\n {\n \"text\": \"Jamaica\",\n \"value\": \"JAM\"\n },\n {\n \"text\": \"Jordan\",\n \"value\": \"JOR\"\n },\n {\n \"text\": \"Japan\",\n \"value\": \"JPN\"\n },\n {\n \"text\": \"Kazakhstan\",\n \"value\": \"KAZ\"\n },\n {\n \"text\": \"Kenya\",\n \"value\": \"KEN\"\n },\n {\n \"text\": \"Kyrgyzstan\",\n \"value\": \"KGZ\"\n },\n {\n \"text\": \"Cambodia\",\n \"value\": \"KHM\"\n },\n {\n \"text\": \"Kiribati\",\n \"value\": \"KIR\"\n },\n {\n \"text\": \"Saint Kitts and Nevis\",\n \"value\": \"SKN\"\n },\n {\n \"text\": \"South Korea\",\n \"value\": \"KOR\"\n },\n {\n \"text\": \"Kuwait\",\n \"value\": \"KUW\"\n },\n {\n \"text\": \"Laos\",\n \"value\": \"LAO\"\n },\n {\n \"text\": \"Lebanon\",\n \"value\": \"LIB\"\n },\n {\n \"text\": \"Liberia\",\n \"value\": \"LBR\"\n },\n {\n \"text\": \"Libya\",\n \"value\": \"LBA\"\n },\n {\n \"text\": \"Saint Lucia\",\n \"value\": \"LCA\"\n },\n {\n \"text\": \"Liechtenstein\",\n \"value\": \"LIE\"\n },\n {\n \"text\": \"Sri Lanka\",\n \"value\": \"SRI\"\n },\n {\n \"text\": \"Lesotho\",\n \"value\": \"LES\"\n },\n {\n \"text\": \"Lithuania\",\n \"value\": \"LTU\"\n },\n {\n \"text\": \"Luxembourg\",\n \"value\": \"LUX\"\n },\n {\n \"text\": \"Latvia\",\n \"value\": \"LAT\"\n },\n {\n \"text\": \"Morocco\",\n \"value\": \"MAR\"\n },\n {\n \"text\": \"Monaco\",\n \"value\": \"MON\"\n },\n {\n \"text\": \"Moldova\",\n \"value\": \"MDA\"\n },\n {\n \"text\": \"Madagascar\",\n \"value\": \"MAD\"\n },\n {\n \"text\": \"Maldives\",\n \"value\": \"MDV\"\n },\n {\n \"text\": \"Mexico\",\n \"value\": \"MEX\"\n },\n {\n \"text\": \"Marshall Islands\",\n \"value\": \"MHL\"\n },\n {\n \"text\": \"North Macedonia\",\n \"value\": \"MKD\"\n },\n {\n \"text\": \"Mali\",\n \"value\": \"MLI\"\n },\n {\n \"text\": \"Malta\",\n \"value\": \"MLT\"\n },\n {\n \"text\": \"Myanmar\",\n \"value\": \"MYA\"\n },\n {\n \"text\": \"Montenegro\",\n \"value\": \"MNE\"\n },\n {\n \"text\": \"Mongolia\",\n \"value\": \"MGL\"\n },\n {\n \"text\": \"Mozambique\",\n \"value\": \"MOZ\"\n },\n {\n \"text\": \"Mauritania\",\n \"value\": \"MTN\"\n },\n {\n \"text\": \"Mauritius\",\n \"value\": \"MRI\"\n },\n {\n \"text\": \"Malawi\",\n \"value\": \"MAW\"\n },\n {\n \"text\": \"Malaysia\",\n \"value\": \"MAS\"\n },\n {\n \"text\": \"Namibia\",\n \"value\": \"NAM\"\n },\n {\n \"text\": \"Niger\",\n \"value\": \"NIG\"\n },\n {\n \"text\": \"Nigeria\",\n \"value\": \"NGR\"\n },\n {\n \"text\": \"Nicaragua\",\n \"value\": \"NCA\"\n },\n {\n \"text\": \"Netherlands\",\n \"value\": \"NED\"\n },\n {\n \"text\": \"Norway\",\n \"value\": \"NOR\"\n },\n {\n \"text\": \"Nepal\",\n \"value\": \"NEP\"\n },\n {\n \"text\": \"Nauru\",\n \"value\": \"NRU\"\n },\n {\n \"text\": \"New Zealand\",\n \"value\": \"NZL\"\n },\n {\n \"text\": \"Oman\",\n \"value\": \"OMA\"\n },\n {\n \"text\": \"Pakistan\",\n \"value\": \"PAK\"\n },\n {\n \"text\": \"Panama\",\n \"value\": \"PAN\"\n },\n {\n \"text\": \"Peru\",\n \"value\": \"PER\"\n },\n {\n \"text\": \"Philippines\",\n \"value\": \"PHI\"\n },\n {\n \"text\": \"Palau\",\n \"value\": \"PLW\"\n },\n {\n \"text\": \"Papua New Guinea\",\n \"value\": \"PNG\"\n },\n {\n \"text\": \"Poland\",\n \"value\": \"POL\"\n },\n {\n \"text\": \"North Korea\",\n \"value\": \"PRK\"\n },\n {\n \"text\": \"Portugal\",\n \"value\": \"POR\"\n },\n {\n \"text\": \"Paraguay\",\n \"value\": \"PAR\"\n },\n {\n \"text\": \"Qatar\",\n \"value\": \"QAT\"\n },\n {\n \"text\": \"Romania\",\n \"value\": \"ROU\"\n },\n {\n \"text\": \"Russia\",\n \"value\": \"RUS\"\n },\n {\n \"text\": \"Rwanda\",\n \"value\": \"RWA\"\n },\n {\n \"text\": \"Saudi Arabia\",\n \"value\": \"KSA\"\n },\n {\n \"text\": \"Sudan\",\n \"value\": \"SUD\"\n },\n {\n \"text\": \"Senegal\",\n \"value\": \"SEN\"\n },\n {\n \"text\": \"Singapore\",\n \"value\": \"SIN\"\n },\n {\n \"text\": \"Solomon Islands\",\n \"value\": \"SOL\"\n },\n {\n \"text\": \"Sierra Leone\",\n \"value\": \"SLE\"\n },\n {\n \"text\": \"El Salvador\",\n \"value\": \"ESA\"\n },\n {\n \"text\": \"San Marino\",\n \"value\": \"SMR\"\n },\n {\n \"text\": \"Somalia\",\n \"value\": \"SOM\"\n },\n {\n \"text\": \"Serbia\",\n \"value\": \"SRB\"\n },\n {\n \"text\": \"S\\u00e3o Tom\\u00e9 and Pr\\u00edncipe\",\n \"value\": \"STP\"\n },\n {\n \"text\": \"Suriname\",\n \"value\": \"SUR\"\n },\n {\n \"text\": \"Slovakia\",\n \"value\": \"SVK\"\n },\n {\n \"text\": \"Slovenia\",\n \"value\": \"SLO\"\n },\n {\n \"text\": \"Sweden\",\n \"value\": \"SWE\"\n },\n {\n \"text\": \"Eswatini\",\n \"value\": \"SWZ\"\n },\n {\n \"text\": \"Seychelles\",\n \"value\": \"SEY\"\n },\n {\n \"text\": \"Syria\",\n \"value\": \"SYR\"\n },\n {\n \"text\": \"Chad\",\n \"value\": \"CHA\"\n },\n {\n \"text\": \"Togo\",\n \"value\": \"TOG\"\n },\n {\n \"text\": \"Thailand\",\n \"value\": \"THA\"\n },\n {\n \"text\": \"Tajikistan\",\n \"value\": \"TJK\"\n },\n {\n \"text\": \"Turkmenistan\",\n \"value\": \"TKM\"\n },\n {\n \"text\": \"Timor-Leste\",\n \"value\": \"TLS\"\n },\n {\n \"text\": \"Tonga\",\n \"value\": \"TGA\"\n },\n {\n \"text\": \"Trinidad and Tobago\",\n \"value\": \"TTO\"\n },\n {\n \"text\": \"Tunisia\",\n \"value\": \"TUN\"\n },\n {\n \"text\": \"Turkey\",\n \"value\": \"TUR\"\n },\n {\n \"text\": \"Tuvalu\",\n \"value\": \"TUV\"\n },\n {\n \"text\": \"Tanzania\",\n \"value\": \"TAN\"\n },\n {\n \"text\": \"Uganda\",\n \"value\": \"UGA\"\n },\n {\n \"text\": \"Ukraine\",\n \"value\": \"UKR\"\n },\n {\n \"text\": \"Uruguay\",\n \"value\": \"URU\"\n },\n {\n \"text\": \"United States\",\n \"value\": \"USA\"\n },\n {\n \"text\": \"Uzbekistan\",\n \"value\": \"UZB\"\n },\n {\n \"text\": \"Saint Vincent and the Grenadines\",\n \"value\": \"VIN\"\n },\n {\n \"text\": \"Venezuela\",\n \"value\": \"VEN\"\n },\n {\n \"text\": \"Vietnam\",\n \"value\": \"VIE\"\n },\n {\n \"text\": \"Vanuatu\",\n \"value\": \"VAN\"\n },\n {\n \"text\": \"Samoa\",\n \"value\": \"SAM\"\n },\n {\n \"text\": \"Yemen\",\n \"value\": \"YEM\"\n },\n {\n \"text\": \"South Africa\",\n \"value\": \"RSA\"\n },\n {\n \"text\": \"Zambia\",\n \"value\": \"ZAM\"\n },\n {\n \"text\": \"Zimbabwe\",\n \"value\": \"ZIM\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"durationInCurrentResidenceMth\",\n \"displayName\": \"Duration in Current Residence (Months)\",\n \"placeholder\": \"Duration in Current Residence (Months)\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 2,\n \"min\": 0,\n \"max\": 11,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|10|11)$\",\n \"text\": \"Value must be a number between 0-11.\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"7\"\n },\n {\n \"name\": \"durationInCurrentResidenceYr\",\n \"displayName\": \"Duration in Current Residence (Years)\",\n \"placeholder\": \"Duration in Current Residence (Years)\",\n \"type\": \"text\",\n \"maxLength\": 2,\n \"min\": 0,\n \"max\": 99,\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|[1-9][0-9])$\",\n \"text\": \"Value must be a number between 0-99.\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"officePhoneNo\",\n \"displayName\": \"Employer Phone Number\",\n \"placeholder\": \"Employer Phone Number\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 12,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The phone number must be a valid Malaysian number\",\n \"regex\": \"^(011[0-9]{8}|(60[4-7]|004|005|006|007|009|609|012|013|014|016|017|019)[0-9]{7})$\"\n }\n ],\n \"inputType\": \"tel\",\n \"category\": \"5\"\n },\n {\n \"name\": \"officePhoneNoAreaCode\",\n \"displayName\": \"Office Phone Number Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"postcode\",\n \"displayName\": \"Postcode\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"state\",\n \"displayName\": \"Permanent State\",\n \"placeholder\": \"Select State Of The Permanenet Address\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"residenceAddress\",\n \"displayName\": \"Residence address same as permanent address?\",\n \"type\": \"boolean\",\n \"defaultValue\": false,\n \"requiredForEvaluation\": false,\n \"category\": \"7\"\n },\n {\n \"name\": \"officestate\",\n \"displayName\": \"Employer State\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"placeholder\": \"Select State Of The Employer Address\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"type\": \"text\",\n \"name\": \"age\",\n \"title\": \"Age\",\n \"isRequired\": true,\n \"displayName\": \"Age\",\n \"visible\": false,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number age between 21 and 55.\",\n \"regex\": \"^(2[1-9]|[3-4][0-9]|55)$\"\n }\n ],\n \"defaultValue\": \"21\",\n \"category\": \"2\"\n },\n {\n \"name\": \"consentCrossSelling\",\n \"displayName\": \"Consent Cross-Selling, Consent to Obtain Information from CTOS and Disclosure of Information\",\n \"type\": \"boolean\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{consentCrossSelling} = true\",\n \"text\": \"You must provide consent to Consent Cross-Selling.\"\n }\n ],\n \"defaultValue\": false,\n \"showTitle\": true,\n \"category\": \"9\"\n },\n {\n \"type\": \"text\",\n \"name\": \"consentObtainInfoFromCtos\",\n \"displayName\": \"Consent to Obtain Information from CTOS\",\n \"defaultValue\": \"yes\",\n \"showTitle\": true,\n \"visible\": false,\n \"category\": \"9\"\n },\n {\n \"name\": \"dateJoined\",\n \"displayName\": \"Date Joined\",\n \"placeholder\": \"Date Joined\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 10,\n \"inputType\": \"date\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"text\": \"Date must be in YYYY-MM-DD format\"\n },\n {\n \"type\": \"custom\",\n \"validator\": \"validateNotFutureDate\",\n \"text\": \"Date of joining cannot be in the future\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"disclosureOfInformation\",\n \"displayName\": \"Disclosure of Information\",\n \"type\": \"text\",\n \"defaultValue\": \"yes\",\n \"showTitle\": true,\n \"visible\": false,\n \"category\": \"9\"\n },\n {\n \"name\": \"educationLevel\",\n \"displayName\": \"Education Level\",\n \"placeholder\": \"Highest Education Level\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Primary\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Secondary/High school\"\n },\n {\n \"value\": \"03\",\n \"text\": \"College graduate-certificate/Diploma holder\"\n },\n {\n \"value\": \"04\",\n \"text\": \"University Degree/Associate Degree\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Master Degree\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Doctorate\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"emerContactTelNo1\",\n \"displayName\": \"Emergency Contact Telephone Number 1\",\n \"startWithNewLine\": false,\n \"placeholder\": \"Emergency Contact Telephone Number 1\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^((60[4-79]|0[4-79])[0-9]{7}|011[0-9]{8}|01[2346789][0-9]{7})$\"\n }\n ],\n \"type\": \"text\",\n \"maxLength\": 18,\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"emerContactTelNo1AreaCode\",\n \"displayName\": \"Emergency Contact Telephone Number 1 Area Code\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"emergencyContactName\",\n \"displayName\": \"Emergency Contact Name\",\n \"placeholder\": \"Emergency Contact Name\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"8\"\n },\n {\n \"name\": \"employerName\",\n \"displayName\": \"Employer Name\",\n \"placeholder\": \"Employer Name\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentSector\",\n \"displayName\": \"Employment Sector\",\n \"placeholder\": \"Select Employment Sector\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"0010\",\n \"text\": \"Accounting\"\n },\n {\n \"value\": \"0020\",\n \"text\": \"Actuarial / Statistic\"\n },\n {\n \"value\": \"0030\",\n \"text\": \"Advertising / Marketing / PR\"\n },\n {\n \"value\": \"0040\",\n \"text\": \"Aerospace\"\n },\n {\n \"value\": \"0050\",\n \"text\": \"Agricultural / Chemicals / Forest Products\"\n },\n {\n \"value\": \"0060\",\n \"text\": \"Architecture\"\n },\n {\n \"value\": \"0070\",\n \"text\": \"Automotive / Manufacturing / Production\"\n },\n {\n \"value\": \"0080\",\n \"text\": \"Aviation\"\n },\n {\n \"value\": \"0090\",\n \"text\": \"Buying / Retail\"\n },\n {\n \"value\": \"0100\",\n \"text\": \"Computers / Electronics\"\n },\n {\n \"value\": \"0110\",\n \"text\": \"Construction\"\n },\n {\n \"value\": \"0120\",\n \"text\": \"Creative / Graphics\"\n },\n {\n \"value\": \"0130\",\n \"text\": \"Customer Service\"\n },\n {\n \"value\": \"0140\",\n \"text\": \"Education (includes students) / Training\"\n },\n {\n \"value\": \"0150\",\n \"text\": \"Energy / Mining\"\n },\n {\n \"value\": \"0160\",\n \"text\": \"Engineering\"\n },\n {\n \"value\": \"0170\",\n \"text\": \"Finance / Banking / Insurance\"\n },\n {\n \"value\": \"0180\",\n \"text\": \"Freight / Shipping\"\n },\n {\n \"value\": \"0190\",\n \"text\": \"Government / Military / Public Service\"\n },\n {\n \"value\": \"0200\",\n \"text\": \"Recreation / Hospitality / Sports\"\n },\n {\n \"value\": \"0210\",\n \"text\": \"Hotel / Food\"\n },\n {\n \"value\": \"0220\",\n \"text\": \"Human Resources\"\n },\n {\n \"value\": \"0230\",\n \"text\": \"Investment\"\n },\n {\n \"value\": \"0240\",\n \"text\": \"Journalist / Editor\"\n },\n {\n \"value\": \"0250\",\n \"text\": \"Media / Publishing\"\n },\n {\n \"value\": \"0260\",\n \"text\": \"Medical / Health Services\"\n },\n {\n \"value\": \"0270\",\n \"text\": \"Non-Profit Organization\"\n },\n {\n \"value\": \"0280\",\n \"text\": \"Geology\"\n },\n {\n \"value\": \"0290\",\n \"text\": \"Pharmaceuticals\"\n },\n {\n \"value\": \"0300\",\n \"text\": \"Real Estate\"\n },\n {\n \"value\": \"0310\",\n \"text\": \"Administrative and Support Service Activities\"\n },\n {\n \"value\": \"0320\",\n \"text\": \"Social Services\"\n },\n {\n \"value\": \"0330\",\n \"text\": \"Telecommunications / Networking\"\n },\n {\n \"value\": \"0340\",\n \"text\": \"Travel\"\n },\n {\n \"value\": \"0350\",\n \"text\": \"Transportation\"\n },\n {\n \"value\": \"0360\",\n \"text\": \"Entertainment / Arts\"\n },\n {\n \"value\": \"0370\",\n \"text\": \"Electricity, Gas, Steam and Air Conditioning Supply\"\n },\n {\n \"value\": \"0380\",\n \"text\": \"Water Supply; Sewerage, Waste Management and Remediation Activities\"\n },\n {\n \"value\": \"0390\",\n \"text\": \"Activities of Households as Employers; Undifferentiated Goods and Services Producing Activities of Households for Own Use\"\n },\n {\n \"value\": \"0400\",\n \"text\": \"Activities of Extraterritorial Organisations and Bodies\"\n },\n {\n \"value\": \"0410\",\n \"text\": \"Unemployed/ Outside Labour Force\"\n },\n {\n \"value\": \"0420\",\n \"text\": \"Other Service Activities\"\n },\n {\n \"value\": \"0430\",\n \"text\": \"Legal Services\"\n },\n {\n \"value\": \"0440\",\n \"text\": \"Research & Experimental Development Services\"\n },\n {\n \"value\": \"0450\",\n \"text\": \"Other Professional, Scientific and Technical Activities\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentStatus\",\n \"displayName\": \"Employment Status\",\n \"placeholder\": \"Select Employment Status\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '08', '09']\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"CON\",\n \"text\": \"Contract\"\n },\n {\n \"value\": \"FRL\",\n \"text\": \"Freelance\"\n },\n {\n \"value\": \"OTH\",\n \"text\": \"Others\"\n },\n {\n \"value\": \"PER\",\n \"text\": \"Permanent\"\n },\n {\n \"value\": \"PRT\",\n \"text\": \"Part Time\"\n },\n {\n \"value\": \"TMP\",\n \"text\": \"Temporary\"\n },\n {\n \"value\": \"UPROB\",\n \"text\": \"Under Probation\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"employmentType\",\n \"displayName\": \"Employment Type\",\n \"placeholder\": \"Select Employment Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Private Employee\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Employer\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Housewife\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Retired\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Student\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Unemployed\"\n },\n {\n \"value\": \"07\",\n \"text\": \"Self-employed/Own Account Worker\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Government Employee\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Reporting Entity Employee\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Unpaid Family Worker\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"gender\",\n \"displayName\": \"Gender\",\n \"placeholder\": \"Select Gender\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"M\",\n \"text\": \"Male\"\n },\n {\n \"value\": \"F\",\n \"text\": \"Female\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"idType\",\n \"displayName\": \"ID Type\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"MyKad\",\n \"choices\": [\n {\n \"value\": \"MK\",\n \"text\": \"MyKad\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"lengthOfServiceMonth\",\n \"displayName\": \"Length of Service (Months)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"lengthOfServiceYear\",\n \"displayName\": \"Length of Service (Years)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"mailingBillingAddressInd\",\n \"displayName\": \"Preferred Mailing Address\",\n \"placeholder\": \"Select Preferred Mailing Address\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"O\",\n \"text\": \"Office\"\n },\n {\n \"value\": \"R\",\n \"text\": \"Residence\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"maritalStatus\",\n \"displayName\": \"Marital Status\",\n \"placeholder\": \"Select Marital Status\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"S\",\n \"text\": \"Single\"\n },\n {\n \"value\": \"M\",\n \"text\": \"Married\"\n },\n {\n \"value\": \"W\",\n \"text\": \"Widowed\"\n },\n {\n \"value\": \"D\",\n \"text\": \"Divorced\"\n },\n {\n \"value\": \"E\",\n \"text\": \"Separated\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"monthlyGrossIncome\",\n \"displayName\": \"Monthly Gross Income\",\n \"placeholder\": \"E.g. 6000\",\n \"visibleIf\": \"{employmentType} anyof ['01', '07', '08', '09', '10']\",\n \"type\": \"text\",\n \"maxLength\": 15,\n \"inputType\": \"number\",\n \"min\": 2000,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d+(\\\\.\\\\d+)?$\",\n \"text\": \"Please enter a valid non-negative number.\"\n },\n {\n \"type\": \"expression\",\n \"expression\": \"{monthlyGrossIncome} >= 2000\",\n \"text\": \"Income must be at least RM 2000.\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"monthlyNetIncome\",\n \"displayName\": \"Monthly Net Income\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"nationality\",\n \"displayName\": \"Nationality\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"noOfDependants\",\n \"displayName\": \"Number of Dependants\",\n \"placeholder\": \"Number Of Dependants\",\n \"type\": \"text\",\n \"startWithNewLine\": false,\n \"maxLength\": 3,\n \"inputType\": \"number\",\n \"min\": 0,\n \"max\": 99,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number between 0 and 99.\",\n \"regex\": \"^[0-9][0-9]?$\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"occupation\",\n \"displayName\": \"Occupation\",\n \"placeholder\": \"Select Occupation\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"001\",\n \"text\": \"Accountant\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Army Officer\"\n },\n {\n \"value\": \"007\",\n \"text\": \"Assistant Director\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Assistant Manager\"\n },\n {\n \"value\": \"009\",\n \"text\": \"Auditor\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Baker\"\n },\n {\n \"value\": \"011\",\n \"text\": \"Beautician\"\n },\n {\n \"value\": \"012\",\n \"text\": \"Broker\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Business Partner\"\n },\n {\n \"value\": \"014\",\n \"text\": \"Businessman/Businesswoman\"\n },\n {\n \"value\": \"015\",\n \"text\": \"Carpenter\"\n },\n {\n \"value\": \"016\",\n \"text\": \"Cashier\"\n },\n {\n \"value\": \"017\",\n \"text\": \"CEO\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Chairman\"\n },\n {\n \"value\": \"019\",\n \"text\": \"Chief Accountant\"\n },\n {\n \"value\": \"020\",\n \"text\": \"Chief Auditor\"\n },\n {\n \"value\": \"022\",\n \"text\": \"Co-Director\"\n },\n {\n \"value\": \"023\",\n \"text\": \"Consultant\"\n },\n {\n \"value\": \"024\",\n \"text\": \"Contractor\"\n },\n {\n \"value\": \"025\",\n \"text\": \"Financial Controller\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Coordinator\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Copywriter\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Dealer/Distributor\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Dentist\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Despatch\"\n },\n {\n \"value\": \"032\",\n \"text\": \"Detective\"\n },\n {\n \"value\": \"034\",\n \"text\": \"Diplomat\"\n },\n {\n \"value\": \"035\",\n \"text\": \"Director\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Doctor\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Electrician\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Executive\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Executive Director\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Exporter\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Farmer\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Foreman\"\n },\n {\n \"value\": \"045\",\n \"text\": \"Gardener\"\n },\n {\n \"value\": \"046\",\n \"text\": \"General Manager\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Goldsmith\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Hairdresser\"\n },\n {\n \"value\": \"049\",\n \"text\": \"Hawker\"\n },\n {\n \"value\": \"050\",\n \"text\": \"Housewife\"\n },\n {\n \"value\": \"051\",\n \"text\": \"Homemaker\"\n },\n {\n \"value\": \"053\",\n \"text\": \"Investor\"\n },\n {\n \"value\": \"054\",\n \"text\": \"Jeweller\"\n },\n {\n \"value\": \"055\",\n \"text\": \"Judge\"\n },\n {\n \"value\": \"057\",\n \"text\": \"Lawyer/Barrister/Solicitor\"\n },\n {\n \"value\": \"058\",\n \"text\": \"Lender\"\n },\n {\n \"value\": \"060\",\n \"text\": \"Managing Director\"\n },\n {\n \"value\": \"061\",\n \"text\": \"Manufacturer\"\n },\n {\n \"value\": \"063\",\n \"text\": \"Money Lender\"\n },\n {\n \"value\": \"064\",\n \"text\": \"Money-Changer\"\n },\n {\n \"value\": \"068\",\n \"text\": \"Owner/Co-Owner\"\n },\n {\n \"value\": \"070\",\n \"text\": \"Partner\"\n },\n {\n \"value\": \"071\",\n \"text\": \"Pastor\"\n },\n {\n \"value\": \"072\",\n \"text\": \"Physician\"\n },\n {\n \"value\": \"073\",\n \"text\": \"Plumber\"\n },\n {\n \"value\": \"075\",\n \"text\": \"Principal\"\n },\n {\n \"value\": \"076\",\n \"text\": \"Programmer\"\n },\n {\n \"value\": \"077\",\n \"text\": \"Quantity Surveyor\"\n },\n {\n \"value\": \"078\",\n \"text\": \"Remiser\"\n },\n {\n \"value\": \"079\",\n \"text\": \"Retailer\"\n },\n {\n \"value\": \"080\",\n \"text\": \"Retiree\"\n },\n {\n \"value\": \"082\",\n \"text\": \"Secretary\"\n },\n {\n \"value\": \"083\",\n \"text\": \"Self-Employed\"\n },\n {\n \"value\": \"084\",\n \"text\": \"Smallholder\"\n },\n {\n \"value\": \"085\",\n \"text\": \"Stockbroker\"\n },\n {\n \"value\": \"086\",\n \"text\": \"Store-Keeper\"\n },\n {\n \"value\": \"087\",\n \"text\": \"Student\"\n },\n {\n \"value\": \"088\",\n \"text\": \"Sub-contractor\"\n },\n {\n \"value\": \"090\",\n \"text\": \"Supplier\"\n },\n {\n \"value\": \"091\",\n \"text\": \"Tailor/Dressmaker\"\n },\n {\n \"value\": \"094\",\n \"text\": \"Tourist Guide\"\n },\n {\n \"value\": \"095\",\n \"text\": \"Trader\"\n },\n {\n \"value\": \"096\",\n \"text\": \"Valuer\"\n },\n {\n \"value\": \"097\",\n \"text\": \"Vice President\"\n },\n {\n \"value\": \"098\",\n \"text\": \"Waiter/Waitress\"\n },\n {\n \"value\": \"099\",\n \"text\": \"Welder\"\n },\n {\n \"value\": \"100\",\n \"text\": \"Wholesaler\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Fisherman\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Grocer\"\n },\n {\n \"value\": \"104\",\n \"text\": \"Unemployed\"\n },\n {\n \"value\": \"105\",\n \"text\": \"Babysitter\"\n },\n {\n \"value\": \"107\",\n \"text\": \"Sole Proprietor\"\n },\n {\n \"value\": \"108\",\n \"text\": \"Politician\"\n },\n {\n \"value\": \"109\",\n \"text\": \"Actor\"\n },\n {\n \"value\": \"110\",\n \"text\": \"Adjusters\"\n },\n {\n \"value\": \"111\",\n \"text\": \"Air Hostess\"\n },\n {\n \"value\": \"112\",\n \"text\": \"Aquaculture\"\n },\n {\n \"value\": \"115\",\n \"text\": \"Athlete\"\n },\n {\n \"value\": \"116\",\n \"text\": \"Auctioneer\"\n },\n {\n \"value\": \"117\",\n \"text\": \"Author\"\n },\n {\n \"value\": \"118\",\n \"text\": \"Bell Boy\"\n },\n {\n \"value\": \"119\",\n \"text\": \"Biographer\"\n },\n {\n \"value\": \"120\",\n \"text\": \"Butcher\"\n },\n {\n \"value\": \"121\",\n \"text\": \"Catering\"\n },\n {\n \"value\": \"122\",\n \"text\": \"Chargeman\"\n },\n {\n \"value\": \"123\",\n \"text\": \"Chemist, Physicist\"\n },\n {\n \"value\": \"124\",\n \"text\": \"Choreographer/Dancer\"\n },\n {\n \"value\": \"125\",\n \"text\": \"Circus Performer\"\n },\n {\n \"value\": \"126\",\n \"text\": \"Civil Servant\"\n },\n {\n \"value\": \"127\",\n \"text\": \"Clergy\"\n },\n {\n \"value\": \"128\",\n \"text\": \"Coach\"\n },\n {\n \"value\": \"129\",\n \"text\": \"Composer\"\n },\n {\n \"value\": \"130\",\n \"text\": \"Decorator\"\n },\n {\n \"value\": \"131\",\n \"text\": \"Direct Sales\"\n },\n {\n \"value\": \"132\",\n \"text\": \"Economist\"\n },\n {\n \"value\": \"133\",\n \"text\": \"Editor\"\n },\n {\n \"value\": \"135\",\n \"text\": \"Fireman\"\n },\n {\n \"value\": \"136\",\n \"text\": \"Fishmonger\"\n },\n {\n \"value\": \"137\",\n \"text\": \"Florist\"\n },\n {\n \"value\": \"138\",\n \"text\": \"Forestry\"\n },\n {\n \"value\": \"139\",\n \"text\": \"Freight Forwarding Services\"\n },\n {\n \"value\": \"140\",\n \"text\": \"General Worker\"\n },\n {\n \"value\": \"142\",\n \"text\": \"Hunter\"\n },\n {\n \"value\": \"143\",\n \"text\": \"Journalist\"\n },\n {\n \"value\": \"144\",\n \"text\": \"Launderer/Dry Cleaner\"\n },\n {\n \"value\": \"145\",\n \"text\": \"Librarian/Curator\"\n },\n {\n \"value\": \"146\",\n \"text\": \"Locksmith\"\n },\n {\n \"value\": \"147\",\n \"text\": \"Magician\"\n },\n {\n \"value\": \"149\",\n \"text\": \"Model\"\n },\n {\n \"value\": \"150\",\n \"text\": \"Newscaster\"\n },\n {\n \"value\": \"151\",\n \"text\": \"NGO Staff/Volunteer\"\n },\n {\n \"value\": \"152\",\n \"text\": \"Nursery Worker & Gardener\"\n },\n {\n \"value\": \"154\",\n \"text\": \"Pharmacist\"\n },\n {\n \"value\": \"155\",\n \"text\": \"Photographer\"\n },\n {\n \"value\": \"156\",\n \"text\": \"Postman\"\n },\n {\n \"value\": \"157\",\n \"text\": \"Priest/Nun\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Promoter\"\n },\n {\n \"value\": \"159\",\n \"text\": \"Proof Reader\"\n },\n {\n \"value\": \"160\",\n \"text\": \"Psychiatrist\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Psychologist\"\n },\n {\n \"value\": \"162\",\n \"text\": \"Sailor\"\n },\n {\n \"value\": \"163\",\n \"text\": \"Security/Bodyguard\"\n },\n {\n \"value\": \"164\",\n \"text\": \"Shop Assistant\"\n },\n {\n \"value\": \"165\",\n \"text\": \"Singer\"\n },\n {\n \"value\": \"166\",\n \"text\": \"Social Worker\"\n },\n {\n \"value\": \"168\",\n \"text\": \"Town Planner\"\n },\n {\n \"value\": \"169\",\n \"text\": \"Translator/Interpreter\"\n },\n {\n \"value\": \"170\",\n \"text\": \"Upholsterer\"\n },\n {\n \"value\": \"171\",\n \"text\": \"Warden\"\n },\n {\n \"value\": \"172\",\n \"text\": \"Bank Officer\"\n },\n {\n \"value\": \"175\",\n \"text\": \"Astronaut/Astronomer/Astrologer\"\n },\n {\n \"value\": \"176\",\n \"text\": \"President\"\n },\n {\n \"value\": \"200\",\n \"text\": \"Production and Manufacturing Managers\"\n },\n {\n \"value\": \"201\",\n \"text\": \"Hospitality, Retail and Other Services Managers\"\n },\n {\n \"value\": \"202\",\n \"text\": \"Information and Communications Technology Managers\"\n },\n {\n \"value\": \"203\",\n \"text\": \"Services Managers\"\n },\n {\n \"value\": \"204\",\n \"text\": \"Meteorologists and Seismologists\"\n },\n {\n \"value\": \"205\",\n \"text\": \"Geologists and Geophysicists\"\n },\n {\n \"value\": \"206\",\n \"text\": \"Farming, Forestry and Fisheries Advisers\"\n },\n {\n \"value\": \"207\",\n \"text\": \"Other Life Science Professionals\"\n },\n {\n \"value\": \"208\",\n \"text\": \"Landscape Architects\"\n },\n {\n \"value\": \"209\",\n \"text\": \"Product and Garment Designers\"\n },\n {\n \"value\": \"210\",\n \"text\": \"Graphic and Multimedia Designers\"\n },\n {\n \"value\": \"211\",\n \"text\": \"Ships Engineers\"\n },\n {\n \"value\": \"212\",\n \"text\": \"Aircraft Pilots and Related Professionals\"\n },\n {\n \"value\": \"213\",\n \"text\": \"Other Ship, Aircraft and Train/Locomotive Controllers\"\n },\n {\n \"value\": \"214\",\n \"text\": \"University and Higher Education Teachers\"\n },\n {\n \"value\": \"215\",\n \"text\": \"Vocational Education Teachers\"\n },\n {\n \"value\": \"216\",\n \"text\": \"Secondary Education Teachers\"\n },\n {\n \"value\": \"217\",\n \"text\": \"Primary School and Early Childhood Teachers\"\n },\n {\n \"value\": \"218\",\n \"text\": \"Music, Arts and Performing Arts Teachers\"\n },\n {\n \"value\": \"219\",\n \"text\": \"Language Teachers\"\n },\n {\n \"value\": \"220\",\n \"text\": \"Technology Skill and Technical Trainers\"\n },\n {\n \"value\": \"221\",\n \"text\": \"System Analysts\"\n },\n {\n \"value\": \"222\",\n \"text\": \"Web and Multimedia Developers\"\n },\n {\n \"value\": \"223\",\n \"text\": \"Software and Applications Developers and Analysts n.e.c.\"\n },\n {\n \"value\": \"224\",\n \"text\": \"Database Designers and Administrators\"\n },\n {\n \"value\": \"225\",\n \"text\": \"Information Technology System Administrators\"\n },\n {\n \"value\": \"226\",\n \"text\": \"Other Database and Network Professionals\"\n },\n {\n \"value\": \"227\",\n \"text\": \"Legal Professionals n.e.c.\"\n },\n {\n \"value\": \"228\",\n \"text\": \"Sociologists, Anthropologists and Related Professionals\"\n },\n {\n \"value\": \"229\",\n \"text\": \"Philosophers, Historians and Political Scientists\"\n },\n {\n \"value\": \"230\",\n \"text\": \"Film, Stage and Related Directors and Producers\"\n },\n {\n \"value\": \"231\",\n \"text\": \"Animals Keepers and Trainers\"\n },\n {\n \"value\": \"232\",\n \"text\": \"Professional Customs and Border Inspectors\"\n },\n {\n \"value\": \"233\",\n \"text\": \"Professional Taxation and Excise Officials\"\n },\n {\n \"value\": \"234\",\n \"text\": \"Professional Government Social Benefits Officials\"\n },\n {\n \"value\": \"235\",\n \"text\": \"Professional Government Licensing Officials\"\n },\n {\n \"value\": \"236\",\n \"text\": \"Professional Civil Defence Officials\"\n },\n {\n \"value\": \"237\",\n \"text\": \"Physical and Engineering Science Technicians\"\n },\n {\n \"value\": \"238\",\n \"text\": \"Mining, Manufacturing and Construction Supervisors\"\n },\n {\n \"value\": \"239\",\n \"text\": \"Process Control Technicians\"\n },\n {\n \"value\": \"240\",\n \"text\": \"Life Science Technicians and Related Associate Professionals\"\n },\n {\n \"value\": \"241\",\n \"text\": \"Ship, Aircraft and Train Technicians\"\n },\n {\n \"value\": \"242\",\n \"text\": \"Nuclear Science Associate Professionals\"\n },\n {\n \"value\": \"243\",\n \"text\": \"Medical and Pharmaceutical Technicians\"\n },\n {\n \"value\": \"244\",\n \"text\": \"Traditional and Complementary Medicine Associate Professionals\"\n },\n {\n \"value\": \"245\",\n \"text\": \"Veterinary Technicians and Assistants\"\n },\n {\n \"value\": \"246\",\n \"text\": \"Dental Assistants and Therapists\"\n },\n {\n \"value\": \"247\",\n \"text\": \"Medical Records and Health Information Technicians\"\n },\n {\n \"value\": \"248\",\n \"text\": \"Dispensing Opticians\"\n },\n {\n \"value\": \"249\",\n \"text\": \"Physiotherapy Technicians and Assistants\"\n },\n {\n \"value\": \"250\",\n \"text\": \"Medical Assistants\"\n },\n {\n \"value\": \"251\",\n \"text\": \"Health Associate Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"252\",\n \"text\": \"Statistical, Mathematical and Actuarial Associate Professionals\"\n },\n {\n \"value\": \"253\",\n \"text\": \"Insurance Agent\"\n },\n {\n \"value\": \"254\",\n \"text\": \"Commercial Sales Agent\"\n },\n {\n \"value\": \"255\",\n \"text\": \"Buyers\"\n },\n {\n \"value\": \"256\",\n \"text\": \"Administrative Associate Professionals\"\n },\n {\n \"value\": \"257\",\n \"text\": \"Administrative and Executive Secretaries\"\n },\n {\n \"value\": \"258\",\n \"text\": \"Other Administrative and Specialized Associate Professionals\"\n },\n {\n \"value\": \"259\",\n \"text\": \"Legal Associate Professionals\"\n },\n {\n \"value\": \"260\",\n \"text\": \"Social and Religious Associate Professionals\"\n },\n {\n \"value\": \"261\",\n \"text\": \"Fitness and Recreation Instructors and Program Leaders\"\n },\n {\n \"value\": \"262\",\n \"text\": \"Gallery, Museum and Library Technicians\"\n },\n {\n \"value\": \"263\",\n \"text\": \"Cultural Associate Professionals\"\n },\n {\n \"value\": \"264\",\n \"text\": \"Artistic and Cultural Associate Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"265\",\n \"text\": \"Customs and Border Inspector Associate Professionals\"\n },\n {\n \"value\": \"266\",\n \"text\": \"Taxation and Excise Official Associate Professionals\"\n },\n {\n \"value\": \"267\",\n \"text\": \"Government Social Benefit Official Associate Professionals\"\n },\n {\n \"value\": \"268\",\n \"text\": \"Government Licensing Official Associate Professionals\"\n },\n {\n \"value\": \"269\",\n \"text\": \"Civil Defence Associate Professionals\"\n },\n {\n \"value\": \"270\",\n \"text\": \"General Office Clerks\"\n },\n {\n \"value\": \"271\",\n \"text\": \"Data Entry Clerks\"\n },\n {\n \"value\": \"272\",\n \"text\": \"Bank Tellers and Related Clerks\"\n },\n {\n \"value\": \"273\",\n \"text\": \"Travel Consultants and Related Clerks\"\n },\n {\n \"value\": \"274\",\n \"text\": \"Contact/Call Centre Information Clerks\"\n },\n {\n \"value\": \"275\",\n \"text\": \"Telephone Switchboard Operators\"\n },\n {\n \"value\": \"276\",\n \"text\": \"Receptionists\"\n },\n {\n \"value\": \"277\",\n \"text\": \"Enquiry Clerks\"\n },\n {\n \"value\": \"278\",\n \"text\": \"Numerical and Material Recording Clerks\"\n },\n {\n \"value\": \"279\",\n \"text\": \"Transport Conductors\"\n },\n {\n \"value\": \"280\",\n \"text\": \"Cooks\"\n },\n {\n \"value\": \"281\",\n \"text\": \"Building and Housekeeping Supervisors\"\n },\n {\n \"value\": \"282\",\n \"text\": \"Street Food Salespersons\"\n },\n {\n \"value\": \"283\",\n \"text\": \"Sales Demonstrators\"\n },\n {\n \"value\": \"284\",\n \"text\": \"Teachers Aide\"\n },\n {\n \"value\": \"285\",\n \"text\": \"Personal Care Workers in Health Services Not Elsewhere Classified\"\n },\n {\n \"value\": \"286\",\n \"text\": \"Immigration/Custom Officers and Assistants\"\n },\n {\n \"value\": \"287\",\n \"text\": \"Protective Services Workers n.e.c.\"\n },\n {\n \"value\": \"288\",\n \"text\": \"Livestock and Dairy Producers\"\n },\n {\n \"value\": \"289\",\n \"text\": \"Animal Producers and Related Workers Not Elsewhere Classified\"\n },\n {\n \"value\": \"290\",\n \"text\": \"Mixed Crop and Animal Producers\"\n },\n {\n \"value\": \"291\",\n \"text\": \"Subsistence Farmers, Fishermen, Hunters and Gatherers\"\n },\n {\n \"value\": \"292\",\n \"text\": \"House Builders\"\n },\n {\n \"value\": \"293\",\n \"text\": \"Air Conditioning and Refrigeration Mechanics\"\n },\n {\n \"value\": \"294\",\n \"text\": \"Other Building Finishers and Related Trades Workers\"\n },\n {\n \"value\": \"295\",\n \"text\": \"Spray Painters and Varnishers\"\n },\n {\n \"value\": \"296\",\n \"text\": \"Building Structure Cleaners\"\n },\n {\n \"value\": \"297\",\n \"text\": \"Metal Moulders and Coremakers\"\n },\n {\n \"value\": \"298\",\n \"text\": \"Other Sheet and Structural Metal Workers, Moulders, Welders and Related Workers\"\n },\n {\n \"value\": \"299\",\n \"text\": \"Metal Working Machine Tool Setters and Operators\"\n },\n {\n \"value\": \"300\",\n \"text\": \"Aircraft Engine Mechanics and Repairers\"\n },\n {\n \"value\": \"301\",\n \"text\": \"Agricultural and Industrial Machinery Mechanics and Repairers\"\n },\n {\n \"value\": \"302\",\n \"text\": \"Bicycle and Related Repairers\"\n },\n {\n \"value\": \"303\",\n \"text\": \"Machinery Mechanics and Repairers Not Elsewhere Classified\"\n },\n {\n \"value\": \"304\",\n \"text\": \"Sign Writers, Decorative Painters, Engravers and Etchers\"\n },\n {\n \"value\": \"305\",\n \"text\": \"Pre-press Workers\"\n },\n {\n \"value\": \"306\",\n \"text\": \"Other Printing Trades Workers\"\n },\n {\n \"value\": \"307\",\n \"text\": \"Electrical Mechanics and Fitters\"\n },\n {\n \"value\": \"308\",\n \"text\": \"Electronics Mechanics and Servicers\"\n },\n {\n \"value\": \"309\",\n \"text\": \"Information and Communications Technology Installers and Services\"\n },\n {\n \"value\": \"310\",\n \"text\": \"Other Food Processing and Related Trades Workers\"\n },\n {\n \"value\": \"311\",\n \"text\": \"Woodworking-Machine Tool Setters and Operators\"\n },\n {\n \"value\": \"312\",\n \"text\": \"Other Wood Treaters, Cabinet-Makers and Related Trades Workers\"\n },\n {\n \"value\": \"313\",\n \"text\": \"Other Garment and Related Trades Workers\"\n },\n {\n \"value\": \"314\",\n \"text\": \"Other Craft and Related Workers\"\n },\n {\n \"value\": \"315\",\n \"text\": \"Stationary Plant and Machine Operators\"\n },\n {\n \"value\": \"316\",\n \"text\": \"Mechanical Machinery Assemblers\"\n },\n {\n \"value\": \"317\",\n \"text\": \"Assemblers Not Elsewhere Classified\"\n },\n {\n \"value\": \"318\",\n \"text\": \"Machine-Tool Setter-Operators\"\n },\n {\n \"value\": \"319\",\n \"text\": \"Locomotive Engine Drivers\"\n },\n {\n \"value\": \"320\",\n \"text\": \"Railway Brake, Signal and Switch Operators\"\n },\n {\n \"value\": \"321\",\n \"text\": \"Heavy Truck and Bus Drivers\"\n },\n {\n \"value\": \"322\",\n \"text\": \"Mobile Plant Operators\"\n },\n {\n \"value\": \"323\",\n \"text\": \"Mining and Construction Labourers\"\n },\n {\n \"value\": \"324\",\n \"text\": \"Hand and Pedal Vehicle Drivers\"\n },\n {\n \"value\": \"325\",\n \"text\": \"Animal-Drawn Machinery and Vehicle Drivers\"\n },\n {\n \"value\": \"326\",\n \"text\": \"Transport and Storage Labourers\"\n },\n {\n \"value\": \"327\",\n \"text\": \"Shelf Fillers\"\n },\n {\n \"value\": \"328\",\n \"text\": \"Food Preparation Assistant\"\n },\n {\n \"value\": \"329\",\n \"text\": \"Street and Related Sales and Services Workers\"\n },\n {\n \"value\": \"330\",\n \"text\": \"Refuse Workers and Other Elementary Workers\"\n },\n {\n \"value\": \"331\",\n \"text\": \"Nursing and Midwifery Associate Professionals\"\n },\n {\n \"value\": \"332\",\n \"text\": \"Police Officers - Protective Service Workers\"\n },\n {\n \"value\": \"333\",\n \"text\": \"Other Outside Labour Force\"\n },\n {\n \"value\": \"334\",\n \"text\": \"Financial and Investment Advisers\"\n },\n {\n \"value\": \"335\",\n \"text\": \"Business Services Agent\"\n },\n {\n \"value\": \"336\",\n \"text\": \"Health Care Assistants\"\n },\n {\n \"value\": \"337\",\n \"text\": \"Other Clerical Support Workers\"\n },\n {\n \"value\": \"338\",\n \"text\": \"Interior Designers and Decorators\"\n },\n {\n \"value\": \"339\",\n \"text\": \"Software Developers\"\n },\n {\n \"value\": \"340\",\n \"text\": \"Car, Van and Motorcycle Drivers\"\n },\n {\n \"value\": \"341\",\n \"text\": \"Engineering Professionals (including Electrotechnology)\"\n },\n {\n \"value\": \"342\",\n \"text\": \"Driving Instructors\"\n },\n {\n \"value\": \"343\",\n \"text\": \"Manufacturing Labourers\"\n },\n {\n \"value\": \"344\",\n \"text\": \"Administrative and Commercial Managers\"\n },\n {\n \"value\": \"345\",\n \"text\": \"Motor Vehicle Mechanics and Repairers\"\n },\n {\n \"value\": \"346\",\n \"text\": \"Nursing and Midwifery Professionals\"\n },\n {\n \"value\": \"347\",\n \"text\": \"Typist and Word Processor Operators\"\n },\n {\n \"value\": \"348\",\n \"text\": \"Painters and Related Workers\"\n },\n {\n \"value\": \"349\",\n \"text\": \"Police Officers\"\n },\n {\n \"value\": \"350\",\n \"text\": \"Stall and Market Salespersons\"\n },\n {\n \"value\": \"351\",\n \"text\": \"Shop Supervisors\"\n },\n {\n \"value\": \"352\",\n \"text\": \"Other Teaching Professionals\"\n },\n {\n \"value\": \"353\",\n \"text\": \"Information and Communications Technicians\"\n },\n {\n \"value\": \"354\",\n \"text\": \"Ships Deck Officers and Pilots\"\n },\n {\n \"value\": \"355\",\n \"text\": \"Chefs\"\n },\n {\n \"value\": \"356\",\n \"text\": \"Building Architects\"\n },\n {\n \"value\": \"357\",\n \"text\": \"Visual Artists\"\n },\n {\n \"value\": \"358\",\n \"text\": \"Creative and Performing Artists n.e.c.\"\n },\n {\n \"value\": \"359\",\n \"text\": \"Regulatory Government Professionals Not Elsewhere Classified\"\n },\n {\n \"value\": \"360\",\n \"text\": \"Cleaners and Helpers\"\n },\n {\n \"value\": \"361\",\n \"text\": \"Optometrists and Ophthalmic Opticians\"\n },\n {\n \"value\": \"362\",\n \"text\": \"Mathematicians, Actuaries and Statisticians\"\n },\n {\n \"value\": \"363\",\n \"text\": \"Financial Analysts\"\n },\n {\n \"value\": \"364\",\n \"text\": \"Administrative Professional\"\n },\n {\n \"value\": \"365\",\n \"text\": \"Other Legislators and Senior Officials\"\n },\n {\n \"value\": \"366\",\n \"text\": \"Personal Assistant\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"preferredLanguage\",\n \"displayName\": \"Preferred Language\",\n \"placeholder\": \"Select Preferred Language\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"English\"\n },\n {\n \"value\": \" 02\",\n \"text\": \"Bahasa\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"race\",\n \"displayName\": \"Race\",\n \"placeholder\": \"Select Race\",\n \"type\": \"dropdown\",\n \"startWithNewLine\": false,\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Malaysian - Chinese\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Malaysian - Bumiputra - Malay\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Malaysian - Bumiputra - Non Malay\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Malaysian - Indian\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Malaysian - Other Race\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"relationshiptoContactName\",\n \"displayName\": \"Relationship to Contact Name\",\n \"type\": \"dropdown\",\n \"placeholder\": \"Relationship to contact Name\",\n \"choices\": [\n {\n \"value\": \"07\",\n \"text\": \"Father\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Mother\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Brother\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Sister\"\n },\n {\n \"value\": \"11\",\n \"text\": \"Spouse\"\n },\n {\n \"value\": \"12\",\n \"text\": \"Son\"\n },\n {\n \"value\": \"13\",\n \"text\": \"Daughter\"\n },\n {\n \"value\": \"14\",\n \"text\": \"Uncle\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Aunt\"\n },\n {\n \"value\": \"40\",\n \"text\": \"Relative\"\n }\n ],\n \"category\": \"8\"\n },\n {\n \"name\": \"residenceType\",\n \"displayName\": \"Residence Type\",\n \"placeholder\": \"Residence Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"PL0001\",\n \"text\": \"Own Property\"\n },\n {\n \"value\": \"PL0002\",\n \"text\": \"Mortgaged\"\n },\n {\n \"value\": \"PL0003\",\n \"text\": \"Employers\"\n },\n {\n \"value\": \"PL0004\",\n \"text\": \"Rented\"\n },\n {\n \"value\": \"PL0005\",\n \"text\": \"Parents\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"salutation\",\n \"displayName\": \"Salutation\",\n \"placeholder\": \"Select Salutation\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"002\",\n \"text\": \"CIK\"\n },\n {\n \"value\": \"004\",\n \"text\": \"DATIN\"\n },\n {\n \"value\": \"009\",\n \"text\": \"Datin Seri\"\n },\n {\n \"value\": \"011\",\n \"text\": \"DATO`\"\n },\n {\n \"value\": \"018\",\n \"text\": \"DATO SERI\"\n },\n {\n \"value\": \"023\",\n \"text\": \"DATUK\"\n },\n {\n \"value\": \"028\",\n \"text\": \"DOCTOR\"\n },\n {\n \"value\": \"033\",\n \"text\": \"ENCIK\"\n },\n {\n \"value\": \"043\",\n \"text\": \"DYTM\"\n },\n {\n \"value\": \"053\",\n \"text\": \"MADAM\"\n },\n {\n \"value\": \"061\",\n \"text\": \"MISS\"\n },\n {\n \"value\": \"062\",\n \"text\": \"MR\"\n },\n {\n \"value\": \"072\",\n \"text\": \"PUAN\"\n },\n {\n \"value\": \"075\",\n \"text\": \"PUAN SRI\"\n },\n {\n \"value\": \"079\",\n \"text\": \"TAN SRI\"\n },\n {\n \"value\": \"090\",\n \"text\": \"Toh Puan\"\n },\n {\n \"value\": \"102\",\n \"text\": \"YAM\"\n },\n {\n \"value\": \"151\",\n \"text\": \"DATO SRI\"\n },\n {\n \"value\": \"157\",\n \"text\": \"TYT TUN DATUK SERI PANGLIMA\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Ms\"\n },\n {\n \"value\": \"159\",\n \"text\": \"KDYTM\"\n }\n ],\n \"category\": \"2\"\n },\n {\n \"name\": \"sourceOfWealth\",\n \"displayName\": \"Source of Wealth\",\n \"placeholder\": \"Source of Wealth\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Accumulated Saving\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Employment income\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Inheritance\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Trust Fund\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Retirement Income\"\n },\n {\n \"value\": \"06\",\n \"text\": \"EPF\"\n },\n {\n \"value\": \"07\",\n \"text\": \"Disposal of Assets/Shares\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Insurance Maturity/Surrender\"\n },\n {\n \"value\": \"09\",\n \"text\": \"Return on investment\"\n },\n {\n \"value\": \"10\",\n \"text\": \"Legal Settlement\"\n },\n {\n \"value\": \"11\",\n \"text\": \"Income from own business\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"statementType\",\n \"displayName\": \"Statement Type\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"E\",\n \"text\": \"Email\"\n },\n {\n \"value\": \"R\",\n \"text\": \"RHB Now\"\n }\n ],\n \"category\": \"10\"\n },\n {\n \"name\": \"subEmploymentSector\",\n \"displayName\": \"Sub Employment Sector\",\n \"placeholder\": \"Select Sub Employment Sector\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"0011\",\n \"text\": \"Accounting\"\n },\n {\n \"value\": \"0021\",\n \"text\": \"Actuarial / Statistic\"\n },\n {\n \"value\": \"0031\",\n \"text\": \"Advertising\"\n },\n {\n \"value\": \"0032\",\n \"text\": \"Public Relations\"\n },\n {\n \"value\": \"0041\",\n \"text\": \"Aerospace\"\n },\n {\n \"value\": \"0051\",\n \"text\": \"Agricultural / Chemicals / Forest Products\"\n },\n {\n \"value\": \"0052\",\n \"text\": \"Support activities to agriculture and post-harvest crops activities\"\n },\n {\n \"value\": \"0053\",\n \"text\": \"Growing paddy, sugar cane, vegetables and melons, roots, tubers, perennial crops\"\n },\n {\n \"value\": \"0054\",\n \"text\": \"Raising of animals\"\n },\n {\n \"value\": \"0055\",\n \"text\": \"Mixed farming\"\n },\n {\n \"value\": \"0056\",\n \"text\": \"Fishing / aquaculture\"\n },\n {\n \"value\": \"0057\",\n \"text\": \"Plantation (e.g. oil palm, rubber tree, cocoa, coconut etc.)\"\n },\n {\n \"value\": \"0058\",\n \"text\": \"Silviculture and forestry activities\"\n },\n {\n \"value\": \"0059\",\n \"text\": \"Veterinary activities\"\n },\n {\n \"value\": \"0061\",\n \"text\": \"Architecture\"\n },\n {\n \"value\": \"0062\",\n \"text\": \"Engineering Services\"\n },\n {\n \"value\": \"0063\",\n \"text\": \"Engineering technical services\"\n },\n {\n \"value\": \"0064\",\n \"text\": \"Surveying Services\"\n },\n {\n \"value\": \"0071\",\n \"text\": \"Manufacture of Switchgear and Switchboard Apparatus\"\n },\n {\n \"value\": \"0072\",\n \"text\": \"Manufacture of Insulated wire and cable\"\n },\n {\n \"value\": \"0073\",\n \"text\": \"Manufacture of TV radio communication equipment\"\n },\n {\n \"value\": \"0074\",\n \"text\": \"Manufacture of Typesetting; Platemaking and Related Services\"\n },\n {\n \"value\": \"0075\",\n \"text\": \"Manufacture of Aircraft and related machinery\"\n },\n {\n \"value\": \"0076\",\n \"text\": \"Manufacture of Consumer goods & Pharmaceuticals\"\n },\n {\n \"value\": \"0077\",\n \"text\": \"Manufacture of jewellery, bijouterie & related articles\"\n },\n {\n \"value\": \"0078\",\n \"text\": \"Manufacture of machinery/ motor vehicles/ other transport equipment\"\n },\n {\n \"value\": \"0079\",\n \"text\": \"Manufacture of other fabricated metal product\"\n },\n {\n \"value\": \"0081\",\n \"text\": \"Aviation\"\n },\n {\n \"value\": \"0091\",\n \"text\": \"Radio, Television, and Consumer Electronics Stores\"\n },\n {\n \"value\": \"0092\",\n \"text\": \"Retail garments / apparels\"\n },\n {\n \"value\": \"0093\",\n \"text\": \"Household goods\"\n },\n {\n \"value\": \"0094\",\n \"text\": \"Furniture stores\"\n },\n {\n \"value\": \"0095\",\n \"text\": \"Retail sale of Chinaware Glassware\"\n },\n {\n \"value\": \"0096\",\n \"text\": \"Other retail trade (except for motor vehicle, f&b, health care and grocery)\"\n },\n {\n \"value\": \"0097\",\n \"text\": \"Other retail sale in non-specialized stores\"\n },\n {\n \"value\": \"0098\",\n \"text\": \"Retail sale of beer, wine and spirits\"\n },\n {\n \"value\": \"0099\",\n \"text\": \"Retail sale of tobacco products in specialized store\"\n },\n {\n \"value\": \"0101\",\n \"text\": \"Radio and Television Repair Shops\"\n },\n {\n \"value\": \"0102\",\n \"text\": \"Repair Shops and Related Services, N.E.C.;\"\n },\n {\n \"value\": \"0103\",\n \"text\": \"Refrigeration and Air-Conditioning Service and Repair Shops;\"\n },\n {\n \"value\": \"0104\",\n \"text\": \"Computer related activities;\"\n },\n {\n \"value\": \"0105\",\n \"text\": \"Electrical and Electronic Repair Shops, N.E.C\"\n },\n {\n \"value\": \"00110\",\n \"text\": \"Construction of other civil engineering projects (specialised)\"\n },\n {\n \"value\": \"0111\",\n \"text\": \"Building Construction\"\n },\n {\n \"value\": \"00111\",\n \"text\": \"Construction of other civil engineering projects (not specialised)\"\n },\n {\n \"value\": \"00112\",\n \"text\": \"Electrical, Installation and plumbing\"\n },\n {\n \"value\": \"00113\",\n \"text\": \"Demolition and site preparation\"\n },\n {\n \"value\": \"00114\",\n \"text\": \"Construction of utility projects\"\n },\n {\n \"value\": \"0114\",\n \"text\": \"Construction of Residential house (landed property)\"\n },\n {\n \"value\": \"00115\",\n \"text\": \"Other specialized construction activities\"\n },\n {\n \"value\": \"0115\",\n \"text\": \"Construction of other residentials\"\n },\n {\n \"value\": \"00116\",\n \"text\": \"Roofing, Siding, and Sheet Metal Work\"\n },\n {\n \"value\": \"0116\",\n \"text\": \"Construction of industrial building & factories\"\n },\n {\n \"value\": \"00117\",\n \"text\": \"Water, Sewer, Pipeline, and Communications and Power Line Construction\"\n },\n {\n \"value\": \"0117\",\n \"text\": \"Construction of office buildings\"\n },\n {\n \"value\": \"00118\",\n \"text\": \"Assembly and erection of prefabricated constructions on the site\"\n },\n {\n \"value\": \"0118\",\n \"text\": \"Construction of commercial complex\"\n },\n {\n \"value\": \"0119\",\n \"text\": \"Construction of infrastructure\"\n },\n {\n \"value\": \"00119\",\n \"text\": \"Construction of hotels\"\n },\n {\n \"value\": \"00120\",\n \"text\": \"Construction of condominiums/apartments\"\n },\n {\n \"value\": \"0121\",\n \"text\": \"Creative / Graphics\"\n },\n {\n \"value\": \"0131\",\n \"text\": \"Customer Service\"\n },\n {\n \"value\": \"0141\",\n \"text\": \"Higher Education with significant reliance on foreign/international students\"\n },\n {\n \"value\": \"0142\",\n \"text\": \"Higher Education with no significant reliance on foreign students\"\n },\n {\n \"value\": \"0143\",\n \"text\": \"Administration of the State and the economic and social policy of the community\"\n },\n {\n \"value\": \"0144\",\n \"text\": \"Public - Pre school, primary and secondary level education\"\n },\n {\n \"value\": \"0145\",\n \"text\": \"Private - Pre school, primary and secondary level education\"\n },\n {\n \"value\": \"0151\",\n \"text\": \"O&G - Upstream i.e. drilling, extraction, exploration and field services\"\n },\n {\n \"value\": \"0152\",\n \"text\": \"O&G - Other than Upstream\"\n },\n {\n \"value\": \"0153\",\n \"text\": \"Mining of iron ores and other non-ferrous metal ores\"\n },\n {\n \"value\": \"0154\",\n \"text\": \"Stonequarrying, clay & sand pits\"\n },\n {\n \"value\": \"155\",\n \"text\": \"Chemical & fertilizer mining\"\n },\n {\n \"value\": \"0155\",\n \"text\": \"Chemical & fertiliser mining\"\n },\n {\n \"value\": \"156\",\n \"text\": \"Other than oil and gas\"\n },\n {\n \"value\": \"0156\",\n \"text\": \"Other than oil and gas\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Engineering Services & Engineering Technical Services\"\n },\n {\n \"value\": \"0161\",\n \"text\": \"Engineering Services & Engineering Technical Services\"\n },\n {\n \"value\": \"171\",\n \"text\": \"Banking services\"\n },\n {\n \"value\": \"0171\",\n \"text\": \"Banking services\"\n },\n {\n \"value\": \"172\",\n \"text\": \"Finance services\"\n },\n {\n \"value\": \"0172\",\n \"text\": \"Finance services\"\n },\n {\n \"value\": \"0173\",\n \"text\": \"Insurance services\"\n },\n {\n \"value\": \"173\",\n \"text\": \"Insurance services\"\n },\n {\n \"value\": \"0174\",\n \"text\": \"Money lenders / Money Changers/ Remittance Services/ Money Transmitter/ Check Cashing Business/ Currency Exchange\"\n },\n {\n \"value\": \"0175\",\n \"text\": \"Pawnshop\"\n },\n {\n \"value\": \"0176\",\n \"text\": \"Activity of holding companies\"\n },\n {\n \"value\": \"0177\",\n \"text\": \"Financial leasing activities\"\n },\n {\n \"value\": \"0178\",\n \"text\": \"Finance - credit card services\"\n },\n {\n \"value\": \"0179\",\n \"text\": \"Consultancy services\"\n },\n {\n \"value\": \"0181\",\n \"text\": \"Freight Forwarding Services\"\n },\n {\n \"value\": \"0191\",\n \"text\": \"Government\"\n },\n {\n \"value\": \"0192\",\n \"text\": \"Public Service\"\n },\n {\n \"value\": \"0193\",\n \"text\": \"Military\"\n },\n {\n \"value\": \"0201\",\n \"text\": \"Tourism & Hospitality\"\n },\n {\n \"value\": \"0202\",\n \"text\": \"Recreational related services / activities\"\n },\n {\n \"value\": \"0211\",\n \"text\": \"Food Service Activities\"\n },\n {\n \"value\": \"0212\",\n \"text\": \"Organization Hotel, Lodging Houses, chalet, rest house, homestay, Inn, motels, rooming sporting, and recreational camp\"\n },\n {\n \"value\": \"0213\",\n \"text\": \"Other short term accommodation not mentioned above\"\n },\n {\n \"value\": \"0214\",\n \"text\": \"Restaurants, bars and canteens\"\n },\n {\n \"value\": \"0215\",\n \"text\": \"Restaurant, bar (other discretionary items and significant reliance on dine-in)\"\n },\n {\n \"value\": \"0216\",\n \"text\": \"Event catering and other food service activities\"\n },\n {\n \"value\": \"0217\",\n \"text\": \"Eating Places, Except Food Service, Institutional\"\n },\n {\n \"value\": \"0221\",\n \"text\": \"Human Resources\"\n },\n {\n \"value\": \"0231\",\n \"text\": \"Investment advisory services\"\n },\n {\n \"value\": \"0241\",\n \"text\": \"Journalist / Editor\"\n },\n {\n \"value\": \"0251\",\n \"text\": \"Motion picture, video and television programme production, sound recording and music publishing activities\"\n },\n {\n \"value\": \"0252\",\n \"text\": \"Programming and broadcasting activities\"\n },\n {\n \"value\": \"0253\",\n \"text\": \"News agency activities\"\n },\n {\n \"value\": \"0254\",\n \"text\": \"Media, culture and recreational activities\"\n },\n {\n \"value\": \"0261\",\n \"text\": \"Medical / Health Services\"\n },\n {\n \"value\": \"0262\",\n \"text\": \"Kidney Dialysis Centers\"\n },\n {\n \"value\": \"0263\",\n \"text\": \"Intermediate Care Facilities\"\n },\n {\n \"value\": \"0264\",\n \"text\": \"Home Health Care Services Facilities\"\n },\n {\n \"value\": \"0271\",\n \"text\": \"Non-Profit Organization\"\n },\n {\n \"value\": \"0281\",\n \"text\": \"Geology\"\n },\n {\n \"value\": \"0291\",\n \"text\": \"Pharmaceuticals products\"\n },\n {\n \"value\": \"0301\",\n \"text\": \"Real estate operations - shopping complex\"\n },\n {\n \"value\": \"0302\",\n \"text\": \"Appraisal services for real estate\"\n },\n {\n \"value\": \"0303\",\n \"text\": \"Real estate activities on a fee or contract basis\"\n },\n {\n \"value\": \"0304\",\n \"text\": \"Buying, selling, renting and operating of residential buildings or land\"\n },\n {\n \"value\": \"0305\",\n \"text\": \"Real estate operations - shophouse\"\n },\n {\n \"value\": \"0306\",\n \"text\": \"Real estate Operation - Industrial building & factories\"\n },\n {\n \"value\": \"0307\",\n \"text\": \"Real estate Operation - office building\"\n },\n {\n \"value\": \"0308\",\n \"text\": \"Real estate Operation - other commercial building\"\n },\n {\n \"value\": \"0309\",\n \"text\": \"Real estate operation not related above\"\n },\n {\n \"value\": \"0311\",\n \"text\": \"Administrative and Support Service Activities\"\n },\n {\n \"value\": \"0321\",\n \"text\": \"Social Work Activites\"\n },\n {\n \"value\": \"0331\",\n \"text\": \"Wired / Wireless telecommunications activities\"\n },\n {\n \"value\": \"0341\",\n \"text\": \"Tour operators\"\n },\n {\n \"value\": \"0342\",\n \"text\": \"Travel Agencies\"\n },\n {\n \"value\": \"0351\",\n \"text\": \"Rail transport\"\n },\n {\n \"value\": \"0352\",\n \"text\": \"Transportation Services, N.E.C.\"\n },\n {\n \"value\": \"0353\",\n \"text\": \"Service activities incidental to land / road transportation\"\n },\n {\n \"value\": \"0354\",\n \"text\": \"Scheduled and Non-Scheduled Air Transport (Transport of passengers by air over regular routes and on regular schedules)\"\n },\n {\n \"value\": \"0355\",\n \"text\": \"Aircrafts, Aircraft engine / parts, space vehicles\"\n },\n {\n \"value\": \"0356\",\n \"text\": \"Tanks and Tank components\"\n },\n {\n \"value\": \"0357\",\n \"text\": \"Warehousing and storage\"\n },\n {\n \"value\": \"0358\",\n \"text\": \"Water transport\"\n },\n {\n \"value\": \"0359\",\n \"text\": \"Other transportation support activities n.e.c. (e.g. arranging transportation services, terminal maintenance services, etc)\"\n },\n {\n \"value\": \"0361\",\n \"text\": \"Casinos including Junket Operators\"\n },\n {\n \"value\": \"0362\",\n \"text\": \"Karaoke lounges, internet cafe or video arcade\"\n },\n {\n \"value\": \"0363\",\n \"text\": \"Amusement and Recreation Services\"\n },\n {\n \"value\": \"0364\",\n \"text\": \"Membership Sports and Recreation Clubs\"\n },\n {\n \"value\": \"0365\",\n \"text\": \"Entertainment services\"\n },\n {\n \"value\": \"0366\",\n \"text\": \"Arts & Theatrical\"\n },\n {\n \"value\": \"0371\",\n \"text\": \"Electricty power generation\"\n },\n {\n \"value\": \"0372\",\n \"text\": \"Steam and air conditioning supply\"\n },\n {\n \"value\": \"0373\",\n \"text\": \"Water collection, treatment and supply\"\n },\n {\n \"value\": \"0381\",\n \"text\": \"Water Supply\"\n },\n {\n \"value\": \"0382\",\n \"text\": \"Sewerage\"\n },\n {\n \"value\": \"0383\",\n \"text\": \"Waste Management and Remediation Activities\"\n },\n {\n \"value\": \"0384\",\n \"text\": \"Recycling of non-metal (including rubber & textile fibre)\"\n },\n {\n \"value\": \"0385\",\n \"text\": \"Recycling of tin and other metal waste and scrap\"\n },\n {\n \"value\": \"0391\",\n \"text\": \"Activities of Households as Employers; Undifferentiated Goods and Services Producing Activities of Households for Own Use\"\n },\n {\n \"value\": \"0401\",\n \"text\": \"Activities of Extraterritorial Organisations and Bodies\"\n },\n {\n \"value\": \"0411\",\n \"text\": \"Unemployed/ Outside Labour Force\"\n },\n {\n \"value\": \"0421\",\n \"text\": \"Activities of membership organisations (Political/Religious/Trade Union)\"\n },\n {\n \"value\": \"0422\",\n \"text\": \"International Business Corporations and other similar entities\"\n },\n {\n \"value\": \"0423\",\n \"text\": \"Business Activities - Intermediary activities - trustee/ nominee/ agent OR Shell Companies\"\n },\n {\n \"value\": \"0424\",\n \"text\": \"Other Services\"\n },\n {\n \"value\": \"0425\",\n \"text\": \"Offshore Corporations (or their subsidiaries) and bank set up in tax and/or secrecy havens\"\n },\n {\n \"value\": \"0426\",\n \"text\": \"Building Cleaning and Maintenance Services, N.E.C.\"\n },\n {\n \"value\": \"0427\",\n \"text\": \"Detective, Guard, and Armored Car Services\"\n },\n {\n \"value\": \"0428\",\n \"text\": \"Rental, Leasing and Packaging ( tour operator, reservation services and related activities, Organisation of conventions and trade shows)\"\n },\n {\n \"value\": \"0429\",\n \"text\": \"Funeral Service and Crematories\"\n },\n {\n \"value\": \"0431\",\n \"text\": \"Legal Services\"\n },\n {\n \"value\": \"0441\",\n \"text\": \"Research & Experiemental Development Services\"\n },\n {\n \"value\": \"0451\",\n \"text\": \"Other Professional, scientific and Technical activities\"\n },\n {\n \"value\": \"00510\",\n \"text\": \"Hunting, trapping and related service activities\"\n },\n {\n \"value\": \"00511\",\n \"text\": \"Logging\"\n },\n {\n \"value\": \"00710\",\n \"text\": \"Manufacture of watches and clocks\"\n },\n {\n \"value\": \"0711\",\n \"text\": \"Manufacture of others\"\n },\n {\n \"value\": \"00711\",\n \"text\": \"Manufacture of others\"\n },\n {\n \"value\": \"0712\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"00712\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"0713\",\n \"text\": \"Manufacture of furniture\"\n },\n {\n \"value\": \"00713\",\n \"text\": \"Manufacture of furniture\"\n },\n {\n \"value\": \"0714\",\n \"text\": \"Manufacture of packaging and stretch film\"\n },\n {\n \"value\": \"00714\",\n \"text\": \"Manufacture of packaging and stretch film\"\n },\n {\n \"value\": \"0715\",\n \"text\": \"Manufacture of plastic product\"\n },\n {\n \"value\": \"00715\",\n \"text\": \"Manufacture of plastic product\"\n },\n {\n \"value\": \"0716\",\n \"text\": \"Manufacture of rubber product\"\n },\n {\n \"value\": \"00716\",\n \"text\": \"Manufacture of rubber product\"\n },\n {\n \"value\": \"00717\",\n \"text\": \"Manufacture of processed food or beverages products\"\n },\n {\n \"value\": \"0717\",\n \"text\": \"Manufacture of processed food or beverages products\"\n },\n {\n \"value\": \"00718\",\n \"text\": \"Manufacture of wood product except furniture\"\n },\n {\n \"value\": \"0718\",\n \"text\": \"Manufacture of wood product except furniture\"\n },\n {\n \"value\": \"00719\",\n \"text\": \"Manufacture of refined petroleum products\"\n },\n {\n \"value\": \"0719\",\n \"text\": \"Manufacture of refined petroleum products\"\n },\n {\n \"value\": \"00720\",\n \"text\": \"Manufacture of chemicals and chemical products (except for refined petroleum products)\"\n },\n {\n \"value\": \"0720\",\n \"text\": \"Manufacture of chemicals and chemical products (except for refined petroleum products)\"\n },\n {\n \"value\": \"00721\",\n \"text\": \"Manufacture of electrical equipment or components\"\n },\n {\n \"value\": \"00722\",\n \"text\": \"Manufacture of dairy food\"\n },\n {\n \"value\": \"00723\",\n \"text\": \"Manufacture of grain mills\"\n },\n {\n \"value\": \"00724\",\n \"text\": \"Manufacture of other food product (except dairy food and grain mills, starches and starch products)\"\n },\n {\n \"value\": \"00725\",\n \"text\": \"Manufacture of vegetable and animal oils and fats\"\n },\n {\n \"value\": \"00726\",\n \"text\": \"Manufacture of textiles\"\n },\n {\n \"value\": \"00727\",\n \"text\": \"Manufacture of footwear\"\n },\n {\n \"value\": \"00728\",\n \"text\": \"Manufacture of building materials\"\n },\n {\n \"value\": \"00729\",\n \"text\": \"Manufacture of glass and glass products\"\n },\n {\n \"value\": \"00730\",\n \"text\": \"Manufacture of mineral products\"\n },\n {\n \"value\": \"00731\",\n \"text\": \"Manufacture of medical and dental instruments and supplies\"\n },\n {\n \"value\": \"00732\",\n \"text\": \"Manufacturing of automobile or autopart\"\n },\n {\n \"value\": \"00733\",\n \"text\": \"Manufacture of paper and paper products\"\n },\n {\n \"value\": \"00734\",\n \"text\": \"Manufacture of gas and distribution of gaseous fuels through mains\"\n },\n {\n \"value\": \"00735\",\n \"text\": \"Manufacture of fertiliser pesticides\"\n },\n {\n \"value\": \"00736\",\n \"text\": \"Production of natural mineral water and other bottled water\"\n },\n {\n \"value\": \"00901\",\n \"text\": \"Retail trade not in stores, stalls or markets\"\n },\n {\n \"value\": \"00902\",\n \"text\": \"Retail sale via stalls and markets\"\n },\n {\n \"value\": \"00903\",\n \"text\": \"Wholesale of beer, wine and spirits\"\n },\n {\n \"value\": \"00904\",\n \"text\": \"Wholesale of tobacco, cigar, cigarettes\"\n },\n {\n \"value\": \"00905\",\n \"text\": \"Wholesale of construction and civil engineering machinery and equipment\"\n },\n {\n \"value\": \"00906\",\n \"text\": \"Wholesale of other machinery for use in industry, trade and navigation and other services n.e.c.\"\n },\n {\n \"value\": \"00907\",\n \"text\": \"Motor Vehicle dealer (Used)\"\n },\n {\n \"value\": \"00908\",\n \"text\": \"Jewel / Gem / Precious Metal\"\n },\n {\n \"value\": \"00909\",\n \"text\": \"Automobile and autoparts\"\n },\n {\n \"value\": \"00910\",\n \"text\": \"Hardware / construction material\"\n },\n {\n \"value\": \"00911\",\n \"text\": \"Electrical products\"\n },\n {\n \"value\": \"00912\",\n \"text\": \"Chemical / Petrochemical\"\n },\n {\n \"value\": \"00913\",\n \"text\": \"Cosmetics\"\n },\n {\n \"value\": \"00914\",\n \"text\": \"Import / Export\"\n },\n {\n \"value\": \"00915\",\n \"text\": \"Medical related products\"\n },\n {\n \"value\": \"00916\",\n \"text\": \"Automatic Merchandising Machine Operators\"\n },\n {\n \"value\": \"00917\",\n \"text\": \"Direct Selling Establishments\"\n },\n {\n \"value\": \"00918\",\n \"text\": \"Liquefied Petroleum Gas (Bottled Gas) Dealers\"\n },\n {\n \"value\": \"00919\",\n \"text\": \"Motor Vehicle Dealers (New )\"\n },\n {\n \"value\": \"00920\",\n \"text\": \"Office equipment\"\n },\n {\n \"value\": \"00921\",\n \"text\": \"Stationery, books, periodical and newspapers\"\n },\n {\n \"value\": \"00922\",\n \"text\": \"Retail - Petrol Station\"\n },\n {\n \"value\": \"00923\",\n \"text\": \"Retail / wholesaler other than above\"\n },\n {\n \"value\": \"01700\",\n \"text\": \"Other monetary intermediation\"\n },\n {\n \"value\": \"1700\",\n \"text\": \"Other monetary intermediation\"\n },\n {\n \"value\": \"01701\",\n \"text\": \"Research & Experiemental Development Services\"\n },\n {\n \"value\": \"1701\",\n \"text\": \"Research & Experimental Development Services\"\n },\n {\n \"value\": \"01702\",\n \"text\": \"licensed money lending activities, co-operative with credit functions and factoring companies\"\n },\n {\n \"value\": \"1702\",\n \"text\": \"licensed money lending activities, co-operative with credit functions and factoring companies\"\n },\n {\n \"value\": \"03510\",\n \"text\": \"Postal and courier activities\"\n },\n {\n \"value\": \"04201\",\n \"text\": \"Beauty Shops\"\n },\n {\n \"value\": \"04202\",\n \"text\": \"Barber Shops\"\n },\n {\n \"value\": \"04203\",\n \"text\": \"Libraries, archives, museums and other cultural activities\"\n },\n {\n \"value\": \"04204\",\n \"text\": \"Reupholstery and Furniture Repair\"\n },\n {\n \"value\": \"04205\",\n \"text\": \"Armature Rewinding Shops\"\n },\n {\n \"value\": \"04206\",\n \"text\": \"Welding Repair\"\n },\n {\n \"value\": \"04207\",\n \"text\": \"Maintenance and repair of motor vehicles\"\n },\n {\n \"value\": \"04208\",\n \"text\": \"Renting and leasing of motor vehicle, household good, machinery, equipment and tangible goods\"\n },\n {\n \"value\": \"04209\",\n \"text\": \"Business management consultancy services\"\n },\n {\n \"value\": \"04210\",\n \"text\": \"Activties of collection agencies / credit bureaus\"\n },\n {\n \"value\": \"04211\",\n \"text\": \"Repair of bicycles\"\n },\n {\n \"value\": \"04212\",\n \"text\": \"Repair of footwear and other leather goods\"\n }\n ],\n \"category\": \"5\"\n },\n {\n \"name\": \"dateApplied\",\n \"displayName\": \"Date Applied\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"11\"\n },\n {\n \"name\": \"entity\",\n \"displayName\": \"Entity\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"C\",\n \"text\": \"Conventional\"\n },\n {\n \"value\": \"I\",\n \"text\": \"Islamic\"\n }\n ],\n \"category\": \"10\"\n },\n {\n \"name\": \"facilityPackage\",\n \"displayName\": \"Facility Package\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"purposeOfAcquisition\",\n \"displayName\": \"Purpose of Acquisition\",\n \"placeholder\": \"Select your Purpose of Acquisition\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"Internal Use\",\n \"text\": \"Internal Use\"\n },\n {\n \"value\": \"Tender\",\n \"text\": \"Tender\"\n },\n {\n \"value\": \"Service\",\n \"text\": \"Service\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityPurpose\",\n \"displayName\": \"Facility Purpose\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"Refinancing of property\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Staff ASB - Untuk Kegunaan Sendiri dalam Pelaburan ASB\"\n },\n {\n \"value\": \"02\",\n \"text\": \"ASB - Untuk Kegunaan Sendiri dalam pelaburan ASB\"\n },\n {\n \"value\": \"002\",\n \"text\": \"Finance purchase of property/land for INVESTMENT.\"\n },\n {\n \"value\": \"03\",\n \"text\": \"ASB2 - Untuk Kegunaan Sendiri dalam Pelaburan ASB2\"\n },\n {\n \"value\": \"003\",\n \"text\": \"Finance purchase of prop/land for own occupation\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Personal Consumption Against ASB/ASM2W Certificate\"\n },\n {\n \"value\": \"05\",\n \"text\": \"ASB/ASM2W for Sole-prop Business\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Personal consumption\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Construction of property\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Purchase of property for INVESTMENT & consumption.\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Purchase of car park\"\n },\n {\n \"value\": \"015\",\n \"text\": \"To finance renovation/upgrading cost\"\n },\n {\n \"value\": \"016\",\n \"text\": \"To part finance Car Park and Renovation Cost\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Staff - Renovation of property under staff rate\"\n },\n {\n \"value\": \"023\",\n \"text\": \"Refinancing of property\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Staff Sundry Loan - Calamities\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Staff-To part finance Medical Expenses\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Staff-To part finance the purchase of a personal computer\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Staff-Purchase of new car\"\n },\n {\n \"value\": \"030\",\n \"text\": \"Staff- study loan\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Staff-Purchase of motorcycle\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Staff-Staff Sundry loan\"\n },\n {\n \"value\": \"037\",\n \"text\": \"Booking Fee - Car\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Debt Consolidation\"\n },\n {\n \"value\": \"039\",\n \"text\": \"Education\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Electrical Goods\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Home Furnishing/Equipment\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Medical Expenses\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Online Financing\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Personal Refinancing\"\n },\n {\n \"value\": \"045\",\n \"text\": \"Property/House Downpayment\"\n },\n {\n \"value\": \"046\",\n \"text\": \"Renovation\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Travel\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Additional Financing for Revival of Abandoned Project\"\n },\n {\n \"value\": \"100\",\n \"text\": \"Purchase of Resident / Non Resident Property for personal purpose\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Purchase of securities quoted on the Bursa Malaysia and/or financing of IPO shares\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Purchase of securities quoted on the Bursa Malaysia and/or financing of IPO shares\"\n },\n {\n \"value\": \"COM01AF\",\n \"text\": \"PURCHASE OF COMMERCIAL VEHICLES\"\n },\n {\n \"value\": \"PRI01AF\",\n \"text\": \"PURCHASE OF PRIVATE VEHICLES\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityType\",\n \"displayName\": \"Facility Type (Personal)\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"PLFT001\",\n \"text\": \"Conventional\"\n },\n {\n \"value\": \"PLFT002\",\n \"text\": \"Private Sector\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityType\",\n \"displayName\": \"Facility Type (Auto)\",\n \"placeholder\": \"Facility Type\",\n \"startWithNewLine\": false,\n \"visible\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"HPFAC04\",\n \"text\": \" Islamic - Variable rate\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"financingTenure\",\n \"displayName\": \"Financing Tenure (Years)\",\n \"placeholder\": \"Financing Tenure (Years)\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 3,\n \"min\": 1,\n \"max\": 7,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"product\",\n \"displayName\": \"Product (Auto)\",\n \"placeholder\": \"Product\",\n \"startWithNewLine\": false,\n \"visible\": false,\n \"isRequired\": true,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"AFI04\",\n \"text\": \"Vehicle Financing-i (Variable Rate SBR)\"\n }\n ],\n \"maxLength\": 40,\n \"category\": \"11\"\n },\n {\n \"name\": \"purposeOfAcctOpen\",\n \"displayName\": \"Purpose of Account Opening\",\n \"type\": \"dropdown\",\n \"defaultValue\": \"Personal Loan/Financing\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Payroll/Salary\"\n },\n {\n \"value\": \"03\",\n \"text\": \"Savings/Fixed/Term Deposits\"\n },\n {\n \"value\": \"04\",\n \"text\": \"Remittance (Local/Foreign)\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Household/Family Expenses\"\n },\n {\n \"value\": \"06\",\n \"text\": \"Investment\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Standing Instruction\"\n },\n {\n \"value\": \"11\",\n \"text\": \"EPF Withdrawals\"\n },\n {\n \"value\": \"12\",\n \"text\": \"Personal Loan/Financing\"\n },\n {\n \"value\": \"14\",\n \"text\": \"Equipment & Machinery Expenses\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Business Operating Account\"\n },\n {\n \"value\": \"16\",\n \"text\": \"Client's Account\"\n },\n {\n \"value\": \"17\",\n \"text\": \"Sales Proceed\"\n },\n {\n \"value\": \"18\",\n \"text\": \"Capital Injection\"\n },\n {\n \"value\": \"19\",\n \"text\": \"Administration of Estate Account\"\n },\n {\n \"value\": \"20\",\n \"text\": \"Liquidation/Disposal of Asset\"\n },\n {\n \"value\": \"21\",\n \"text\": \"Financing Payment/Drawdown\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"sourceOfFund\",\n \"displayName\": \"Source of Fund\",\n \"placeholder\": \"Source of Fund\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"01\",\n \"text\": \"Income/Salary\"\n },\n {\n \"value\": \"02\",\n \"text\": \"Own Bank Transfer (within RHB)\"\n },\n {\n \"value\": \"04\",\n \"text\": \"EPF/SOCSO/Pension/Gratuity\"\n },\n {\n \"value\": \"05\",\n \"text\": \"Savings/Investment\"\n },\n {\n \"value\": \"08\",\n \"text\": \"Scholarship/Allowance/Edu Loan\"\n },\n {\n \"value\": \"13\",\n \"text\": \"Trust Funds\"\n },\n {\n \"value\": \"15\",\n \"text\": \"Divorce Sett/Compensation\"\n },\n {\n \"value\": \"17\",\n \"text\": \"Sale of Inves/Shares/Prop/Land\"\n },\n {\n \"value\": \"18\",\n \"text\": \"Dividends/Profits\"\n },\n {\n \"value\": \"20\",\n \"text\": \"Rental Proceeds\"\n },\n {\n \"value\": \"21\",\n \"text\": \"Commission\"\n },\n {\n \"value\": \"22\",\n \"text\": \"Directors Fee/Salary\"\n },\n {\n \"value\": \"23\",\n \"text\": \"Welfare Allowance\"\n },\n {\n \"value\": \"24\",\n \"text\": \"Return on Investment\"\n },\n {\n \"value\": \"25\",\n \"text\": \"FD Placement Roll Over/Renewal\"\n },\n {\n \"value\": \"26\",\n \"text\": \"Insurance Maturity/Surrender\"\n },\n {\n \"value\": \"27\",\n \"text\": \"Legal Settlement\"\n },\n {\n \"value\": \"28\",\n \"text\": \"Credit Facility Approve by FI\"\n },\n {\n \"value\": \"29\",\n \"text\": \"Trf frm Parent/Holding/Subs\"\n },\n {\n \"value\": \"30\",\n \"text\": \"Trf frm Own Acct with Oth FI\"\n },\n {\n \"value\": \"31\",\n \"text\": \"Spouse/Parents/Children\"\n },\n {\n \"value\": \"32\",\n \"text\": \"Financial Aid/Subsidies\"\n },\n {\n \"value\": \"33\",\n \"text\": \"Part-time Income\"\n },\n {\n \"value\": \"34\",\n \"text\": \"Inheritance\"\n },\n {\n \"value\": \"35\",\n \"text\": \"Gift/Donation\"\n },\n {\n \"value\": \"36\",\n \"text\": \"Winning-legal Gambling/Contest\"\n },\n {\n \"value\": \"37\",\n \"text\": \"Business/Sales Proceeds\"\n },\n {\n \"value\": \"38\",\n \"text\": \"Crypto Currency/Digital Asset Investment Proceeds\"\n }\n ],\n \"category\": \"4\"\n },\n {\n \"name\": \"preferredBranch\",\n \"displayName\": \"Preferred Branch\",\n \"placeholder\": \"Select Preferred Branch\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"000\",\n \"text\": \"Head Office (KL)\"\n },\n {\n \"value\": \"002\",\n \"text\": \"JALAN SILANG (WITH KUP)\"\n },\n {\n \"value\": \"003\",\n \"text\": \"Jalan Bukit Bintang (WITH BBI)\"\n },\n {\n \"value\": \"004\",\n \"text\": \"Jln Tun Sambanthan, Ipoh\"\n },\n {\n \"value\": \"005\",\n \"text\": \"Kampar\"\n },\n {\n \"value\": \"006\",\n \"text\": \"Johor Bahru City Square\"\n },\n {\n \"value\": \"007\",\n \"text\": \"Wisma Khoo, Sandakan\"\n },\n {\n \"value\": \"008\",\n \"text\": \"Putra Square, Kuantan\"\n },\n {\n \"value\": \"009\",\n \"text\": \"New Town, Petaling Jaya\"\n },\n {\n \"value\": \"010\",\n \"text\": \"Seri Kembangan\"\n },\n {\n \"value\": \"011\",\n \"text\": \"Kajang\"\n },\n {\n \"value\": \"012\",\n \"text\": \"Lebuh Pantai\"\n },\n {\n \"value\": \"013\",\n \"text\": \"Bentung\"\n },\n {\n \"value\": \"014\",\n \"text\": \"Batu Pahat\"\n },\n {\n \"value\": \"015\",\n \"text\": \"Kepong\"\n },\n {\n \"value\": \"016\",\n \"text\": \"Tanjung Sepat\"\n },\n {\n \"value\": \"017\",\n \"text\": \"Jln Tunku Ibrahim, Alor Setar\"\n },\n {\n \"value\": \"018\",\n \"text\": \"Jln Tok Hakim, Kota Bharu\"\n },\n {\n \"value\": \"019\",\n \"text\": \"Kuala Terengganu\"\n },\n {\n \"value\": \"020\",\n \"text\": \"Air Tawar\"\n },\n {\n \"value\": \"021\",\n \"text\": \"Kulai\"\n },\n {\n \"value\": \"022\",\n \"text\": \"Jln Gaya, Kota Kinabalu\"\n },\n {\n \"value\": \"024\",\n \"text\": \"Setapak\"\n },\n {\n \"value\": \"025\",\n \"text\": \"Jelapang\"\n },\n {\n \"value\": \"026\",\n \"text\": \"Jln Niaga, Shah Alam\"\n },\n {\n \"value\": \"027\",\n \"text\": \"Bukit Baru\"\n },\n {\n \"value\": \"028\",\n \"text\": \"Jln Chain Ferry, Prai\"\n },\n {\n \"value\": \"029\",\n \"text\": \"Yung Kong\"\n },\n {\n \"value\": \"030\",\n \"text\": \"Kenanga Wholesale City\"\n },\n {\n \"value\": \"031\",\n \"text\": \"Tmn Sg. Besi\"\n },\n {\n \"value\": \"032\",\n \"text\": \"Damansara Jaya\"\n },\n {\n \"value\": \"033\",\n \"text\": \"Kluang\"\n },\n {\n \"value\": \"034\",\n \"text\": \"Jerantut\"\n },\n {\n \"value\": \"035\",\n \"text\": \"Kuala Kurau\"\n },\n {\n \"value\": \"036\",\n \"text\": \"Raub\"\n },\n {\n \"value\": \"037\",\n \"text\": \"Port Klang\"\n },\n {\n \"value\": \"038\",\n \"text\": \"Jln Bakar Arang, Sg. Petani\"\n },\n {\n \"value\": \"039\",\n \"text\": \"Kemaman\"\n },\n {\n \"value\": \"040\",\n \"text\": \"Pasir Gudang\"\n },\n {\n \"value\": \"041\",\n \"text\": \"Bandar Baru Sg. Buloh\"\n },\n {\n \"value\": \"042\",\n \"text\": \"Jelutong\"\n },\n {\n \"value\": \"043\",\n \"text\": \"Tmn Suntex\"\n },\n {\n \"value\": \"044\",\n \"text\": \"Tmn Johor Jaya, Johor Bahru\"\n },\n {\n \"value\": \"045\",\n \"text\": \"JALAN TUN RAZAK (WITH PAS)\"\n },\n {\n \"value\": \"046\",\n \"text\": \"Jln Nakhoda Gampar, Miri\"\n },\n {\n \"value\": \"047\",\n \"text\": \"Tawau\"\n },\n {\n \"value\": \"048\",\n \"text\": \"Inanam\"\n },\n {\n \"value\": \"049\",\n \"text\": \"Tmn Pelangi, Johor Bahru\"\n },\n {\n \"value\": \"050\",\n \"text\": \"Tmn Ungku Tun Aminah\"\n },\n {\n \"value\": \"051\",\n \"text\": \"Jln Tunku Osman, Sibu\"\n },\n {\n \"value\": \"052\",\n \"text\": \"BUKIT MERTAJAM 1(WITH BMT)\"\n },\n {\n \"value\": \"053\",\n \"text\": \"Bandar Baru Uda, Tampoi\"\n },\n {\n \"value\": \"054\",\n \"text\": \"Rawang\"\n },\n {\n \"value\": \"055\",\n \"text\": \"Jln SS15 Subang Jaya\"\n },\n {\n \"value\": \"056\",\n \"text\": \"Mid Valley\"\n },\n {\n \"value\": \"057\",\n \"text\": \"Pandan Indah\"\n },\n {\n \"value\": \"058\",\n \"text\": \"Bayan Baru\"\n },\n {\n \"value\": \"059\",\n \"text\": \"Pasar Borong, Selayang\"\n },\n {\n \"value\": \"060\",\n \"text\": \"IOI Boulevard Puchong\"\n },\n {\n \"value\": \"061\",\n \"text\": \"KLCC\"\n },\n {\n \"value\": \"062\",\n \"text\": \"Bandar Baru Ampang\"\n },\n {\n \"value\": \"063\",\n \"text\": \"Tangkak\"\n },\n {\n \"value\": \"064\",\n \"text\": \"Mentakab\"\n },\n {\n \"value\": \"065\",\n \"text\": \"Bandar Baru Klang\"\n },\n {\n \"value\": \"066\",\n \"text\": \"Wisma Mahmud, Kuching\"\n },\n {\n \"value\": \"067\",\n \"text\": \"First Avenue\"\n },\n {\n \"value\": \"068\",\n \"text\": \"Kuala Lumpur Main\"\n },\n {\n \"value\": \"069\",\n \"text\": \"Kuala Kedah\"\n },\n {\n \"value\": \"070\",\n \"text\": \"Kulim\"\n },\n {\n \"value\": \"073\",\n \"text\": \"Lahad Datu\"\n },\n {\n \"value\": \"074\",\n \"text\": \"The Trillium, Lakefields\"\n },\n {\n \"value\": \"075\",\n \"text\": \"Mergong, Alor Setar\"\n },\n {\n \"value\": \"076\",\n \"text\": \"Ampang Point\"\n },\n {\n \"value\": \"077\",\n \"text\": \"Ayer Itam\"\n },\n {\n \"value\": \"078\",\n \"text\": \"Bangsar Shopping Centre\"\n },\n {\n \"value\": \"079\",\n \"text\": \"Bekok\"\n },\n {\n \"value\": \"080\",\n \"text\": \"Butterworth\"\n },\n {\n \"value\": \"081\",\n \"text\": \"Gopeng\"\n },\n {\n \"value\": \"082\",\n \"text\": \"Gunung Rapat, Ipoh\"\n },\n {\n \"value\": \"083\",\n \"text\": \"Ipoh Garden South\"\n },\n {\n \"value\": \"084\",\n \"text\": \"Jln Bukit Bintang\"\n },\n {\n \"value\": \"086\",\n \"text\": \"Jln Ipoh\"\n },\n {\n \"value\": \"087\",\n \"text\": \"Jln Pasar\"\n },\n {\n \"value\": \"088\",\n \"text\": \"JALAN RAJA LAUT(WITH JIP)\"\n },\n {\n \"value\": \"089\",\n \"text\": \"Jln Raja Uda, Butterworth\"\n },\n {\n \"value\": \"091\",\n \"text\": \"Jementah\"\n },\n {\n \"value\": \"092\",\n \"text\": \"Tmn Sentosa, Johor Bahru\"\n },\n {\n \"value\": \"093\",\n \"text\": \"Kangar\"\n },\n {\n \"value\": \"094\",\n \"text\": \"Ketereh\"\n },\n {\n \"value\": \"095\",\n \"text\": \"Persiaran Sultan Ibrahim, Kelang\"\n },\n {\n \"value\": \"096\",\n \"text\": \"Kluang 2 (WITH KLU)\"\n },\n {\n \"value\": \"098\",\n \"text\": \"Jln Tun HS Lee\"\n },\n {\n \"value\": \"101\",\n \"text\": \"Jln Burma\"\n },\n {\n \"value\": \"102\",\n \"text\": \"Jln Hang Tuah\"\n },\n {\n \"value\": \"103\",\n \"text\": \"Plaza OSK, Jln Ampang\"\n },\n {\n \"value\": \"104\",\n \"text\": \"Meru\"\n },\n {\n \"value\": \"106\",\n \"text\": \"Permas Jaya, Johor Bahru\"\n },\n {\n \"value\": \"107\",\n \"text\": \"RHB SOHO IPOH\"\n },\n {\n \"value\": \"110\",\n \"text\": \"Rantau\"\n },\n {\n \"value\": \"111\",\n \"text\": \"Bandar Sri Permaisuri\"\n },\n {\n \"value\": \"112\",\n \"text\": \"Section 14, Petaling Jaya\"\n },\n {\n \"value\": \"113\",\n \"text\": \"Segamat\"\n },\n {\n \"value\": \"115\",\n \"text\": \"Senai\"\n },\n {\n \"value\": \"116\",\n \"text\": \"Seremban\"\n },\n {\n \"value\": \"118\",\n \"text\": \"Jln Tengku Ampuan Zabedah, Shah Alam\"\n },\n {\n \"value\": \"121\",\n \"text\": \"Bandar Sri Damansara\"\n },\n {\n \"value\": \"123\",\n \"text\": \"Sg. Bakap\"\n },\n {\n \"value\": \"124\",\n \"text\": \"Kg. Baru Sg. Buloh\"\n },\n {\n \"value\": \"125\",\n \"text\": \"Sg. Pelek\"\n },\n {\n \"value\": \"126\",\n \"text\": \"Tmn Pekan Baru, Sg. Petani\"\n },\n {\n \"value\": \"128\",\n \"text\": \"Sungkai\"\n },\n {\n \"value\": \"130\",\n \"text\": \"Tmn Indah\"\n },\n {\n \"value\": \"131\",\n \"text\": \"Tmn Megah\"\n },\n {\n \"value\": \"132\",\n \"text\": \"Tmn Molek, Johor Bahru\"\n },\n {\n \"value\": \"133\",\n \"text\": \"Dataran Wangsa\"\n },\n {\n \"value\": \"134\",\n \"text\": \"Tmn Shamelin\"\n },\n {\n \"value\": \"136\",\n \"text\": \"Tmn Taming Jaya\"\n },\n {\n \"value\": \"139\",\n \"text\": \"UEP Subang Jaya\"\n },\n {\n \"value\": \"140\",\n \"text\": \"Ulu Tiram\"\n },\n {\n \"value\": \"142\",\n \"text\": \"Bandar Baru Nilai\"\n },\n {\n \"value\": \"144\",\n \"text\": \"Menglembu\"\n },\n {\n \"value\": \"145\",\n \"text\": \"Bayan Point\"\n },\n {\n \"value\": \"150\",\n \"text\": \"Jln Masjid, Bintulu\"\n },\n {\n \"value\": \"153\",\n \"text\": \"Damansara Utama\"\n },\n {\n \"value\": \"158\",\n \"text\": \"Plentong, Johor Bahru\"\n },\n {\n \"value\": \"161\",\n \"text\": \"Bagan Serai\"\n },\n {\n \"value\": \"163\",\n \"text\": \"Bahau\"\n },\n {\n \"value\": \"165\",\n \"text\": \"Bukit Mertajam\"\n },\n {\n \"value\": \"169\",\n \"text\": \"Simpang Empat, Hutan Melintang\"\n },\n {\n \"value\": \"176\",\n \"text\": \"Jenjarom\"\n },\n {\n \"value\": \"177\",\n \"text\": \"Jinjang Utara\"\n },\n {\n \"value\": \"182\",\n \"text\": \"Kerteh\"\n },\n {\n \"value\": \"183\",\n \"text\": \"Jln Stesen, Kelang\"\n },\n {\n \"value\": \"187\",\n \"text\": \"Kuala Dungun\"\n },\n {\n \"value\": \"188\",\n \"text\": \"Kuala Kangsar\"\n },\n {\n \"value\": \"190\",\n \"text\": \"Kuala Pilah\"\n },\n {\n \"value\": \"195\",\n \"text\": \"Jln Tun Mustapha\"\n },\n {\n \"value\": \"196\",\n \"text\": \"Pulau Langkawi\"\n },\n {\n \"value\": \"198\",\n \"text\": \"LEBUH PANTAI 3 (WITH PNG)\"\n },\n {\n \"value\": \"202\",\n \"text\": \"Jln Abdullah, Muar\"\n },\n {\n \"value\": \"203\",\n \"text\": \"Overseas Union Garden\"\n },\n {\n \"value\": \"204\",\n \"text\": \"Padang Serai\"\n },\n {\n \"value\": \"205\",\n \"text\": \"Parit Buntar\"\n },\n {\n \"value\": \"207\",\n \"text\": \"Pasir Mas\"\n },\n {\n \"value\": \"208\",\n \"text\": \"Pontian Kecil\"\n },\n {\n \"value\": \"213\",\n \"text\": \"Segambut\"\n },\n {\n \"value\": \"216\",\n \"text\": \"SETAPAK 3 (WITH STP)\"\n },\n {\n \"value\": \"218\",\n \"text\": \"Simpang Renggam\"\n },\n {\n \"value\": \"219\",\n \"text\": \"Sitiawan\"\n },\n {\n \"value\": \"223\",\n \"text\": \"Sg. Siput\"\n },\n {\n \"value\": \"224\",\n \"text\": \"SS2 Petaling Jaya\"\n },\n {\n \"value\": \"225\",\n \"text\": \"Taiping\"\n },\n {\n \"value\": \"228\",\n \"text\": \"Tmn Midah\"\n },\n {\n \"value\": \"231\",\n \"text\": \"Tmn Tun Dr Ismail\"\n },\n {\n \"value\": \"232\",\n \"text\": \"Tanjong Karang\"\n },\n {\n \"value\": \"233\",\n \"text\": \"Tasek, Ipoh\"\n },\n {\n \"value\": \"235\",\n \"text\": \"Teluk Intan\"\n },\n {\n \"value\": \"237\",\n \"text\": \"Yong Peng\"\n },\n {\n \"value\": \"239\",\n \"text\": \"Plaza Damas 3\"\n },\n {\n \"value\": \"240\",\n \"text\": \"Putrajaya\"\n },\n {\n \"value\": \"242\",\n \"text\": \"Lawas\"\n },\n {\n \"value\": \"252\",\n \"text\": \"Melaka Raya\"\n },\n {\n \"value\": \"260\",\n \"text\": \"Prima Square, Sandakan\"\n },\n {\n \"value\": \"261\",\n \"text\": \"Jln Kulas, Kuching\"\n },\n {\n \"value\": \"264\",\n \"text\": \"Simpang Tiga, Kuching\"\n },\n {\n \"value\": \"266\",\n \"text\": \"Boulevard Centre, Miri\"\n },\n {\n \"value\": \"268\",\n \"text\": \"Lundu\"\n },\n {\n \"value\": \"269\",\n \"text\": \"Kanowit\"\n },\n {\n \"value\": \"271\",\n \"text\": \"Dalat\"\n },\n {\n \"value\": \"272\",\n \"text\": \"Kota Samarahan, Kuching\"\n },\n {\n \"value\": \"273\",\n \"text\": \"Sarikei\"\n },\n {\n \"value\": \"275\",\n \"text\": \"Tabuan Jaya, Kuching\"\n },\n {\n \"value\": \"276\",\n \"text\": \"Siburan\"\n },\n {\n \"value\": \"278\",\n \"text\": \"Matang Jaya, Kuching\"\n },\n {\n \"value\": \"280\",\n \"text\": \"Batu Kawah, Kuching\"\n },\n {\n \"value\": \"281\",\n \"text\": \"Lintas Station Complex, Kota Kinabalu\"\n },\n {\n \"value\": \"282\",\n \"text\": \"Limbang\"\n },\n {\n \"value\": \"286\",\n \"text\": \"Taipan Senawang\"\n },\n {\n \"value\": \"288\",\n \"text\": \"Kota Damansara\"\n },\n {\n \"value\": \"289\",\n \"text\": \"The Vertical, Bangsar South\"\n },\n {\n \"value\": \"290\",\n \"text\": \"Tmn Mount Austin, Johor Bahru\"\n },\n {\n \"value\": \"291\",\n \"text\": \"Menara Shell\"\n },\n {\n \"value\": \"293\",\n \"text\": \"Paradigm Mall, Kelana Jaya\"\n },\n {\n \"value\": \"294\",\n \"text\": \"Utropolis Mall, Glenmarie\"\n },\n {\n \"value\": \"295\",\n \"text\": \"Bandar Bukit Tinggi\"\n },\n {\n \"value\": \"296\",\n \"text\": \"Jitra\"\n },\n {\n \"value\": \"297\",\n \"text\": \"Air Putih, Kuantan\"\n },\n {\n \"value\": \"298\",\n \"text\": \"Sg. Merah, Sibu\"\n },\n {\n \"value\": \"299\",\n \"text\": \"Tmn Nusa Bestari, Johor Bahru\"\n },\n {\n \"value\": \"300\",\n \"text\": \"Keningau\"\n },\n {\n \"value\": \"301\",\n \"text\": \"1 Lagenda\"\n },\n {\n \"value\": \"302\",\n \"text\": \"Triang\"\n },\n {\n \"value\": \"303\",\n \"text\": \"Tmn Connaught\"\n },\n {\n \"value\": \"304\",\n \"text\": \"MetroTown, Kota Kinabalu\"\n },\n {\n \"value\": \"305\",\n \"text\": \"Kota Kemuning\"\n },\n {\n \"value\": \"306\",\n \"text\": \"Kota Tinggi\"\n },\n {\n \"value\": \"307\",\n \"text\": \"Setia Alam\"\n },\n {\n \"value\": \"308\",\n \"text\": \"Alam Avenue\"\n },\n {\n \"value\": \"309\",\n \"text\": \"Malim\"\n },\n {\n \"value\": \"310\",\n \"text\": \"Mukah\"\n },\n {\n \"value\": \"312\",\n \"text\": \"Bandar Mahkota Cheras\"\n },\n {\n \"value\": \"313\",\n \"text\": \"Seremban 2\"\n },\n {\n \"value\": \"314\",\n \"text\": \"Banting\"\n },\n {\n \"value\": \"315\",\n \"text\": \"IOI Resort City\"\n },\n {\n \"value\": \"316\",\n \"text\": \"Bandar Sri Petaling\"\n },\n {\n \"value\": \"317\",\n \"text\": \"Tanjung Tokong\"\n },\n {\n \"value\": \"319\",\n \"text\": \"Bandar Penawar\"\n },\n {\n \"value\": \"320\",\n \"text\": \"Kelana Jaya\"\n },\n {\n \"value\": \"321\",\n \"text\": \"RHB Bank Jalan Raja Laut, Kuala Lumpur\"\n },\n {\n \"value\": \"322\",\n \"text\": \"Auto City, Juru\"\n },\n {\n \"value\": \"323\",\n \"text\": \"Tmn Setia Tropika, Johor Bahru\"\n },\n {\n \"value\": \"389\",\n \"text\": \"Tmn Flora Utama, Batu Pahat\"\n },\n {\n \"value\": \"399\",\n \"text\": \"Caw. Utama\"\n },\n {\n \"value\": \"400\",\n \"text\": \"Caw. Jln Satok, Kuching\"\n },\n {\n \"value\": \"401\",\n \"text\": \"Caw. Kelana Jaya\"\n },\n {\n \"value\": \"402\",\n \"text\": \"Caw. Tmn Flora Utama, Batu Pahat\"\n },\n {\n \"value\": \"403\",\n \"text\": \"Caw. Kubang Kerian, Kota Bharu\"\n },\n {\n \"value\": \"404\",\n \"text\": \"Caw. Tmn Setia Tropika, Johor Bahru\"\n },\n {\n \"value\": \"405\",\n \"text\": \"Caw. Bandar Baru Bangi\"\n },\n {\n \"value\": \"407\",\n \"text\": \"Caw. Kuala Terengganu\"\n },\n {\n \"value\": \"408\",\n \"text\": \"Caw. Jln Raja Laut\"\n },\n {\n \"value\": \"409\",\n \"text\": \"Caw. Auto City\"\n },\n {\n \"value\": \"411\",\n \"text\": \"Caw. Lagenda Heights, Sg. Petani\"\n },\n {\n \"value\": \"412\",\n \"text\": \"Caw. Laman Seri, Shah Alam\"\n },\n {\n \"value\": \"457\",\n \"text\": \"RHB Bank Sales Centre AEON Taman Equine\"\n },\n {\n \"value\": \"473\",\n \"text\": \"RHB EASY - Kompleks Teruntum\"\n },\n {\n \"value\": \"479\",\n \"text\": \"RHB EASY - Giant Plentong\"\n },\n {\n \"value\": \"491\",\n \"text\": \"RHB EASY - Mydin Mall MITC Melaka\"\n },\n {\n \"value\": \"630\",\n \"text\": \"RHB EASY - Mydin Kubang Kerian\"\n },\n {\n \"value\": \"637\",\n \"text\": \"RHB EASY - Mydin Meru Raya\"\n },\n {\n \"value\": \"710\",\n \"text\": \"RHB EASY - E-Mart Commercial Centre\"\n },\n {\n \"value\": \"712\",\n \"text\": \"RHB EASY - Giant Hypermarket Bayan Baru\"\n },\n {\n \"value\": \"861\",\n \"text\": \"RHB EASY Warisan Square\"\n },\n {\n \"value\": \"931\",\n \"text\": \"CC EMBOSSING\"\n },\n {\n \"value\": \"RD08\",\n \"text\": \"PERAK REGION\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"bdmMoreThan2500kg\",\n \"displayName\": \"BDM More Than 2500kg\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"chassisNo\",\n \"displayName\": \"Chassis Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"engineNo\",\n \"displayName\": \"Engine Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"marketValue\",\n \"displayName\": \"Market Value\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"12\"\n },\n {\n \"name\": \"modelOfVehicle\",\n \"displayName\": \"Model of Vehicle\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"type\": \"text\",\n \"name\": \"purchasePriceOTR\",\n \"title\": \"carPrice\",\n \"placeholder\": \"car Price (MYR)\",\n \"isRequired\": true,\n \"displayName\": \"Car Price (MYR)\",\n \"maxLength\": 23,\n \"min\": 2000,\n \"max\": 150000,\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n },\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ],\n \"category\": \"12\"\n },\n {\n \"name\": \"registrationDate\",\n \"displayName\": \"Registration Date\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"12\"\n },\n {\n \"name\": \"registrationNo\",\n \"displayName\": \"Registration Number\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"vehicleCondition\",\n \"displayName\": \"Condition\",\n \"placeholder\": \"Vehicle Condition\",\n \"startWithNewLine\": false,\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"N\",\n \"text\": \"New\"\n },\n {\n \"value\": \"U\",\n \"text\": \"Used\"\n },\n {\n \"value\": \"UN\",\n \"text\": \"UnRegistered Recon\"\n },\n {\n \"value\": \"UR\",\n \"text\": \"Used Recon\"\n },\n {\n \"value\": \"PR\",\n \"text\": \"Pre-registered\"\n }\n ],\n \"category\": \"12\"\n },\n {\n \"name\": \"yearMake\",\n \"displayName\": \"Year Make\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"startWithNewLine\": false,\n \"placeholder\": \"Year\",\n \"min\": 2014,\n \"max\": 2100,\n \"category\": \"12\"\n },\n {\n \"name\": \"makeOfVehicle\",\n \"displayName\": \"Make of Vehicle\",\n \"type\": \"text\",\n \"category\": \"12\"\n },\n {\n \"name\": \"permanentaddressLine1\",\n \"displayName\": \"Permanent Address Line 1\",\n \"placeholder\": \"Permanent Address Line 1\",\n \"maxLength\": 40,\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressLine2\",\n \"displayName\": \"Permanent Address Line 2\",\n \"placeholder\": \"Permanent Address Line 2 (optional)\",\n \"isRequired\": false,\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressLine3\",\n \"displayName\": \"Permanent Address Line 3\",\n \"maxLength\": 40,\n \"placeholder\": \"Permanent Address Line 3 (optional)\",\n \"isRequired\": false,\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentaddressType\",\n \"displayName\": \"Permanent Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentcity\",\n \"displayName\": \"Permanent City\",\n \"placeholder\": \"City of the Permanent Address\",\n \"type\": \"text\",\n \"maxLength\": 20,\n \"startWithNewLine\": false,\n \"category\": \"7\"\n },\n {\n \"name\": \"permanentpostcode\",\n \"displayName\": \"Permanent Postcode\",\n \"placeholder\": \"Postcode of the Permanent Address\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine1\",\n \"displayName\": \"Residential Address Line 1\",\n \"placeholder\": \"Residential Address Line 1\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine2\",\n \"displayName\": \"Residential Address Line 2\",\n \"placeholder\": \"Residential Address Line 2 (optional)\",\n \"isRequired\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressLine3\",\n \"displayName\": \"Residential Address Line 3\",\n \"placeholder\": \"Residential Address Line 3 (optional)\",\n \"isRequired\": false,\n \"startWithNewLine\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialaddressType\",\n \"displayName\": \"Residential Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialcity\",\n \"displayName\": \"Residential City\",\n \"placeholder\": \"City of the Residential Address\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialpostcode\",\n \"displayName\": \"Residential Postcode\",\n \"placeholder\": \"Postcode of the Residential Address\",\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"category\": \"7\"\n },\n {\n \"name\": \"residentialstate\",\n \"displayName\": \"Residential State\",\n \"placeholder\": \"Select State Of The Residential Address\",\n \"startWithNewLine\": false,\n \"visibleIf\": \"{residenceAddress} == false\",\n \"type\": \"dropdown\",\n \"choices\": [\n {\n \"value\": \"A\",\n \"text\": \"PERAK\"\n },\n {\n \"value\": \"B\",\n \"text\": \"SELANGOR\"\n },\n {\n \"value\": \"C\",\n \"text\": \"PAHANG\"\n },\n {\n \"value\": \"D\",\n \"text\": \"KELANTAN\"\n },\n {\n \"value\": \"J\",\n \"text\": \"JOHOR\"\n },\n {\n \"value\": \"K\",\n \"text\": \"KEDAH\"\n },\n {\n \"value\": \"L\",\n \"text\": \"WP LABUAN\"\n },\n {\n \"value\": \"M\",\n \"text\": \"MELAKA\"\n },\n {\n \"value\": \"N\",\n \"text\": \"NEGERI SEMBILAN\"\n },\n {\n \"value\": \"P\",\n \"text\": \"PULAU PINANG\"\n },\n {\n \"value\": \"Q\",\n \"text\": \"SARAWAK\"\n },\n {\n \"value\": \"R\",\n \"text\": \"PERLIS\"\n },\n {\n \"value\": \"S\",\n \"text\": \"SABAH\"\n },\n {\n \"value\": \"T\",\n \"text\": \"TERENGGANU\"\n },\n {\n \"value\": \"U\",\n \"text\": \"WP PUTRAJAYA\"\n },\n {\n \"value\": \"W\",\n \"text\": \"WP KUALA LUMPUR\"\n }\n ],\n \"category\": \"7\"\n },\n {\n \"name\": \"officeaddressLine1\",\n \"displayName\": \"Employer Address Line 1\",\n \"placeholder\": \"Employer Address Line 1\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressLine2\",\n \"displayName\": \"Employer Address Line 2\",\n \"placeholder\": \"Employer Address Line 2 (optional)\",\n \"isRequired\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressLine3\",\n \"displayName\": \"Employer Address Line 3\",\n \"placeholder\": \"Employer Address Line 3 (optional)\",\n \"startWithNewLine\": false,\n \"isRequired\": false,\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 40,\n \"category\": \"5\"\n },\n {\n \"name\": \"officeaddressType\",\n \"displayName\": \"Office Address Type\",\n \"type\": \"text\",\n \"category\": \"7\"\n },\n {\n \"name\": \"officecity\",\n \"displayName\": \"Employer City\",\n \"placeholder\": \"Employer City\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"5\"\n },\n {\n \"name\": \"officepostcode\",\n \"displayName\": \"Employer Postcode\",\n \"placeholder\": \"Employer Postcode\",\n \"visibleIf\": \"{employmentType} anyof ['01', '02', '07', '08', '09', '10' ]\",\n \"type\": \"text\",\n \"maxLength\": 10,\n \"inputType\": \"number\",\n \"category\": \"5\"\n },\n {\n \"name\": \"computationMode\",\n \"displayName\": \"Computation Mode\",\n \"type\": \"text\",\n \"category\": \"10\"\n },\n {\n \"name\": \"countryOfPermanentResident\",\n \"displayName\": \"Country of Permanent Resident\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"foreignPR\",\n \"displayName\": \"Foreign PR\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"internationalExtensionPhoneNo\",\n \"displayName\": \"International Extension Phone No\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"8\"\n },\n {\n \"name\": \"internationalPhoneNo\",\n \"displayName\": \"International Phone No\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"internationalPhoneNoAreaCode\",\n \"displayName\": \"International Phone No Area Code\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"8\"\n },\n {\n \"name\": \"pRIDNo\",\n \"displayName\": \"PR ID No\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"dealerName\",\n \"displayName\": \"Dealer Name\",\n \"type\": \"text\",\n \"category\": \"3\"\n },\n {\n \"name\": \"cashDownpayment\",\n \"displayName\": \"Cash Downpayment\",\n \"placeholder\": \"Cash Downpayment\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"maxLength\": 20,\n \"category\": \"11\"\n },\n {\n \"name\": \"downpayment\",\n \"displayName\": \"Down Payment (%)\",\n \"placeholder\": \"Down Payment (%)\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"bankName\",\n \"displayName\": \"Bank Name\",\n \"placeholder\": \"Bank Name\",\n \"visible\": false,\n \"type\": \"text\",\n \"startWithNewLine\": false,\n \"category\": \"11\"\n },\n {\n \"name\": \"bankRates\",\n \"displayName\": \"Bank Rate\",\n \"placeholder\": \"Bank Rate\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"startWithNewLine\": false,\n \"category\": \"11\"\n },\n {\n \"name\": \"monthlyRepayment\",\n \"displayName\": \"Monthly Repayment\",\n \"placeholder\": \"Monthly Repayment\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"facilityTenureYears\",\n \"displayName\": \"Repayment Term (Years)\",\n \"placeholder\": \"Payment Term\",\n \"startWithNewLine\": false,\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ],\n \"category\": \"11\"\n },\n {\n \"name\": \"totalFinancing\",\n \"displayName\": \"Financing Amount (RM)\",\n \"placeholder\": \"How much do you want to borrow?\",\n \"type\": \"text\",\n \"maxLength\": 15,\n \"min\": 2000,\n \"max\": 150000,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n },\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ],\n \"inputType\": \"number\",\n \"category\": \"11\"\n },\n {\n \"name\": \"myKadOrPassport\",\n \"displayName\": \"MyKad or Passport\",\n \"type\": \"text\",\n \"category\": \"2\"\n },\n {\n \"name\": \"incomeEPF_iakaun\",\n \"displayName\": \"Income EPF i-Akaun\",\n \"type\": \"text\",\n \"category\": \"11\"\n },\n {\n \"name\": \"phoneNumber\",\n \"displayName\": \"Phone Number\",\n \"type\": \"text\",\n \"inputType\": \"tel\",\n \"category\": \"1\"\n },\n {\n \"name\": \"incorporatedDate\",\n \"displayName\": \"Incorporated Date\",\n \"type\": \"text\",\n \"inputType\": \"date\",\n \"category\": \"3\"\n },\n {\n \"name\": \"shareCapital\",\n \"displayName\": \"Share Capital\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"tangibleAssets\",\n \"displayName\": \"Tangible Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalCurrentLiabilities\",\n \"displayName\": \"Total Current Liabilities\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalCurrentAssets\",\n \"displayName\": \"Total Current Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"endOfYearCash\",\n \"displayName\": \"Cash and Cash Equivalent at end of the Financial Year or Period\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"shortTermLiabilities\",\n \"displayName\": \"Short Term Liabilities\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"ebitda\",\n \"displayName\": \"Earning Before Interest, Tax, Depreciation and Amortization (EBITDA)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalAssets\",\n \"displayName\": \"Total Assets\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netOperatingCashFlow\",\n \"displayName\": \"Net Operating Cash Flow\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netProfitT1\",\n \"displayName\": \"Net Profit/ Loss and Total Comprehensive Income (year T-1)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalEquityT1\",\n \"displayName\": \"Total Equity/Owner equity/Total Net (year T-1)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"netProfitT2\",\n \"displayName\": \"Net Profit/ Loss and Total Comprehensive Income (year T-2)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"totalEquityT2\",\n \"displayName\": \"Total Equity/Owner equity/Total Net (year T-2)\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"facilityInterestRate\",\n \"displayName\": \"Interest Rate\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppProduct\",\n \"displayName\": \"EPP Product Name\",\n \"type\": \"text\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppPrice\",\n \"displayName\": \"EPP Price\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"eppNoOfPax\",\n \"displayName\": \"EPP No. of Pax\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"housingLoanMonthlyInstallment\",\n \"displayName\": \"Housing Loan Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"hirePurchaseMonthlyInstallment\",\n \"displayName\": \"Hire Purchase Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"personalLoanMonthlyInstallment\",\n \"displayName\": \"Personal Loan Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"creditCardMonthlyInstallment\",\n \"displayName\": \"Credit Card Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"otherFinancingMonthlyInstallment\",\n \"displayName\": \"Other Financing Monthly Installment\",\n \"type\": \"text\",\n \"inputType\": \"number\",\n \"category\": \"4\"\n },\n {\n \"name\": \"bank_statement_t1\",\n \"displayName\": \"Bank Statement (Month T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT1\",\n \"statementDateT1\",\n \"bankNameT1\",\n \"accountNumberT1\",\n \"totalCreditsT1\",\n \"totalDebitsT1\",\n \"openingBalanceT1\",\n \"bankBalanceT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t2\",\n \"displayName\": \"Bank Statement (Month T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT2\",\n \"statementDateT2\",\n \"bankNameT2\",\n \"accountNumberT2\",\n \"totalCreditsT2\",\n \"totalDebitsT2\",\n \"openingBalanceT2\",\n \"bankBalanceT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t3\",\n \"displayName\": \"Bank Statement (Month T-3)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT3\",\n \"statementDateT3\",\n \"bankNameT3\",\n \"accountNumberT3\",\n \"totalCreditsT3\",\n \"totalDebitsT3\",\n \"openingBalanceT3\",\n \"bankBalanceT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t4\",\n \"displayName\": \"Bank Statement (Month T-4)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT4\",\n \"statementDateT4\",\n \"bankNameT4\",\n \"accountNumberT4\",\n \"totalCreditsT4\",\n \"totalDebitsT4\",\n \"openingBalanceT4\",\n \"bankBalanceT4\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t5\",\n \"displayName\": \"Bank Statement (Month T-5)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT5\",\n \"statementDateT5\",\n \"bankNameT5\",\n \"accountNumberT5\",\n \"totalCreditsT5\",\n \"totalDebitsT5\",\n \"openingBalanceT5\",\n \"bankBalanceT5\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"bank_statement_t6\",\n \"displayName\": \"Bank Statement (Month T-6)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"accountHolderNameT6\",\n \"statementDateT6\",\n \"bankNameT6\",\n \"accountNumberT6\",\n \"totalCreditsT6\",\n \"totalDebitsT6\",\n \"openingBalanceT6\",\n \"bankBalanceT6\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials\",\n \"displayName\": \"Audited Financial Statement\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"shareCapital\",\n \"totalEquityT1\",\n \"totalEquityT2\",\n \"totalCurrentLiabilities\",\n \"shortTermLiabilities\",\n \"totalAssets\",\n \"totalCurrentAssets\",\n \"tangibleAssets\",\n \"netProfitT1\",\n \"netProfitT2\",\n \"endOfYearCash\",\n \"netOperatingCashFlow\",\n \"ebitda\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials_fincap_t1\",\n \"displayName\": \"Audited Financial Statement (T-1) (FinCap)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"nonCurrentAssetsSubsidiaryCompaniesT1\",\n \"nonCurrentAssetsAssociatedCompaniesT1\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT1\",\n \"nonCurrentAssetInvestmentPropertiesT1\",\n \"nonCurrentAssetsInvestmentsT1\",\n \"nonCurrentAssetInvestmentSecuritiesT1\",\n \"nonCurrentAssetDeferredAssetsT1\",\n \"nonCurrentAssetDepositsT1\",\n \"nonCurrentAssetOwnGoodwillT1\",\n \"nonCurrentAssetGoodwillOnConsolidationT1\",\n \"nonCurrentAssetSinkingFundT1\",\n \"nonCurrentAssetPropertyPlantEquipmentT1\",\n \"nonCurrentAssetInventoriesT1\",\n \"nonCurrentAssetRightOfUseAssetsT1\",\n \"nonCurrentAssetIntangibleAssetsT1\",\n \"nonCurrentAssetPrepaidLeasePaymentsT1\",\n \"nonCurrentAssetFinancialAssetAtFairValueT1\",\n \"nonCurrentAssetLandUseRightT1\",\n \"nonCurrentAssetTradeReceivablesT1\",\n \"nonCurrentAssetOtherReceivablesT1\",\n \"nonCurrentAssetTradeAndOtherReceivablesT1\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT1\",\n \"totalNonCurrentAssetsT1\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT1\",\n \"currentAssetShortTermInvestmentsT1\",\n \"currentAssetTradeDebtorsT1\",\n \"currentAssetShortTermDepositsT1\",\n \"currentAssetAmountDueFromHoldingCompanyT1\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT1\",\n \"currentAssetAmountDueFromAssociatedCompaniesT1\",\n \"currentAssetAmountDueFromDirectorT1\",\n \"currentAssetAmountDueFromCustomerT1\",\n \"currentAssetAmountOwingByShareholdersT1\",\n \"currentAssetInventoriesT1\",\n \"currentAssetFinancialAssetAtFairValueT1\",\n \"currentAssetLandUseRightT1\",\n \"currentAssetTaxRecoverableT1\",\n \"currentAssetContractAssetsT1\",\n \"currentAssetCurrentTaxAssetsT1\",\n \"currentAssetPrepaymentsT1\",\n \"currentAssetDerivativeT1\",\n \"currentAssetCashAndBankBalancesT1\",\n \"currentAssetOtherReceivablesT1\",\n \"currentAssetRestrictedCashT1\",\n \"currentAssetCashAndCashEquivalentsT1\",\n \"currentAssetDepositsCashAndBankBalancesT1\",\n \"currentAssetCashAtBanksT1\",\n \"currentAssetCashOnHandT1\",\n \"currentAssetDepositsAndPrepaymentsT1\",\n \"currentAssetTradeAndOtherReceivablesT1\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT1\",\n \"currentAssetOtherReceivablesAndDepositsT1\",\n \"currentAssetOtherReceivablesAndPrepaymentsT1\",\n \"currentAssetCashT1\",\n \"totalCurrentAssetsT1\",\n \"totalAssetsT1\",\n \"currentLiabilitiesTradeCreditorsT1\",\n \"currentLiabilitiesHirePurchasePayablesT1\",\n \"currentLiabilitiesBankOverdraftT1\",\n \"currentLiabilitiesBankAcceptanceT1\",\n \"currentLiabilitiesBorrowingsOrTermLoansT1\",\n \"currentLiabilitiesBankborrowingsT1\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT1\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT1\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT1\",\n \"currentLiabilitiesAmountsOwingToDirectorT1\",\n \"currentLiabilitiesProvisionForTaxationT1\",\n \"currentLiabilitiesLeasePayablesT1\",\n \"currentLiabilitiesFinanceLeasePayablesT1\",\n \"currentLiabilitiesOtherPayablesT1\",\n \"currentLiabilitiesDividendPayablesT1\",\n \"currentLiabilitiesTradeAndOtherPayablesT1\",\n \"currentLiabilitiesDepositsFromCustomersT1\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT1\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT1\",\n \"currentLiabilitiesContractLiabilitiesT1\",\n \"currentLiabilitiesDerivativeT1\",\n \"totalCurrentLiabilitiesT1\",\n \"shortTermLiabilitiesT1\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT1\",\n \"nonCurrentLiabilitiesBankBorrowingsT1\",\n \"nonCurrentLiabilitiesLeaseObligationsT1\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT1\",\n \"nonCurrentLiabilitiesDeferredTaxationT1\",\n \"nonCurrentLiabilitiesRetirementBenefitsT1\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT1\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT1\",\n \"nonCurrentLiabilitiesContractLiabilitiesT1\",\n \"totalNonCurrentLiabilitiesT1\",\n \"totalLiabilitiesT1\",\n \"tangibleAssetsT1\",\n \"shareCapitalT1\",\n \"preferenceShareCapitalT1\",\n \"sharePremiumT1\",\n \"reservesT1\",\n \"capitalReservesT1\",\n \"revaluationReservesT1\",\n \"exchangeEqualisationOrFluctuationReservesT1\",\n \"retainedEarningsT1\",\n \"totalEquityT1\",\n \"revenueT1\",\n \"costOfGoodsSoldT1\",\n \"grossProfitT1\",\n \"otherIncomeT1\",\n \"profitFromOperationsT1\",\n \"financeCostT1\",\n \"ebitdaT1\",\n \"taxesT1\",\n \"zakatT1\",\n \"profitAfterTaxT1\",\n \"netProfitT1\",\n \"netOperatingCashFlowT1\",\n \"depreciationT1\",\n \"depreciationOfPropertyPlantEquipmentT1\",\n \"depreciationRightOfUseAssetsT1\",\n \"depreciationOfInvestmentPropertiesT1\",\n \"depreciationOfInvestmentSecuritiesT1\",\n \"endOfYearCashT1\",\n \"nonCurrentAssetsSubsidiaryCompaniesT2\",\n \"nonCurrentAssetsAssociatedCompaniesT2\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT2\",\n \"nonCurrentAssetInvestmentPropertiesT2\",\n \"nonCurrentAssetsInvestmentsT2\",\n \"nonCurrentAssetInvestmentSecuritiesT2\",\n \"nonCurrentAssetDeferredAssetsT2\",\n \"nonCurrentAssetDepositsT2\",\n \"nonCurrentAssetOwnGoodwillT2\",\n \"nonCurrentAssetGoodwillOnConsolidationT2\",\n \"nonCurrentAssetSinkingFundT2\",\n \"nonCurrentAssetPropertyPlantEquipmentT2\",\n \"nonCurrentAssetInventoriesT2\",\n \"nonCurrentAssetRightOfUseAssetsT2\",\n \"nonCurrentAssetIntangibleAssetsT2\",\n \"nonCurrentAssetPrepaidLeasePaymentsT2\",\n \"nonCurrentAssetFinancialAssetAtFairValueT2\",\n \"nonCurrentAssetLandUseRightT2\",\n \"nonCurrentAssetTradeReceivablesT2\",\n \"nonCurrentAssetOtherReceivablesT2\",\n \"nonCurrentAssetTradeAndOtherReceivablesT2\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT2\",\n \"totalNonCurrentAssetsT2\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT2\",\n \"currentAssetShortTermInvestmentsT2\",\n \"currentAssetTradeDebtorsT2\",\n \"currentAssetShortTermDepositsT2\",\n \"currentAssetAmountDueFromHoldingCompanyT2\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT2\",\n \"currentAssetAmountDueFromAssociatedCompaniesT2\",\n \"currentAssetAmountDueFromDirectorT2\",\n \"currentAssetAmountDueFromCustomerT2\",\n \"currentAssetAmountOwingByShareholdersT2\",\n \"currentAssetInventoriesT2\",\n \"currentAssetFinancialAssetAtFairValueT2\",\n \"currentAssetLandUseRightT2\",\n \"currentAssetTaxRecoverableT2\",\n \"currentAssetContractAssetsT2\",\n \"currentAssetCurrentTaxAssetsT2\",\n \"currentAssetPrepaymentsT2\",\n \"currentAssetDerivativeT2\",\n \"currentAssetCashAndBankBalancesT2\",\n \"currentAssetOtherReceivablesT2\",\n \"currentAssetRestrictedCashT2\",\n \"currentAssetCashAndCashEquivalentsT2\",\n \"currentAssetDepositsCashAndBankBalancesT2\",\n \"currentAssetCashAtBanksT2\",\n \"currentAssetCashOnHandT2\",\n \"currentAssetDepositsAndPrepaymentsT2\",\n \"currentAssetTradeAndOtherReceivablesT2\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT2\",\n \"currentAssetOtherReceivablesAndDepositsT2\",\n \"currentAssetOtherReceivablesAndPrepaymentsT2\",\n \"currentAssetCashT2\",\n \"totalCurrentAssetsT2\",\n \"totalAssetsT2\",\n \"currentLiabilitiesTradeCreditorsT2\",\n \"currentLiabilitiesHirePurchasePayablesT2\",\n \"currentLiabilitiesBankOverdraftT2\",\n \"currentLiabilitiesBankAcceptanceT2\",\n \"currentLiabilitiesBorrowingsOrTermLoansT2\",\n \"currentLiabilitiesBankborrowingsT2\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT2\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT2\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT2\",\n \"currentLiabilitiesAmountsOwingToDirectorT2\",\n \"currentLiabilitiesProvisionForTaxationT2\",\n \"currentLiabilitiesLeasePayablesT2\",\n \"currentLiabilitiesFinanceLeasePayablesT2\",\n \"currentLiabilitiesOtherPayablesT2\",\n \"currentLiabilitiesDividendPayablesT2\",\n \"currentLiabilitiesTradeAndOtherPayablesT2\",\n \"currentLiabilitiesDepositsFromCustomersT2\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT2\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT2\",\n \"currentLiabilitiesContractLiabilitiesT2\",\n \"currentLiabilitiesDerivativeT2\",\n \"totalCurrentLiabilitiesT2\",\n \"shortTermLiabilitiesT2\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT2\",\n \"nonCurrentLiabilitiesBankBorrowingsT2\",\n \"nonCurrentLiabilitiesLeaseObligationsT2\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT2\",\n \"nonCurrentLiabilitiesDeferredTaxationT2\",\n \"nonCurrentLiabilitiesRetirementBenefitsT2\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT2\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT2\",\n \"nonCurrentLiabilitiesContractLiabilitiesT2\",\n \"totalNonCurrentLiabilitiesT2\",\n \"totalLiabilitiesT2\",\n \"tangibleAssetsT2\",\n \"shareCapitalT2\",\n \"preferenceShareCapitalT2\",\n \"sharePremiumT2\",\n \"reservesT2\",\n \"capitalReservesT2\",\n \"revaluationReservesT2\",\n \"exchangeEqualisationOrFluctuationReservesT2\",\n \"retainedEarningsT2\",\n \"totalEquityT2\",\n \"revenueT2\",\n \"costOfGoodsSoldT2\",\n \"grossProfitT2\",\n \"otherIncomeT2\",\n \"profitFromOperationsT2\",\n \"financeCostT2\",\n \"ebitdaT2\",\n \"taxesT2\",\n \"zakatT2\",\n \"profitAfterTaxT2\",\n \"netProfitT2\",\n \"netOperatingCashFlowT2\",\n \"depreciationT2\",\n \"depreciationOfPropertyPlantEquipmentT2\",\n \"depreciationRightOfUseAssetsT2\",\n \"depreciationOfInvestmentPropertiesT2\",\n \"depreciationOfInvestmentSecuritiesT2\",\n \"endOfYearCashT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"financials_fincap_t2\",\n \"displayName\": \"Audited Financial Statement (T-2) (FinCap)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"nonCurrentAssetsSubsidiaryCompaniesT3\",\n \"nonCurrentAssetsAssociatedCompaniesT3\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditureT3\",\n \"nonCurrentAssetInvestmentPropertiesT3\",\n \"nonCurrentAssetsInvestmentsT3\",\n \"nonCurrentAssetInvestmentSecuritiesT3\",\n \"nonCurrentAssetDeferredAssetsT3\",\n \"nonCurrentAssetDepositsT3\",\n \"nonCurrentAssetOwnGoodwillT3\",\n \"nonCurrentAssetGoodwillOnConsolidationT3\",\n \"nonCurrentAssetSinkingFundT3\",\n \"nonCurrentAssetPropertyPlantEquipmentT3\",\n \"nonCurrentAssetInventoriesT3\",\n \"nonCurrentAssetRightOfUseAssetsT3\",\n \"nonCurrentAssetIntangibleAssetsT3\",\n \"nonCurrentAssetPrepaidLeasePaymentsT3\",\n \"nonCurrentAssetFinancialAssetAtFairValueT3\",\n \"nonCurrentAssetLandUseRightT3\",\n \"nonCurrentAssetTradeReceivablesT3\",\n \"nonCurrentAssetOtherReceivablesT3\",\n \"nonCurrentAssetTradeAndOtherReceivablesT3\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepaymentsT3\",\n \"totalNonCurrentAssetsT3\",\n \"currentAssetDevelopmentPropertiesOrExpenditureT3\",\n \"currentAssetShortTermInvestmentsT3\",\n \"currentAssetTradeDebtorsT3\",\n \"currentAssetShortTermDepositsT3\",\n \"currentAssetAmountDueFromHoldingCompanyT3\",\n \"currentAssetAmountDueFromSubsidiaryCompaniesT3\",\n \"currentAssetAmountDueFromAssociatedCompaniesT3\",\n \"currentAssetAmountDueFromDirectorT3\",\n \"currentAssetAmountDueFromCustomerT3\",\n \"currentAssetAmountOwingByShareholdersT3\",\n \"currentAssetInventoriesT3\",\n \"currentAssetFinancialAssetAtFairValueT3\",\n \"currentAssetLandUseRightT3\",\n \"currentAssetTaxRecoverableT3\",\n \"currentAssetContractAssetsT3\",\n \"currentAssetCurrentTaxAssetsT3\",\n \"currentAssetPrepaymentsT3\",\n \"currentAssetDerivativeT3\",\n \"currentAssetCashAndBankBalancesT3\",\n \"currentAssetOtherReceivablesT3\",\n \"currentAssetRestrictedCashT3\",\n \"currentAssetCashAndCashEquivalentsT3\",\n \"currentAssetDepositsCashAndBankBalancesT3\",\n \"currentAssetCashAtBanksT3\",\n \"currentAssetCashOnHandT3\",\n \"currentAssetDepositsAndPrepaymentsT3\",\n \"currentAssetTradeAndOtherReceivablesT3\",\n \"currentAssetOtherReceivablesDepositsAndPrepaymentsT3\",\n \"currentAssetOtherReceivablesAndDepositsT3\",\n \"currentAssetOtherReceivablesAndPrepaymentsT3\",\n \"currentAssetCashT3\",\n \"totalCurrentAssetsT3\",\n \"totalAssetsT3\",\n \"currentLiabilitiesTradeCreditorsT3\",\n \"currentLiabilitiesHirePurchasePayablesT3\",\n \"currentLiabilitiesBankOverdraftT3\",\n \"currentLiabilitiesBankAcceptanceT3\",\n \"currentLiabilitiesBorrowingsOrTermLoansT3\",\n \"currentLiabilitiesBankborrowingsT3\",\n \"currentLiabilitiesAmountsOwingToHoldingCompanyT3\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompaniesT3\",\n \"currentLiabilitiesAmountOwingToAssociatedCompaniesT3\",\n \"currentLiabilitiesAmountsOwingToDirectorT3\",\n \"currentLiabilitiesProvisionForTaxationT3\",\n \"currentLiabilitiesLeasePayablesT3\",\n \"currentLiabilitiesFinanceLeasePayablesT3\",\n \"currentLiabilitiesOtherPayablesT3\",\n \"currentLiabilitiesDividendPayablesT3\",\n \"currentLiabilitiesTradeAndOtherPayablesT3\",\n \"currentLiabilitiesDepositsFromCustomersT3\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDepositsT3\",\n \"currentLiabilitiesOtherPayablesAndAccrualsT3\",\n \"currentLiabilitiesContractLiabilitiesT3\",\n \"currentLiabilitiesDerivativeT3\",\n \"totalCurrentLiabilitiesT3\",\n \"shortTermLiabilitiesT3\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoansT3\",\n \"nonCurrentLiabilitiesBankBorrowingsT3\",\n \"nonCurrentLiabilitiesLeaseObligationsT3\",\n \"nonCurrentLiabilitiesFinanceLeaseObligationsT3\",\n \"nonCurrentLiabilitiesDeferredTaxationT3\",\n \"nonCurrentLiabilitiesRetirementBenefitsT3\",\n \"nonCurrentLiabilitiesHirePurchasePayablesT3\",\n \"nonCurrentLiabilitiesDepositsFromCustomersT3\",\n \"nonCurrentLiabilitiesContractLiabilitiesT3\",\n \"totalNonCurrentLiabilitiesT3\",\n \"totalLiabilitiesT3\",\n \"tangibleAssetsT3\",\n \"shareCapitalT3\",\n \"preferenceShareCapitalT3\",\n \"sharePremiumT3\",\n \"reservesT3\",\n \"capitalReservesT3\",\n \"revaluationReservesT3\",\n \"exchangeEqualisationOrFluctuationReservesT3\",\n \"retainedEarningsT3\",\n \"totalEquityT3\",\n \"revenueT3\",\n \"costOfGoodsSoldT3\",\n \"grossProfitT3\",\n \"otherIncomeT3\",\n \"profitFromOperationsT3\",\n \"financeCostT3\",\n \"ebitdaT3\",\n \"taxesT3\",\n \"zakatT3\",\n \"profitAfterTaxT3\",\n \"netProfitT3\",\n \"netOperatingCashFlowT3\",\n \"depreciationT3\",\n \"depreciationOfPropertyPlantEquipmentT3\",\n \"depreciationRightOfUseAssetsT3\",\n \"depreciationOfInvestmentPropertiesT3\",\n \"depreciationOfInvestmentSecuritiesT3\",\n \"endOfYearCashT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"form9\",\n \"displayName\": \"Form 9 / Section 17 / Form D\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"incorporatedDate\",\n \"companyName\",\n \"companyRegNo\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"ssm\",\n \"displayName\": \"SSM Company Profile\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"ssmCompanyName\",\n \"ssmCompanyRegNo\",\n \"ssmIncorporatedDate\",\n \"businessCommencementDate\",\n \"businessNature\",\n \"ssmCompanyEntityType\",\n \"ssmPaidUpCapital\",\n \"companyStatus\",\n \"shareholders\",\n \"directors\",\n \"previousDirectors\",\n \"totalShareIssued\",\n \"companyLastOldName\",\n \"companyNameDateOfChange\",\n \"businessOrigin\",\n \"registeredAddress\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"ic\",\n \"displayName\": \"Identification Card (Front)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"icNumber\",\n \"icName\",\n \"icAddress\",\n \"icGender\",\n \"icReligion\",\n \"icDateOfBirth\",\n \"icPlaceOfBirth\",\n \"icNationality\",\n \"icRace\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"epf_statement_t1\",\n \"displayName\": \"Employees' Provident Fund (T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"epfAccountHolderNameT1\",\n \"epfAccountHolderAddressT1\",\n \"epfStatementYearT1\",\n \"epfKwspMemberNumberT1\",\n \"epfIcNumberT1\",\n \"epfEmployerNumberT1\",\n \"epfDateOfStatementT1\",\n \"epfTotalContributionT1\",\n \"epfTotalCurrentContributionT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"epf_statement_t2\",\n \"displayName\": \"Employees' Provident Fund (T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"epfAccountHolderNameT2\",\n \"epfAccountHolderAddressT2\",\n \"epfStatementYearT2\",\n \"epfKwspMemberNumberT2\",\n \"epfIcNumberT2\",\n \"epfEmployerNumberT2\",\n \"epfDateOfStatementT2\",\n \"epfTotalContributionT2\",\n \"epfTotalCurrentContributionT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t1\",\n \"displayName\": \"Payslip Statement (Month T-1)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT1\",\n \"payslipEmployeeNameT1\",\n \"payslipPayPeriodT1\",\n \"payslipPayDateT1\",\n \"payslipGrossPayT1\",\n \"payslipDeductionT1\",\n \"payslipEmployeeEpfContributionT1\",\n \"payslipEmployeeSocsoContributionT1\",\n \"payslipNetPayT1\",\n \"payslipBasicPayT1\",\n \"payslipFixedAllowancesT1\",\n \"payslipVariableIncomeT1\",\n \"payslipEmployeeEisContributionT1\",\n \"payslipEmployeeTaxT1\",\n \"payslipOtherDeductionT1\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t2\",\n \"displayName\": \"Payslip Statement (Month T-2)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT2\",\n \"payslipEmployeeNameT2\",\n \"payslipPayPeriodT2\",\n \"payslipPayDateT2\",\n \"payslipGrossPayT2\",\n \"payslipDeductionT2\",\n \"payslipEmployeeEpfContributionT2\",\n \"payslipEmployeeSocsoContributionT2\",\n \"payslipNetPayT2\",\n \"payslipBasicPayT2\",\n \"payslipFixedAllowancesT2\",\n \"payslipVariableIncomeT2\",\n \"payslipEmployeeEisContributionT2\",\n \"payslipEmployeeTaxT2\",\n \"payslipOtherDeductionT2\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t3\",\n \"displayName\": \"Payslip Statement (Month T-3)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT3\",\n \"payslipEmployeeNameT3\",\n \"payslipPayPeriodT3\",\n \"payslipPayDateT3\",\n \"payslipGrossPayT3\",\n \"payslipDeductionT3\",\n \"payslipEmployeeEpfContributionT3\",\n \"payslipEmployeeSocsoContributionT3\",\n \"payslipNetPayT3\",\n \"payslipBasicPayT3\",\n \"payslipFixedAllowancesT3\",\n \"payslipVariableIncomeT3\",\n \"payslipEmployeeEisContributionT3\",\n \"payslipEmployeeTaxT3\",\n \"payslipOtherDeductionT3\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t4\",\n \"displayName\": \"Payslip Statement (Month T-4)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT4\",\n \"payslipEmployeeNameT4\",\n \"payslipPayPeriodT4\",\n \"payslipPayDateT4\",\n \"payslipGrossPayT4\",\n \"payslipDeductionT4\",\n \"payslipEmployeeEpfContributionT4\",\n \"payslipEmployeeSocsoContributionT4\",\n \"payslipNetPayT4\",\n \"payslipBasicPayT4\",\n \"payslipFixedAllowancesT4\",\n \"payslipVariableIncomeT4\",\n \"payslipEmployeeEisContributionT4\",\n \"payslipEmployeeTaxT4\",\n \"payslipOtherDeductionT4\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t5\",\n \"displayName\": \"Payslip Statement (Month T-5)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT5\",\n \"payslipEmployeeNameT5\",\n \"payslipPayPeriodT5\",\n \"payslipPayDateT5\",\n \"payslipGrossPayT5\",\n \"payslipDeductionT5\",\n \"payslipEmployeeEpfContributionT5\",\n \"payslipEmployeeSocsoContributionT5\",\n \"payslipNetPayT5\",\n \"payslipBasicPayT5\",\n \"payslipFixedAllowancesT5\",\n \"payslipVariableIncomeT5\",\n \"payslipEmployeeEisContributionT5\",\n \"payslipEmployeeTaxT5\",\n \"payslipOtherDeductionT5\"\n ],\n \"category\": \"13\"\n },\n {\n \"name\": \"payslip_statement_t6\",\n \"displayName\": \"Payslip Statement (Month T-6)\",\n \"type\": \"file\",\n \"enableIf\": \"{formOfDisclosure} contains 'consented'\",\n \"ihs_column_names\": [\n \"payslipEmployerNameT6\",\n \"payslipEmployeeNameT6\",\n \"payslipPayPeriodT6\",\n \"payslipPayDateT6\",\n \"payslipGrossPayT6\",\n \"payslipDeductionT6\",\n \"payslipEmployeeEpfContributionT6\",\n \"payslipEmployeeSocsoContributionT6\",\n \"payslipNetPayT6\",\n \"payslipBasicPayT6\",\n \"payslipFixedAllowancesT6\",\n \"payslipVariableIncomeT6\",\n \"payslipEmployeeEisContributionT6\",\n \"payslipEmployeeTaxT6\",\n \"payslipOtherDeductionT6\"\n ],\n \"category\": \"13\"\n }\n ]\n}\n","{\n \"version\": 2,\n \"types\": [\n {\n \"displayName\": \"Text\",\n \"name\": \"text\"\n },\n {\n \"displayName\": \"Number\",\n \"name\": \"number\"\n },\n {\n \"displayName\": \"Email\",\n \"name\": \"email\"\n },\n {\n \"displayName\": \"Dropdown\",\n \"name\": \"dropdown\"\n },\n {\n \"displayName\": \"Checkbox\",\n \"name\": \"checkbox\"\n },\n {\n \"displayName\": \"Radio Group\",\n \"name\": \"radiogroup\"\n },\n {\n \"displayName\": \"Boolean\",\n \"name\": \"boolean\"\n },\n {\n \"displayName\": \"File\",\n \"name\": \"file\"\n },\n {\n \"displayName\": \"Slider\",\n \"name\": \"slider\"\n },\n {\n \"displayName\": \"Range\",\n \"name\": \"range\"\n },\n {\n \"displayName\": \"Long Text (Comment)\",\n \"name\": \"comment\"\n },\n {\n \"displayName\": \"HTML Content\",\n \"name\": \"html\"\n }\n ],\n \"input_types\": [\n {\n \"displayName\": \"Text\",\n \"name\": \"text\"\n },\n {\n \"displayName\": \"Number\",\n \"name\": \"number\"\n },\n {\n \"displayName\": \"Email\",\n \"name\": \"email\"\n },\n {\n \"displayName\": \"Tel\",\n \"name\": \"tel\"\n },\n {\n \"displayName\": \"Date\",\n \"name\": \"date\"\n },\n {\n \"displayName\": \"Password\",\n \"name\": \"password\"\n },\n {\n \"displayName\": \"URL\",\n \"name\": \"url\"\n }\n ]\n}\n","{\n \"version\": 1,\n \"options\": [\n {\n \"id\": 1,\n \"displayName\": \"Numeric Validator\",\n \"class\": \"NumericValidator\",\n \"description\": \"Ensures the answer is a number within the specified range of minValue and maxValue.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"numeric\",\n \"text\": \"Value must be within the range of 0 to 100\",\n \"minValue\": 0,\n \"maxValue\": 100\n }\n ]\n },\n {\n \"id\": 2,\n \"displayName\": \"Text Length Validator\",\n \"class\": \"TextValidator\",\n \"description\": \"Confirms the length of entered text is between minLength and maxLength.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"text\",\n \"minLength\": 10,\n \"maxLength\": 280\n }\n ]\n },\n {\n \"id\": 3,\n \"displayName\": \"Regex Validator\",\n \"class\": \"RegexValidator\",\n \"description\": \"Throws an error if an entered value does not match a regular expression defined in the regex property.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The value must match the required pattern.\",\n \"regex\": \"your-regex-pattern-here\"\n }\n ]\n },\n {\n \"id\": 4,\n \"displayName\": \"Email Validator\",\n \"class\": \"EmailValidator\",\n \"description\": \"Confirms that the entered value is a valid e-mail address.\",\n \"isRequired\": true,\n \"validators\": [\n {\n \"type\": \"email\",\n \"text\": \"Value must be a valid email\"\n }\n ]\n },\n {\n \"id\": 5,\n \"displayName\": \"Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the field's expression always evaluates to true.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{fields} = true\",\n \"text\": \"The value must be true and cannot be false.\"\n }\n ]\n },\n {\n \"id\": 6,\n \"displayName\": \"Answer Count Validator\",\n \"class\": \"AnswerCountValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures selection of an appropriate number of choices, keeping responses within the minCount and maxCount range.\",\n \"validators\": [\n {\n \"type\": \"answercount\",\n \"minCount\": 2,\n \"maxCount\": 4\n }\n ]\n },\n {\n \"id\": 7,\n \"displayName\": \"Full Name Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the entered value is a valid full name.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please make sure the name doesn't include extra spaces, numbers, or invalid symbols\",\n \"regex\": \"^[A-Za-z'-]+(?:\\\\s[A-Za-z'-]+)*\\\\s?[A-Za-z'-]+$\"\n }\n ]\n },\n {\n \"id\": 8,\n \"displayName\": \"Mobile Phone No Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures valid Malaysia phone number is entered.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^(011[0-9]{8}|01[2346789][0-9]{7}|[2-9][0-9]{0,8})$\"\n }\n ]\n },\n {\n \"id\": 9,\n \"displayName\": \"IC Number Total Digits Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures exactly 12 digits are entered for the IC number.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{12}$\",\n \"text\": \"Please enter exactly 12 digits numbers\"\n }\n ]\n },\n {\n \"id\": 10,\n \"displayName\": \"IC Number Valid Birth Year, Month, and Date Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures valid birth year, month, and day are entered for the IC number.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^(\\\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\\\\d{6}$\",\n \"text\": \"First 6 digits must be valid birth year (00-99), month (01-12), and day (01-31)\"\n }\n ]\n },\n {\n \"id\": 11,\n \"displayName\": \"Duration in Current Residence (Months) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures duration includes a number between 0-11.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|10|11)$\",\n \"text\": \"Value must be a number between 0-11.\"\n }\n ]\n },\n {\n \"id\": 12,\n \"displayName\": \"Duration in Current Residence (Years) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures duration includes a number between 0-99.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^([0-9]|[1-9][0-9])$\",\n \"text\": \"Value must be a number between 0-99.\"\n }\n ]\n },\n {\n \"id\": 13,\n \"displayName\": \"Office Phone No. Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures office phone number is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"The phone number must be a valid Malaysian number\",\n \"regex\": \"^(011[0-9]{8}|(60[4-7]|004|005|006|007|009|609|012|013|014|016|017|019)[0-9]{7})$\"\n }\n ]\n },\n {\n \"id\": 14,\n \"displayName\": \"Age Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures age entered is between 21-55.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number age between 21 and 55.\",\n \"regex\": \"^(2[1-9]|[3-4][0-9]|55)$\"\n }\n ]\n },\n {\n \"id\": 15,\n \"displayName\": \"Consent(s) Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures that the field's expression always evaluates to true.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{consentCrossSelling} = true\",\n \"text\": \"You must provide consent to Consent Cross-Selling.\"\n }\n ]\n },\n {\n \"id\": 16,\n \"displayName\": \"Date Joined Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures date joined is in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"text\": \"Date must be in YYYY-MM-DD format\"\n }\n ]\n },\n {\n \"id\": 17,\n \"displayName\": \"Date Joined Custom Validator\",\n \"class\": \"CustomValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures date joined is not in the future.\",\n \"validators\": [\n {\n \"type\": \"custom\",\n \"validator\": \"validateNotFutureDate\",\n \"text\": \"Date of joining cannot be in the future\"\n }\n ]\n },\n {\n \"id\": 18,\n \"displayName\": \"Emergency Contact No. Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures emergency contact number is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"A valid Malaysia phone number is required.\",\n \"regex\": \"^((60[4-79]|0[4-79])[0-9]{7}|011[0-9]{8}|01[2346789][0-9]{7})$\"\n }\n ]\n },\n {\n \"id\": 19,\n \"displayName\": \"Monthly Gross Income Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures monthly gross income is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"regex\": \"^\\\\d+(\\\\.\\\\d+)?$\",\n \"text\": \"Please enter a valid non-negative number.\"\n }\n ]\n },\n {\n \"id\": 20,\n \"displayName\": \"Monthly Gross Income Expression Validator\",\n \"class\": \"ExpressionValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures monthly gross income is at least RM 2000.\",\n \"validators\": [\n {\n \"type\": \"expression\",\n \"expression\": \"{monthlyGrossIncome} >= 2000\",\n \"text\": \"Income must be at least RM 2000.\"\n }\n ]\n },\n {\n \"id\": 21,\n \"displayName\": \"No of Dependants Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures number of dependants is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid whole number between 0 and 99.\",\n \"regex\": \"^[0-9][0-9]?$\"\n }\n ]\n },\n {\n \"id\": 22,\n \"displayName\": \"Financing Tenure (Years) Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing tenure is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a valid financing tenure from 1 to 7 years.\",\n \"regex\": \"^[1-7]$\"\n }\n ]\n },\n {\n \"id\": 23,\n \"displayName\": \"Financing Amount Range Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing amount is entered in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter a financing amount between 2,000 and 150,000.\",\n \"regex\": \"^(2000|[1-9][0-9]{3}|[1-9][0-9]{4}|150000)$\"\n }\n ]\n },\n {\n \"id\": 24,\n \"displayName\": \"Financing Amount Incrementals Regex Validator\",\n \"class\": \"RegexValidator\",\n \"isRequired\": true,\n \"description\": \"Ensures financing amount is entered incrementally in the correct format.\",\n \"validators\": [\n {\n \"type\": \"regex\",\n \"text\": \"Please enter an amount in increments of 1,000.\",\n \"regex\": \"^([1-9][0-9]*000|150000)$\"\n }\n ]\n }\n ]\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FieldData, Category } from \"./survey-generator.js\";\nimport type { FormFieldTypeDefinitions, EditorValidator } from \"./form-field.js\";\nimport type { FormValidatorDefinitions } from \"./form-field-validator.js\";\nimport FormField from \"./form-field.js\";\nimport baseSpecsData from \"./data/form-field-base-specs.json\" with { type: \"json\" };\nimport typeDefsData from \"./data/form-field-types.json\" with { type: \"json\" };\nimport validatorDefsData from \"./data/form-field-validators.json\" with { type: \"json\" };\n\nexport const BASE_FIELD_SPECS: {\n schemaVersion: string;\n categories: Category[];\n fields: FieldData[];\n} = baseSpecsData as any;\n\nexport const FIELD_TYPE_DEFINITIONS: FormFieldTypeDefinitions = typeDefsData as FormFieldTypeDefinitions;\n\nexport const DEFAULT_VALIDATOR_DEFINITIONS: FormValidatorDefinitions = {\n version: (validatorDefsData as any).version,\n options: (validatorDefsData as any).options as EditorValidator[],\n};\n\nexport function getBaseFieldSpecs(): FieldData[] {\n return BASE_FIELD_SPECS.fields;\n}\n\nexport function getBaseCategories(): Category[] {\n return BASE_FIELD_SPECS.categories;\n}\n\nlet cachedFieldSpecMap: Map<string, FieldData> | null = null;\n\n/**\n * Returns a cached Map of base field name → FieldData.\n * Keyed by each field's `name` property from the base specs.\n */\nexport function getBaseFieldSpecMap(): Map<string, FieldData> {\n if (cachedFieldSpecMap) {\n return cachedFieldSpecMap;\n }\n\n const map = new Map<string, FieldData>();\n for (const field of BASE_FIELD_SPECS.fields) {\n if (field.name) {\n map.set(field.name, field);\n }\n }\n\n cachedFieldSpecMap = map;\n return cachedFieldSpecMap;\n}\n\nlet cachedFieldNames: string[] | null = null;\n\nexport function getBaseFieldNames(): string[] {\n if (cachedFieldNames) {\n return cachedFieldNames;\n }\n\n const fields = BASE_FIELD_SPECS.fields;\n const names: string[] = [];\n\n for (const field of fields) {\n try {\n const formField = FormField.fromObject(field);\n names.push(...formField.getFieldNames());\n } catch {\n // Skip fields that fail to parse\n }\n }\n\n cachedFieldNames = [...new Set(names)];\n return cachedFieldNames;\n}\n","/*\n * IHS data processing types.\n * Used by finsys-client and finhub-adonisjs to render application details.\n */\n\nexport enum IhsValueFormat {\n STRING = 'string',\n CURRENCY = 'currency',\n NUMBER = 'number',\n PERCENTAGE = 'percentage',\n DATE = 'date',\n TABLE = 'table',\n}\n\nexport interface IhsFieldDetail {\n name: string\n displayName: string\n category: string\n value: unknown\n valueFormat: IhsValueFormat\n}\n\nexport interface IhsDetailCategory {\n category: string\n items: { name: string; displayName: string; value: unknown; valueFormat: IhsValueFormat }[]\n}\n\nexport enum FileFieldTableType {\n TIME_SERIES = 'timeSeries',\n KEY_VALUE = 'keyValue',\n}\n\nexport interface FileFieldTableItem {\n displayName: string\n timePeriods: string[]\n data: Record<string, unknown>\n formattedData: Record<string, string>\n type: FileFieldTableType\n isNumeric: boolean\n}\n\nexport interface FileFieldTableData {\n name: string\n displayName: string\n type: FileFieldTableType\n items: FileFieldTableItem[]\n hasData: boolean\n}\n","{\n \"accountHolderName\": \"Account Holder Name\",\n \"statementDate\": \"Statement Date\",\n \"bankName\": \"Bank Name\",\n \"accountNumber\": \"Account Number\",\n \"totalCredits\": \"Total Credits\",\n \"totalDebits\": \"Total Debits\",\n \"openingBalance\": \"Opening Balance\",\n \"bankBalance\": \"Bank Balance\",\n \"nonCurrentAssetsSubsidiaryCompanies\": \"Subsidiary Companies (Non-Current Assets)\",\n \"nonCurrentAssetsAssociatedCompanies\": \"Associated Companies (Non-Current Assets)\",\n \"nonCurrentAssetsDevelopmentPropertiesOrExpenditure\": \"Development Properties/Expenditure (Non-Current Assets)\",\n \"nonCurrentAssetInvestmentProperties\": \"Investment Properties (Non-Current Assets)\",\n \"nonCurrentAssetsInvestments\": \"Investments (Non-Current Assets)\",\n \"nonCurrentAssetInvestmentSecurities\": \"Investment Securities (Non-Current Assets)\",\n \"nonCurrentAssetDeferredAssets\": \"Deferred Assets (Non-Current Assets)\",\n \"nonCurrentAssetDeposits\": \"Deposits (Non-Current Assets)\",\n \"nonCurrentAssetOwnGoodwill\": \"Own Goodwill (Non-Current Assets)\",\n \"nonCurrentAssetGoodwillOnConsolidation\": \"Goodwill on Consolidation (Non-Current Assets)\",\n \"nonCurrentAssetSinkingFund\": \"Sinking Fund (Non-Current Assets)\",\n \"nonCurrentAssetPropertyPlantEquipment\": \"Property, Plant & Equipment (Non-Current Assets)\",\n \"nonCurrentAssetInventories\": \"Inventories (Non-Current Assets)\",\n \"nonCurrentAssetRightOfUseAssets\": \"Right of Use Assets (Non-Current Assets)\",\n \"nonCurrentAssetIntangibleAssets\": \"Intangible Assets (Non-Current Assets)\",\n \"nonCurrentAssetPrepaidLeasePayments\": \"Prepaid Lease Payments (Non-Current Assets)\",\n \"nonCurrentAssetFinancialAssetAtFairValue\": \"Financial Assets at Fair Value (Non-Current Assets)\",\n \"nonCurrentAssetLandUseRight\": \"Land Use Rights (Non-Current Assets)\",\n \"nonCurrentAssetTradeReceivables\": \"Trade Receivables (Non-Current Assets)\",\n \"nonCurrentAssetOtherReceivables\": \"Other Receivables (Non-Current Assets)\",\n \"nonCurrentAssetTradeAndOtherReceivables\": \"Trade and Other Receivables (Non-Current Assets)\",\n \"nonCurrentAssetOtherReceivablesDepositsAndPrepayments\": \"Other Receivables, Deposits and Prepayments (Non-Current Assets)\",\n \"totalNonCurrentAssets\": \"Total Non-Current Assets\",\n \"currentAssetDevelopmentPropertiesOrExpenditure\": \"Development Properties/Expenditure (Current Assets)\",\n \"currentAssetShortTermInvestments\": \"Short Term Investments (Current Assets)\",\n \"currentAssetTradeDebtors\": \"Trade Debtors (Current Assets)\",\n \"currentAssetShortTermDeposits\": \"Short Term Deposits (Current Assets)\",\n \"currentAssetAmountDueFromHoldingCompany\": \"Amount Due from Holding Company (Current Assets)\",\n \"currentAssetAmountDueFromSubsidiaryCompanies\": \"Amount Due from Subsidiary Companies (Current Assets)\",\n \"currentAssetAmountDueFromAssociatedCompanies\": \"Amount Due from Associated Companies (Current Assets)\",\n \"currentAssetAmountDueFromDirector\": \"Amount Due from Director (Current Assets)\",\n \"currentAssetAmountDueFromCustomer\": \"Amount Due from Customer (Current Assets)\",\n \"currentAssetAmountOwingByShareholders\": \"Amount Owing by Shareholders (Current Assets)\",\n \"currentAssetInventories\": \"Inventories (Current Assets)\",\n \"currentAssetFinancialAssetAtFairValue\": \"Financial Assets at Fair Value (Current Assets)\",\n \"currentAssetLandUseRight\": \"Land Use Rights (Current Assets)\",\n \"currentAssetTaxRecoverable\": \"Tax Recoverable (Current Assets)\",\n \"currentAssetContractAssets\": \"Contract Assets (Current Assets)\",\n \"currentAssetCurrentTaxAssets\": \"Current Tax Assets (Current Assets)\",\n \"currentAssetPrepayments\": \"Prepayments (Current Assets)\",\n \"currentAssetDerivative\": \"Derivatives (Current Assets)\",\n \"currentAssetCashAndBankBalances\": \"Cash and Bank Balances (Current Assets)\",\n \"currentAssetOtherReceivables\": \"Other Receivables (Current Assets)\",\n \"currentAssetRestrictedCash\": \"Restricted Cash (Current Assets)\",\n \"currentAssetCashAndCashEquivalents\": \"Cash and Cash Equivalents (Current Assets)\",\n \"currentAssetDepositsCashAndBankBalances\": \"Deposits, Cash and Bank Balances (Current Assets)\",\n \"currentAssetCashAtBanks\": \"Cash at Banks (Current Assets)\",\n \"currentAssetCashOnHand\": \"Cash on Hand (Current Assets)\",\n \"currentAssetDepositsAndPrepayments\": \"Deposits and Prepayments (Current Assets)\",\n \"currentAssetTradeAndOtherReceivables\": \"Trade and Other Receivables (Current Assets)\",\n \"currentAssetOtherReceivablesDepositsAndPrepayments\": \"Other Receivables, Deposits and Prepayments (Current Assets)\",\n \"currentAssetOtherReceivablesAndDeposits\": \"Other Receivables and Deposits (Current Assets)\",\n \"currentAssetOtherReceivablesAndPrepayments\": \"Other Receivables and Prepayments (Current Assets)\",\n \"currentAssetCash\": \"Cash (Current Assets)\",\n \"totalCurrentAssets\": \"Total Current Assets\",\n \"totalAssets\": \"Total Assets\",\n \"currentLiabilitiesTradeCreditors\": \"Trade Creditors (Current Liabilities)\",\n \"currentLiabilitiesHirePurchasePayables\": \"Hire Purchase Payables (Current Liabilities)\",\n \"currentLiabilitiesBankOverdraft\": \"Bank Overdraft (Current Liabilities)\",\n \"currentLiabilitiesBankAcceptance\": \"Bank Acceptance (Current Liabilities)\",\n \"currentLiabilitiesBorrowingsOrTermLoans\": \"Borrowings/Term Loans (Current Liabilities)\",\n \"currentLiabilitiesBankborrowings\": \"Bank Borrowings (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToHoldingCompany\": \"Amounts Owing to Holding Company (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToSubsidiaryCompanies\": \"Amounts Owing to Subsidiary Companies (Current Liabilities)\",\n \"currentLiabilitiesAmountOwingToAssociatedCompanies\": \"Amount Owing to Associated Companies (Current Liabilities)\",\n \"currentLiabilitiesAmountsOwingToDirector\": \"Amounts Owing to Director (Current Liabilities)\",\n \"currentLiabilitiesProvisionForTaxation\": \"Provision for Taxation (Current Liabilities)\",\n \"currentLiabilitiesLeasePayables\": \"Lease Payables (Current Liabilities)\",\n \"currentLiabilitiesFinanceLeasePayables\": \"Finance Lease Payables (Current Liabilities)\",\n \"currentLiabilitiesOtherPayables\": \"Other Payables (Current Liabilities)\",\n \"currentLiabilitiesDividendPayables\": \"Dividend Payables (Current Liabilities)\",\n \"currentLiabilitiesTradeAndOtherPayables\": \"Trade and Other Payables (Current Liabilities)\",\n \"currentLiabilitiesDepositsFromCustomers\": \"Deposits from Customers (Current Liabilities)\",\n \"currentLiabilitiesOtherPayablesAccrualsAndDeposits\": \"Other Payables, Accruals and Deposits (Current Liabilities)\",\n \"currentLiabilitiesOtherPayablesAndAccruals\": \"Other Payables and Accruals (Current Liabilities)\",\n \"currentLiabilitiesContractLiabilities\": \"Contract Liabilities (Current Liabilities)\",\n \"currentLiabilitiesDerivative\": \"Derivative Liabilities (Current Liabilities)\",\n \"totalCurrentLiabilities\": \"Total Current Liabilities\",\n \"shortTermLiabilities\": \"Short Term Liabilities\",\n \"nonCurrentLiabilitiesBorrowingsOrTermLoans\": \"Borrowings/Term Loans (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesBankBorrowings\": \"Bank Borrowings (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesLeaseObligations\": \"Lease Obligations (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesFinanceLeaseObligations\": \"Finance Lease Obligations (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesDeferredTaxation\": \"Deferred Taxation (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesRetirementBenefits\": \"Retirement Benefits (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesHirePurchasePayables\": \"Hire Purchase Payables (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesDepositsFromCustomers\": \"Deposits from Customers (Non-Current Liabilities)\",\n \"nonCurrentLiabilitiesContractLiabilities\": \"Contract Liabilities (Non-Current Liabilities)\",\n \"totalNonCurrentLiabilities\": \"Total Non-Current Liabilities\",\n \"totalLiabilities\": \"Total Liabilities\",\n \"tangibleAssets\": \"Tangible Assets\",\n \"shareCapital\": \"Share Capital\",\n \"preferenceShareCapital\": \"Preference Share Capital\",\n \"sharePremium\": \"Share Premium\",\n \"reserves\": \"Reserves\",\n \"capitalReserves\": \"Capital Reserves\",\n \"revaluationReserves\": \"Revaluation Reserves\",\n \"exchangeEqualisationOrFluctuationReserves\": \"Exchange Equalisation/Fluctuation Reserves\",\n \"retainedEarnings\": \"Retained Earnings\",\n \"totalEquity\": \"Total Equity\",\n \"revenue\": \"Revenue\",\n \"costOfGoodsSold\": \"Cost of Goods Sold\",\n \"grossProfit\": \"Gross Profit\",\n \"otherIncome\": \"Other Income\",\n \"profitFromOperations\": \"Profit from Operations\",\n \"financeCost\": \"Finance Cost\",\n \"ebitda\": \"Profit Before Tax\",\n \"taxes\": \"Taxes\",\n \"zakat\": \"Zakat\",\n \"profitAfterTax\": \"Profit After Tax\",\n \"netProfit\": \"Net Profit\",\n \"netOperatingCashFlow\": \"Net Operating Cash Flow\",\n \"depreciation\": \"Depreciation\",\n \"depreciationOfPropertyPlantEquipment\": \"Depreciation of Property, Plant & Equipment\",\n \"depreciationRightOfUseAssets\": \"Depreciation of Right of Use Assets\",\n \"depreciationOfInvestmentProperties\": \"Depreciation of Investment Properties\",\n \"depreciationOfInvestmentSecurities\": \"Depreciation of Investment Securities\",\n \"endOfYearCash\": \"End of Year Cash\",\n \"epfAccountHolderName\": \"Account Holder Name\",\n \"epfAccountHolderAddress\": \"Account Holder Address\",\n \"epfStatementYear\": \"Statement Year\",\n \"epfKwspMemberNumber\": \"KWSP Member Number\",\n \"epfIcNumber\": \"IC No.\",\n \"epfEmployerNumber\": \"Employer Number\",\n \"epfDateOfStatement\": \"Date Of Statement\",\n \"epfTotalContribution\": \"Total Contribution\",\n \"epfTotalCurrentContribution\": \"Total Current Contribution\",\n \"payslipEmployerName\": \"Employer Name\",\n \"payslipEmployeeName\": \"Employee Name\",\n \"payslipPayPeriod\": \"Pay Period\",\n \"payslipPayDate\": \"Pay Date\",\n \"payslipGrossPay\": \"Gross Pay\",\n \"payslipDeduction\": \"Deduction\",\n \"payslipEmployeeEpfContribution\": \"Employee EPF Contribution\",\n \"payslipEmployeeSocsoContribution\": \"Employee SOCSO Contribution\",\n \"payslipNetPay\": \"Net Pay\",\n \"incorporatedDate\": \"Incorporated Date\",\n \"companyName\": \"Company Name\",\n \"companyRegNo\": \"Company Registration No.\",\n \"ssmCompanyName\": \"Company Name (SSM)\",\n \"ssmCompanyRegNo\": \"Registration No. (SSM)\",\n \"ssmIncorporatedDate\": \"Incorporated Date (SSM)\",\n \"ssmCompanyEntityType\": \"Entity Type (SSM)\",\n \"ssmPaidUpCapital\": \"Paid-Up Capital (SSM)\",\n \"businessCommencementDate\": \"Business Commencement Date\",\n \"businessNature\": \"Business Nature\",\n \"companyStatus\": \"Company Status\",\n \"shareholders\": \"Shareholders\",\n \"directors\": \"Directors\",\n \"previousDirectors\": \"Previous Directors\",\n \"totalShareIssued\": \"Total Shares Issued\",\n \"companyLastOldName\": \"Previous Company Name\",\n \"companyNameDateOfChange\": \"Company Name Change Date\",\n \"businessOrigin\": \"Business Origin\",\n \"registeredAddress\": \"Registered Address\",\n \"icName\": \"Name (IC)\",\n \"icNumber\": \"IC Number\",\n \"icAddress\": \"Address (IC)\",\n \"icGender\": \"Gender (IC)\",\n \"icReligion\": \"Religion (IC)\",\n \"icDateOfBirth\": \"Date of Birth (IC)\",\n \"icPlaceOfBirth\": \"Place of Birth (IC)\",\n \"icNationality\": \"Nationality (IC)\",\n \"icRace\": \"Race (IC)\"\n}\n","/*\n * IHS data processing functions.\n *\n * Pure data transformations for extracting structured detail and\n * file-field table data from raw IHS API responses. Used by both\n * finsys-client and finhub-adonisjs.\n */\n\nimport type { FieldData } from './survey-generator.js'\nimport {\n IhsValueFormat,\n FileFieldTableType,\n} from './ihs-types.js'\nimport type {\n IhsFieldDetail,\n IhsDetailCategory,\n FileFieldTableData,\n FileFieldTableItem,\n} from './ihs-types.js'\nimport { getBaseFieldSpecs, getBaseCategories, getBaseFieldSpecMap } from './catalogs.js'\nimport displayNamesData from './data/form-field-display-names.json' with { type: 'json' }\n\n// ── Display names ──────────────────────────────────────────────\n\nconst displayNames: Record<string, string> = displayNamesData as Record<string, string>\n\n/** Returns the full display name registry (extraction column → human label). */\nexport function getDisplayNames(): Record<string, string> {\n return displayNames\n}\n\n/** Looks up a display name. Falls back to camelCase → Title Case conversion. */\nexport function getDisplayName(fieldName: string): string {\n if (displayNames[fieldName]) return displayNames[fieldName]\n return fieldName\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (s) => s.toUpperCase())\n .trim()\n}\n\n// ── Time-period utilities ──────────────────────────────────────\n\nconst TIME_PERIOD_REGEX = /T(\\d+)$/\n\nexport function extractTimePeriods(columnNames: string[]): string[] {\n const periods = new Set<string>()\n for (const col of columnNames) {\n const match = TIME_PERIOD_REGEX.exec(col)\n if (match) periods.add(`T${match[1]}`)\n }\n return [...periods].sort((a, b) => {\n const numA = parseInt(a.slice(1), 10)\n const numB = parseInt(b.slice(1), 10)\n return numA - numB\n })\n}\n\nexport function groupColumnsByTimePeriod(\n columnNames: string[]\n): Record<string, Record<string, string>> {\n const groups: Record<string, Record<string, string>> = {}\n for (const col of columnNames) {\n const match = /^(.+?)(T\\d+)$/.exec(col)\n if (!match) continue\n const [, baseName, period] = match\n if (!groups[baseName]) groups[baseName] = {}\n groups[baseName][period] = col\n }\n return groups\n}\n\n// ── Field grouping ─────────────────────────────────────────────\n\nconst FIELD_GROUP_PREFIXES: [string, string][] = [\n ['bank_statement', 'bank_statements'],\n ['financials', 'financials'],\n ['epf_statement', 'epf_statements'],\n ['payslip_statement', 'payslip_statements'],\n ['ssm', 'ssm_company_profile'],\n ['form9', 'form9'],\n ['ic', 'ic'],\n]\n\nexport function groupFieldsByPattern(fields: FieldData[]): Record<string, FieldData[]> {\n const groups: Record<string, FieldData[]> = {}\n for (const field of fields) {\n if (!field.name) continue\n let groupName = field.name\n for (const [prefix, group] of FIELD_GROUP_PREFIXES) {\n if (field.name.startsWith(prefix)) {\n groupName = group\n break\n }\n }\n if (!groups[groupName]) groups[groupName] = []\n groups[groupName].push(field)\n }\n return groups\n}\n\n/** Human-friendly display names for field groups (when a group combines multiple fields). */\nconst GROUP_DISPLAY_NAMES: Record<string, string> = {\n bank_statements: 'Bank Statements',\n financials: 'Audited Financial Statements',\n epf_statements: 'EPF Statements',\n payslip_statements: 'Payslip Statements',\n form9: 'Form 9 / Section 17 / Form D',\n ssm_company_profile: 'SSM Company Profile',\n ic: 'Identification Card',\n}\n\n// ── File-field table building ──────────────────────────────────\n\nfunction isNumericField(fieldName: string): boolean {\n const patterns = [\n 'balance',\n 'amount',\n 'credit',\n 'debit',\n 'total',\n 'revenue',\n 'cost',\n 'income',\n 'expense',\n 'liability',\n 'asset',\n 'equity',\n 'profit',\n 'loss',\n 'cash',\n 'tax',\n 'interest',\n ]\n const lower = fieldName.toLowerCase()\n return patterns.some((p) => lower.includes(p))\n}\n\nfunction formatValue(value: unknown, numeric: boolean): string {\n if (value === null || value === undefined || value === '') return '-'\n if (numeric) {\n const num = Number(value)\n if (!isNaN(num))\n return num.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })\n }\n return String(value)\n}\n\nfunction buildTableForGroup(\n groupName: string,\n fields: FieldData[],\n ihsData: Record<string, unknown>\n): FileFieldTableData | null {\n const allColumns: string[] = []\n for (const field of fields) {\n if (field.ihs_column_names) {\n allColumns.push(...field.ihs_column_names)\n }\n }\n if (allColumns.length === 0) return null\n\n const periods = extractTimePeriods(allColumns)\n const isTimeSeries = periods.length > 0\n const tableType = isTimeSeries ? FileFieldTableType.TIME_SERIES : FileFieldTableType.KEY_VALUE\n const groupDisplayName =\n GROUP_DISPLAY_NAMES[groupName] || fields[0]?.displayName || getDisplayName(groupName)\n\n if (isTimeSeries) {\n const columnGroups = groupColumnsByTimePeriod(allColumns)\n const items: FileFieldTableItem[] = []\n\n for (const [baseName, periodMap] of Object.entries(columnGroups)) {\n const numeric = isNumericField(baseName)\n const data: Record<string, unknown> = {}\n const formattedData: Record<string, string> = {}\n\n for (const period of periods) {\n const colName = periodMap[period]\n const value = colName ? (ihsData[colName] ?? null) : null\n data[period] = value\n formattedData[period] = formatValue(value, numeric)\n }\n\n items.push({\n displayName: getDisplayName(baseName),\n timePeriods: periods,\n data,\n formattedData,\n type: tableType,\n isNumeric: numeric,\n })\n }\n\n const hasData = items.some((item) =>\n Object.values(item.data).some((v) => v !== null && v !== undefined && v !== '')\n )\n return { name: groupName, displayName: groupDisplayName, type: tableType, items, hasData }\n } else {\n const items: FileFieldTableItem[] = []\n for (const colName of allColumns) {\n const value = ihsData[colName] ?? null\n const numeric = isNumericField(colName)\n items.push({\n displayName: getDisplayName(colName),\n timePeriods: [],\n data: { value },\n formattedData: { value: formatValue(value, numeric) },\n type: tableType,\n isNumeric: numeric,\n })\n }\n const hasData = items.some((item) => {\n const v = item.data['value']\n return v !== null && v !== undefined && v !== ''\n })\n return { name: groupName, displayName: groupDisplayName, type: tableType, items, hasData }\n }\n}\n\nexport function buildFileFieldTables(\n ihsData: Record<string, unknown>\n): Record<string, FileFieldTableData> {\n const specs = getBaseFieldSpecs()\n const fileFields = specs.filter((f) => f.type === 'file' && f.ihs_column_names?.length)\n const grouped = groupFieldsByPattern(fileFields)\n\n const tables: Record<string, FileFieldTableData> = {}\n for (const [groupName, fields] of Object.entries(grouped)) {\n const table = buildTableForGroup(groupName, fields, ihsData)\n if (table && table.hasData) {\n tables[groupName] = table\n }\n }\n return tables\n}\n\n// ── IHS detail processing ──────────────────────────────────────\n\nfunction isFileOrFinancialColumn(fieldName: string, fileColumnSet: Set<string>): boolean {\n return (\n fileColumnSet.has(fieldName) ||\n fieldName.startsWith('financials') ||\n fieldName.startsWith('bank_statement')\n )\n}\n\nfunction inferValueFormat(fieldName: string, value: unknown): IhsValueFormat {\n const currencyFields = new Set([\n 'totalFinancing',\n 'monthlyGrossIncome',\n 'approvedAmount',\n 'monthlyInstallment',\n ])\n if (currencyFields.has(fieldName)) return IhsValueFormat.CURRENCY\n\n const numberFields = new Set([\n 'age',\n 'noOfDependants',\n 'financingTenure',\n 'ihsId',\n 'programId',\n 'borrowerAgentId',\n ])\n if (numberFields.has(fieldName)) return IhsValueFormat.NUMBER\n\n const tableFields = new Set(['shareholders', 'directors', 'previousDirectors'])\n if (tableFields.has(fieldName)) return IhsValueFormat.TABLE\n\n if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) return IhsValueFormat.DATE\n\n return IhsValueFormat.STRING\n}\n\nconst EXCLUDED_FIELDS = new Set([\n 'updatedAt',\n 'programIds',\n 'borrowerAgentId',\n 'programId',\n '__v',\n '_id',\n 'id',\n])\n\nexport function processIhsDetails(ihsData: Record<string, unknown>): IhsFieldDetail[] {\n const specs = getBaseFieldSpecs()\n const fileColumnSet = new Set<string>()\n for (const field of specs) {\n if (field.type === 'file' && field.ihs_column_names) {\n for (const col of field.ihs_column_names) {\n fileColumnSet.add(col)\n }\n }\n }\n\n const specMap = getBaseFieldSpecMap()\n const categories = getBaseCategories()\n const categoryNameMap: Record<string, string> = {}\n for (const cat of categories) {\n categoryNameMap[String(cat.id)] = cat.name\n }\n\n const details: IhsFieldDetail[] = []\n\n for (const [key, value] of Object.entries(ihsData)) {\n if (value === null || value === undefined || value === '' || value === 'Not Specified') continue\n if (value === false) continue\n if (EXCLUDED_FIELDS.has(key)) continue\n if (isFileOrFinancialColumn(key, fileColumnSet)) continue\n\n const spec = specMap.get(key)\n const categoryId = spec?.category ? String(spec.category) : '0'\n const category = categoryNameMap[categoryId] || 'General'\n\n details.push({\n name: key,\n displayName: getDisplayName(key),\n category,\n value,\n valueFormat: inferValueFormat(key, value),\n })\n }\n\n return details\n}\n\nexport function groupDetailsByCategory(details: IhsFieldDetail[]): IhsDetailCategory[] {\n const groups: Record<string, IhsFieldDetail[]> = {}\n for (const detail of details) {\n if (!groups[detail.category]) groups[detail.category] = []\n groups[detail.category].push(detail)\n }\n\n return Object.entries(groups)\n .filter(([cat]) => cat !== 'Default Category' && cat !== 'General')\n .map(([category, items]) => ({\n category,\n items: items.map((d) => ({\n name: d.name,\n displayName: d.displayName,\n value: d.value,\n valueFormat: d.valueFormat,\n })),\n }))\n}\n","/*\n * Copyright 2025 Sisters Inspire Sdn Bhd\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Program access roles — shared across finsys-api and finhub-adonisjs.\n * Values must match the database enum column in the `programaccess` table.\n */\nexport enum Role {\n ADMIN = 'Admin',\n BORROWER_AGENT = 'Borrower Agent',\n LENDER_AGENT = 'Lender Agent',\n}\n"],"mappings":";AAoBO,SAAS,kBAAkB,WAA2B;AAC3D,QAAM,OAAO,oBAAI,KAAK;AACtB,OAAK,QAAQ,CAAC;AACd,OAAK,SAAS,KAAK,SAAS,IAAI,SAAS;AACzC,SAAO,KAAK,eAAe,WAAW,EAAE,OAAO,OAAO,CAAC;AACzD;AAEO,SAAS,iBAAiB,UAA0B;AACzD,QAAM,OAAO,oBAAI,KAAK;AACtB,UAAQ,KAAK,YAAY,IAAI,UAAU,SAAS;AAClD;AASO,SAAS,mBAAmB,YAAoB,MAAoB;AACzE,MAAI,CAAC,WAAY,QAAO;AAExB,MAAI;AAEF,QAAI,eAAe,WAAW,QAAQ,gBAAgB,CAAC,GAAG,QAAQ;AAEhE,aAAO,SAAS,IAAI,KAAK,CAAC;AAAA,IAC5B,CAAC;AAKD,mBAAe,aAAa,QAAQ,wBAAwB,IAAI;AAQhE,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,cAAc,GAAG;AAAA,IAC3C;AAOA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,GAAG,GAAG,mBAAmB,GAAG;AAAA,IAC/C;AAMA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,qBAAqB,GAAG;AAAA,IAClD;AAGA,mBAAe,aAAa;AAAA,MAC1B;AAAA,MACA,CAAC,GAAG,KAAK,QAAQ,KAAK,GAAG,qBAAqB,GAAG;AAAA,IACnD;AAGA,UAAM,OAAO,IAAI,SAAS,UAAU,YAAY,GAAG;AACnD,WAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,EAC/B,SAAS,GAAG;AAEV,WAAO;AAAA,EACT;AACF;;;ACqEA,SAAS,eAAe,OAAqC;AAE3D,QAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa;AACpE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,IACV;AAAA,EACF;AACF;AAKA,SAAS,sBACP,KACA,QACsB;AACtB,MAAI,OAAO,QAAQ,UAAU;AAE3B,UAAM,WAAW,OAAO,GAAG;AAC3B,QAAI,CAAC,UAAU;AACb,cAAQ,KAAK,UAAU,GAAG,kCAAkC;AAC5D,aAAO;AAAA,IACT;AACA,WAAO,eAAe,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;AAAA,EAClD;AAEA,MAAI,gBAAgB,KAAK;AAEvB,WAAO,eAAe,IAAI,UAA2B;AAAA,EACvD;AAEA,MAAI,SAAS,KAAK;AAEhB,UAAM,WAAW,OAAO,IAAI,GAAG;AAC/B,QAAI,CAAC,UAAU;AACb,cAAQ,KAAK,UAAU,IAAI,GAAG,kCAAkC;AAChE,aAAO;AAAA,IACT;AACA,UAAM,EAAE,KAAK,WAAW,GAAG,UAAU,IAAI;AACzC,WAAO,eAAe,EAAE,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,EACtE;AAEA,SAAO;AACT;AAMO,SAAS,mBAAmB,OAAqC;AACtE,QAAM,qBAAqB,MAAM,KAAK,MAAM,yBAAyB;AACrE,MAAI,oBAAoB;AACtB,UAAM,YAAY,SAAS,mBAAmB,CAAC,GAAG,EAAE;AACpD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa,mBAAmB,kBAAkB,SAAS,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,MAAI,MAAM,SAAS,cAAc;AAC/B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa,gCAAgC,iBAAiB,CAAC,CAAC;AAAA,IAClE;AAAA,EACF;AACA,SAAO;AACT;AAKO,SAAS,mBAAmB,QAA+D;AAChG,MAAI,CAAC,OAAO,SAAS,OAAO,MAAM,WAAW,EAAG,QAAO,CAAC;AAExD,QAAM,YAAY,OAAO,MAAM,KAAK,OAAK,EAAE,OAAO,iBAAiB;AACnE,MAAI,CAAC,UAAW,QAAO,CAAC;AAExB,QAAM,aAAa,OAAO,cAAc,CAAC;AACzC,QAAM,cAAsC,WAAW,OAAO,CAAC,KAAK,QAAQ;AAC1E,QAAI,IAAI,EAAE,IAAI,IAAI;AAClB,WAAO;AAAA,EACT,GAAG,CAAC,CAA2B;AAG/B,QAAM,kBAAkB,UAAU,OAC/B,IAAI,SAAO,sBAAsB,KAAK,OAAO,MAAM,CAAC,EACpD,OAAO,CAAC,MAA0B,MAAM,IAAI,EAC5C,IAAI,OAAK,mBAAmB,CAAC,CAAC,EAC9B,IAAI,OAAK,mBAAmB,CAAC,CAAC;AAGjC,QAAM,UAAU,gBAAgB,OAAO,CAAC,KAA0C,UAAU;AAC1F,UAAM,UAAU,YAAY,MAAM,QAAkB,KAAK;AACzD,QAAI,CAAC,IAAI,OAAO,EAAG,KAAI,OAAO,IAAI,CAAC;AACnC,QAAI,OAAO,EAAE,KAAK,KAAK;AACvB,WAAO;AAAA,EACT,GAAG,CAAC,CAAwC;AAG5C,QAAM,QAA0B,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,cAAc,QAAQ,OAAO;AAAA,IACzF,MAAM,aAAa,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACpD,OAAO,UAAU,yBAAyB,QAAQ,KAAK;AAAA,IACvD,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,MAAM,GAAG,aAAa,YAAY,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAE;AAEF,SAAO;AAAA,IACL,OAAO,OAAO,eAAe;AAAA,IAC7B,cAAc;AAAA,IACd;AAAA,IACA,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,IACvB,eAAe;AAAA,IACf,SAAS,UAAU,WAAW;AAAA,IAC9B,cAAc;AAAA,IACd,2BAA2B;AAAA,IAC3B,iBAAiB,UAAU,oBAAoB,QAAQ,QAAQ;AAAA,IAC/D,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AACF;AAKA,SAAS,mBAAmB,OAAyC;AACnE,QAAM,UAA6B;AAAA,IACjC,MAAM,MAAM;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,GAAI,MAAM,eAAe,EAAE,OAAO,MAAM,YAAY;AAAA,IACpD,YAAY,MAAM,cAAc,MAAM,YAAY;AAAA,IAClD,GAAI,MAAM,aAAa,EAAE,WAAW,OAAO,MAAM,SAAS,EAAE;AAAA,EAC9D;AAEA,MAAI,MAAM,SAAS,QAAQ;AACzB,YAAQ,kBAAkB;AAAA,EAC5B;AAGA,QAAM,cAAc,CAAC,eAAe,YAAY,UAAU;AAC1D,SAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,QAAI,EAAE,OAAO,YAAY,CAAC,YAAY,SAAS,GAAG,KAAK,MAAM,GAAG,MAAM,QAAW;AAC/E,cAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC;AAGD,UAAQ,WAAW,MAAM,YAAY;AAErC,SAAO;AACT;AAKO,SAAS,kBACd,MACA,QACiB;AACjB,SAAO,KAAK,OACT,IAAI,SAAO,sBAAsB,KAAK,MAAM,CAAC,EAC7C,OAAO,CAAC,MAA0B,MAAM,IAAI,EAC5C,IAAI,OAAK,mBAAmB,CAAC,CAAC;AACnC;AAKO,SAAS,gBACd,YACA,YACQ;AACR,MAAI,eAAe,OAAW,QAAO;AACrC,QAAM,MAAM,WAAW,KAAK,OAAK,EAAE,OAAO,UAAU;AACpD,SAAO,KAAK,QAAQ;AACtB;AAWO,SAAS,sBACd,QACA,YACc;AACd,QAAM,SAAuB,CAAC;AAC9B,MAAI,eAAkC;AAEtC,aAAW,SAAS,QAAQ;AAC1B,UAAM,WAAW,MAAM,YAAY;AAEnC,QAAI,CAAC,gBAAgB,aAAa,aAAa,UAAU;AACvD,qBAAe;AAAA,QACb;AAAA,QACA,cAAc,gBAAgB,UAAU,UAAU;AAAA,QAClD,QAAQ,CAAC;AAAA,MACX;AACA,aAAO,KAAK,YAAY;AAAA,IAC1B;AAEA,iBAAa,OAAO,KAAK,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;;;AC5WA,SAAS,SAAS;AAuClB,SAAS,0BACP,YACA,QACc;AACd,SAAO,WAAW,YAAY,CAAC,MAAM,QAAQ;AAC3C,WAAO,QAAQ,CAAC,UAAU;AACxB,YAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa,SAAS,MAAM,SAAS;AAC5F,UAAI,CAAC,WAAY;AAGjB,UAAI,YAAY,MAAM,YAAY;AAClC,UAAI,aAAa,MAAM,WAAW;AAChC,oBAAY,mBAAmB,MAAM,WAAW,IAAI;AAAA,MACtD;AAEA,UAAI,WAAW;AACb,cAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,cAAM,UACJ,UAAU,UACV,UAAU,QACV,UAAU,MACT,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAE5C,YAAI,SAAS;AACX,cAAI,SAAS;AAAA,YACX,MAAM,EAAE,aAAa;AAAA,YACrB,SAAS;AAAA,YACT,MAAM,CAAC,MAAM,IAAI;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAAS,kBAAkB,QAA4C;AAE5E,QAAM,QAAQ,OAAO,SAAS,CAAC;AAC/B,QAAM,aAAa,OAAO,cAAc,CAAC;AACzC,QAAM,YAAY,OAAO,UAAU,CAAC;AAEpC,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AAGA,QAAM,YAA6B,CAAC;AAEpC,aAAW,QAAQ,OAAO;AACxB,UAAM,aAAa,kBAAkB,MAAM,SAAS;AACpD,cAAU,KAAK,GAAG,UAAU;AAAA,EAC9B;AAGA,QAAM,eAAe,UAAU,IAAI,kBAAkB;AAGrD,QAAM,QAAsC,CAAC;AAC7C,QAAM,gBAAqC,CAAC;AAE5C,eAAa,QAAQ,CAAC,UAAU;AAC9B,QAAI,SAAuB,EAAE,OAAO;AAIpC,QAAI,WAA8D;AAGlE,QAAI,MAAM,cAAc,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS,YAAY,MAAM,SAAS,SAAS;AAChH,eAAS,EAAE,OAAO,OAAO;AACzB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,MAAM,iBAAiB,SAAY,OAAO,MAAM,YAAY,IAAI;AAAA,IAC9F,WAAW,MAAM,SAAS,YAAY;AACpC,eAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3B,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B,WAAW,MAAM,SAAS,QAAQ;AAChC,eAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AACxB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,CAAC;AAAA,IAC/B,WAAW,MAAM,SAAS,WAAW;AACnC,eAAS,EAAE,QAAQ;AACnB,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI,MAAM,gBAAgB;AAAA,IACpD,WAAW,MAAM,SAAS,QAAQ;AAChC,eAAS,EAAE,IAAI,EAAE,SAAS;AAC1B,iBAAW;AACX,oBAAc,MAAM,IAAI,IAAI;AAAA,IAC9B,OAAO;AACL,UAAI,MAAM,QAAQ,MAAM,YAAY,GAAG;AACrC,sBAAc,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,KAAK;AAAA,MACvD,OAAO;AACL,sBAAc,MAAM,IAAI,IAAI,MAAM,gBAAgB;AAAA,MACpD;AAAA,IACF;AAKA,QAAI,aAAa,YAAY,kBAAkB,EAAE,WAAW;AAC1D,UAAI,YAAY;AAChB,UAAI,MAAM,QAAQ,OAAW,aAAY,UAAU,IAAI,OAAO,MAAM,GAAG,GAAG,EAAE,SAAS,oBAAoB,MAAM,GAAG,GAAG,CAAC;AACtH,UAAI,MAAM,QAAQ,OAAW,aAAY,UAAU,IAAI,OAAO,MAAM,GAAG,GAAG,EAAE,SAAS,oBAAoB,MAAM,GAAG,GAAG,CAAC;AACtH,eAAS;AAAA,IACX;AAEA,UAAM,aAAa,MAAM,eAAe,SAAS,MAAM,aAAa,SAAS,MAAM,SAAS;AAC5F,UAAM,kBAAkB,MAAM,YAAY,SAAS,CAAC,MAAM;AAC1D,UAAM,kBAAkB,MAAM,SAAS;AAIvC,QAAI,cAAc,mBAAmB,iBAAiB;AACpD,UAAI,aAAa,YAAY,kBAAkB,EAAE,WAAW;AAC1D,iBAAS,OAAO,IAAI,GAAG,EAAE,SAAS,yBAAyB,CAAC;AAAA,MAC9D,WAAW,aAAa,WAAW,kBAAkB,EAAE,UAAU;AAC/D,iBAAS,OAAO,IAAI,GAAG,EAAE,SAAS,oCAAoC,CAAC;AAAA,MACzE;AAAA,IACF;AAQA,UAAM,4BAA4B,MAAM,YAAY,KAAK,OAAK,EAAE,SAAS,OAAO;AAChF,SAAK,MAAM,cAAc,WAAW,MAAM,SAAS,YAAY,aAAa,YAAY,kBAAkB,EAAE,aAAa,CAAC,2BAA2B;AACnJ,eAAS,OAAO,OAAO,SAAO,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,SAAS;AAAA,QACrF,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAGA,QAAI,MAAM,YAAY;AACpB,YAAM,WAAW,QAAQ,CAAC,MAAM;AAC9B,YAAI,EAAE,SAAS,WAAW,EAAE,OAAO;AACjC,cAAI;AACF,kBAAM,QAAQ,IAAI,OAAO,EAAE,KAAK;AAChC,gBAAI,aAAa,UAAU;AACzB,uBAAS,OAAO,OAAO,CAAC,QAAa,QAAQ,MAAM,MAAM,KAAK,GAAG,GAAG;AAAA,gBAClE,SAAS,EAAE,QAAQ;AAAA,cACrB,CAAC;AAAA,YACH;AAAA,UACF,SAAS,GAAG;AACV,oBAAQ,KAAK,mCAAmC,MAAM,IAAI,KAAK,EAAE,KAAK;AAAA,UACxE;AAAA,QACF;AACA,YAAI,EAAE,SAAS,WAAW,aAAa,UAAU;AAC/C,mBAAS,OAAO,OAAO,CAAC,QAAa,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,SAAS;AAAA,YAC5F,SAAS,EAAE,QAAQ;AAAA,UACrB,CAAC;AAAA,QACH;AACA,YAAI,EAAE,SAAS,aAAa,kBAAkB,EAAE,WAAW;AACzD,cAAI,YAAY;AAChB,cAAI,EAAE,aAAa,OAAW,aAAY,UAAU,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACvF,cAAI,EAAE,aAAa,OAAW,aAAY,UAAU,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACvF,mBAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AAIA,QAAI,EAAE,cAAc,mBAAmB,kBAAkB;AACvD,UAAI,aAAa,UAAU;AACzB,iBAAS,OAAO,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAAA,MAC1D,WAAW,aAAa,SAAS;AAC/B,iBAAS,OAAO,SAAS;AAAA,MAC3B,WAAW,aAAa,WAAW;AACjC,iBAAS,OAAO,SAAS;AAAA,MAC3B,WAAW,aAAa,UAAU;AAChC,iBAAS,OAAO,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAAA,MAC7C;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,IAAI;AAAA,EACtB,CAAC;AAGD,QAAM,gBAAgB,sBAAsB,cAAc,UAAU;AAGpE,QAAM,QAAmB,MAAM,IAAI,CAAC,MAAM,QAAQ;AAChD,UAAM,aAAa,kBAAkB,MAAM,SAAS;AAEpD,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OAAO,KAAK,SAAS;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB,QAAQ;AAAA,MACR,sBAAsB,KAAK,wBAAwB;AAAA,MACnD,QAAQ,KAAK;AAAA,IACf;AAAA,EACF,CAAC;AAGD,QAAM,aAAa,EAAE,OAAO,KAAK;AACjC,QAAM,YAAY,0BAA0B,YAAY,YAAY;AAEpE,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,aAAa,OAAO,eAAe;AAAA,IACnC;AAAA,IACA,cAAc,OAAO;AAAA,EACvB;AACF;AAKO,SAAS,cAAc,MAAe,YAA+B;AAC1E,QAAM,iBAAiB,KAAK,OAAO,IAAI,OAAK,EAAE,IAAI;AAClD,QAAM,YAA0C,CAAC;AAGjD,MAAI;AAEJ,MAAI,sBAAsB,EAAE,WAAW;AACrC,cAAU;AAAA,EACZ,WAAW,cAAc,OAAO,eAAe,YAAY,gBAAgB,YAAY;AACrF,cAAU,WAAW;AAAA,EACvB,WAAW,cAAc,UAAU,cAAc,WAAW,KAAK,kBAAkB,EAAE,WAAW;AAE9F,cAAU,WAAW,KAAK;AAAA,EAC5B;AAEA,MAAI,CAAC,SAAS;AACZ,YAAQ,KAAK,uEAAuE;AACpF,WAAO,EAAE,OAAO,CAAC,CAAC;AAAA,EACpB;AAEA,QAAM,QAAQ,QAAQ;AACtB,QAAM,aAA8B,CAAC;AAErC,iBAAe,QAAQ,UAAQ;AAC7B,QAAI,QAAQ,OAAO;AACjB,gBAAU,IAAI,IAAI,MAAM,IAAI;AAE5B,YAAM,WAAW,KAAK,OAAO,KAAK,OAAK,EAAE,SAAS,IAAI;AACtD,UAAI,SAAU,YAAW,KAAK,QAAQ;AAAA,IACxC;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,EAAE,OAAO,SAAS;AACzC,SAAO,0BAA0B,gBAAgB,UAAU;AAC7D;AAKO,SAAS,qBACd,MACA,aACqB;AACrB,QAAM,eAAoC,CAAC;AAE3C,OAAK,OAAO,QAAQ,WAAS;AAC3B,QAAI,MAAM,QAAQ,aAAa;AAC7B,mBAAa,MAAM,IAAI,IAAI,YAAY,MAAM,IAAI;AAAA,IACnD;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ACpTA,OAAO,eAAgC;AACvC,OAAO,gBAAgB;;;ACjBvB;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,eAAiB;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,aAAe;AAAA,IACjB;AAAA,IACA,aAAe;AAAA,MACb,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,cAAgB;AAAA,MACd,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,sBAAwB;AAAA,QACtB,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC,cAAc,UAAU,OAAO;AAAA,EAC5C,aAAe;AAAA,IACb,UAAY;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,IAAM;AAAA,UACJ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ,EAAE,MAAQ,UAAU,aAAe,wCAAwC;AAAA,MACrF;AAAA,MACA,UAAY,CAAC,MAAM,MAAM;AAAA,IAC3B;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,OAAS,EAAE,MAAQ,UAAU,aAAe,+CAA+C;AAAA,QAC3F,MAAQ,EAAE,MAAQ,UAAU,aAAe,+BAA+B;AAAA,MAC5E;AAAA,MACA,UAAY,CAAC,SAAS,MAAM;AAAA,IAC9B;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,MAAQ,CAAC,SAAS,SAAS,WAAW,QAAQ,cAAc,eAAe,QAAQ;AAAA,UACnF,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ,EAAE,MAAQ,UAAU,aAAe,iDAAiD;AAAA,QAC5F,OAAS,EAAE,MAAQ,UAAU,aAAe,8CAA8C;AAAA,QAC1F,UAAY,EAAE,MAAQ,UAAU,aAAe,2CAA2C;AAAA,QAC1F,UAAY,EAAE,MAAQ,UAAU,aAAe,2CAA2C;AAAA,QAC1F,WAAa,EAAE,MAAQ,WAAW,aAAe,sCAAsC;AAAA,QACvF,WAAa,EAAE,MAAQ,WAAW,aAAe,sCAAsC;AAAA,QACvF,UAAY,EAAE,MAAQ,WAAW,aAAe,iDAAiD;AAAA,QACjG,UAAY,EAAE,MAAQ,WAAW,aAAe,iDAAiD;AAAA,QACjG,YAAc,EAAE,MAAQ,UAAU,aAAe,4CAA4C;AAAA,QAC7F,WAAa,EAAE,MAAQ,UAAU,aAAe,0DAA0D;AAAA,MAC5G;AAAA,MACA,UAAY,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,MAAQ,CAAC,QAAQ,UAAU,SAAS,QAAQ,YAAY,YAAY,WAAW,WAAW,cAAc,SAAS,QAAQ,QAAQ;AAAA,UACjI,aAAe;AAAA,QACjB;AAAA,QACA,WAAa;AAAA,UACX,MAAQ;AAAA,UACR,MAAQ,CAAC,QAAQ,UAAU,OAAO,QAAQ,SAAS,YAAY,KAAK;AAAA,UACpE,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,WAAa,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,2BAA2B;AAAA,QACxF,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,0CAA0C;AAAA,QACjG,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,GAAG,aAAe,0CAA0C;AAAA,QACjG,MAAQ,EAAE,MAAQ,UAAU,aAAe,yCAAyC;AAAA,QACpF,MAAQ,EAAE,MAAQ,UAAU,aAAe,oCAAoC;AAAA,QAC/E,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,uBAAuB;AAAA,QAC5C;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,0BAA0B;AAAA,QAC/C;AAAA,QACA,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,WAAa;AAAA,UACX,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,cAAgB;AAAA,UACd,MAAQ,CAAC,UAAU,UAAU,WAAW,OAAO;AAAA,UAC/C,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA,eAAiB;AAAA,UACf,MAAQ;AAAA,UACR,MAAQ,CAAC,WAAW,OAAO,UAAU,QAAQ,QAAQ;AAAA,UACrD,aAAe;AAAA,QACjB;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,SAAS;AAAA,QAC9B;AAAA,QACA,uBAAyB;AAAA,UACvB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,MACF;AAAA,MACA,UAAY,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,gBAAkB;AAAA,MAChB,aAAe;AAAA,MACf,OAAS;AAAA,QACP;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,QACjB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,YAAc;AAAA,YACZ,KAAO,EAAE,MAAQ,UAAU,aAAe,6CAA6C;AAAA,YACvF,aAAe,EAAE,MAAQ,UAAU,aAAe,sCAAsC;AAAA,YACxF,MAAQ,EAAE,MAAQ,UAAU,aAAe,qCAAqC;AAAA,YAChF,cAAgB,EAAE,MAAQ,CAAC,UAAU,UAAU,WAAW,OAAO,EAAE;AAAA,YACnE,UAAY,EAAE,MAAQ,UAAU;AAAA,YAChC,SAAW,EAAE,MAAQ,UAAU;AAAA,YAC/B,WAAa,EAAE,MAAQ,SAAS;AAAA,YAChC,UAAY,EAAE,MAAQ,UAAU;AAAA,YAChC,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,EAAE;AAAA,YACvC,KAAO,EAAE,MAAQ,CAAC,WAAW,QAAQ,EAAE;AAAA,YACvC,SAAW,EAAE,MAAQ,SAAS,OAAS,EAAE,MAAQ,uBAAuB,EAAE;AAAA,UAC5E;AAAA,UACA,UAAY,CAAC,KAAK;AAAA,QACpB;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,YAAc;AAAA,YACZ,YAAc;AAAA,cACZ,OAAS;AAAA,gBACP,EAAE,MAAQ,0BAA0B;AAAA,gBACpC;AAAA,kBACE,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,MAAQ,EAAE,MAAQ,SAAS;AAAA,kBAC7B;AAAA,kBACA,UAAY,CAAC,MAAM;AAAA,gBACrB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA,UAAY,CAAC,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,YAAc;AAAA,QACZ,IAAM,EAAE,MAAQ,UAAU,aAAe,yBAAyB;AAAA,QAClE,OAAS,EAAE,MAAQ,UAAU,aAAe,+BAA+B;AAAA,QAC3E,aAAe,EAAE,MAAQ,UAAU,aAAe,4CAA4C;AAAA,QAC9F,SAAW,EAAE,MAAQ,WAAW,SAAW,OAAO,aAAe,yBAAyB;AAAA,QAC1F,iBAAmB,EAAE,MAAQ,WAAW,SAAW,OAAO,aAAe,0BAA0B;AAAA,QACnG,sBAAwB;AAAA,UACtB,MAAQ;AAAA,UACR,SAAW;AAAA,UACX,aAAe;AAAA,QACjB;AAAA,QACA,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,MAAQ,CAAC,WAAW,QAAQ,UAAU;AAAA,UACtC,aAAe;AAAA,QACjB;AAAA,QACA,QAAU;AAAA,UACR,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,OAAS,EAAE,MAAQ,+BAA+B;AAAA,QACpD;AAAA,MACF;AAAA,MACA,UAAY,CAAC,MAAM,QAAQ;AAAA,IAC7B;AAAA,EACF;AACF;;;ADpPA,IAAM,MAAO,UAAkB,WAAW;AAC1C,IAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AAGtD,IAAM,eAAgB,WAAmB,WAAW;AACpD,aAAa,GAAG;AAGhB,IAAI,UAAU,6BAAmB,0BAA0B;AAWpD,SAAS,mBAAmB,MAAiC;AAClE,QAAM,WAAW,IAAI,UAAU,0BAA0B;AACzD,MAAI,CAAC,UAAU;AACb,WAAO,EAAE,OAAO,OAAO,SAAS,qCAAqC;AAAA,EACvE;AAEA,QAAM,QAAQ,SAAS,IAAI;AAC3B,SAAO;AAAA,IACL,OAAO,CAAC,CAAC;AAAA,IACT,QAAQ,SAAS,UAAU;AAAA,EAC7B;AACF;AAIO,SAAS,iBAAiB,MAAiC;AAChE,SAAO,mBAAmB,IAAI;AAChC;AAGO,SAAS,oBAAoB,MAAiC;AACnE,SAAO,mBAAmB,IAAI;AAChC;;;AE9CO,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,IAAqB,MAAc;AAC7C,SAAK,MAAM,OAAO,EAAE;AACpB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAI,KAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,KAAK,OAAe;AACtB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AACF;;;ACzBO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,aAAU;AAdA,SAAAA;AAAA,GAAA;AAiDZ,SAAS,YAAY,OAA0B;AAC7C,QAAM,UAAqC;AAAA,IACzC,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,yBAAkB,GAAG;AAAA,IACtB,CAAC,uBAAiB,GAAG;AAAA,IACrB,CAAC,yBAAkB,GAAG;AAAA,IACtB,CAAC,6BAAoB,GAAG;AAAA,IACxB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,iBAAc,GAAG;AAAA,IAClB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,qBAAgB,GAAG;AAAA,IACpB,CAAC,mBAAe,GAAG;AAAA,IACnB,CAAC,uBAAiB,GAAG;AAAA,IACrB,CAAC,mBAAe,GAAG;AAAA,EACrB;AACA,SAAO,QAAQ,KAAK,KAAK;AAC3B;AAEA,IAA8B,YAA9B,MAAwC;AAAA,EAGtC,YAAY,MAAc,aAAqB,MAAc,UAAkB;AAC7E,SAAK,cAAc;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,aAAmC;AACnD,QAAI,CAAC,YAAY,MAAM;AACrB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,CAAC,YAAY,eAAe,CAAC,YAAY,UAAU;AACrD,YAAM,IAAI;AAAA,QACR,0BAA0B,YAAY,IAAI;AAAA,MAC5C;AAAA,IACF;AAEA,UAAM,iBAAiB,YAAY,YAAY,IAAc;AAC7D,QAAI,mBAAmB,yBAAmB;AACxC,YAAM,IAAI;AAAA,QACR,IAAI,YAAY,IAAI,4CAA4C,YAAY,IAAI;AAAA,MAClF;AAAA,IACF;AAEA,QACE,YAAY,WACZ,CAAC,CAAC,YAAY,YAAY,cAAc,QAAQ,EAAE,SAAS,YAAY,IAAc,GACrF;AAAA,IAEF;AAEA,QAAI,YAAY,SAAS,cAAc,CAAC,YAAY,SAAS;AAC3D,YAAM,IAAI;AAAA,QACR,0BAA0B,YAAY,IAAI;AAAA,MAC5C;AAAA,IACF;AAEA,QAAI;AACJ,QAAI,YAAY,SAAS,QAAQ;AAC/B,cAAQ,IAAI;AAAA,QACV,YAAY;AAAA,QACZ,YAAY,eAAe,YAAY;AAAA,QACvC,YAAY;AAAA,QACZ,OAAO,YAAY,QAAQ;AAAA,QAC3B,YAAY,oBAAoB,CAAC;AAAA,MACnC;AAAA,IACF,OAAO;AACL,cAAQ,IAAI;AAAA,QACV,YAAY;AAAA,QACZ,YAAY,eAAe,YAAY;AAAA,QACvC,YAAY,QAAQ;AAAA,QACpB,OAAO,YAAY,QAAQ;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,cAAc,EAAE,GAAG,YAAY;AACrC,UAAM,YAAY,WAAW,OAAO,MAAM,YAAY,QAAQ;AAG9D,WAAQ,MAAM,YAAoB;AAElC,WAAO;AAAA,EACT;AAAA,EAIU,YAAY,KAAe;AACnC,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO;AAE9C,QAAI,SAAS;AACb,QAAI,OAAO,IAAI,WAAW,cAAc,QAAQ,MAAM;AACpD,eAAS,IAAI,OAAO;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,IAAI,CAAC,MAAY,OAAO,MAAM,WAAW,KAAK,YAAY,CAAC,IAAI,CAAE;AAAA,IACjF;AAEA,QAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,UAAM,UAAe,CAAC;AACtB,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IAAI;AACzD,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,GAAG,IAAI,KAAK,YAAY,KAAK;AAAA,QACvC,OAAO;AACL,kBAAQ,GAAG,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,YAAY,EAAE,GAAG,KAAK,YAAY,CAAC;AAAA,EACjD;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK,YAAY,eAAe,KAAK,YAAY,QAAQ;AAAA,EAClE;AAAA,EAEA,IAAI,YAAY,gBAAwB;AACtC,SAAK,YAAY,cAAc;AAAA,EACjC;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,YAAY,QAAQ;AAAA,EAClC;AAAA,EAEA,IAAI,OAAkB;AACpB,WAAO,YAAY,KAAK,YAAY,IAAc;AAAA,EACpD;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK,YAAY,aAAa;AAAA,EACvC;AAAA,EAEA,IAAI,aAAqB;AACvB,WAAO,OAAO,KAAK,YAAY,YAAY,EAAE;AAAA,EAC/C;AAAA,EAEA,IAAI,WAAW,YAAoB;AACjC,SAAK,YAAY,WAAW;AAAA,EAC9B;AAAA,EAEA,IAAI,eAAoB;AACtB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAa,OAAY;AAC3B,SAAK,YAAY,eAAe;AAAA,EAClC;AAAA,EAEA,IAAI,cAAkC;AACpC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAsC;AACxC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,UAAoB;AACtB,WAAQ,KAAK,YAAY,WAAwB,CAAC;AAAA,EACpD;AAAA,EAEA,IAAI,QAAQ,SAAmB;AAC7B,SAAK,YAAY,UAAU;AAAA,EAC7B;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,YAAY,WAAW;AAAA,EACrC;AAAA,EAEA,IAAI,YAAgC;AAClC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAI,aAAsB;AACxB,WAAO,KAAK,YAAY,YAAY,KAAK,YAAY,cAAc;AAAA,EACrE;AAAA,EAEA,IAAI,mBAA4B;AAC9B,WAAO,KAAK,YAAY,oBAAoB;AAAA,EAC9C;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO,KAAK,YAAY,yBAAyB;AAAA,EACnD;AAAA,EAEA,IAAI,YAAgC;AAClC,WAAO,OAAO,KAAK,YAAY,cAAc,WACzC,OAAO,SAAS,KAAK,YAAY,SAAS,IAC1C,KAAK,YAAY;AAAA,EACvB;AAAA,EAEA,IAAI,MAA0B;AAC5B,WAAO,OAAO,KAAK,YAAY,QAAQ,WACnC,OAAO,WAAW,KAAK,YAAY,GAAG,IACtC,KAAK,YAAY;AAAA,EACvB;AAAA,EAEA,IAAI,MAA0B;AAC5B,WAAO,OAAO,KAAK,YAAY,QAAQ,WACnC,OAAO,WAAW,KAAK,YAAY,GAAG,IACtC,KAAK,YAAY;AAAA,EACvB;AACF;AAEO,IAAM,iBAAN,cAA6B,UAAU;AAAA,EAC5C,YAAY,MAAc,aAAqB,MAAc,UAAkB;AAC7E,UAAM,MAAM,aAAa,MAAM,QAAQ;AAAA,EACzC;AAAA,EAEA,gBAA0B;AACxB,QAAI,KAAK,YAAY,0BAA0B,OAAO;AACpD,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,CAAC,KAAK,YAAY,IAAK;AAAA,EAChC;AACF;AAEO,IAAM,gBAAN,cAA4B,UAAU;AAAA,EAC3C,YACE,MACA,aACA,MACA,UACA,kBACA;AACA,UAAM,MAAM,aAAa,MAAM,QAAQ;AACvC,SAAK,YAAY,mBAAmB;AAAA,EACtC;AAAA,EAEA,gBAA0B;AACxB,QAAI,KAAK,YAAY,0BAA0B,OAAO;AACpD,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,oBAAoB,CAAC;AAAA,EAC/C;AACF;;;ACtSA,OAAO,YAAY;AAEZ,IAAM,YAAN,MAAM,UAAS;AAAA,EAQpB,YACE,aACA,YACA,QACA,QAAsB,CAAC,GACvB,cACA,gBAAwB,UAAS,2BACjC;AAdF,SAAQ,cAAmC,CAAC;AAC5C,SAAQ,UAAuB,CAAC;AAIhC,SAAQ,SAAuB,CAAC;AAU9B,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,SAAK,cAAc;AACnB,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAKA,IAAI,aAAuB;AACzB,QAAI,QAAkB,CAAC;AAEvB,SAAK,OAAO,QAAQ,CAAC,UAAU;AAC7B,cAAQ,MAAM,OAAO,MAAM,cAAc,CAAC;AAAA,IAC5C,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,gBAAwB;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,kBAA2B;AAC7B,WAAO,OAAO,GAAG,KAAK,gBAAgB,UAAS,yBAAyB;AAAA,EAC1E;AAAA,EAEA,cAAoB;AAClB,SAAK,iBAAiB,UAAS;AAAA,EACjC;AAAA,EAEA,IAAI,cAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAY,gBAAwB;AACtC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,IAAI,eAAmC;AACrC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,aAAa,OAA2B;AAC1C,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,IAAI,aAAkC;AACpC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,WAAW,YAAiC;AAC9C,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,IAAI,SAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAO,QAAqB;AAC9B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,QAAsB;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,MAAM,OAAqB;AAC7B,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS,OAAwB;AAC/B,SAAK,QAAQ,KAAK,KAAK;AAAA,EACzB;AAAA,EAEA,YAAY,OAAwB;AAClC,UAAM,QAAQ,KAAK,QAAQ,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AACjE,QAAI,UAAU,IAAI;AAChB,WAAK,QAAQ,KAAK,IAAI;AAAA,IACxB,OAAO;AACL,YAAM,IAAI;AAAA,QACR,GAAG,MAAM,IAAI,4BAA4B,KAAK,YAAY,kBAAkB,MAAM,IAAI;AAAA,MACxF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAY,WAAyB;AACnC,UAAM,aAAa,KAAK,QAAQ,UAAU,CAAC,MAAM,EAAE,SAAS,SAAS;AACrE,QAAI,eAAe,IAAI;AACrB,WAAK,QAAQ,OAAO,YAAY,CAAC;AAEjC,WAAK,OAAO,QAAQ,CAAC,SAAS;AAC5B,aAAK,SAAS,KAAK,OAAO,OAAO,CAAC,aAAa;AAC7C,cAAI;AACJ,cAAI,OAAO,aAAa,UAAU;AAChC,sBAAU;AAAA,UACZ,WAAW,SAAS,UAAU;AAC5B,sBAAU,SAAS;AAAA,UACrB,WAAW,gBAAgB,UAAU;AACnC,sBAAU,SAAS,WAAW;AAAA,UAChC;AACA,iBAAO,YAAY;AAAA,QACrB,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,oBAAoB,cAAmC;AACrD,UAAM,gBAAgB,KAAK,WAAW,KAAK,CAAC,aAAa,SAAS,SAAS,YAAY;AAEvF,QAAI,CAAC,eAAe;AAClB,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,KAAK,QAAQ,OAAO,CAAC,UAAU,MAAM,eAAe,cAAc,EAAE;AAAA,EAC7E;AAAA,EAEA,WAA+C;AAC7C,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,SAAS,mBAAmB,MAAM;AACxC,UAAM,SAAgB,CAAC;AAEvB,QAAI,OAAO,QAAQ;AACjB,aAAO,OAAO,QAAQ,CAAC,QAAa;AAClC,YAAI,OAAO,IAAI,gBAAgB,IAAI,YAAY;AAC/C,eAAO,KAAK,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,GAAG;AACjD,cAAM,SAAS,OAAO,GAAG,IAAI,OAAO;AACpC,eAAO,KAAK;AAAA,UACV,SAAS,GAAG,MAAM,GAAG,IAAI,OAAO;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,KAAK,gBAAgB,KAAK,aAAa,KAAK,MAAM,IAAI;AACzD,aAAO,KAAK;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAEA,UAAM,cAAc,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,CAAC,CAAC;AACrE,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,UAAI,MAAM,cAAc,CAAC,YAAY,IAAI,OAAO,MAAM,UAAU,CAAC,GAAG;AAClE,eAAO,KAAK;AAAA,UACV,SAAS,UAAU,MAAM,IAAI,gDAAgD,MAAM,UAAU;AAAA,UAC7F,MAAM,UAAU,MAAM,IAAI;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,aAAa,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1D,SAAK,OAAO,QAAQ,CAAC,MAAM,cAAc;AACvC,WAAK,OAAO,QAAQ,CAAC,UAAU,eAAe;AAC5C,YAAI;AACJ,YAAI,OAAO,aAAa,UAAU;AAChC,oBAAU;AAAA,QACZ,WAAW,YAAa,SAAiB,KAAK;AAC5C,oBAAW,SAAiB;AAAA,QAC9B,WAAW,YAAa,SAAiB,YAAY;AACnD,oBAAW,SAAiB,WAAW;AAAA,QACzC;AAEA,YAAI,WAAW,CAAC,WAAW,IAAI,OAAO,GAAG;AACvC,iBAAO,KAAK;AAAA,YACV,SAAS,SAAS,SAAS,WAAW,UAAU,oCAAoC,OAAO;AAAA,YAC3F,MAAM,SAAS,SAAS,WAAW,UAAU;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,WAAO;AAAA,MACL,OAAO,OAAO,SAAS,OAAO,YAAY,OAAO,QAAQ,UAAU;AAAA,MACnE,QAAQ,OAAO,SAAS,IAAI,SAAS;AAAA,IACvC;AAAA,EACF;AAAA,EAEQ,YAAY,KAAe;AACjC,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO;AAE9C,QAAI,SAAS;AACb,QAAI,OAAO,IAAI,WAAW,cAAc,QAAQ,MAAM;AACpD,eAAS,IAAI,OAAO;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,IAAI,CAAC,MAAY,OAAO,MAAM,WAAW,KAAK,YAAY,CAAC,IAAI,CAAE;AAAA,IACjF;AAEA,QAAI,OAAO,WAAW,SAAU,QAAO;AAEvC,UAAM,UAAe,CAAC;AACtB,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IAAI;AACzD,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,GAAG,IAAI,KAAK,YAAY,KAAK;AAAA,QACvC,OAAO;AACL,kBAAQ,GAAG,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,SAAiB;AACf,UAAM,YAAiC,CAAC;AACxC,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,gBAAU,MAAM,IAAI,IAAI,MAAM,OAAO;AACrC,aAAO,UAAU,MAAM,IAAI,EAAE;AAAA,IAC/B,CAAC;AAED,WAAO,KAAK,YAAY;AAAA,MACtB,SACE;AAAA,MACF,eAAe,KAAK;AAAA,MACpB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,QAAQ;AAAA,MACR,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,SAAS,YAA8B;AAC5C,QAAI;AACJ,QAAI;AACF,iBAAW,KAAK,MAAM,UAAU;AAAA,IAClC,SAAS,OAAO;AACd,cAAQ,MAAM,gDAAgD,UAAU,EAAE;AAC1E,YAAM;AAAA,IACR;AAEA,QAAI,CAAC,SAAS,eAAe;AAC3B,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAEA,QAAI,OAAO,GAAG,SAAS,eAAe,UAAS,yBAAyB,GAAG;AACzE,YAAM,IAAI;AAAA,QACR,2DAA2D,SAAS,aAAa,kCAAkC,UAAS,yBAAyB;AAAA,MACvJ;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,aAAa;AACzB,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACnE;AAEA,QAAI,CAAC,SAAS,YAAY;AACxB,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AAEA,QAAI,CAAC,SAAS,QAAQ;AACpB,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,QAAI,CAAC,SAAS,SAAS,SAAS,MAAM,WAAW,GAAG;AAClD,UAAI,OAAO,UAAU,SAAS,eAAe,SAAS,GAAG;AACvD,gBAAQ;AAAA,UACN,mBAAmB,SAAS,WAAW;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAEA,QAAI,eAA4B,CAAC;AACjC,QAAI,MAAM,QAAQ,SAAS,MAAM,GAAG;AAClC,qBAAe,SAAS;AAAA,IAC1B,WAAW,OAAO,SAAS,WAAW,YAAY,SAAS,WAAW,MAAM;AAC1E,qBAAe,OAAO,QAAQ,SAAS,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAqB;AAClF,eAAO;AAAA,UACL;AAAA,UACA,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,IACH;AAEA,iBAAa,QAAQ,CAAC,MAAW;AAC/B,UAAI,EAAE,cAAc,CAAC,EAAE,UAAU;AAC/B,UAAE,WAAW,OAAO,EAAE,UAAU;AAAA,MAClC,WAAW,EAAE,UAAU;AACrB,UAAE,WAAW,OAAO,EAAE,QAAQ;AAAA,MAChC;AAAA,IACF,CAAC;AAED,UAAM,cAAc,SAAS,cAAc,CAAC,GAAG,IAAI,CAAC,QAAa;AAC/D,aAAO,IAAI,kBAAkB,OAAO,IAAI,EAAE,GAAG,IAAI,IAAI;AAAA,IACvD,CAAC;AAED,UAAM,SAAsB,aAAa,IAAI,CAAC,gBAAgB;AAC5D,aAAO,UAAU,WAAW,WAAW;AAAA,IACzC,CAAC;AAED,QAAI,QAAQ,SAAS,SAAS,CAAC;AAC/B,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,gBAA0C,CAAC;AACjD,aAAO,QAAQ,CAAC,MAAM;AACpB,cAAM,QAAQ,EAAE;AAChB,YAAI,CAAC,cAAc,KAAK,GAAG;AACzB,wBAAc,KAAK,IAAI,CAAC;AAAA,QAC1B;AACA,sBAAc,KAAK,EAAE,KAAK,EAAE,IAAI;AAAA,MAClC,CAAC;AAED,cAAQ,WACL,IAAI,CAAC,SAA4B;AAAA,QAChC,IAAI,QAAQ,IAAI,EAAE;AAAA,QAClB,OAAO,IAAI;AAAA,QACX,QAAQ,cAAc,IAAI,EAAE,KAAK,CAAC;AAAA,MACpC,EAAE,EACD,OAAO,CAAC,MAAkB,EAAE,OAAO,SAAS,CAAC;AAAA,IAClD;AAEA,WAAO,IAAI;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAnVa,UAwBK,4BAA4B;AAxBjC,UAyBK,4BAA4B;AAzBvC,IAAM,WAAN;;;ACEA,IAAM,qBAAN,MAAoD;AAAA,EAQzD,YAAY,eAAgC;AAC1C,SAAK,KAAK,cAAc;AACxB,SAAK,cAAc,cAAc;AACjC,SAAK,QAAQ,cAAc;AAC3B,SAAK,cAAc,cAAc;AACjC,SAAK,aAAa,cAAc;AAChC,SAAK,aAAa,cAAc;AAAA,EAClC;AAAA,EAEA,SAAS,OAAqB;AAC5B,eAAW,aAAa,KAAK,YAAY;AACvC,cAAQ,UAAU,MAAM;AAAA,QACtB,KAAK;AACH,cAAI,CAAC,KAAK,gBAAgB,OAAO,UAAU,UAAU,UAAU,QAAQ,GAAG;AACxE,mBAAO;AAAA,UACT;AACA;AAAA,QACF,KAAK;AACH,cAAI,CAAC,KAAK,aAAa,OAAO,UAAU,WAAW,UAAU,SAAS,GAAG;AACvE,mBAAO;AAAA,UACT;AACA;AAAA,MACJ;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,OAAe,KAAc,KAAuB;AAC1E,QAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,QAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,WAAO;AAAA,EACT;AAAA,EAEQ,aAAa,OAAe,WAAoB,WAA6B;AACnF,QAAI,cAAc,UAAa,MAAM,SAAS,UAAW,QAAO;AAChE,QAAI,cAAc,UAAa,MAAM,SAAS,UAAW,QAAO;AAChE,WAAO;AAAA,EACT;AACF;;;ACtEA;AAAA,EACE,eAAiB;AAAA,EACjB,YAAc;AAAA,IACZ;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,IAAM;AAAA,MACN,MAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,QAAU;AAAA,IACR;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,aAAe;AAAA,MACf,YAAc;AAAA,MACd,aAAe;AAAA,MACf,WAAa;AAAA,MACb,WAAa;AAAA,MACb,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,SAAW;AAAA,MACX,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,eAAiB;AAAA,MACjB,aAAe;AAAA,MACf,SAAW;AAAA,QACT;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA;AAAA,U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A,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAA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,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA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CV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QA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AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,SAAW;AAAA,MACX,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,MAAQ;AAAA,MACR,WAAa;AAAA,MACb,KAAO;AAAA,MACP,KAAO;AAAA,MACP,YAAc;AAAA,QACZ;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,SAAW;AAAA,MACX,YAAc;AAAA,MACd,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,WAAa;AAAA,MACb,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,cAAgB;AAAA,MAChB,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,SAAW;AAAA,QACT;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,OAAS;AAAA,UACT,MAAQ;A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AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAY;AAAA,IACd;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QA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","names":["FieldType","IhsValueFormat","FileFieldTableType","Role"]}
|