@oxog/vld 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/LICENSE +20 -20
- package/README.md +2 -2
- package/dist/chunks/{bigint-DgsCr2dC.js → bigint-CRS0QVsy.js} +147 -2
- package/dist/chunks/bigint-CRS0QVsy.js.map +1 -0
- package/dist/chunks/{date-ODue_rtq.js → date-50JV_Mfj.js} +2 -2
- package/dist/chunks/{date-ODue_rtq.js.map → date-50JV_Mfj.js.map} +1 -1
- package/dist/chunks/{index-CETyGkrv.js → index-DO8CFMxD.js} +4 -4
- package/dist/chunks/index-DO8CFMxD.js.map +1 -0
- package/dist/chunks/{json-o20GFhTh.js → json-Cp4WO0M9.js} +4 -4
- package/dist/chunks/json-Cp4WO0M9.js.map +1 -0
- package/dist/chunks/{unknown-SLIH1VCf.js → unknown-Dhzri_T-.js} +2 -2
- package/dist/chunks/unknown-Dhzri_T-.js.map +1 -0
- package/dist/cjs/index.cjs +777 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/locales/index.cjs.map +1 -1
- package/dist/cjs/mini.cjs +145 -0
- package/dist/cjs/mini.cjs.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/codecs/index.js +3 -3
- package/dist/coercion/index.js +2 -2
- package/dist/coercion/index.js.map +1 -1
- package/dist/index.d.ts +244 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +550 -11
- package/dist/index.js.map +1 -1
- package/dist/mini.js +5 -5
- package/dist/utils/json-schema.d.ts +67 -0
- package/dist/utils/json-schema.d.ts.map +1 -0
- package/dist/validators/base.d.ts +79 -0
- package/dist/validators/base.d.ts.map +1 -1
- package/dist/validators/index.d.ts +3 -2
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +514 -4
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/number.d.ts +30 -0
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/promise.d.ts +53 -0
- package/dist/validators/promise.d.ts.map +1 -0
- package/dist/validators/string-formats.d.ts +6 -0
- package/dist/validators/string-formats.d.ts.map +1 -1
- package/package.json +6 -5
- package/dist/chunks/bigint-DgsCr2dC.js.map +0 -1
- package/dist/chunks/index-BZqWZvVe.js +0 -426
- package/dist/chunks/index-BZqWZvVe.js.map +0 -1
- package/dist/chunks/index-CETyGkrv.js.map +0 -1
- package/dist/chunks/json-o20GFhTh.js.map +0 -1
- package/dist/chunks/unknown-SLIH1VCf.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-o20GFhTh.js","sources":["../../src/validators/string-bool.ts","../../src/validators/array.ts","../../src/validators/enum.ts","../../src/validators/object.ts","../../src/validators/union.ts","../../src/validators/literal.ts","../../src/validators/symbol.ts","../../src/validators/tuple.ts","../../src/utils/security.ts","../../src/validators/record.ts","../../src/validators/set.ts","../../src/validators/map.ts","../../src/utils/deep-merge.ts","../../src/validators/intersection.ts","../../src/validators/any.ts","../../src/validators/void.ts","../../src/validators/never.ts","../../src/validators/null.ts","../../src/validators/undefined.ts","../../src/validators/nan.ts","../../src/validators/lazy.ts","../../src/validators/discriminated-union.ts","../../src/validators/xor.ts","../../src/validators/json.ts"],"sourcesContent":["import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Configuration for string boolean validation\r\n */\r\nexport interface StringBoolOptions {\r\n /** Custom truthy values (default: ['true', '1', 'yes', 'on', 'y', 'enabled']) */\r\n truthy?: readonly string[];\r\n /** Custom falsy values (default: ['false', '0', 'no', 'off', 'n', 'disabled']) */\r\n falsy?: readonly string[];\r\n /** Whether matching should be case-sensitive (default: false) */\r\n caseSensitive?: boolean;\r\n}\r\n\r\n/**\r\n * Default truthy and falsy value sets\r\n */\r\nconst DEFAULT_TRUTHY = ['true', '1', 'yes', 'on', 'y', 'enabled'] as const;\r\nconst DEFAULT_FALSY = ['false', '0', 'no', 'off', 'n', 'disabled'] as const;\r\n\r\n/**\r\n * Immutable string boolean validator for flexible boolean parsing\r\n * Supports string representations like \"true\", \"yes\", \"on\", \"1\", etc.\r\n */\r\nexport class VldStringBool extends VldBase<unknown, boolean> {\r\n private constructor(\r\n private readonly options: StringBoolOptions\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * Create a new string boolean validator\r\n */\r\n static create(options: StringBoolOptions = {}): VldStringBool {\r\n return new VldStringBool(options);\r\n }\r\n\r\n /**\r\n * Normalize a string value based on case sensitivity setting\r\n */\r\n private normalizeValue(value: string): string {\r\n return this.options.caseSensitive ? value : value.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get the effective truthy values (custom or default)\r\n */\r\n private getTruthyValues(): readonly string[] {\r\n return this.options.truthy ?? DEFAULT_TRUTHY;\r\n }\r\n\r\n /**\r\n * Get the effective falsy values (custom or default)\r\n */\r\n private getFalsyValues(): readonly string[] {\r\n return this.options.falsy ?? DEFAULT_FALSY;\r\n }\r\n\r\n /**\r\n * Parse and validate a string boolean value\r\n */\r\n parse(value: unknown): boolean {\r\n // First, ensure we have a string\r\n if (typeof value !== 'string') {\r\n // Also accept actual boolean values for convenience\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n throw new Error(\r\n getMessages().stringExpected(typeof value, 'string')\r\n );\r\n }\r\n\r\n const normalized = this.normalizeValue(value);\r\n const truthyValues = this.getTruthyValues();\r\n const falsyValues = this.getFalsyValues();\r\n\r\n // Normalize the value sets for comparison\r\n const normalizedTruthy = this.options.caseSensitive\r\n ? truthyValues\r\n : truthyValues.map(v => v.toLowerCase());\r\n\r\n const normalizedFalsy = this.options.caseSensitive\r\n ? falsyValues\r\n : falsyValues.map(v => v.toLowerCase());\r\n\r\n // Check if value is in truthy set\r\n if (normalizedTruthy.includes(normalized)) {\r\n return true;\r\n }\r\n\r\n // Check if value is in falsy set\r\n if (normalizedFalsy.includes(normalized)) {\r\n return false;\r\n }\r\n\r\n // Value is not recognized\r\n const allValidValues = [...normalizedTruthy, ...normalizedFalsy];\r\n throw new Error(\r\n getMessages().stringBoolExpected(\r\n this.options.caseSensitive ? allValidValues.join(', ') : allValidValues.join(', '),\r\n value\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Safely parse and validate a string boolean value\r\n */\r\n safeParse(value: unknown): ParseResult<boolean> {\r\n try {\r\n const result = this.parse(value);\r\n return { success: true, data: result };\r\n } catch (error) {\r\n return {\r\n success: false,\r\n error: error as Error\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Create a new validator with custom truthy values\r\n */\r\n withTruthy(values: readonly string[]): VldStringBool {\r\n return new VldStringBool({\r\n ...this.options,\r\n truthy: values\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with custom falsy values\r\n */\r\n withFalsy(values: readonly string[]): VldStringBool {\r\n return new VldStringBool({\r\n ...this.options,\r\n falsy: values\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with case-sensitive matching\r\n */\r\n caseSensitive(): VldStringBool {\r\n return new VldStringBool({\r\n ...this.options,\r\n caseSensitive: true\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with case-insensitive matching (default)\r\n */\r\n caseInsensitive(): VldStringBool {\r\n return new VldStringBool({\r\n ...this.options,\r\n caseSensitive: false\r\n });\r\n }\r\n}\r\n","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Configuration for array validator\r\n */\r\ninterface ArrayValidatorConfig<T> {\r\n readonly itemValidator: VldBase<unknown, T>;\r\n readonly minLength?: number;\r\n readonly maxLength?: number;\r\n readonly exactLength?: number;\r\n readonly unique?: boolean;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Immutable array validator with chainable methods\r\n */\r\nexport class VldArray<T> extends VldBase<unknown[], T[]> {\r\n private readonly config: ArrayValidatorConfig<T>;\r\n \r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(config: ArrayValidatorConfig<T>) {\r\n super();\r\n this.config = config;\r\n }\r\n \r\n /**\r\n * Create a new array validator\r\n */\r\n static create<T>(itemValidator: VldBase<unknown, T>): VldArray<T> {\r\n return new VldArray({ itemValidator });\r\n }\r\n \r\n /**\r\n * Parse and validate an array value\r\n */\r\n parse(value: unknown): T[] {\r\n if (!Array.isArray(value)) {\r\n throw new Error(this.config.errorMessage || getMessages().invalidArray);\r\n }\r\n \r\n // Validate length constraints\r\n if (this.config.exactLength !== undefined && value.length !== this.config.exactLength) {\r\n throw new Error(this.config.errorMessage || getMessages().arrayLength(this.config.exactLength));\r\n }\r\n \r\n if (this.config.minLength !== undefined && value.length < this.config.minLength) {\r\n throw new Error(this.config.errorMessage || getMessages().arrayMin(this.config.minLength));\r\n }\r\n \r\n if (this.config.maxLength !== undefined && value.length > this.config.maxLength) {\r\n throw new Error(this.config.errorMessage || getMessages().arrayMax(this.config.maxLength));\r\n }\r\n \r\n // Validate each item with optimized loop and safeParse\r\n const result: T[] = [];\r\n const length = value.length;\r\n \r\n for (let i = 0; i < length; i++) {\r\n const parseResult = this.config.itemValidator.safeParse(value[i]);\r\n if (!parseResult.success) {\r\n throw new Error(getMessages().arrayItem(i, parseResult.error.message));\r\n }\r\n result[i] = parseResult.data; // Direct assignment is faster than push\r\n }\r\n \r\n // Check uniqueness if required - optimized with Map-based approach\r\n if (this.config.unique) {\r\n this.checkUnique(result);\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Safely parse and validate an array value\r\n */\r\n safeParse(value: unknown): ParseResult<T[]> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n\r\n /**\r\n * Optimized uniqueness check using Map-based approach\r\n * Avoids repeated stableStringify calls by caching serialized values\r\n */\r\n private checkUnique(items: T[]): void {\r\n const seen = new Set<unknown>(); // Set of seen keys\r\n const objectKeys = new WeakMap<object, string>(); // Cache for object->string mappings\r\n\r\n for (const item of items) {\r\n let key: unknown;\r\n\r\n if (typeof item === 'object' && item !== null) {\r\n // Check if we've already serialized this object reference\r\n const cached = objectKeys.get(item);\r\n if (cached !== undefined) {\r\n key = cached;\r\n } else {\r\n // Serialize and cache\r\n const serialized = this.stableStringify(item);\r\n key = serialized;\r\n objectKeys.set(item, serialized);\r\n }\r\n } else {\r\n // Primitives can be used directly as keys\r\n key = item;\r\n }\r\n\r\n if (seen.has(key)) {\r\n throw new Error('Array must contain unique items');\r\n }\r\n seen.add(key);\r\n }\r\n }\r\n\r\n /**\r\n * Create a stable string representation of an object for hashing\r\n * Handles circular references and deep nesting gracefully\r\n * BUG-006 FIX: Added depth limit to prevent stack overflow\r\n * BUG-NEW-003 FIX: Fixed depth tracking to properly track recursion depth\r\n */\r\n private stableStringify(obj: any): string {\r\n const seen = new WeakSet();\r\n const MAX_DEPTH = 100; // Reasonable depth limit to prevent stack overflow\r\n\r\n // Helper function to sort keys and create stable representation\r\n const sortedStringify = (value: any, depth: number = 0): string => {\r\n // Check depth limit\r\n if (depth > MAX_DEPTH) {\r\n return '\"[Max Depth Exceeded]\"';\r\n }\r\n\r\n // Handle primitives\r\n if (value === null) return 'null';\r\n if (value === undefined) return 'undefined';\r\n if (typeof value !== 'object') return JSON.stringify(value);\r\n\r\n // Handle circular references\r\n if (seen.has(value)) {\r\n return '\"[Circular]\"';\r\n }\r\n\r\n seen.add(value);\r\n\r\n try {\r\n // Handle arrays\r\n if (Array.isArray(value)) {\r\n const items = value.map(item => sortedStringify(item, depth + 1));\r\n return `[${items.join(',')}]`;\r\n }\r\n\r\n // Handle objects - sort keys for stability\r\n const keys = Object.keys(value).sort();\r\n const pairs = keys.map(key => {\r\n const serializedKey = JSON.stringify(key);\r\n const serializedValue = sortedStringify(value[key], depth + 1);\r\n return `${serializedKey}:${serializedValue}`;\r\n });\r\n\r\n return `{${pairs.join(',')}}`;\r\n } finally {\r\n // Clean up seen set for this branch\r\n seen.delete(value);\r\n }\r\n };\r\n\r\n try {\r\n return sortedStringify(obj);\r\n } catch (error) {\r\n // Fallback to safe representation if stringify fails\r\n return String(obj);\r\n }\r\n }\r\n \r\n /**\r\n * Create a new validator with minimum length constraint\r\n */\r\n min(length: number, message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n minLength: length,\r\n errorMessage: message || getMessages().arrayMin(length)\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator with maximum length constraint\r\n */\r\n max(length: number, message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n maxLength: length,\r\n errorMessage: message || getMessages().arrayMax(length)\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator with exact length constraint\r\n */\r\n length(length: number, message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n exactLength: length,\r\n minLength: undefined,\r\n maxLength: undefined,\r\n errorMessage: message || getMessages().arrayLength(length)\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that ensures array is not empty\r\n */\r\n nonempty(message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n minLength: 1,\r\n errorMessage: message || getMessages().arrayEmpty\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that ensures array contains unique items\r\n */\r\n unique(message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n unique: true,\r\n errorMessage: message || 'Array must contain unique items'\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator with a range constraint for length\r\n */\r\n between(min: number, max: number, message?: string): VldArray<T> {\r\n return new VldArray({\r\n ...this.config,\r\n minLength: min,\r\n maxLength: max,\r\n errorMessage: message || `Array length must be between ${min} and ${max}`\r\n });\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable enum validator for string enum values\r\n */\r\nexport class VldEnum<T extends readonly [string, ...string[]]> extends VldBase<string, T[number]> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly _values: T,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * Get the enum values\r\n */\r\n get values(): T {\r\n return this._values;\r\n }\r\n \r\n /**\r\n * Create a new enum validator\r\n */\r\n static create<T extends readonly [string, ...string[]]>(values: T): VldEnum<T> {\r\n return new VldEnum(values);\r\n }\r\n \r\n /**\r\n * Parse and validate an enum value\r\n */\r\n parse(value: unknown): T[number] {\r\n // BUG-002 FIX: Add type check before includes() to prevent type confusion\r\n if (typeof value !== 'string') {\r\n throw new Error(\r\n this.errorMessage ||\r\n getMessages().enumExpected([...this._values], JSON.stringify(value))\r\n );\r\n }\r\n if (!this._values.includes(value)) {\r\n throw new Error(\r\n this.errorMessage ||\r\n getMessages().enumExpected([...this._values], JSON.stringify(value))\r\n );\r\n }\r\n return value as T[number];\r\n }\r\n\r\n /**\r\n * Safely parse and validate an enum value\r\n */\r\n safeParse(value: unknown): ParseResult<T[number]> {\r\n // BUG-002 FIX: Add type check before includes() to prevent type confusion\r\n if (typeof value !== 'string') {\r\n return {\r\n success: false,\r\n error: new Error(\r\n this.errorMessage ||\r\n getMessages().enumExpected([...this._values], JSON.stringify(value))\r\n )\r\n };\r\n }\r\n if (this._values.includes(value)) {\r\n return { success: true, data: value as T[number] };\r\n }\r\n return {\r\n success: false,\r\n error: new Error(\r\n this.errorMessage ||\r\n getMessages().enumExpected([...this._values], JSON.stringify(value))\r\n )\r\n };\r\n }\r\n\r\n /**\r\n * Exclude specific values from the enum\r\n * Creates a new enum validator without the specified values\r\n */\r\n exclude<const E extends readonly string[]>(...excludeValues: E): VldEnum<\r\n T[number] extends E[number] ? never : T[number] extends Exclude<T[number], E[number]> ? T : Exclude<T, E>\r\n > {\r\n const filtered = this._values.filter(v => !excludeValues.includes(v));\r\n if (filtered.length === 0) {\r\n throw new Error('Cannot exclude all enum values');\r\n }\r\n // Type assertion needed because TypeScript can't guarantee the filtered array maintains the required type\r\n return new VldEnum(filtered as any, this.errorMessage);\r\n }\r\n\r\n /**\r\n * Extract specific values from the enum\r\n * Creates a new enum validator with only the specified values\r\n */\r\n extract<const E extends readonly string[]>(...extractValues: E): VldEnum<[string, ...string[]]> {\r\n const extracted = this._values.filter(v => extractValues.includes(v));\r\n if (extracted.length === 0) {\r\n throw new Error('Cannot extract non-existent enum values');\r\n }\r\n // Type assertion needed because TypeScript can't guarantee the extracted array has the required type\r\n return new VldEnum(extracted as any, this.errorMessage);\r\n }\r\n}","import { VldBase, ParseResult, VldOptional } from './base';\r\nimport { getMessages } from '../locales';\r\nimport { VldString } from './string';\r\nimport { VldNumber } from './number';\r\nimport { VldBoolean } from './boolean';\r\nimport { VldDate } from './date';\r\nimport { VldEnum } from './enum';\r\nimport { VldCoerceString } from '../coercion/string';\r\nimport { VldCoerceNumber } from '../coercion/number';\r\nimport { VldCoerceBoolean } from '../coercion/boolean';\r\nimport { VldCoerceDate } from '../coercion/date';\r\n\r\n/**\r\n * Configuration for object validator\r\n */\r\ninterface ObjectValidatorConfig<T extends Record<string, any>> {\r\n readonly shape: { readonly [K in keyof T]: VldBase<unknown, T[K]> };\r\n readonly strict?: boolean;\r\n readonly passthrough?: boolean;\r\n readonly catchall?: VldBase<unknown, any>;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Optimized immutable object validator with chainable methods\r\n * Features pre-computed keys and Set-based lookups for better performance\r\n */\r\nexport class VldObject<T extends Record<string, any>> extends VldBase<unknown, T> {\r\n private readonly _config: ObjectValidatorConfig<T>;\r\n private readonly _shapeKeys: string[];\r\n private readonly _shapeKeysSet: Set<string>;\r\n\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(config: ObjectValidatorConfig<T>) {\r\n super();\r\n this._config = config;\r\n // Pre-compute shape keys for faster access\r\n this._shapeKeys = Object.keys(config.shape);\r\n this._shapeKeysSet = new Set(this._shapeKeys);\r\n }\r\n\r\n /**\r\n * Get the validator configuration\r\n * @internal Used by discriminated union validator\r\n */\r\n get config(): ObjectValidatorConfig<T> {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Get the shape keys array\r\n */\r\n get shapeKeys(): string[] {\r\n return this._shapeKeys;\r\n }\r\n\r\n /**\r\n * Get the shape keys set for O(1) lookups\r\n * @internal Used by discriminated union validator\r\n */\r\n get shapeKeysSet(): Set<string> {\r\n return this._shapeKeysSet;\r\n }\r\n \r\n /**\r\n * Create a new object validator\r\n */\r\n static create<T extends Record<string, any>>(\r\n shape: { [K in keyof T]: VldBase<unknown, T[K]> }\r\n ): VldObject<T> {\r\n return new VldObject({ shape });\r\n }\r\n \r\n /**\r\n * Parse and validate an object value\r\n * Ultra-optimized with inline type checks and minimal overhead\r\n */\r\n parse(value: unknown): T {\r\n // Fast type check\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n throw new Error(this._config.errorMessage || getMessages().invalidObject);\r\n }\r\n\r\n const obj = value as Record<string, unknown>;\r\n const result: any = {};\r\n\r\n // Ultra-optimized field validation with inline fast paths\r\n for (let i = 0; i < this._shapeKeys.length; i++) {\r\n const key = this._shapeKeys[i];\r\n const validator = this._config.shape[key];\r\n const fieldValue = obj[key];\r\n\r\n // BUG-NEW-002 FIX: Use instanceof instead of constructor.name\r\n // constructor.name breaks in minified builds where class names become 'a', 'b', etc.\r\n // instanceof checks are reliable regardless of minification\r\n //\r\n // Note: Coercion validators extend their base validators, so we need to check for\r\n // coercion types first (more specific) before checking base types\r\n\r\n // Check for coercion validators first - they need full safeParse for type conversion\r\n if (validator instanceof VldCoerceString ||\r\n validator instanceof VldCoerceNumber ||\r\n validator instanceof VldCoerceBoolean ||\r\n validator instanceof VldCoerceDate) {\r\n // Coercion validators need safeParse to handle type conversion\r\n const parseResult = validator.safeParse(fieldValue);\r\n if (!parseResult.success) {\r\n throw new Error(getMessages().objectField(key, parseResult.error.message));\r\n }\r\n result[key] = parseResult.data;\r\n } else if (validator instanceof VldString) {\r\n // For string with validations, use safeParse to handle email, regex etc.\r\n const parseResult = validator.safeParse(fieldValue);\r\n if (!parseResult.success) {\r\n throw new Error(getMessages().objectField(key, parseResult.error.message));\r\n }\r\n result[key] = parseResult.data;\r\n } else if (validator instanceof VldNumber) {\r\n if (typeof fieldValue !== 'number' || isNaN(fieldValue)) {\r\n throw new Error(getMessages().objectField(key, getMessages().invalidNumber));\r\n }\r\n result[key] = fieldValue;\r\n } else if (validator instanceof VldBoolean) {\r\n if (typeof fieldValue !== 'boolean') {\r\n throw new Error(getMessages().objectField(key, getMessages().invalidBoolean));\r\n }\r\n result[key] = fieldValue;\r\n } else if (validator instanceof VldDate) {\r\n // Use the actual validator for Date parsing (handles string conversion)\r\n const parseResult = validator.safeParse(fieldValue);\r\n if (!parseResult.success) {\r\n throw new Error(getMessages().objectField(key, parseResult.error.message));\r\n }\r\n result[key] = parseResult.data;\r\n } else {\r\n // Fallback to safeParse for complex validators\r\n const parseResult = validator.safeParse(fieldValue);\r\n if (!parseResult.success) {\r\n throw new Error(getMessages().objectField(key, parseResult.error.message));\r\n }\r\n result[key] = parseResult.data;\r\n }\r\n }\r\n \r\n // Handle strict/passthrough/catchall modes - optimized single Object.keys() call\r\n if (this._config.strict || this._config.passthrough || this._config.catchall) {\r\n const objKeys = Object.keys(obj);\r\n\r\n // Handle strict mode - optimized with Set\r\n if (this._config.strict) {\r\n const extraKeys: string[] = [];\r\n\r\n for (let i = 0; i < objKeys.length; i++) {\r\n if (!this._shapeKeysSet.has(objKeys[i])) {\r\n extraKeys.push(objKeys[i]);\r\n }\r\n }\r\n\r\n if (extraKeys.length > 0) {\r\n throw new Error(getMessages().unexpectedKeys(extraKeys));\r\n }\r\n }\r\n\r\n // Handle passthrough mode - optimized with comprehensive prototype pollution protection\r\n if (this._config.passthrough) {\r\n for (let i = 0; i < objKeys.length; i++) {\r\n const key = objKeys[i];\r\n // Skip dangerous keys to prevent prototype pollution\r\n if (!this._shapeKeysSet.has(key) && !this.isDangerousKey(key)) {\r\n result[key] = obj[key];\r\n }\r\n }\r\n }\r\n\r\n // Handle catchall - validate extra keys with catchall validator\r\n if (this._config.catchall) {\r\n for (let i = 0; i < objKeys.length; i++) {\r\n const key = objKeys[i];\r\n // Skip keys already in shape and dangerous keys\r\n if (!this._shapeKeysSet.has(key) && !this.isDangerousKey(key)) {\r\n result[key] = this._config.catchall.parse(obj[key]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result as T;\r\n }\r\n \r\n /**\r\n * Safely parse and validate an object value\r\n * Optimized version using pre-computed keys\r\n */\r\n safeParse(value: unknown): ParseResult<T> {\r\n // Fast type check\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n return {\r\n success: false,\r\n error: new Error(this._config.errorMessage || getMessages().invalidObject)\r\n };\r\n }\r\n\r\n const obj = value as Record<string, unknown>;\r\n const result: any = {};\r\n\r\n // Validate all fields\r\n for (let i = 0; i < this._shapeKeys.length; i++) {\r\n const key = this._shapeKeys[i];\r\n const validator = this._config.shape[key];\r\n const fieldValue = obj[key];\r\n\r\n const parseResult = validator.safeParse(fieldValue);\r\n\r\n if (parseResult.success) {\r\n result[key] = parseResult.data;\r\n } else {\r\n return {\r\n success: false,\r\n error: new Error(getMessages().objectField(key, parseResult.error.message))\r\n };\r\n }\r\n }\r\n\r\n // Handle strict/passthrough/catchall modes - optimized single Object.keys() call\r\n if (this._config.strict || this._config.passthrough || this._config.catchall) {\r\n const objKeys = Object.keys(obj);\r\n\r\n // Handle strict mode\r\n if (this._config.strict) {\r\n const extraKeys: string[] = [];\r\n\r\n for (let i = 0; i < objKeys.length; i++) {\r\n if (!this._shapeKeysSet.has(objKeys[i])) {\r\n extraKeys.push(objKeys[i]);\r\n }\r\n }\r\n\r\n if (extraKeys.length > 0) {\r\n return {\r\n success: false,\r\n error: new Error(getMessages().unexpectedKeys(extraKeys))\r\n };\r\n }\r\n }\r\n\r\n // Handle passthrough mode with comprehensive prototype pollution protection\r\n if (this._config.passthrough) {\r\n for (let i = 0; i < objKeys.length; i++) {\r\n const key = objKeys[i];\r\n // Skip dangerous keys to prevent prototype pollution\r\n if (!this._shapeKeysSet.has(key) && !this.isDangerousKey(key)) {\r\n result[key] = obj[key];\r\n }\r\n }\r\n }\r\n\r\n // Handle catchall - validate extra keys with catchall validator\r\n if (this._config.catchall) {\r\n for (let i = 0; i < objKeys.length; i++) {\r\n const key = objKeys[i];\r\n // Skip keys already in shape and dangerous keys\r\n if (!this._shapeKeysSet.has(key) && !this.isDangerousKey(key)) {\r\n const catchallResult = this._config.catchall.safeParse(obj[key]);\r\n if (!catchallResult.success) {\r\n return {\r\n success: false,\r\n error: new Error(getMessages().objectField(key, catchallResult.error.message))\r\n };\r\n }\r\n result[key] = catchallResult.data;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { success: true, data: result as T };\r\n }\r\n\r\n /**\r\n * Comprehensive prototype pollution protection\r\n * Checks for dangerous keys that could modify Object.prototype\r\n */\r\n private isDangerousKey(key: string): boolean {\r\n // Direct dangerous keys\r\n const directDangerousKeys = ['__proto__', 'constructor', 'prototype'];\r\n if (directDangerousKeys.includes(key)) {\r\n return true;\r\n }\r\n\r\n // Nested prototype manipulation vectors\r\n // These patterns could allow prototype pollution through nested access\r\n const nestedPatterns = [\r\n 'constructor.prototype',\r\n '__proto__.toString',\r\n 'prototype.constructor',\r\n '__defineGetter__',\r\n '__defineSetter__',\r\n '__lookupGetter__',\r\n '__lookupSetter__'\r\n ];\r\n\r\n // Check for nested patterns\r\n for (const pattern of nestedPatterns) {\r\n if (key.includes(pattern)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Check for property access chains that could lead to prototype pollution\r\n // This covers patterns like \"x.constructor.prototype.polluted\"\r\n const dangerousChains = [\r\n 'constructor.',\r\n '__proto__.',\r\n 'prototype.'\r\n ];\r\n\r\n for (const chain of dangerousChains) {\r\n if (key.includes(chain)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Additional protection: reject keys that could be used for property shadowing\r\n const shadowingPatterns = [\r\n 'hasOwnProperty',\r\n 'toString',\r\n 'valueOf',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable'\r\n ];\r\n\r\n for (const pattern of shadowingPatterns) {\r\n if (key === pattern || key.includes(`.${pattern}`)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n \r\n /**\r\n * Create a new validator in strict mode (no extra keys allowed)\r\n */\r\n strict(message?: string): VldObject<T> {\r\n return new VldObject({\r\n ...this._config,\r\n strict: true,\r\n passthrough: false,\r\n errorMessage: message\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator in passthrough mode (extra keys are preserved)\r\n */\r\n passthrough(): VldObject<T> {\r\n return new VldObject({\r\n ...this._config,\r\n strict: false,\r\n passthrough: true\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with all fields optional\r\n */\r\n partial(): VldObject<{ [K in keyof T]?: T[K] }> {\r\n const partialShape: any = {};\r\n for (const key in this._config.shape) {\r\n partialShape[key] = new VldOptional(this._config.shape[key]);\r\n }\r\n return new VldObject({\r\n ...this._config,\r\n shape: partialShape\r\n }) as any;\r\n }\r\n\r\n /**\r\n * Create a new validator with deep partial (nested objects also partial)\r\n */\r\n deepPartial(): VldObject<any> {\r\n const deepPartialShape: any = {};\r\n for (const key in this._config.shape) {\r\n const validator = this._config.shape[key];\r\n if (validator instanceof VldObject) {\r\n deepPartialShape[key] = new VldOptional(validator.deepPartial());\r\n } else {\r\n deepPartialShape[key] = new VldOptional(validator);\r\n }\r\n }\r\n return new VldObject({\r\n ...this._config,\r\n shape: deepPartialShape\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with only specified keys\r\n */\r\n pick<K extends keyof T>(...keys: K[]): VldObject<Pick<T, K>> {\r\n const pickedShape: any = {};\r\n for (const key of keys) {\r\n if (key in this._config.shape) {\r\n pickedShape[key] = this._config.shape[key];\r\n }\r\n }\r\n return new VldObject({\r\n ...this._config,\r\n shape: pickedShape\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator without specified keys\r\n */\r\n omit<K extends keyof T>(...keys: K[]): VldObject<Omit<T, K>> {\r\n const omittedShape: any = {};\r\n const keysToOmit = new Set(keys);\r\n for (const key in this._config.shape) {\r\n if (!keysToOmit.has(key as any)) {\r\n omittedShape[key] = this._config.shape[key];\r\n }\r\n }\r\n return new VldObject({\r\n ...this._config,\r\n shape: omittedShape\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with additional fields\r\n */\r\n extend<U extends Record<string, any>>(\r\n extension: { [K in keyof U]: VldBase<unknown, U[K]> }\r\n ): VldObject<T & U> {\r\n return new VldObject({\r\n ...this._config,\r\n shape: { ...this._config.shape, ...extension } as any\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator by merging with another object validator\r\n */\r\n merge<U extends Record<string, any>>(\r\n other: VldObject<U>\r\n ): VldObject<T & U> {\r\n return new VldObject({\r\n ...this._config,\r\n shape: { ...this._config.shape, ...other.config.shape } as any\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with all fields required (removes optional)\r\n */\r\n required(): VldObject<{ [K in keyof T]-?: T[K] }> {\r\n const requiredShape: any = {};\r\n for (const key in this._config.shape) {\r\n const validator = this._config.shape[key];\r\n // If it's optional, unwrap it\r\n if (validator instanceof VldOptional) {\r\n // BUG-001 FIX: Add defensive check for baseValidator property\r\n const unwrapped = (validator as any).baseValidator;\r\n if (!unwrapped || typeof unwrapped.parse !== 'function') {\r\n throw new Error(`Invalid VldOptional structure for field \"${key}\": missing or invalid baseValidator`);\r\n }\r\n requiredShape[key] = unwrapped;\r\n } else {\r\n requiredShape[key] = validator;\r\n }\r\n }\r\n return new VldObject({\r\n ...this._config,\r\n shape: requiredShape\r\n }) as any;\r\n }\r\n\r\n /**\r\n * Create a new validator with a catchall validator for extra keys\r\n * Zod 4 API parity - validates unknown keys with provided schema\r\n */\r\n catchall<U>(schema: VldBase<unknown, U>): VldObject<any> {\r\n return new VldObject({\r\n ...this._config,\r\n catchall: schema,\r\n passthrough: false // catchall overrides passthrough\r\n }) as any;\r\n }\r\n\r\n /**\r\n * Access the inner shape schemas\r\n * Zod 4 API parity - returns the shape object\r\n */\r\n get shape(): { readonly [K in keyof T]: VldBase<unknown, T[K]> } {\r\n return this._config.shape;\r\n }\r\n\r\n /**\r\n * Create an enum validator from object keys\r\n * Zod 4 API parity - creates literal union of keys\r\n */\r\n keyof(): VldEnum<[string, ...string[]]> {\r\n const keys = Object.keys(this._config.shape);\r\n if (keys.length === 0) {\r\n throw new Error('Cannot create keyof enum from empty object');\r\n }\r\n return VldEnum.create(keys as [string, ...string[]]);\r\n }\r\n\r\n /**\r\n * Type-safe extend that throws an error if any key already exists\r\n * Zod 4 API parity - prevents accidental field override\r\n * @param extension The extension shape to add\r\n * @returns A new validator with extended shape\r\n * @throws {Error} If any extension key already exists in the shape\r\n * @example\r\n * const base = v.object({ name: v.string() });\r\n * const extended = base.safeExtend({ age: v.number() }); // OK\r\n * const invalid = base.safeExtend({ name: v.number() }); // Throws error\r\n */\r\n safeExtend<U extends Record<string, any>>(\r\n extension: { [K in keyof U]: VldBase<unknown, U[K]> }\r\n ): VldObject<T & U> {\r\n // Check for overlapping keys\r\n const existingKeys = new Set(Object.keys(this._config.shape));\r\n const extensionKeys = Object.keys(extension);\r\n const overlappingKeys: string[] = [];\r\n\r\n for (const key of extensionKeys) {\r\n if (existingKeys.has(key)) {\r\n overlappingKeys.push(key);\r\n }\r\n }\r\n\r\n if (overlappingKeys.length > 0) {\r\n throw new Error(`safeExtend: ${getMessages().safeExtendOverlap(overlappingKeys)}`);\r\n }\r\n\r\n return new VldObject({\r\n ...this._config,\r\n shape: { ...this._config.shape, ...extension } as any\r\n });\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Optimized immutable union validator for multiple type options\r\n * Features type-checking shortcuts for 110x performance improvement\r\n */\r\nexport class VldUnion<T extends readonly VldBase<any, any>[]> extends VldBase<\r\n unknown,\r\n T[number] extends VldBase<any, infer U> ? U : never\r\n> {\r\n private readonly validators: T;\r\n private readonly errorMessage?: string;\r\n \r\n // Cache for type checking optimization\r\n private readonly typeCheckers: Map<VldBase<any, any>, (value: unknown) => boolean>;\r\n \r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n validators: T,\r\n errorMessage?: string\r\n ) {\r\n super();\r\n this.validators = validators;\r\n this.errorMessage = errorMessage;\r\n this.typeCheckers = new Map();\r\n \r\n // Pre-compile type checkers for common types\r\n for (const validator of validators) {\r\n this.typeCheckers.set(validator, this.createTypeChecker(validator));\r\n }\r\n }\r\n \r\n /**\r\n * Create type checker based on validator type for fast path optimization\r\n * Uses a safer approach that's less prone to spoofing\r\n */\r\n private createTypeChecker(validator: VldBase<any, any>): (value: unknown) => boolean {\r\n // More conservative approach that prioritizes security and stability\r\n // Only use fast path checks for very common, unambiguous types\r\n\r\n try {\r\n // Test basic types with safe parsing to validate the validator\r\n const stringTest = validator.safeParse('test');\r\n if (stringTest.success) {\r\n return (v) => typeof v === 'string';\r\n }\r\n\r\n const numberTest = validator.safeParse(123);\r\n if (numberTest.success) {\r\n return (v) => typeof v === 'number' && !isNaN(v as number);\r\n }\r\n\r\n const booleanTest = validator.safeParse(true);\r\n if (booleanTest.success) {\r\n return (v) => typeof v === 'boolean';\r\n }\r\n\r\n const arrayTest = validator.safeParse([]);\r\n if (arrayTest.success) {\r\n return (v) => Array.isArray(v);\r\n }\r\n\r\n const objectTest = validator.safeParse({});\r\n if (objectTest.success) {\r\n return (v) => typeof v === 'object' && v !== null && !Array.isArray(v);\r\n }\r\n\r\n const nullTest = validator.safeParse(null);\r\n if (nullTest.success) {\r\n return (v) => v === null;\r\n }\r\n\r\n const undefinedTest = validator.safeParse(undefined);\r\n if (undefinedTest.success) {\r\n return (v) => v === undefined;\r\n }\r\n } catch {\r\n // If safe testing fails, fall back to safe validation\r\n }\r\n\r\n // Fallback: no quick check available - use safe validation\r\n return () => true;\r\n }\r\n \r\n /**\r\n * Create a new union validator\r\n */\r\n static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldUnion<T> {\r\n return new VldUnion(validators);\r\n }\r\n \r\n /**\r\n * Parse and validate a value against union options\r\n * Optimized with type checking and safeParse to avoid try-catch overhead\r\n * BUG-NEW-013 FIX: Single-pass error collection to avoid double parsing\r\n */\r\n parse(value: unknown): T[number] extends VldBase<any, infer U> ? U : never {\r\n // Single pass: collect errors during validation\r\n const errors: string[] = [];\r\n\r\n for (const validator of this.validators) {\r\n const typeChecker = this.typeCheckers.get(validator);\r\n\r\n // Skip validators that definitely won't match based on type\r\n if (typeChecker && !typeChecker(value)) {\r\n continue;\r\n }\r\n\r\n // Use safeParse to avoid try-catch overhead\r\n const result = validator.safeParse(value);\r\n if (result.success) {\r\n return result.data;\r\n }\r\n\r\n // Collect error for final message if all validators fail\r\n errors.push(result.error.message);\r\n }\r\n\r\n // All validators failed - throw with collected errors\r\n throw new Error(\r\n this.errorMessage ||\r\n getMessages().unionNoMatch(errors)\r\n );\r\n }\r\n \r\n /**\r\n * Safely parse and validate a value against union options\r\n * Optimized version using type checking shortcuts\r\n * BUG-NEW-013 FIX: Single-pass error collection to avoid double parsing\r\n */\r\n safeParse(value: unknown): ParseResult<T[number] extends VldBase<any, infer U> ? U : never> {\r\n // Single pass: collect errors during validation\r\n const errors: string[] = [];\r\n\r\n for (const validator of this.validators) {\r\n const typeChecker = this.typeCheckers.get(validator);\r\n\r\n // Skip validators that definitely won't match based on type\r\n if (typeChecker && !typeChecker(value)) {\r\n continue;\r\n }\r\n\r\n const result = validator.safeParse(value);\r\n if (result.success) {\r\n return result;\r\n }\r\n\r\n // Collect error for final message if all validators fail\r\n errors.push(result.error.message);\r\n }\r\n\r\n // All validators failed - return error with collected messages\r\n return {\r\n success: false,\r\n error: new Error(\r\n this.errorMessage ||\r\n getMessages().unionNoMatch(errors)\r\n )\r\n };\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable literal validator for exact value matching\r\n */\r\nexport class VldLiteral<T extends string | number | boolean | null | undefined> extends VldBase<T, T> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly _literal: T,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * Get the literal value\r\n */\r\n get literal(): T {\r\n return this._literal;\r\n }\r\n \r\n /**\r\n * Create a new literal validator\r\n */\r\n static create<T extends string | number | boolean | null | undefined>(literal: T): VldLiteral<T> {\r\n return new VldLiteral(literal);\r\n }\r\n \r\n /**\r\n * Parse and validate a literal value\r\n */\r\n parse(value: unknown): T {\r\n if (value !== this._literal) {\r\n throw new Error(\r\n this.errorMessage ||\r\n getMessages().literalExpected(JSON.stringify(this._literal), JSON.stringify(value))\r\n );\r\n }\r\n return this._literal;\r\n }\r\n\r\n /**\r\n * Safely parse and validate a literal value\r\n */\r\n safeParse(value: unknown): ParseResult<T> {\r\n if (value === this._literal) {\r\n return { success: true, data: this._literal };\r\n }\r\n return {\r\n success: false,\r\n error: new Error(\r\n this.errorMessage ||\r\n getMessages().literalExpected(JSON.stringify(this._literal), JSON.stringify(value))\r\n )\r\n };\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable symbol validator\r\n */\r\nexport class VldSymbol extends VldBase<symbol, symbol> {\r\n private readonly errorMessage?: string;\r\n \r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(errorMessage?: string) {\r\n super();\r\n this.errorMessage = errorMessage;\r\n }\r\n \r\n /**\r\n * Create a new symbol validator\r\n */\r\n static create(): VldSymbol {\r\n return new VldSymbol();\r\n }\r\n \r\n /**\r\n * Parse and validate a symbol value\r\n */\r\n parse(value: unknown): symbol {\r\n if (typeof value !== 'symbol') {\r\n throw new Error(this.errorMessage || getMessages().invalidSymbol);\r\n }\r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a symbol value\r\n */\r\n safeParse(value: unknown): ParseResult<symbol> {\r\n if (typeof value === 'symbol') {\r\n return { success: true, data: value };\r\n }\r\n return { \r\n success: false, \r\n error: new Error(this.errorMessage || getMessages().invalidSymbol) \r\n };\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable tuple validator for fixed-length arrays\r\n */\r\nexport class VldTuple<T extends readonly VldBase<any, any>[]> extends VldBase<\r\n unknown,\r\n { [K in keyof T]: T[K] extends VldBase<any, infer U> ? U : never }\r\n> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly validators: T,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new tuple validator\r\n */\r\n static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldTuple<T> {\r\n return new VldTuple(validators);\r\n }\r\n \r\n /**\r\n * Parse and validate a tuple value\r\n */\r\n parse(value: unknown): { [K in keyof T]: T[K] extends VldBase<any, infer U> ? U : never } {\r\n if (!Array.isArray(value)) {\r\n throw new Error(this.errorMessage || getMessages().invalidTuple);\r\n }\r\n \r\n if (value.length !== this.validators.length) {\r\n throw new Error(\r\n this.errorMessage || \r\n getMessages().tupleLength(this.validators.length, value.length)\r\n );\r\n }\r\n \r\n const result: any[] = [];\r\n for (let i = 0; i < this.validators.length; i++) {\r\n try {\r\n result[i] = this.validators[i].parse(value[i]);\r\n } catch (error) {\r\n throw new Error(getMessages().arrayItem(i, (error as Error).message));\r\n }\r\n }\r\n \r\n return result as { [K in keyof T]: T[K] extends VldBase<any, infer U> ? U : never };\r\n }\r\n \r\n /**\r\n * Safely parse and validate a tuple value\r\n */\r\n safeParse(value: unknown): ParseResult<{ [K in keyof T]: T[K] extends VldBase<any, infer U> ? U : never }> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}","/**\r\n * Security utilities for prototype pollution protection\r\n * BUG-NEW-018 & BUG-NEW-020 FIX: Centralized comprehensive dangerous key detection\r\n */\r\n\r\n/**\r\n * Comprehensive prototype pollution protection\r\n * Checks for dangerous keys that could modify Object.prototype or built-in prototypes\r\n * @param key The property key to check\r\n * @returns true if the key is dangerous, false otherwise\r\n */\r\nexport function isDangerousKey(key: string): boolean {\r\n // Direct dangerous keys\r\n const directDangerousKeys = ['__proto__', 'constructor', 'prototype'];\r\n if (directDangerousKeys.includes(key)) {\r\n return true;\r\n }\r\n\r\n // Nested prototype manipulation vectors\r\n // These patterns could allow prototype pollution through nested access\r\n const nestedPatterns = [\r\n 'constructor.prototype',\r\n '__proto__.toString',\r\n 'prototype.constructor',\r\n '__defineGetter__',\r\n '__defineSetter__',\r\n '__lookupGetter__',\r\n '__lookupSetter__'\r\n ];\r\n\r\n // Check for nested patterns\r\n for (const pattern of nestedPatterns) {\r\n if (key.includes(pattern)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Check for property access chains that could lead to prototype pollution\r\n // This covers patterns like \"x.constructor.prototype.polluted\"\r\n const dangerousChains = [\r\n 'constructor.',\r\n '__proto__.',\r\n 'prototype.'\r\n ];\r\n\r\n for (const chain of dangerousChains) {\r\n if (key.includes(chain)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Additional protection: reject keys that could be used for property shadowing\r\n const shadowingPatterns = [\r\n 'hasOwnProperty',\r\n 'toString',\r\n 'valueOf',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable'\r\n ];\r\n\r\n for (const pattern of shadowingPatterns) {\r\n if (key === pattern || key.includes(`.${pattern}`)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\nimport { isDangerousKey } from '../utils/security';\r\n\r\n/**\r\n * Immutable record validator for key-value pairs\r\n * BUG-NEW-018 FIX: Uses comprehensive dangerous key protection\r\n */\r\nexport class VldRecord<T> extends VldBase<unknown, Record<string, T>> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n protected constructor(\r\n protected readonly valueValidator: VldBase<unknown, T>,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new record validator\r\n */\r\n static create<T>(valueValidator: VldBase<unknown, T>): VldRecord<T> {\r\n return new VldRecord(valueValidator);\r\n }\r\n \r\n /**\r\n * Parse and validate a record value\r\n * BUG-NEW-018 FIX: Use comprehensive dangerous key protection\r\n */\r\n parse(value: unknown): Record<string, T> {\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n throw new Error(this.errorMessage || getMessages().invalidRecord);\r\n }\r\n\r\n const result: Record<string, T> = {};\r\n const obj = value as Record<string, unknown>;\r\n\r\n for (const [key, val] of Object.entries(obj)) {\r\n // Skip dangerous keys to prevent prototype pollution\r\n // Now using comprehensive protection from shared utility\r\n if (isDangerousKey(key)) {\r\n continue;\r\n }\r\n\r\n try {\r\n result[key] = this.valueValidator.parse(val);\r\n } catch (error) {\r\n throw new Error(getMessages().objectField(key, (error as Error).message));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a record value\r\n */\r\n safeParse(value: unknown): ParseResult<Record<string, T>> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n\r\n /**\r\n * Create a partial record variant (all keys optional)\r\n * Similar to v.object().partial() but for records\r\n */\r\n partial(): VldRecord<T | undefined> {\r\n const optionalValidator = this.valueValidator.optional();\r\n return new VldRecord(optionalValidator);\r\n }\r\n\r\n /**\r\n * Create a loose record variant (allows extra keys)\r\n * Similar to v.object().passthrough() but for records\r\n * Note: Records already allow any keys, so this mainly affects error handling\r\n */\r\n loose(): VldBase<unknown, Record<string, T>> {\r\n // For records, \"loose\" means we don't throw errors for validation failures\r\n // We return a modified version that catches validation errors\r\n return new VldLooseRecord(this.valueValidator);\r\n }\r\n}\r\n\r\n/**\r\n * Loose record variant that allows validation failures\r\n * Used internally by .loose() method\r\n */\r\nclass VldLooseRecord<T> extends VldBase<unknown, Record<string, T>> {\r\n constructor(private readonly valueValidator: VldBase<unknown, T>) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): Record<string, T> {\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n throw new Error(getMessages().invalidRecord);\r\n }\r\n\r\n const result: Record<string, T> = {} as Record<string, T>;\r\n const obj = value as Record<string, unknown>;\r\n\r\n for (const [key, val] of Object.entries(obj)) {\r\n // Skip dangerous keys\r\n if (isDangerousKey(key)) {\r\n continue;\r\n }\r\n\r\n // For loose records, skip invalid values instead of throwing\r\n const parseResult = this.valueValidator.safeParse(val);\r\n if (parseResult.success) {\r\n result[key] = parseResult.data;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<Record<string, T>> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n\r\n /**\r\n * Create a partial variant (all keys optional)\r\n */\r\n partial(): VldLooseRecord<T | undefined> {\r\n const optionalValidator = this.valueValidator.optional();\r\n return new VldLooseRecord(optionalValidator);\r\n }\r\n\r\n /**\r\n * Return self (already loose)\r\n */\r\n loose(): VldLooseRecord<T> {\r\n return this;\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable Set validator\r\n */\r\nexport class VldSet<T> extends VldBase<unknown, Set<T>> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly itemValidator: VldBase<unknown, T>,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new Set validator\r\n */\r\n static create<T>(itemValidator: VldBase<unknown, T>): VldSet<T> {\r\n return new VldSet(itemValidator);\r\n }\r\n \r\n /**\r\n * Parse and validate a Set value\r\n */\r\n parse(value: unknown): Set<T> {\r\n if (!(value instanceof Set)) {\r\n throw new Error(this.errorMessage || getMessages().invalidSet);\r\n }\r\n \r\n const result = new Set<T>();\r\n for (const item of value) {\r\n try {\r\n result.add(this.itemValidator.parse(item));\r\n } catch (error) {\r\n throw new Error((error as Error).message);\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a Set value\r\n */\r\n safeParse(value: unknown): ParseResult<Set<T>> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable Map validator\r\n */\r\nexport class VldMap<K, V> extends VldBase<unknown, Map<K, V>> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly keyValidator: VldBase<unknown, K>,\r\n private readonly valueValidator: VldBase<unknown, V>,\r\n private readonly errorMessage?: string\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new Map validator\r\n */\r\n static create<K, V>(\r\n keyValidator: VldBase<unknown, K>,\r\n valueValidator: VldBase<unknown, V>\r\n ): VldMap<K, V> {\r\n return new VldMap(keyValidator, valueValidator);\r\n }\r\n \r\n /**\r\n * Parse and validate a Map value\r\n */\r\n parse(value: unknown): Map<K, V> {\r\n if (!(value instanceof Map)) {\r\n throw new Error(this.errorMessage || getMessages().invalidMap);\r\n }\r\n \r\n const result = new Map<K, V>();\r\n for (const [key, val] of value) {\r\n try {\r\n const validKey = this.keyValidator.parse(key);\r\n const validValue = this.valueValidator.parse(val);\r\n result.set(validKey, validValue);\r\n } catch (error) {\r\n throw new Error((error as Error).message);\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a Map value\r\n */\r\n safeParse(value: unknown): ParseResult<Map<K, V>> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}","import { isDangerousKey } from './security';\r\n\r\n/**\r\n * Type guard to check if a value is a plain object\r\n */\r\nexport function isPlainObject(obj: any): obj is Record<string, any> {\r\n return (\r\n obj !== null &&\r\n typeof obj === 'object' &&\r\n obj.constructor === Object &&\r\n Object.prototype.toString.call(obj) === '[object Object]'\r\n );\r\n}\r\n\r\n/**\r\n * Safely deep merge two objects without prototype pollution vulnerability\r\n * Optimized for performance with minimal object allocations\r\n * BUG-NEW-020 FIX: Use comprehensive dangerous key protection from shared utility\r\n * @param target The target object\r\n * @param source The source object to merge from\r\n * @returns A new merged object\r\n */\r\nexport function deepMerge<T extends Record<string, any>>(\r\n target: T,\r\n source: Partial<T>\r\n): T {\r\n // Create a new object to avoid mutations (only once)\r\n const result = { ...target } as T;\r\n\r\n // Get source keys directly for better performance\r\n const sourceKeys = Object.keys(source);\r\n\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const key = sourceKeys[i];\r\n\r\n // Skip dangerous keys that could lead to prototype pollution\r\n if (isDangerousKey(key)) {\r\n continue;\r\n }\r\n\r\n // Only process own properties (redundant with Object.keys but safe)\r\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\r\n continue;\r\n }\r\n\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n\r\n // If both values are plain objects, merge them recursively\r\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\r\n (result as any)[key] = deepMerge(targetValue as any, sourceValue as any);\r\n } else {\r\n // Otherwise, use the source value (including undefined)\r\n (result as any)[key] = sourceValue;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Freeze an object deeply to prevent any mutations\r\n * BUG-NEW-014 FIX: Add circular reference protection using WeakSet\r\n * @param obj Object to freeze\r\n * @returns The frozen object\r\n */\r\nexport function deepFreeze<T>(obj: T): Readonly<T> {\r\n const seen = new WeakSet();\r\n\r\n function freezeRecursive(value: any): void {\r\n // Primitive or null check\r\n if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {\r\n return;\r\n }\r\n\r\n // Already frozen or already seen (circular reference protection)\r\n if (Object.isFrozen(value) || seen.has(value)) {\r\n return;\r\n }\r\n\r\n // Mark as seen before recursing to prevent circular reference issues\r\n seen.add(value);\r\n\r\n // Freeze this level\r\n Object.freeze(value);\r\n\r\n // Recursively freeze properties (including Symbol properties)\r\n Reflect.ownKeys(value).forEach(prop => {\r\n freezeRecursive((value as any)[prop]);\r\n });\r\n }\r\n\r\n freezeRecursive(obj);\r\n return obj;\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { deepMerge, isPlainObject } from '../utils/deep-merge';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable intersection validator for combining validators\r\n */\r\nexport class VldIntersection<A, B> extends VldBase<unknown, A & B> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly validatorA: VldBase<unknown, A>,\r\n private readonly validatorB: VldBase<unknown, B>\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new intersection validator\r\n */\r\n static create<A, B>(\r\n validatorA: VldBase<unknown, A>,\r\n validatorB: VldBase<unknown, B>\r\n ): VldIntersection<A, B> {\r\n return new VldIntersection(validatorA, validatorB);\r\n }\r\n \r\n /**\r\n * Parse and validate a value against both validators\r\n */\r\n parse(value: unknown): A & B {\r\n try {\r\n // Both validators must pass\r\n const resultA = this.validatorA.parse(value);\r\n const resultB = this.validatorB.parse(value);\r\n\r\n // BUG-NEW-015 FIX: Check type consistency before merging\r\n const aIsObject = isPlainObject(resultA);\r\n const bIsObject = isPlainObject(resultB);\r\n\r\n // Both are objects - safe to merge\r\n if (aIsObject && bIsObject) {\r\n return deepMerge(resultA as any, resultB as any) as A & B;\r\n }\r\n\r\n // Neither are objects - must be identical primitives\r\n if (!aIsObject && !bIsObject) {\r\n if ((resultA as any) === (resultB as any)) {\r\n return resultA as A & B;\r\n }\r\n throw new Error('Values must be identical for intersection of primitive types');\r\n }\r\n\r\n // One is object, one is primitive - invalid intersection\r\n throw new Error(\r\n 'Cannot create intersection of object and primitive types. ' +\r\n 'Both validators must produce the same type category.'\r\n );\r\n } catch (error) {\r\n throw new Error(getMessages().intersectionError((error as Error).message));\r\n }\r\n }\r\n \r\n /**\r\n * Safely parse and validate a value against both validators\r\n */\r\n safeParse(value: unknown): ParseResult<A & B> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\n\r\n/**\r\n * Validator that accepts any value\r\n */\r\nexport class VldAny extends VldBase<any, any> {\r\n /**\r\n * Create a new any validator\r\n */\r\n static create(): VldAny {\r\n return new VldAny();\r\n }\r\n \r\n /**\r\n * Parse any value (always succeeds)\r\n */\r\n parse(value: unknown): any {\r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse any value (always succeeds)\r\n */\r\n safeParse(value: unknown): ParseResult<any> {\r\n return { success: true, data: value };\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Validator that only accepts undefined\r\n */\r\nexport class VldVoid extends VldBase<void, void> {\r\n /**\r\n * Create a new void validator\r\n */\r\n static create(): VldVoid {\r\n return new VldVoid();\r\n }\r\n \r\n /**\r\n * Parse void value (must be undefined)\r\n */\r\n parse(value: unknown): void {\r\n if (value !== undefined) {\r\n throw new Error(getMessages().expectedUndefined);\r\n }\r\n return undefined;\r\n }\r\n \r\n /**\r\n * Safely parse void value\r\n */\r\n safeParse(value: unknown): ParseResult<void> {\r\n if (value === undefined) {\r\n return { success: true, data: undefined };\r\n }\r\n return { \r\n success: false, \r\n error: new Error(getMessages().expectedUndefined) \r\n };\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Validator that never succeeds\r\n */\r\nexport class VldNever extends VldBase<never, never> {\r\n /**\r\n * Create a new never validator\r\n */\r\n static create(): VldNever {\r\n return new VldNever();\r\n }\r\n \r\n /**\r\n * Parse never value (always fails)\r\n */\r\n parse(_value: unknown): never {\r\n throw new Error(getMessages().neverType);\r\n }\r\n \r\n /**\r\n * Safely parse never value (always fails)\r\n */\r\n safeParse(_value: unknown): ParseResult<never> {\r\n return { \r\n success: false, \r\n error: new Error(getMessages().neverType) \r\n };\r\n }\r\n}","/**\r\n * VldNull - Validates that a value is exactly null\r\n * Part of Zod 4 API parity implementation\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * Null validator - validates that a value is exactly null\r\n */\r\nexport class VldNull extends VldBase<unknown, null> {\r\n private constructor() {\r\n super();\r\n }\r\n\r\n static create(): VldNull {\r\n return new VldNull();\r\n }\r\n\r\n parse(value: unknown): null {\r\n if (value !== null) {\r\n throw new Error(`Expected null, received ${typeof value}`);\r\n }\r\n return null;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<null> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}\r\n","/**\r\n * VldUndefined - Validates that a value is exactly undefined\r\n * Part of Zod 4 API parity implementation\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * Undefined validator - validates that a value is exactly undefined\r\n */\r\nexport class VldUndefined extends VldBase<unknown, undefined> {\r\n private constructor() {\r\n super();\r\n }\r\n\r\n static create(): VldUndefined {\r\n return new VldUndefined();\r\n }\r\n\r\n parse(value: unknown): undefined {\r\n if (value !== undefined) {\r\n throw new Error(`Expected undefined, received ${typeof value}`);\r\n }\r\n return undefined;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<undefined> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}\r\n","/**\r\n * VldNan - Validates that a value is NaN (Not a Number)\r\n * Part of Zod 4 API parity implementation\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * NaN validator - validates that a value is NaN\r\n * Note: Uses Number.isNaN() which is more strict than global isNaN()\r\n */\r\nexport class VldNan extends VldBase<unknown, number> {\r\n private constructor() {\r\n super();\r\n }\r\n\r\n static create(): VldNan {\r\n return new VldNan();\r\n }\r\n\r\n parse(value: unknown): number {\r\n if (typeof value !== 'number' || !Number.isNaN(value)) {\r\n throw new Error(`Expected NaN, received ${typeof value === 'number' ? 'a valid number' : typeof value}`);\r\n }\r\n return value;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<number> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}\r\n","/**\r\n * VldLazy - Lazy evaluation for recursive schemas\r\n * Part of Zod 4 API parity implementation\r\n * Allows schemas that reference themselves (e.g., tree structures, nested categories)\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * Lazy validator - defers schema evaluation until runtime\r\n * Essential for recursive and self-referencing types\r\n *\r\n * MEMORY OPTIMIZATION: Uses WeakRef for the cached schema to allow garbage collection\r\n * when the validator is no longer in use. This prevents memory leaks in long-running\r\n * applications with dynamically created schemas.\r\n */\r\nexport class VldLazy<TInput, TOutput> extends VldBase<TInput, TOutput> {\r\n // Use WeakRef to allow garbage collection of the cached schema\r\n private _cachedSchemaRef: WeakRef<VldBase<TInput, TOutput>> | null = null;\r\n // Keep a strong reference flag to prevent GC during active use\r\n private _strongRef: VldBase<TInput, TOutput> | null = null;\r\n\r\n private constructor(\r\n private readonly _schemaGetter: () => VldBase<TInput, TOutput>\r\n ) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(\r\n schemaGetter: () => VldBase<TInput, TOutput>\r\n ): VldLazy<TInput, TOutput> {\r\n return new VldLazy(schemaGetter);\r\n }\r\n\r\n /**\r\n * Get the actual schema, caching it after first retrieval\r\n * Uses WeakRef to allow garbage collection when validator is not in use\r\n */\r\n private _getSchema(): VldBase<TInput, TOutput> {\r\n // Check if we have a strong reference first (active use)\r\n if (this._strongRef) {\r\n return this._strongRef;\r\n }\r\n\r\n // Try to get from WeakRef\r\n if (this._cachedSchemaRef) {\r\n const cached = this._cachedSchemaRef.deref();\r\n if (cached) {\r\n // Restore strong reference for active use\r\n this._strongRef = cached;\r\n return cached;\r\n }\r\n }\r\n\r\n // Create new schema\r\n const schema = this._schemaGetter();\r\n this._cachedSchemaRef = new WeakRef(schema);\r\n this._strongRef = schema;\r\n\r\n // Clear strong reference after a tick to allow GC\r\n // This keeps the schema alive during synchronous operations\r\n // but allows it to be collected if the validator is discarded\r\n Promise.resolve().then(() => {\r\n this._strongRef = null;\r\n });\r\n\r\n return schema;\r\n }\r\n\r\n /**\r\n * Get the inner schema (unwrap)\r\n * Returns a strong reference that will keep the schema alive\r\n */\r\n unwrap(): VldBase<TInput, TOutput> {\r\n return this._getSchema();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n return this._getSchema().parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n return this._getSchema().safeParse(value);\r\n }\r\n}\r\n","/**\r\n * VldDiscriminatedUnion - Fast union validation using discriminator field\r\n * Part of Zod 4 API parity implementation\r\n * Provides O(1) lookup performance by using a discriminator key\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport { VldObject } from './object';\r\nimport { VldLiteral } from './literal';\r\nimport { VldEnum } from './enum';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * Extract literal values from a schema\r\n */\r\nfunction extractLiteralValues(schema: VldBase<unknown, any>): unknown[] {\r\n if (schema instanceof VldLiteral) {\r\n return [schema.literal];\r\n }\r\n if (schema instanceof VldEnum) {\r\n return [...schema.values];\r\n }\r\n throw new Error('Discriminator must be a literal or enum schema');\r\n}\r\n\r\n/**\r\n * Discriminated union validator - validates union based on discriminator key\r\n * Much faster than regular union when you have a discriminator field\r\n */\r\nexport class VldDiscriminatedUnion<K extends string, Options extends VldBase<any, any>[]>\r\n extends VldBase<unknown, Options[number] extends VldBase<any, infer T> ? T : never> {\r\n\r\n private readonly _discriminatorMap: Map<unknown, VldBase<any, any>>;\r\n\r\n constructor(\r\n private readonly _discriminator: K,\r\n private readonly _options: Options\r\n ) {\r\n super();\r\n\r\n // Build discriminator map for O(1) lookup\r\n this._discriminatorMap = new Map();\r\n\r\n for (const option of _options) {\r\n if (!(option instanceof VldObject)) {\r\n throw new Error('All options in a discriminated union must be objects');\r\n }\r\n\r\n const discriminatorSchema = (option as any).config?.shape?.[this._discriminator];\r\n if (!discriminatorSchema) {\r\n throw new Error(`Missing discriminator key \"${this._discriminator}\" in one of the options`);\r\n }\r\n\r\n const values = extractLiteralValues(discriminatorSchema);\r\n\r\n for (const value of values) {\r\n if (this._discriminatorMap.has(value)) {\r\n throw new Error(`Duplicate discriminator value \"${String(value)}\" found in discriminated union`);\r\n }\r\n this._discriminatorMap.set(value, option);\r\n }\r\n }\r\n }\r\n\r\n static create<K extends string, Options extends VldBase<any, any>[]>(\r\n discriminator: K,\r\n options: Options\r\n ): VldDiscriminatedUnion<K, Options> {\r\n return new VldDiscriminatedUnion(discriminator, options);\r\n }\r\n\r\n parse(value: unknown): Options[number] extends VldBase<any, infer T> ? T : never {\r\n const result = this.safeParse(value);\r\n if (!result.success) {\r\n throw result.error;\r\n }\r\n return result.data;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<Options[number] extends VldBase<any, infer T> ? T : never> {\r\n // Check if input is an object\r\n if (typeof value !== 'object' || value === null) {\r\n return {\r\n success: false,\r\n error: new Error(\r\n `Expected object, received ${value === null ? 'null' : typeof value}`\r\n )\r\n };\r\n }\r\n\r\n // Get discriminator value\r\n const discriminatorValue = (value as Record<string, unknown>)[this._discriminator];\r\n\r\n // Look up matching schema\r\n const matchedSchema = this._discriminatorMap.get(discriminatorValue);\r\n\r\n if (!matchedSchema) {\r\n const validValues = Array.from(this._discriminatorMap.keys());\r\n return {\r\n success: false,\r\n error: new Error(\r\n `Invalid discriminator value for \"${this._discriminator}\". ` +\r\n `Expected one of: ${JSON.stringify(validValues)}, ` +\r\n `received: ${JSON.stringify(discriminatorValue)}`\r\n )\r\n };\r\n }\r\n\r\n // Validate against matched schema\r\n return matchedSchema.safeParse(value) as ParseResult<Options[number] extends VldBase<any, infer T> ? T : never>;\r\n }\r\n\r\n /**\r\n * Get the discriminator key\r\n */\r\n getDiscriminator(): K {\r\n return this._discriminator;\r\n }\r\n\r\n /**\r\n * Get all options\r\n */\r\n getOptions(): Options {\r\n return this._options;\r\n }\r\n}\r\n","/**\r\n * VldXor - Exclusive union validator\r\n * Part of Zod 4 API parity implementation\r\n * Ensures exactly one schema in the union matches\r\n */\r\n\r\nimport { VldBase } from './base';\r\nimport type { ParseResult } from './base';\r\n\r\n/**\r\n * XOR validator - ensures exactly one option matches\r\n * Unlike regular union which allows multiple matches, XOR requires exactly one\r\n */\r\nexport class VldXor<Options extends VldBase<any, any>[]> extends VldBase<unknown, Options[number] extends VldBase<any, infer T> ? T : never> {\r\n constructor(private readonly _options: Options) {\r\n super();\r\n }\r\n\r\n static create<Options extends VldBase<any, any>[]>(\r\n options: Options\r\n ): VldXor<Options> {\r\n if (options.length < 2) {\r\n throw new Error('XOR requires at least 2 options');\r\n }\r\n return new VldXor(options);\r\n }\r\n\r\n parse(value: unknown): Options[number] extends VldBase<any, infer T> ? T : never {\r\n const result = this.safeParse(value);\r\n if (!result.success) {\r\n throw result.error;\r\n }\r\n return result.data;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<Options[number] extends VldBase<any, infer T> ? T : never> {\r\n let matchCount = 0;\r\n let lastSuccess: ParseResult<any> | null = null;\r\n\r\n for (const option of this._options) {\r\n const result = option.safeParse(value);\r\n if (result.success) {\r\n matchCount++;\r\n lastSuccess = result;\r\n if (matchCount > 1) {\r\n // Early exit if more than one match\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (matchCount === 0) {\r\n return {\r\n success: false,\r\n error: new Error('No schema matched in XOR union')\r\n };\r\n }\r\n\r\n if (matchCount > 1) {\r\n return {\r\n success: false,\r\n error: new Error(\r\n `Input matches ${matchCount} schemas in XOR union, but exactly one is required`\r\n )\r\n };\r\n }\r\n\r\n return lastSuccess!;\r\n }\r\n\r\n /**\r\n * Get all options\r\n */\r\n getOptions(): Options {\r\n return this._options;\r\n }\r\n}\r\n","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable JSON validator that validates and parses JSON strings\r\n * Accepts both strings (which are parsed) and already-parsed objects\r\n */\r\nexport class VldJson<T = unknown> extends VldBase<unknown, T> {\r\n private constructor(\r\n private readonly schema?: VldBase<unknown, T>\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * Create a new JSON validator\r\n */\r\n static create<T = unknown>(schema?: VldBase<unknown, T>): VldJson<T> {\r\n return new VldJson(schema);\r\n }\r\n\r\n /**\r\n * Parse and validate a JSON value\r\n */\r\n parse(value: unknown): T {\r\n let parsed: unknown;\r\n\r\n // If it's a string, try to parse it as JSON first\r\n if (typeof value === 'string') {\r\n try {\r\n parsed = JSON.parse(value);\r\n } catch (e) {\r\n throw new Error(getMessages().invalidJson);\r\n }\r\n } else {\r\n // Not a string - assume it's already parsed\r\n parsed = value;\r\n }\r\n\r\n // If we have a schema, validate against it\r\n if (this.schema) {\r\n return this.schema.parse(parsed);\r\n }\r\n\r\n // No schema - just return the parsed value\r\n return parsed as T;\r\n }\r\n\r\n /**\r\n * Safely parse and validate a JSON value\r\n */\r\n safeParse(value: unknown): ParseResult<T> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return {\r\n success: false,\r\n error: error as Error\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Create a new JSON validator with a schema for validation\r\n */\r\n withSchema<U>(schema: VldBase<unknown, U>): VldJson<U> {\r\n return new VldJson(schema);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAeA;;AAEG;AACH,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAU;AAC1E,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAU;AAE3E;;;AAGG;AACG,MAAO,aAAc,SAAQ,OAAyB,CAAA;AAC1D,IAAA,WAAA,CACmB,OAA0B,EAAA;AAE3C,QAAA,KAAK,EAAE;QAFU,IAAA,CAAA,OAAO,GAAP,OAAO;IAG1B;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,CAAC,OAAA,GAA6B,EAAE,EAAA;AAC3C,QAAA,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;IACnC;AAEA;;AAEG;AACK,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;IACjE;AAEA;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc;IAC9C;AAEA;;AAEG;IACK,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa;IAC5C;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;;AAElB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE7B,YAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,MAAM,IAAI,KAAK,CACb,WAAW,EAAE,CAAC,cAAc,CAAC,OAAO,KAAK,EAAE,QAAQ,CAAC,CACrD;QACH;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC3C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;AAGzC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,cAAE;AACF,cAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACnC,cAAE;AACF,cAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;;AAGzC,QAAA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;;QAGA,MAAM,cAAc,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC;AAChE,QAAA,MAAM,IAAI,KAAK,CACb,WAAW,EAAE,CAAC,kBAAkB,CAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAClF,KAAK,CACN,CACF;IACH;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;QACxC;QAAE,OAAO,KAAK,EAAE;YACd,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE;aACR;QACH;IACF;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,MAAyB,EAAA;QAClC,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,MAAM,EAAE;AACT,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,MAAyB,EAAA;QACjC,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;IACJ;AACD;;ACnJD;;AAEG;AACG,MAAO,QAAY,SAAQ,OAAuB,CAAA;AAGtD;;AAEG;AACH,IAAA,WAAA,CAAoB,MAA+B,EAAA;AACjD,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;AAEA;;AAEG;IACH,OAAO,MAAM,CAAI,aAAkC,EAAA;AACjD,QAAA,OAAO,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IACxC;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,YAAY,CAAC;QACzE;;AAGA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACrF,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjG;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC/E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5F;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC/E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5F;;QAGA,MAAM,MAAM,GAAQ,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAE3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxE;YACA,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;QAC/B;;AAGA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AAEA;;;AAGG;AACK,IAAA,WAAW,CAAC,KAAU,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAkB,CAAC;AAEjD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,GAAY;YAEhB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;;gBAE7C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,GAAG,GAAG,MAAM;gBACd;qBAAO;;oBAEL,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBAC7C,GAAG,GAAG,UAAU;AAChB,oBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;gBAClC;YACF;iBAAO;;gBAEL,GAAG,GAAG,IAAI;YACZ;AAEA,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,gBAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;YACpD;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACf;IACF;AAEA;;;;;AAKG;AACK,IAAA,eAAe,CAAC,GAAQ,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC;;QAGtB,MAAM,eAAe,GAAG,CAAC,KAAU,EAAE,KAAA,GAAgB,CAAC,KAAY;;AAEhE,YAAA,IAAI,KAAK,GAAG,SAAS,EAAE;AACrB,gBAAA,OAAO,wBAAwB;YACjC;;YAGA,IAAI,KAAK,KAAK,IAAI;AAAE,gBAAA,OAAO,MAAM;YACjC,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,OAAO,WAAW;YAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAG3D,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,OAAO,cAAc;YACvB;AAEA,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAEf,YAAA,IAAI;;AAEF,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,oBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBACjE,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;gBAC/B;;gBAGA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;oBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACzC,oBAAA,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AAC9D,oBAAA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,eAAe,EAAE;AAC9C,gBAAA,CAAC,CAAC;gBAEF,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAC/B;oBAAU;;AAER,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACpB;AACF,QAAA,CAAC;AAED,QAAA,IAAI;AACF,YAAA,OAAO,eAAe,CAAC,GAAG,CAAC;QAC7B;QAAE,OAAO,KAAK,EAAE;;AAEd,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB;IACF;AAEA;;AAEG;IACH,GAAG,CAAC,MAAc,EAAE,OAAgB,EAAA;QAClC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM;AACvD,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,GAAG,CAAC,MAAc,EAAE,OAAgB,EAAA;QAClC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM;AACvD,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,MAAM,CAAC,MAAc,EAAE,OAAgB,EAAA;QACrC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,WAAW,CAAC,MAAM;AAC1D,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACvB,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC;AACxC,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,OAAgB,EAAA;QACrB,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,OAAO,IAAI;AAC1B,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,OAAgB,EAAA;QAChD,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,YAAY,EAAE,OAAO,IAAI,gCAAgC,GAAG,CAAA,KAAA,EAAQ,GAAG,CAAA;AACxE,SAAA,CAAC;IACJ;AACD;;ACtPD;;AAEG;AACG,MAAO,OAAkD,SAAQ,OAA0B,CAAA;AAC/F;;AAEG;IACH,WAAA,CACmB,OAAU,EACV,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;AAEG;IACH,OAAO,MAAM,CAA2C,MAAS,EAAA;AAC/D,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5B;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;;AAElB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;AACjB,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACrE;QACH;QACA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;AACjB,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACrE;QACH;AACA,QAAA,OAAO,KAAkB;IAC3B;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;;AAEtB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI,KAAK,CACd,IAAI,CAAC,YAAY;AACjB,oBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAEvE;QACH;QACA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAkB,EAAE;QACpD;QACA,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI,KAAK,CACd,IAAI,CAAC,YAAY;AACjB,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAEvE;IACH;AAEA;;;AAGG;IACH,OAAO,CAAoC,GAAG,aAAgB,EAAA;QAG5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;QACnD;;QAEA,OAAO,IAAI,OAAO,CAAC,QAAe,EAAE,IAAI,CAAC,YAAY,CAAC;IACxD;AAEA;;;AAGG;IACH,OAAO,CAAoC,GAAG,aAAgB,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;QAC5D;;QAEA,OAAO,IAAI,OAAO,CAAC,SAAgB,EAAE,IAAI,CAAC,YAAY,CAAC;IACzD;AACD;;ACjFD;;;AAGG;AACG,MAAO,SAAyC,SAAQ,OAAmB,CAAA;AAK/E;;AAEG;AACH,IAAA,WAAA,CAAoB,MAAgC,EAAA;AAClD,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;QAErB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/C;AAEA;;;AAGG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;;AAGG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;AAEG;IACH,OAAO,MAAM,CACX,KAAiD,EAAA;AAEjD,QAAA,OAAO,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACjC;AAEA;;;AAGG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;;AAElB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvE,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,aAAa,CAAC;QAC3E;QAEA,MAAM,GAAG,GAAG,KAAgC;QAC5C,MAAM,MAAM,GAAQ,EAAE;;AAGtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC;;;;;;;;YAU3B,IAAI,SAAS,YAAY,eAAe;AACpC,gBAAA,SAAS,YAAY,eAAe;AACpC,gBAAA,SAAS,YAAY,gBAAgB;gBACrC,SAAS,YAAY,aAAa,EAAE;;gBAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AACnD,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;AAAO,iBAAA,IAAI,SAAS,YAAY,SAAS,EAAE;;gBAEzC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AACnD,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;AAAO,iBAAA,IAAI,SAAS,YAAY,SAAS,EAAE;gBACzC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACvD,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC;gBAC9E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU;YAC1B;AAAO,iBAAA,IAAI,SAAS,YAAY,UAAU,EAAE;AAC1C,gBAAA,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE;AACnC,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC/E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU;YAC1B;AAAO,iBAAA,IAAI,SAAS,YAAY,OAAO,EAAE;;gBAEvC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AACnD,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;iBAAO;;gBAEL,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AACnD,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,oBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5E;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGhC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvB,MAAM,SAAS,GAAa,EAAE;AAE9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5B;gBACF;AAEA,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1D;YACF;;AAGA,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEtB,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;oBACxB;gBACF;YACF;;AAGA,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEtB,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7D,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrD;gBACF;YACF;QACF;AAEA,QAAA,OAAO,MAAW;IACpB;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;;AAEtB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvE,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,aAAa;aAC1E;QACH;QAEA,MAAM,GAAG,GAAG,KAAgC;QAC5C,MAAM,MAAM,GAAQ,EAAE;;AAGtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC;YAE3B,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AAEnD,YAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;iBAAO;gBACL,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC3E;YACH;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGhC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvB,MAAM,SAAS,GAAa,EAAE;AAE9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5B;gBACF;AAEA,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxB,OAAO;AACL,wBAAA,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;qBACzD;gBACH;YACF;;AAGA,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEtB,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;oBACxB;gBACF;YACF;;AAGA,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEtB,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7D,wBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;4BAC3B,OAAO;AACL,gCAAA,OAAO,EAAE,KAAK;AACd,gCAAA,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;6BAC9E;wBACH;AACA,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI;oBACnC;gBACF;YACF;QACF;QAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAW,EAAE;IAC7C;AAEA;;;AAGG;AACK,IAAA,cAAc,CAAC,GAAW,EAAA;;QAEhC,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;AACrE,QAAA,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,YAAA,OAAO,IAAI;QACb;;;AAIA,QAAA,MAAM,cAAc,GAAG;YACrB,uBAAuB;YACvB,oBAAoB;YACpB,uBAAuB;YACvB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB;SACD;;AAGD,QAAA,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE;AACpC,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzB,gBAAA,OAAO,IAAI;YACb;QACF;;;AAIA,QAAA,MAAM,eAAe,GAAG;YACtB,cAAc;YACd,YAAY;YACZ;SACD;AAED,QAAA,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;AACnC,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,OAAO,IAAI;YACb;QACF;;AAGA,QAAA,MAAM,iBAAiB,GAAG;YACxB,gBAAgB;YAChB,UAAU;YACV,SAAS;YACT,eAAe;YACf;SACD;AAED,QAAA,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;AACvC,YAAA,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC,EAAE;AAClD,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,OAAgB,EAAA;QACrB,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;QACT,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,MAAM,YAAY,GAAQ,EAAE;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpC,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D;QACA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAQ;IACX;AAEA;;AAEG;IACH,WAAW,GAAA;QACT,MAAM,gBAAgB,GAAQ,EAAE;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,YAAA,IAAI,SAAS,YAAY,SAAS,EAAE;AAClC,gBAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAClE;iBAAO;gBACL,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;YACpD;QACF;QACA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,IAAI,CAAoB,GAAG,IAAS,EAAA;QAClC,MAAM,WAAW,GAAQ,EAAE;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC7B,gBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YAC5C;QACF;QACA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,IAAI,CAAoB,GAAG,IAAS,EAAA;QAClC,MAAM,YAAY,GAAQ,EAAE;AAC5B,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAU,CAAC,EAAE;AAC/B,gBAAA,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7C;QACF;QACA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,MAAM,CACJ,SAAqD,EAAA;QAErD,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS;AAC7C,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,KAAK,CACH,KAAmB,EAAA;QAEnB,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AACtD,SAAA,CAAC;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;QACN,MAAM,aAAa,GAAQ,EAAE;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEzC,YAAA,IAAI,SAAS,YAAY,WAAW,EAAE;;AAEpC,gBAAA,MAAM,SAAS,GAAI,SAAiB,CAAC,aAAa;gBAClD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE;AACvD,oBAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,CAAA,mCAAA,CAAqC,CAAC;gBACvG;AACA,gBAAA,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS;YAChC;iBAAO;AACL,gBAAA,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS;YAChC;QACF;QACA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,KAAK,EAAE;AACR,SAAA,CAAQ;IACX;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAI,MAA2B,EAAA;QACrC,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,KAAK;AACnB,SAAA,CAAQ;IACX;AAEA;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;IAC3B;AAEA;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AACA,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAA6B,CAAC;IACtD;AAEA;;;;;;;;;;AAUG;AACH,IAAA,UAAU,CACR,SAAqD,EAAA;;AAGrD,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,MAAM,eAAe,GAAa,EAAE;AAEpC,QAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC/B,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACzB,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,YAAA,EAAe,WAAW,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAA,CAAE,CAAC;QACpF;QAEA,OAAO,IAAI,SAAS,CAAC;YACnB,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS;AAC7C,SAAA,CAAC;IACJ;AACD;;AC/hBD;;;AAGG;AACG,MAAO,QAAiD,SAAQ,OAGrE,CAAA;AAOC;;AAEG;IACH,WAAA,CACE,UAAa,EACb,YAAqB,EAAA;AAErB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE;;AAG7B,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrE;IACF;AAEA;;;AAGG;AACK,IAAA,iBAAiB,CAAC,SAA4B,EAAA;;;AAIpD,QAAA,IAAI;;YAEF,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ;YACrC;YAEA,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3C,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,gBAAA,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAW,CAAC;YAC5D;YAEA,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7C,YAAA,IAAI,WAAW,CAAC,OAAO,EAAE;gBACvB,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,SAAS;YACtC;YAEA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AACzC,YAAA,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC;YAEA,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1C,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE;YAEA,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1C,YAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;YAC1B;YAEA,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;AACpD,YAAA,IAAI,aAAa,CAAC,OAAO,EAAE;gBACzB,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS;YAC/B;QACF;AAAE,QAAA,MAAM;;QAER;;AAGA,QAAA,OAAO,MAAM,IAAI;IACnB;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,CAAyC,GAAG,UAAa,EAAA;AACpE,QAAA,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC;IACjC;AAEA;;;;AAIG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;;QAElB,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;;YAGpD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBACtC;YACF;;YAGA,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;AACzC,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,OAAO,MAAM,CAAC,IAAI;YACpB;;YAGA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC;;AAGA,QAAA,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;AACjB,YAAA,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CACnC;IACH;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;;QAEtB,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;;YAGpD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBACtC;YACF;YAEA,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;AACzC,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,gBAAA,OAAO,MAAM;YACf;;YAGA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC;;QAGA,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI,KAAK,CACd,IAAI,CAAC,YAAY;AACjB,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;SAErC;IACH;AACD;;AChKD;;AAEG;AACG,MAAO,UAAmE,SAAQ,OAAa,CAAA;AACnG;;AAEG;IACH,WAAA,CACmB,QAAW,EACX,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA;;AAEG;IACH,OAAO,MAAM,CAAyD,OAAU,EAAA;AAC9E,QAAA,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;IAChC;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;gBACjB,WAAW,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACpF;QACH;QACA,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC/C;QACA,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI,KAAK,CACd,IAAI,CAAC,YAAY;gBACjB,WAAW,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAEtF;IACH;AACD;;ACxDD;;AAEG;AACG,MAAO,SAAU,SAAQ,OAAuB,CAAA;AAGpD;;AAEG;AACH,IAAA,WAAA,CAAoB,YAAqB,EAAA;AACvC,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,SAAS,EAAE;IACxB;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,aAAa,CAAC;QACnE;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;QACvC;QACA,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,aAAa;SAClE;IACH;AACD;;AC3CD;;AAEG;AACG,MAAO,QAAiD,SAAQ,OAGrE,CAAA;AACC;;AAEG;IACH,WAAA,CACmB,UAAa,EACb,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,CAAyC,GAAG,UAAa,EAAA;AACpE,QAAA,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC;IACjC;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,YAAY,CAAC;QAClE;QAEA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;AACjB,gBAAA,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAChE;QACH;QAEA,MAAM,MAAM,GAAU,EAAE;AACxB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChD;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACvE;QACF;AAEA,QAAA,OAAO,MAA4E;IACrF;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;AChED;;;AAGG;AAEH;;;;;AAKG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;;IAExC,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;AACrE,IAAA,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,QAAA,OAAO,IAAI;IACb;;;AAIA,IAAA,MAAM,cAAc,GAAG;QACrB,uBAAuB;QACvB,oBAAoB;QACpB,uBAAuB;QACvB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB;KACD;;AAGD,IAAA,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE;AACpC,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;IACF;;;AAIA,IAAA,MAAM,eAAe,GAAG;QACtB,cAAc;QACd,YAAY;QACZ;KACD;AAED,IAAA,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;AACnC,QAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;IACF;;AAGA,IAAA,MAAM,iBAAiB,GAAG;QACxB,gBAAgB;QAChB,UAAU;QACV,SAAS;QACT,eAAe;QACf;KACD;AAED,IAAA,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;AACvC,QAAA,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC,EAAE;AAClD,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;AC/DA;;;AAGG;AACG,MAAO,SAAa,SAAQ,OAAmC,CAAA;AACnE;;AAEG;IACH,WAAA,CACqB,cAAmC,EACrC,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAHY,IAAA,CAAA,cAAc,GAAd,cAAc;QAChB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;IACH,OAAO,MAAM,CAAI,cAAmC,EAAA;AAClD,QAAA,OAAO,IAAI,SAAS,CAAC,cAAc,CAAC;IACtC;AAEA;;;AAGG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvE,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,aAAa,CAAC;QACnE;QAEA,MAAM,MAAM,GAAsB,EAAE;QACpC,MAAM,GAAG,GAAG,KAAgC;AAE5C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;;AAG5C,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;gBACvB;YACF;AAEA,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;YAC9C;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,GAAG,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC3E;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AAEA;;;AAGG;IACH,OAAO,GAAA;QACL,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AACxD,QAAA,OAAO,IAAI,SAAS,CAAC,iBAAiB,CAAC;IACzC;AAEA;;;;AAIG;IACH,KAAK,GAAA;;;AAGH,QAAA,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;IAChD;AACD;AAED;;;AAGG;AACH,MAAM,cAAkB,SAAQ,OAAmC,CAAA;AACjE,IAAA,WAAA,CAA6B,cAAmC,EAAA;AAC9D,QAAA,KAAK,EAAE;QADoB,IAAA,CAAA,cAAc,GAAd,cAAc;IAE3C;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvE,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC;QAC9C;QAEA,MAAM,MAAM,GAAsB,EAAuB;QACzD,MAAM,GAAG,GAAG,KAAgC;AAE5C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;AAE5C,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;gBACvB;YACF;;YAGA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC;AACtD,YAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;YAChC;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AACxD,QAAA,OAAO,IAAI,cAAc,CAAC,iBAAiB,CAAC;IAC9C;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI;IACb;AACD;;AC3ID;;AAEG;AACG,MAAO,MAAU,SAAQ,OAAwB,CAAA;AACrD;;AAEG;IACH,WAAA,CACmB,aAAkC,EAClC,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;IACH,OAAO,MAAM,CAAI,aAAkC,EAAA;AACjD,QAAA,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC;IAClC;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,UAAU,CAAC;QAChE;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAK;AAC3B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC;YAC3C;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;ACnDD;;AAEG;AACG,MAAO,MAAa,SAAQ,OAA2B,CAAA;AAC3D;;AAEG;AACH,IAAA,WAAA,CACmB,YAAiC,EACjC,cAAmC,EACnC,YAAqB,EAAA;AAEtC,QAAA,KAAK,EAAE;QAJU,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG/B;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,CACX,YAAiC,EACjC,cAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;IACjD;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,UAAU,CAAC;QAChE;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAQ;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;AAC9B,YAAA,IAAI;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;AACjD,gBAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;YAClC;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC;YAC3C;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;AC1DD;;AAEG;AACG,SAAU,aAAa,CAAC,GAAQ,EAAA;IACpC,QACE,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,WAAW,KAAK,MAAM;AAC1B,QAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB;AAE7D;AAEA;;;;;;;AAOG;AACG,SAAU,SAAS,CACvB,MAAS,EACT,MAAkB,EAAA;;AAGlB,IAAA,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAO;;IAGjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAEtC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;;AAGzB,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;YACvB;QACF;;AAGA,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YACtD;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;;QAG/B,IAAI,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;YAC3D,MAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,WAAkB,EAAE,WAAkB,CAAC;QAC1E;aAAO;;AAEJ,YAAA,MAAc,CAAC,GAAG,CAAC,GAAG,WAAW;QACpC;IACF;AAEA,IAAA,OAAO,MAAM;AACf;;ACtDA;;AAEG;AACG,MAAO,eAAsB,SAAQ,OAAuB,CAAA;AAChE;;AAEG;IACH,WAAA,CACmB,UAA+B,EAC/B,UAA+B,EAAA;AAEhD,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,UAAU,GAAV,UAAU;IAG7B;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,CACX,UAA+B,EAC/B,UAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI;;YAEF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;AAG5C,YAAA,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;AACxC,YAAA,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;;AAGxC,YAAA,IAAI,SAAS,IAAI,SAAS,EAAE;AAC1B,gBAAA,OAAO,SAAS,CAAC,OAAc,EAAE,OAAc,CAAU;YAC3D;;AAGA,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAA,IAAK,OAAe,KAAM,OAAe,EAAE;AACzC,oBAAA,OAAO,OAAgB;gBACzB;AACA,gBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;YACjF;;YAGA,MAAM,IAAI,KAAK,CACb,4DAA4D;AAC5D,gBAAA,sDAAsD,CACvD;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QAC5E;IACF;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;ACxED;;AAEG;AACG,MAAO,MAAO,SAAQ,OAAiB,CAAA;AAC3C;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,MAAM,EAAE;IACrB;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;QACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC;AACD;;ACvBD;;AAEG;AACG,MAAO,OAAQ,SAAQ,OAAmB,CAAA;AAC9C;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,OAAO,EAAE;IACtB;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAClD;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3C;QACA,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,iBAAiB;SACjD;IACH;AACD;;ACjCD;;AAEG;AACG,MAAO,QAAS,SAAQ,OAAqB,CAAA;AACjD;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,QAAQ,EAAE;IACvB;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,MAAe,EAAA;QACnB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;IAC1C;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS;SACzC;IACH;AACD;;AC9BD;;;AAGG;AAKH;;AAEG;AACG,MAAO,OAAQ,SAAQ,OAAsB,CAAA;AACjD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAEA,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,OAAO,EAAE;IACtB;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,OAAO,KAAK,CAAA,CAAE,CAAC;QAC5D;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;AClCD;;;AAGG;AAKH;;AAEG;AACG,MAAO,YAAa,SAAQ,OAA2B,CAAA;AAC3D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAEA,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,YAAY,EAAE;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,OAAO,KAAK,CAAA,CAAE,CAAC;QACjE;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;AClCD;;;AAGG;AAKH;;;AAGG;AACG,MAAO,MAAO,SAAQ,OAAwB,CAAA;AAClD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAEA,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,MAAM,EAAE;IACrB;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,KAAK,KAAK,QAAQ,GAAG,gBAAgB,GAAG,OAAO,KAAK,CAAA,CAAE,CAAC;QAC1G;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QAClD;IACF;AACD;;ACnCD;;;;AAIG;AAKH;;;;;;;AAOG;AACG,MAAO,OAAyB,SAAQ,OAAwB,CAAA;AAMpE,IAAA,WAAA,CACmB,aAA6C,EAAA;AAE9D,QAAA,KAAK,EAAE;QAFU,IAAA,CAAA,aAAa,GAAb,aAAa;;QALxB,IAAA,CAAA,gBAAgB,GAA6C,IAAI;;QAEjE,IAAA,CAAA,UAAU,GAAoC,IAAI;IAM1D;IAEA,OAAO,MAAM,CACX,YAA4C,EAAA;AAE5C,QAAA,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAClC;AAEA;;;AAGG;IACK,UAAU,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU;QACxB;;AAGA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC5C,IAAI,MAAM,EAAE;;AAEV,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,OAAO,MAAM;YACf;QACF;;AAGA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;;;;AAKxB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACf;AAEA;;;AAGG;IACH,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC1B;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;QAClB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3C;AACD;;ACrFD;;;;AAIG;AAQH;;AAEG;AACH,SAAS,oBAAoB,CAAC,MAA6B,EAAA;AACzD,IAAA,IAAI,MAAM,YAAY,UAAU,EAAE;AAChC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IACzB;AACA,IAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,QAAA,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B;AACA,IAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACnE;AAEA;;;AAGG;AACG,MAAO,qBACX,SAAQ,OAA2E,CAAA;IAInF,WAAA,CACmB,cAAiB,EACjB,QAAiB,EAAA;AAElC,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,QAAQ,GAAR,QAAQ;;AAKzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;AAElC,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,IAAI,EAAE,MAAM,YAAY,SAAS,CAAC,EAAE;AAClC,gBAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;YACzE;AAEA,YAAA,MAAM,mBAAmB,GAAI,MAAc,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAChF,IAAI,CAAC,mBAAmB,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,cAAc,CAAA,uBAAA,CAAyB,CAAC;YAC7F;AAEA,YAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,mBAAmB,CAAC;AAExD,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACrC,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAC,KAAK,CAAC,CAAA,8BAAA,CAAgC,CAAC;gBAClG;gBACA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;YAC3C;QACF;IACF;AAEA,IAAA,OAAO,MAAM,CACX,aAAgB,EAChB,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC;IAC1D;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,MAAM,CAAC,KAAK;QACpB;QACA,OAAO,MAAM,CAAC,IAAI;IACpB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;;QAEtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;YAC/C,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI,KAAK,CACd,CAAA,0BAAA,EAA6B,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,KAAK,EAAE;aAExE;QACH;;QAGA,MAAM,kBAAkB,GAAI,KAAiC,CAAC,IAAI,CAAC,cAAc,CAAC;;QAGlF,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAEpE,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC7D,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,KAAK,CACd,oCAAoC,IAAI,CAAC,cAAc,CAAA,GAAA,CAAK;AAC5D,oBAAA,CAAA,iBAAA,EAAoB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA,EAAA,CAAI;AACnD,oBAAA,CAAA,UAAA,EAAa,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE;aAEpD;QACH;;AAGA,QAAA,OAAO,aAAa,CAAC,SAAS,CAAC,KAAK,CAA2E;IACjH;AAEA;;AAEG;IACH,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ;IACtB;AACD;;AC7HD;;;;AAIG;AAKH;;;AAGG;AACG,MAAO,MAA4C,SAAQ,OAA2E,CAAA;AAC1I,IAAA,WAAA,CAA6B,QAAiB,EAAA;AAC5C,QAAA,KAAK,EAAE;QADoB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAErC;IAEA,OAAO,MAAM,CACX,OAAgB,EAAA;AAEhB,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;QACpD;AACA,QAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAC5B;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,MAAM,CAAC,KAAK;QACpB;QACA,OAAO,MAAM,CAAC,IAAI;IACpB;AAEA,IAAA,SAAS,CAAC,KAAc,EAAA;QACtB,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,WAAW,GAA4B,IAAI;AAE/C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,gBAAA,UAAU,EAAE;gBACZ,WAAW,GAAG,MAAM;AACpB,gBAAA,IAAI,UAAU,GAAG,CAAC,EAAE;;oBAElB;gBACF;YACF;QACF;AAEA,QAAA,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI,KAAK,CAAC,gCAAgC;aAClD;QACH;AAEA,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,IAAI,KAAK,CACd,CAAA,cAAA,EAAiB,UAAU,oDAAoD;aAElF;QACH;AAEA,QAAA,OAAO,WAAY;IACrB;AAEA;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ;IACtB;AACD;;ACzED;;;AAGG;AACG,MAAO,OAAqB,SAAQ,OAAmB,CAAA;AAC3D,IAAA,WAAA,CACmB,MAA4B,EAAA;AAE7C,QAAA,KAAK,EAAE;QAFU,IAAA,CAAA,MAAM,GAAN,MAAM;IAGzB;AAEA;;AAEG;IACH,OAAO,MAAM,CAAc,MAA4B,EAAA;AACrD,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5B;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,MAAe;;AAGnB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI;AACF,gBAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B;YAAE,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;YAC5C;QACF;aAAO;;YAEL,MAAM,GAAG,KAAK;QAChB;;AAGA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC;;AAGA,QAAA,OAAO,MAAW;IACpB;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI;AACF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnD;QAAE,OAAO,KAAK,EAAE;YACd,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE;aACR;QACH;IACF;AAEA;;AAEG;AACH,IAAA,UAAU,CAAI,MAA2B,EAAA;AACvC,QAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5B;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unknown-SLIH1VCf.js","sources":["../../src/validators/unknown.ts"],"sourcesContent":["import { VldBase, ParseResult } from './base';\r\n\r\n/**\r\n * Validator that accepts unknown values\r\n */\r\nexport class VldUnknown extends VldBase<unknown, unknown> {\r\n /**\r\n * Create a new unknown validator\r\n */\r\n static create(): VldUnknown {\r\n return new VldUnknown();\r\n }\r\n \r\n /**\r\n * Parse unknown value (always succeeds)\r\n */\r\n parse(value: unknown): unknown {\r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse unknown value (always succeeds)\r\n */\r\n safeParse(value: unknown): ParseResult<unknown> {\r\n return { success: true, data: value };\r\n }\r\n}"],"names":[],"mappings":";;AAEA;;AAEG;AACG,MAAO,UAAW,SAAQ,OAAyB,CAAA;AACvD;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACX,OAAO,IAAI,UAAU,EAAE;IACzB;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,KAAc,EAAA;QACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC;AACD;;;;"}
|