react-hook-form 7.5.2-beta.0 → 7.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/isString.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/useFieldArray.ts","../src/logic/getFields.ts","../src/utils/isFileInput.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getMultipleSelectValue.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/hasValidation.ts","../src/logic/skipValidation.ts","../src/utils/isFunction.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/getValidationModes.ts","../src/utils/isHTMLElement.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/Subject.ts","../src/useForm.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is null | undefined => value == null;\n","import isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !(value instanceof Date);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","export default (value: any[]) => value.filter(Boolean);\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isUndefined from './isUndefined';\n\nexport default (obj: any = {}, path: string, defaultValue?: unknown) => {\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) => (isNullOrUndefined(result) ? result : result[key]),\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path])\n ? defaultValue\n : obj[path]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const SELECT = 'select';\n\nexport const UNDEFINED = 'undefined';\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n","export default <Key extends string, T extends Record<Key, any>>(\n source: T,\n key: Key,\n): Omit<T, Key> => {\n const copy = { ...source };\n delete copy[key];\n\n return copy;\n};\n","import * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues\n>(): UseFormReturn<TFieldValues> =>\n (React.useContext(FormContext) as unknown) as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>(\n props: FormProviderProps<TFieldValues>,\n) => (\n <FormContext.Provider\n value={(omit(props, 'children') as unknown) as UseFormReturn}\n >\n {props.children}\n </FormContext.Provider>\n);\n","import * as React from 'react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n isProxyEnabled: boolean,\n formState: FormState<TFieldValues>,\n readFormStateRef: React.MutableRefObject<ReadFormState>,\n localReadFormStateRef?: React.MutableRefObject<ReadFormState>,\n isRoot = true,\n) =>\n isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (prop in obj) {\n if (readFormStateRef.current[prop] !== VALIDATION_MODE.all) {\n readFormStateRef.current[prop] = isRoot\n ? VALIDATION_MODE.all\n : true;\n }\n localReadFormStateRef &&\n (localReadFormStateRef.current[prop] = true);\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState;\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport omit from '../utils/omit';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) => {\n const formState = omit(formStateData, 'name');\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(readFormStateRef).length ||\n Object.keys(formState).find(\n (key) =>\n readFormStateRef[key as keyof ReadFormState] ===\n (isRoot ? VALIDATION_MODE.all : true),\n )\n );\n};\n","export default <T extends unknown>(value: T) =>\n Array.isArray(value) ? value : [value];\n","import { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import { UNDEFINED } from '../constants';\n\nimport isWeb from './isWeb';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const { control, name } = props || {};\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n control || methods.control;\n const nameRef = React.useRef<InternalFieldName>(name as InternalFieldName);\n nameRef.current = name as InternalFieldName;\n\n const [formState, updateFormState] = React.useState(formStateRef.current);\n const readFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next: (formState) =>\n (!nameRef.current ||\n !formState.name ||\n convertToArrayPayload(nameRef.current).includes(formState.name)) &&\n shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n }),\n });\n\n return () => formStateSubscription.unsubscribe();\n }, []);\n\n return getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState as FormState<TFieldValues>,\n readFormStateRef,\n readFormState,\n false,\n );\n}\n\nexport { useFormState };\n","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport isUndefined from './utils/isUndefined';\nimport { EVENTS } from './constants';\nimport {\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n rules,\n defaultValue,\n control,\n shouldUnregister,\n}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n unregister,\n fieldArrayNamesRef,\n controllerSubjectRef,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const { onChange, onBlur, ref } = register(name, rules);\n const [value, setInputStateValue] = React.useState(\n isUndefined(get(fieldsRef.current, name)._f.value) ||\n isNameInFieldArray(fieldArrayNamesRef.current, name)\n ? isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue\n : get(fieldsRef.current, name)._f.value,\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n get(fieldsRef.current, name)._f.value = value;\n\n React.useEffect(() => {\n const controllerSubscription = controllerSubjectRef.current.subscribe({\n next: (data) =>\n (!data.name || name === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n return () => {\n controllerSubscription.unsubscribe();\n if (shouldUnmountUnregister || shouldUnregister) {\n unregister(name);\n } else if (get(fieldsRef.current, name)) {\n get(fieldsRef.current, name)._f.mount = false;\n }\n };\n }, [name]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n onBlur({\n target: {\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref: (elm) => elm && ref(elm),\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n get() {\n return !!get(formState.errors, name);\n },\n },\n isDirty: {\n get() {\n return !!get(formState.dirtyFields, name);\n },\n },\n isTouched: {\n get() {\n return !!get(formState.touchedFields, name);\n },\n },\n error: {\n get() {\n return get(formState.errors, name);\n },\n },\n },\n ),\n };\n}\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\n value?: unknown,\n) {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\nimport isUndefined from '../utils/isUndefined';\nimport omit from '../utils/omit';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName>,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import * as React from 'react';\n\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\n\nconst getFieldsValues = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef?: React.MutableRefObject<FieldValues>,\n output: FieldValues = {},\n): any => {\n for (const name in fieldsRef.current) {\n const field = fieldsRef.current[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n set(\n output,\n name,\n _f\n ? _f.ref.disabled || (_f.refs && _f.refs.every((ref) => ref.disabled))\n ? undefined\n : _f.value\n : Array.isArray(field)\n ? []\n : {},\n );\n\n current &&\n getFieldsValues(\n {\n current,\n },\n defaultValuesRef,\n output[name],\n );\n }\n }\n\n return output;\n};\n\nexport default getFieldsValues;\n","import { UNDEFINED } from '../constants';\n\nexport default () => {\n const d =\n typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id'\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): any =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: (value && value[keyName]) || generateId(),\n ...value,\n }));\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import * as React from 'react';\n\nimport isObject from '../utils/isObject';\n\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(\n object1: any,\n object2: any,\n isErrorObject?: boolean,\n) {\n if (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n object1 instanceof Date ||\n object2 instanceof Date\n ) {\n return object1 === object2;\n }\n\n if (!React.isValidElement(object1)) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!(isErrorObject && key === 'ref')) {\n const val2 = object2[key];\n\n if (\n (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2))\n ? !deepEqual(val1, val2, isErrorObject)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n","import isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...convertToArrayPayload(value)];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (Array.isArray(data)) {\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n }\n\n return [];\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(value), ...data];\n}\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import isBoolean from './isBoolean';\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) &&\n !objectRef.filter(\n (data) =>\n (isObject(data) && !isEmptyObject(data)) || isBoolean(data),\n ).length))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport mapIds from './logic/mapId';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport appendAt from './utils/append';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isPrimitive from './utils/isPrimitive';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport moveArrayAt from './utils/move';\nimport omit from './utils/omit';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id'\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n shouldUnregister,\n}: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const focusNameRef = React.useRef('');\n const {\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\n get(fieldsRef.current, name)\n ? get(getFieldsValues(fieldsRef), name)\n : get(fieldArrayDefaultValuesRef.current, getFieldArrayParentName(name))\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(defaultValuesRef.current, name, []),\n keyName,\n ),\n );\n\n set(fieldArrayDefaultValuesRef.current, name, [...fields]);\n fieldArrayNamesRef.current.add(name);\n\n const omitKey = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n fields: T,\n ) =>\n fields.map((field) =>\n omit((field || {}) as Record<TKeyName, any>, keyName),\n );\n\n const getCurrentFieldsValues = () => {\n const values = get(getFieldsValues(fieldsRef), name, []);\n\n return mapIds<TFieldValues, TKeyName>(\n get(fieldArrayDefaultValuesRef.current, name, []).map(\n (item: Partial<TFieldValues>, index: number) => ({\n ...item,\n ...values[index],\n }),\n ),\n keyName,\n );\n };\n\n const getFocusDetail = (\n index: number,\n options?: FieldArrayMethodProps,\n ): string =>\n options\n ? !isUndefined(options.focusIndex)\n ? `${name}.${options.focusIndex}`\n : options.focusName\n ? options.focusName\n : !options.shouldFocus\n ? ''\n : `${name}.${index}`\n : `${name}.${index}`;\n\n const resetFields = <T>(index?: T) =>\n convertToArrayPayload(index).forEach((currentIndex) =>\n set(\n fieldsRef.current,\n `${name}${isUndefined(currentIndex) ? '' : `.${currentIndex}`}`,\n isUndefined(currentIndex) ? [] : undefined,\n ),\n );\n\n const setFieldsAndNotify = (\n fieldsValues: Partial<FieldArray<TFieldValues, TFieldArrayName>>[] = [],\n ) => setFields(mapIds(fieldsValues, keyName));\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[]\n >(\n updatedFieldArrayValues?: T,\n ) =>\n updatedFieldArrayValues &&\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n const batchStateUpdate = <T extends Function>(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n },\n updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = [],\n shouldSet = true,\n ) => {\n if (get(fieldsRef.current, name)) {\n const output = method(get(fieldsRef.current, name), args.argA, args.argB);\n shouldSet && set(fieldsRef.current, name, output);\n }\n\n if (Array.isArray(get(formStateRef.current.errors, name))) {\n const output = method(\n get(formStateRef.current.errors, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.errors, name, output);\n cleanup(formStateRef.current.errors);\n }\n\n if (\n readFormStateRef.current.touchedFields &&\n get(formStateRef.current.touchedFields, name)\n ) {\n const output = method(\n get(formStateRef.current.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touchedFields, name, output);\n cleanup(formStateRef.current.touchedFields);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n updateDirtyFieldsWithDefaultValues(updatedFieldArrayValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (readFormStateRef.current.isValid) {\n set(\n validFieldsRef.current,\n name,\n method(get(validFieldsRef.current, name, []), args.argA),\n );\n cleanup(validFieldsRef.current);\n\n set(\n fieldsWithValidationRef.current,\n name,\n method(get(fieldsWithValidationRef.current, name, []), args.argA),\n );\n cleanup(fieldsWithValidationRef.current);\n }\n\n formStateSubjectRef.current.next({\n isDirty: getIsDirty(name, omitKey(updatedFieldArrayValues)),\n errors: formStateRef.current.errors as FieldErrors<TFieldValues>,\n isValid: formStateRef.current.isValid,\n });\n };\n\n const registerFieldArray = <T extends Object[]>(\n values: T,\n index = 0,\n parentName = '',\n ) =>\n values.forEach(\n (appendValueItem, valueIndex) =>\n !isPrimitive(appendValueItem) &&\n Object.entries(appendValueItem).forEach(([key, value]) => {\n const inputName = `${parentName || name}.${\n parentName ? valueIndex : index + valueIndex\n }.${key}`;\n\n Array.isArray(value)\n ? registerFieldArray(value, valueIndex, inputName)\n : set(fieldsRef.current, inputName, {\n _f: {\n ref: {\n name: inputName,\n },\n name: inputName,\n value,\n },\n });\n }),\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n false,\n );\n registerFieldArray(appendValue, currentIndex);\n\n focusNameRef.current = getFocusDetail(currentIndex, options);\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(prependValue);\n\n focusNameRef.current = getFocusDetail(0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(getCurrentFieldsValues(), index);\n resetFields(index);\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n },\n updatedFieldArrayValues,\n );\n };\n\n const insert = (\n index: number,\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const insertValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(insertValue, index);\n\n focusNameRef.current = getFocusDetail(index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldValues,\n false,\n );\n setFieldsAndNotify(fieldValues);\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n setFieldsAndNotify(fieldValues);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldValues,\n false,\n );\n };\n\n React.useEffect(() => {\n if (isWatchAllRef.current) {\n formStateSubjectRef.current.next({});\n } else {\n for (const watchField of watchFieldsRef.current) {\n if (name.startsWith(watchField)) {\n formStateSubjectRef.current.next({});\n break;\n }\n }\n }\n\n watchSubjectRef.current.next({\n name,\n value: get(getFieldsValues(fieldsRef), name, []),\n });\n\n focusNameRef.current &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => isString(key) && key.startsWith(focusNameRef.current),\n );\n\n focusNameRef.current = '';\n\n fieldArraySubjectRef.current.next({\n name,\n fields: omitKey([...fields]),\n });\n }, [fields, name]);\n\n React.useEffect(() => {\n const fieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next({ name: inputFieldArrayName, fields, isReset }) {\n if (isReset) {\n unset(fieldsRef.current, inputFieldArrayName || name);\n\n inputFieldArrayName\n ? set(\n fieldArrayDefaultValuesRef.current,\n inputFieldArrayName,\n fields,\n )\n : (fieldArrayDefaultValuesRef.current = fields);\n\n setFieldsAndNotify(get(fieldArrayDefaultValuesRef.current, name));\n }\n },\n });\n !get(fieldsRef.current, name) && set(fieldsRef.current, name, []);\n\n return () => {\n fieldArraySubscription.unsubscribe();\n (shouldUnmountUnregister || shouldUnregister) && unregister(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","import { Field, FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isKey from '../utils/isKey';\nimport set from '../utils/set';\n\nexport default function getFields(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n fieldsRefs: FieldRefs,\n) {\n const currentFields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field = get(fieldsRefs, name) as Field | undefined;\n\n if (field) {\n !isKey(name)\n ? set(currentFields, name, field._f)\n : (currentFields[name] = field._f);\n }\n }\n\n return currentFields;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { SELECT } from '../constants';\nimport { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(field?: Field) {\n if (field && field._f) {\n const ref = field._f.ref;\n\n if (ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field._f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field._f.refs).value;\n }\n\n return getFieldValueAs(\n isUndefined(ref.value) ? field._f.ref.value : ref.value,\n field._f,\n );\n }\n}\n","import { RegisterOptions } from '../types';\n\nexport default <T extends RegisterOptions>(options?: T, mounted?: boolean) =>\n options &&\n mounted &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","export default ({\n isOnBlur,\n isOnChange,\n isOnTouch,\n isTouched,\n isReValidateOnBlur,\n isReValidateOnChange,\n isBlurEvent,\n isSubmitted,\n isOnAll,\n}: {\n isOnAll?: boolean;\n isOnBlur?: boolean;\n isOnChange?: boolean;\n isReValidateOnBlur?: boolean;\n isReValidateOnChange?: boolean;\n isBlurEvent?: boolean;\n isSubmitted?: boolean;\n isOnTouch?: boolean;\n isTouched?: boolean;\n}) => {\n if (isOnAll) {\n return false;\n } else if (!isSubmitted && isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? isReValidateOnChange : isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport { Field, FieldError, InternalFieldErrors, Message } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n {\n _f: {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n value: inputValue,\n valueAsNumber,\n mount,\n },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n if (!mount) {\n return {};\n }\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType = INPUT_VALIDATION_RULES.maxLength,\n minType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: isRadioOrCheckbox ? (refs || [])[0] || {} : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (\n (!isNullOrUndefined(min) || !isNullOrUndefined(max)) &&\n inputValue !== ''\n ) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && !isEmpty && (maxLength || minLength)) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && pattern && !isEmpty) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (validate) {\n const validateRef = isRadioOrCheckbox && refs ? refs[0] : ref;\n\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, validateRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n for (const [key, validateFunction] of Object.entries(validate)) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateResult = await validateFunction(inputValue);\n const validateError = getValidateError(\n validateResult,\n validateRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: validateRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n return error;\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","export type Observer<T> = {\n next: (value: T) => void;\n};\n\ntype TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (\n value: Observer<T>,\n ) => {\n unsubscribe: TearDown;\n };\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFields from './logic/getFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport getFieldValueAs from './logic/getFieldValueAs';\nimport getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport hasValidation from './logic/hasValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport skipValidation from './logic/skipValidation';\nimport validateField from './logic/validateField';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport deepEqual from './utils/deepEqual';\nimport get from './utils/get';\nimport getValidationModes from './utils/getValidationModes';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isHTMLElement from './utils/isHTMLElement';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isObject from './utils/isObject';\nimport isPrimitive from './utils/isPrimitive';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isRadioInput from './utils/isRadioInput';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport set from './utils/set';\nimport Subject from './utils/Subject';\nimport unset from './utils/unset';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n ChangeHandler,\n DeepPartial,\n DefaultValues,\n EventType,\n Field,\n FieldArrayDefaultValues,\n FieldError,\n FieldErrors,\n FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n FormStateSubjectRef,\n GetIsDirty,\n InternalFieldName,\n InternalNameSet,\n KeepStateOptions,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n RegisterOptions,\n SetFieldValue,\n SetValueConfig,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object\n>({\n mode = VALIDATION_MODE.onSubmit,\n reValidateMode = VALIDATION_MODE.onChange,\n resolver,\n context,\n defaultValues = {} as DefaultValues<TFieldValues>,\n shouldFocusError = true,\n shouldUnregister,\n criteriaMode,\n}: UseFormProps<TFieldValues, TContext> = {}): UseFormReturn<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs>({});\n const fieldsNamesRef = React.useRef<Set<InternalFieldName>>(new Set());\n const formStateSubjectRef = React.useRef<FormStateSubjectRef<TFieldValues>>(\n new Subject(),\n );\n const unregisterFieldsNamesRef = React.useRef<Set<InternalFieldName>>(\n new Set(),\n );\n const watchSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n type?: EventType;\n value?: unknown;\n }>(),\n );\n const controllerSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n values: DefaultValues<TFieldValues>;\n }>(),\n );\n const fieldArraySubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n fields: any;\n isReset?: boolean;\n }>(),\n );\n const fieldArrayDefaultValuesRef = React.useRef<FieldArrayDefaultValues>({});\n const watchFieldsRef = React.useRef<InternalNameSet>(new Set());\n const isMountedRef = React.useRef(false);\n const fieldsWithValidationRef = React.useRef<\n FieldNamesMarkedBoolean<TFieldValues>\n >({});\n const validFieldsRef = React.useRef<FieldNamesMarkedBoolean<TFieldValues>>(\n {},\n );\n const defaultValuesRef = React.useRef<DefaultValues<TFieldValues>>(\n defaultValues,\n );\n const isWatchAllRef = React.useRef(false);\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet>(new Set());\n const validationMode = getValidationModes(mode);\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !validationMode.isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touchedFields: !isProxyEnabled,\n isValidating: !isProxyEnabled,\n isValid: !isProxyEnabled,\n errors: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n\n contextRef.current = context;\n resolverRef.current = resolver;\n\n const getIsValid = () =>\n (formStateRef.current.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors));\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName,\n error?: FieldError,\n shouldRender: boolean | null = false,\n state: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: boolean,\n isWatched?: boolean,\n ): boolean | void => {\n const previousError = get(formStateRef.current.errors, name);\n\n let shouldReRender =\n shouldRender ||\n !deepEqual(previousError, error, true) ||\n (readFormStateRef.current.isValid &&\n isUndefined(error) &&\n get(fieldsWithValidationRef.current, name) &&\n !get(validFieldsRef.current, name));\n\n if (error) {\n unset(validFieldsRef.current, name);\n shouldReRender =\n shouldReRender ||\n !previousError ||\n !deepEqual(previousError, error, true);\n set(formStateRef.current.errors, name, error);\n } else {\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\n set(validFieldsRef.current, name, true);\n shouldReRender = shouldReRender || previousError;\n }\n\n unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state) ||\n isWatched\n ) {\n const updatedFormState = {\n ...state,\n isValid: resolverRef.current ? !!isValid : getIsValid(),\n errors: formStateRef.current.errors,\n name,\n };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(\n isWatched ? { name } : updatedFormState,\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: false,\n });\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: InternalFieldName,\n rawValue: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n shouldRegister?: boolean,\n ) => {\n shouldRegister && register(name as Path<TFieldValues>);\n const _f = get(fieldsRef.current, name, {})._f as Field['_f'];\n\n if (_f) {\n const value =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n _f.value = getFieldValueAs(rawValue, _f);\n\n if (isRadioInput(_f.ref)) {\n (_f.refs || []).forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(_f.ref) && !isString(value)) {\n _f.ref.files = value as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(_f.ref) && _f.refs) {\n _f.refs.length > 1\n ? _f.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (_f.refs[0].checked = !!value);\n } else {\n _f.ref.value = value;\n }\n\n if (shouldRender) {\n const values = getFieldsValues(fieldsRef);\n set(values, name, rawValue);\n controllerSubjectRef.current.next({\n values: {\n ...defaultValuesRef.current,\n ...values,\n } as DefaultValues<TFieldValues>,\n name,\n });\n }\n\n options.shouldDirty && updateAndGetDirtyState(name, value);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getIsDirty: GetIsDirty = React.useCallback((name, data) => {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\n inputValue: unknown,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty = !deepEqual(\n get(defaultValuesRef.current, name),\n inputValue,\n );\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\n const previousIsDirty = formStateRef.current.isDirty;\n\n isFieldDirty\n ? set(formStateRef.current.dirtyFields, name, true)\n : unset(formStateRef.current.dirtyFields, name);\n\n formStateRef.current.isDirty = getIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\n name,\n };\n\n const isChanged =\n (readFormStateRef.current.isDirty &&\n previousIsDirty !== state.isDirty) ||\n (readFormStateRef.current.dirtyFields &&\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\n\n isChanged && shouldRender && formStateSubjectRef.current.next(state);\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n const error = (\n await validateField(\n get(fieldsRef.current, name) as Field,\n isValidateAllFieldCriteria,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n },\n [isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names: InternalFieldName[],\n currentNames: FieldName<TFieldValues>[] = [],\n ) => {\n const { errors } = await resolverRef.current!(\n getFieldsValues(fieldsRef),\n contextRef.current,\n {\n criteriaMode,\n names: currentNames,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n }\n\n return errors;\n },\n [criteriaMode],\n );\n\n const validateForm = async (fieldsRef: FieldRefs) => {\n let isValid = true;\n\n for (const name in fieldsRef) {\n const field = fieldsRef[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n isValidateAllFieldCriteria,\n );\n\n if (fieldError[_f.name]) {\n isValid = false;\n set(formStateRef.current.errors, _f.name, fieldError[_f.name]);\n unset(validFieldsRef.current, _f.name);\n } else if (get(fieldsWithValidationRef.current, _f.name)) {\n set(validFieldsRef.current, _f.name, true);\n unset(formStateRef.current.errors, _f.name);\n }\n }\n\n current && (await validateForm(current));\n }\n }\n\n return isValid;\n };\n\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : (convertToArrayPayload(name) as InternalFieldName[]);\n let isValid;\n let schemaResult: FieldErrors<TFieldValues> | {} = {};\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n schemaResult = await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name) ? undefined : (fields as FieldName<TFieldValues>[]),\n );\n isValid = fields.every((name) => !get(schemaResult, name));\n } else {\n isValid = isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : (\n await Promise.all(\n fields\n .filter((fieldName) => get(fieldsRef.current, fieldName))\n .map(\n async (fieldName) =>\n await executeValidation(fieldName, null),\n ),\n )\n ).every(Boolean);\n }\n\n formStateSubjectRef.current.next({\n ...(isString(name) ? { name } : {}),\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current\n ? isEmptyObject(schemaResult)\n : getIsValid(),\n });\n\n return isValid;\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<\n PathValue<TFieldValues, FieldPath<TFieldValues>>\n >,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([inputKey, inputValue]) => {\n const fieldName = `${name}.${inputKey}` as Path<TFieldValues>;\n const field = get(fieldsRef.current, fieldName);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n isFieldArray || (field && !field._f)\n ? setInternalValues(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n true,\n !field,\n );\n }),\n [trigger],\n );\n\n const isFieldWatched = (name: FieldPath<TFieldValues>) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const updateValidAndValue = (\n name: InternalFieldName,\n options?: RegisterOptions,\n ref?: Ref,\n isWithinRefCallback?: boolean,\n ) => {\n const field = get(fieldsRef.current, name) as Field;\n const defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (field && !isUndefined(defaultValue)) {\n if (ref && (ref as HTMLInputElement).defaultChecked) {\n field._f.value = getFieldValue(field);\n } else if (!isNameInFieldArray(fieldArrayNamesRef.current, name)) {\n setFieldValue(name, defaultValue);\n } else {\n field._f.value = defaultValue;\n }\n }\n\n if (\n (!isUndefined(defaultValue) || isWithinRefCallback) &&\n hasValidation(options, field._f.mount) &&\n !validationMode.isOnSubmit &&\n field &&\n readFormStateRef.current.isValid\n ) {\n validateField(field, isValidateAllFieldCriteria).then((error) => {\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n formStateRef.current.isValid !== getIsValid() &&\n updateFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(fieldsRef.current, name);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n if (isFieldArray) {\n fieldArraySubjectRef.current.next({\n fields: value,\n name,\n isReset: true,\n });\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n options.shouldDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n value,\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n formStateSubjectRef.current.next({\n name,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getIsDirty(name, value),\n });\n }\n\n !(value as []).length &&\n set(fieldsRef.current, name, []) &&\n set(fieldArrayDefaultValuesRef.current, name, []);\n }\n\n (field && !field._f) || isFieldArray\n ? setInternalValues(name, value, isFieldArray ? {} : options)\n : setFieldValue(name, value, options, true, !field);\n\n isFieldWatched(name) && formStateSubjectRef.current.next({});\n watchSubjectRef.current.next({ name, value });\n };\n\n const handleChange: ChangeHandler = React.useCallback(\n async ({ type, target, target: { value, type: inputType } }) => {\n let name = (target as Ref)!.name;\n let error;\n let isValid;\n const field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n let inputValue = inputType ? getFieldValue(field) : undefined;\n inputValue = isUndefined(inputValue) ? value : inputValue;\n\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n\n const shouldSkipValidation =\n (!hasValidation(field._f, field._f.mount) &&\n !resolverRef.current &&\n !get(formStateRef.current.errors, name)) ||\n skipValidation({\n isBlurEvent,\n isTouched: !!get(formStateRef.current.touchedFields, name),\n isSubmitted: formStateRef.current.isSubmitted,\n isReValidateOnBlur,\n isReValidateOnChange,\n ...validationMode,\n });\n const isWatched =\n !isBlurEvent && isFieldWatched(name as FieldPath<TFieldValues>);\n\n if (!isUndefined(inputValue)) {\n field._f.value = inputValue;\n }\n\n const state = updateAndGetDirtyState(name, field._f.value, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\n readFormStateRef.current.touchedFields &&\n (state.touchedFields = formStateRef.current.touchedFields);\n }\n\n let shouldRender = !isEmptyObject(state) || isWatched;\n\n if (shouldSkipValidation) {\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n return (\n shouldRender &&\n formStateSubjectRef.current.next(\n isWatched ? { name } : { ...state, name },\n )\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getFieldsValues(fieldsRef),\n contextRef.current,\n {\n criteriaMode,\n fields: getFields([name], fieldsRef.current),\n names: [name as FieldName<TFieldValues>],\n },\n );\n const previousFormIsValid = formStateRef.current.isValid;\n error = get(errors, name);\n\n if (isCheckBoxInput(target as Ref) && !error) {\n const parentNodeName = getNodeParentName(name);\n const currentError = get(errors, parentNodeName, {});\n currentError.type && currentError.message && (error = currentError);\n\n if (\n currentError ||\n get(formStateRef.current.errors, parentNodeName)\n ) {\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n\n previousFormIsValid !== isValid && (shouldRender = true);\n } else {\n error = (await validateField(field, isValidateAllFieldCriteria))[\n name\n ];\n }\n\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n shouldRenderBaseOnError(\n name,\n error,\n shouldRender,\n state,\n isValid,\n isWatched,\n );\n }\n },\n [],\n );\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = {\n ...defaultValuesRef.current,\n ...getFieldsValues(fieldsRef),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const updateIsValid = React.useCallback(\n async (values = {}) => {\n const previousIsValid = formStateRef.current.isValid;\n\n if (resolver) {\n const { errors } = await resolverRef.current!(\n {\n ...getFieldsValues(fieldsRef),\n ...values,\n },\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.isValid = isEmptyObject(errors);\n } else {\n getIsValid();\n }\n\n previousIsValid !== formStateRef.current.isValid &&\n formStateSubjectRef.current.next({\n isValid: formStateRef.current.isValid,\n });\n },\n [criteriaMode],\n );\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name\n ? convertToArrayPayload(name).forEach((inputName) =>\n unset(formStateRef.current.errors, inputName),\n )\n : (formStateRef.current.errors = {});\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (\n ((get(fieldsRef.current, name) as Field) || { _f: {} })._f || {}\n ).ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n formStateSubjectRef.current.next({\n name,\n errors: formStateRef.current.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watchInternal: WatchInternal<TFieldValues> = React.useCallback(\n (fieldNames, defaultValue, isGlobal) => {\n const isArrayNames = Array.isArray(fieldNames);\n const fieldValues = isMountedRef.current\n ? {\n ...defaultValuesRef.current,\n ...getFieldsValues(fieldsRef),\n }\n : isUndefined(defaultValue)\n ? defaultValuesRef.current\n : isArrayNames\n ? defaultValue || {}\n : { [fieldNames as string]: defaultValue };\n\n if (isUndefined(fieldNames)) {\n isGlobal && (isWatchAllRef.current = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of isArrayNames ? fieldNames : [fieldNames]) {\n isGlobal && watchFieldsRef.current.add(fieldName as string);\n result.push(get(fieldValues, fieldName as string));\n }\n\n return isArrayNames ? result : result[0];\n },\n [],\n );\n\n const watch: UseFormWatch<TFieldValues> = (\n fieldName?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? watchSubjectRef.current.subscribe({\n next: (info) =>\n fieldName(\n watchInternal(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) as UnpackNestedValue<TFieldValues>,\n info,\n ),\n })\n : watchInternal(\n fieldName as string | string[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name\n ? convertToArrayPayload(name)\n : Object.keys(fieldsNamesRef.current)) {\n fieldsNamesRef.current.delete(inputName);\n fieldArrayNamesRef.current.delete(inputName);\n\n if (get(fieldsRef.current, inputName) as Field) {\n if (!options.keepIsValid) {\n unset(fieldsWithValidationRef.current, inputName);\n unset(validFieldsRef.current, inputName);\n }\n !options.keepError && unset(formStateRef.current.errors, inputName);\n !options.keepValue && unset(fieldsRef.current, inputName);\n !options.keepDirty &&\n unset(formStateRef.current.dirtyFields, inputName);\n !options.keepTouched &&\n unset(formStateRef.current.touchedFields, inputName);\n !shouldUnregister &&\n !options.keepDefaultValue &&\n unset(defaultValuesRef.current, inputName);\n\n watchSubjectRef.current.next({\n name: inputName,\n });\n }\n }\n\n formStateSubjectRef.current.next({\n ...formStateRef.current,\n ...(!options.keepDirty ? {} : { isDirty: getIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n !options.keepIsValid && updateIsValid();\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n register(name as FieldPath<TFieldValues>, options);\n let field = get(fieldsRef.current, name) as Field;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n ref === field._f.ref ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(ref)) ||\n (isRadioOrCheckbox &&\n Array.isArray(field._f.refs) &&\n compact(field._f.refs).find((option) => option === ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(fieldsRef.current, name, field);\n\n const defaultValue = updateValidAndValue(name, options, ref, true);\n\n if (\n isRadioOrCheckbox && Array.isArray(defaultValue)\n ? !deepEqual(get(fieldsRef.current, name)._f.value, defaultValue)\n : isUndefined(get(fieldsRef.current, name)._f.value)\n ) {\n get(fieldsRef.current, name)._f.value = getFieldValue(\n get(fieldsRef.current, name),\n );\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n const isInitialRegister = !get(fieldsRef.current, name);\n\n set(fieldsRef.current, name, {\n _f: {\n ...(isInitialRegister\n ? { ref: { name } }\n : {\n ref: (get(fieldsRef.current, name)._f || {}).ref,\n ...get(fieldsRef.current, name)._f,\n }),\n name,\n mount: true,\n ...options,\n },\n });\n hasValidation(options, true) &&\n set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n isInitialRegister && updateValidAndValue(name, options);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n registerFieldRef(name, ref, options);\n } else {\n const field = get(fieldsRef.current, name) as Field;\n field && (field._f.mount = false);\n\n if (\n isWeb &&\n (shouldUnregister || (options && options.shouldUnregister))\n ) {\n unregisterFieldsNamesRef.current.add(name);\n }\n }\n },\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues = getFieldsValues(fieldsRef);\n\n formStateSubjectRef.current.next({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.errors = errors;\n fieldValues = values;\n } else {\n await validateForm(fieldsRef.current);\n }\n\n if (\n isEmptyObject(formStateRef.current.errors) &&\n Object.keys(formStateRef.current.errors).every((name) =>\n get(fieldValues, name),\n )\n ) {\n formStateSubjectRef.current.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\n shouldFocusError &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => get(formStateRef.current.errors, key),\n fieldsNamesRef.current,\n );\n }\n } catch {\n hasNoPromiseError = false;\n } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(formStateRef.current.errors) && hasNoPromiseError,\n submitCount: formStateRef.current.submitCount + 1,\n errors: formStateRef.current.errors,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria, criteriaMode],\n );\n\n const resetFromState = React.useCallback(\n (\n {\n keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepDefaultValues,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions,\n values?: DefaultValues<TFieldValues>,\n ) => {\n if (!keepIsValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n formStateSubjectRef.current.next({\n submitCount: keepSubmitCount ? formStateRef.current.submitCount : 0,\n isDirty: keepDirty\n ? formStateRef.current.isDirty\n : keepDefaultValues\n ? deepEqual(values, defaultValuesRef.current)\n : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !!updateIsValid(values),\n dirtyFields: keepDirty ? formStateRef.current.dirtyFields : {},\n touchedFields: keepTouched ? formStateRef.current.touchedFields : {},\n errors: keepErrors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n },\n [],\n );\n\n const registerAbsentFields = <T extends DefaultValues<TFieldValues>>(\n value: T,\n name = '',\n ): void => {\n !get(fieldsRef.current, name) &&\n (isPrimitive(value) ||\n (isWeb && (value instanceof File || value instanceof Date))) &&\n set(fieldsRef.current, name, {\n _f: {\n ref: { name, value },\n value,\n name,\n },\n });\n\n if (Array.isArray(value) || isObject(value)) {\n if (name && !get(fieldsRef.current, name)) {\n set(fieldsRef.current, name, Array.isArray(value) ? [] : {});\n }\n\n for (const key in value) {\n registerAbsentFields(value[key], name + (name ? '.' : '') + key);\n }\n }\n };\n\n const reset: UseFormReset<TFieldValues> = (values, keepStateOptions = {}) => {\n const updatedValues = values || defaultValuesRef.current;\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const name of fieldsNamesRef.current) {\n const field = get(fieldsRef.current, name);\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n if (!keepStateOptions.keepDefaultValues) {\n defaultValuesRef.current = { ...updatedValues };\n registerAbsentFields(updatedValues);\n }\n\n if (!keepStateOptions.keepValues) {\n fieldsRef.current = {};\n\n controllerSubjectRef.current.next({\n values: { ...updatedValues },\n });\n\n watchSubjectRef.current.next({\n value: { ...updatedValues },\n });\n\n fieldArraySubjectRef.current.next({\n fields: { ...updatedValues },\n isReset: true,\n });\n }\n\n resetFromState(keepStateOptions, values);\n isMountedRef.current = false;\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) =>\n get(fieldsRef.current, name)._f.ref.focus();\n\n React.useEffect(() => {\n registerAbsentFields(defaultValuesRef.current);\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n updateFormState(formStateRef.current);\n }\n },\n });\n\n const useFieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next(state) {\n if (state.fields && state.name && readFormStateRef.current.isValid) {\n const values = getFieldsValues(fieldsRef);\n set(values, state.name, state.fields);\n updateIsValid(values);\n }\n },\n });\n\n resolverRef.current && readFormStateRef.current.isValid && updateIsValid();\n\n return () => {\n watchSubjectRef.current.unsubscribe();\n formStateSubscription.unsubscribe();\n useFieldArraySubscription.unsubscribe();\n };\n }, []);\n\n React.useEffect(() => {\n const isLiveInDom = (ref: Ref) =>\n !isHTMLElement(ref) || !document.contains(ref);\n\n isMountedRef.current = true;\n unregisterFieldsNamesRef.current.forEach((name) => {\n const field = get(fieldsRef.current, name) as Field;\n\n field &&\n (field._f.refs\n ? field._f.refs.every(isLiveInDom)\n : isLiveInDom(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n });\n unregisterFieldsNamesRef.current = new Set();\n });\n\n return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n formStateSubjectRef,\n fieldArraySubjectRef,\n controllerSubjectRef,\n watchSubjectRef,\n watchInternal,\n fieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister: shouldUnregister,\n }),\n [],\n ),\n formState: getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState,\n readFormStateRef,\n ),\n trigger,\n register,\n handleSubmit,\n watch: React.useCallback(watch, []),\n setValue: React.useCallback(setValue, [setInternalValues]),\n getValues: React.useCallback(getValues, []),\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n unregister: React.useCallback(unregister, []),\n setError: React.useCallback(setError, []),\n setFocus: React.useCallback(setFocus, []),\n };\n}\n","import * as React from 'react';\n\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): UnpackNestedValue<DeepPartial<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(props: {\n name: TName;\n defaultValue?: FieldPathValue<TFieldValues, TName>;\n control?: Control<TFieldValues>;\n}): FieldPathValue<TFieldValues, TName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[]\n>(props: {\n name: TName;\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): FieldPathValues<TFieldValues, TName>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const { control, name, defaultValue } = props || {};\n const methods = useFormContext();\n const nameRef = React.useRef(name);\n nameRef.current = name;\n\n const { watchInternal, watchSubjectRef } = control || methods.control;\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? watchInternal(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n watchInternal(name as InternalFieldName);\n\n const watchSubscription = watchSubjectRef.current.subscribe({\n next: ({ name: inputName, value }) =>\n (!nameRef.current ||\n !inputName ||\n convertToArrayPayload(nameRef.current).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n (fieldName.startsWith(inputName as InternalFieldName) ||\n inputName.startsWith(fieldName as InternalFieldName)),\n )) &&\n updateValue(\n isString(inputName) &&\n nameRef.current === inputName &&\n !isUndefined(value)\n ? value\n : watchInternal(\n nameRef.current as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n ),\n });\n\n return () => watchSubscription.unsubscribe();\n }, []);\n\n return value;\n}\n"],"names":["getFieldArrayParentName","append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":";;AAEA,sBAAe,CAAC,OAAqB,KACnC,OAAO,CAAC,IAAI,KAAK,UAAU;;ACH7B,wBAAe,CAAC,KAAc,KAAgC,KAAK,IAAI,IAAI;;ACEpE,MAAM,YAAY,GAAG,CAAC,KAAc,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC;AAE1E,eAAe,CAAmB,KAAc,KAC9C,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB,YAAY,CAAC,KAAK,CAAC;IACnB,EAAE,KAAK,YAAY,IAAI,CAAC;;ACH1B,yBAAe,CAAC,KAAc,KAC5B,QAAQ,CAAC,KAAK,CAAC,IAAK,KAAe,CAAC,MAAM;MACtC,eAAe,CAAE,KAAe,CAAC,MAAM,CAAC;UACrC,KAAe,CAAC,MAAM,CAAC,OAAO;UAC9B,KAAe,CAAC,MAAM,CAAC,KAAK;MAC/B,KAAK;;ACVX,wBAAe,CAAC,IAAY,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI;;ACI9E,yBAAe,CAAC,KAA6B,EAAE,IAAuB,KACpE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;;ACLnE,cAAe,CAAC,KAAY,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;;ACAtD,kBAAe,CAAC,GAAY,KAAuB,GAAG,KAAK,SAAS;;ACIpE,UAAe,CAAC,MAAW,EAAE,EAAE,IAAY,EAAE,YAAsB;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CACpD,CAAC,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EACnE,GAAG,CACJ,CAAC;IAEF,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,GAAG;UACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;cACpB,YAAY;cACZ,GAAG,CAAC,IAAI,CAAC;UACX,MAAM,CAAC;AACb,CAAC;;ACbM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEK,MAAM,eAAe,GAAmB;IAC7C,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,GAAG,EAAE,KAAK;CACX,CAAC;AAEK,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB,MAAM,SAAS,GAAG,WAAW,CAAC;AAE9B,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACrB;;AC3BD,WAAe,CACb,MAAS,EACT,GAAQ;IAER,MAAM,IAAI,qBAAQ,MAAM,CAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO,IAAI,CAAC;AACd,CAAC;;ACHD,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAuB,IAAI,CAAC,CAAC;AAEpE,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC;MAE1B,cAAc,GAAG,MAG3B,KAAK,CAAC,UAAU,CAAC,WAAW,EAA6C;MAE/D,YAAY,GAAG,CAC1B,KAAsC,MAEtC,oBAAC,WAAW,CAAC,QAAQ,IACnB,KAAK,EAAG,IAAI,CAAC,KAAK,EAAE,UAAU,CAA8B,IAE3D,KAAK,CAAC,QAAQ,CACM;;AChBzB,wBAAe,CACb,cAAuB,EACvB,SAAkC,EAClC,gBAAuD,EACvD,qBAA6D,EAC7D,MAAM,GAAG,IAAI,KAEb,cAAc;MACV,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,GAAG,EAAE,CAAC,GAAG,EAAE,IAA0B;YACnC,IAAI,IAAI,IAAI,GAAG,EAAE;gBACf,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,GAAG,EAAE;oBAC1D,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM;0BACnC,eAAe,CAAC,GAAG;0BACnB,IAAI,CAAC;iBACV;gBACD,qBAAqB;qBAClB,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;aAClB;YAED,OAAO,SAAS,CAAC;SAClB;KACF,CAAC;MACF,SAAS;;ACzBf,oBAAe,CAAC,KAAc,KAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;;ACA/C,4BAAe,CACb,aAAgB,EAChB,gBAAmB,EACnB,MAAgB;IAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9C,QACE,aAAa,CAAC,SAAS,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM;QACrE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACzB,CAAC,GAAG,KACF,gBAAgB,CAAC,GAA0B,CAAC;aAC3C,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,CACxC,EACD;AACJ,CAAC;;ACrBD,4BAAe,CAAoB,KAAQ,KACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;;ACCxC,YAAe,OAAO,MAAM,KAAK,SAAS;IACxC,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS;IACvC,OAAO,QAAQ,KAAK,SAAS;;ACA/B,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,IAAI,MAAM,GAAG,OAAO,KAAK,KAAK,SAAS;;ACW7E,SAAS,YAAY,CACnB,KAAuC;IAEvC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GAC3D,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAoB,IAAyB,CAAC,CAAC;IAC3E,OAAO,CAAC,OAAO,GAAG,IAAyB,CAAC;IAE5C,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC;QACd,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC;YAClE,IAAI,EAAE,CAAC,SAAS,KACd,CAAC,CAAC,OAAO,CAAC,OAAO;gBACf,CAAC,SAAS,CAAC,IAAI;gBACf,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;gBACjE,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;gBACvD,eAAe,iCACV,YAAY,CAAC,OAAO,GACpB,SAAS,EACZ;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC;KAClD,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,iBAAiB,CACtB,cAAc,EACd,SAAoC,EACpC,gBAAgB,EAChB,aAAa,EACb,KAAK,CACN,CAAC;AACJ;;SCzCgB,aAAa,CAG3B,EACA,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,OAAO,EACP,gBAAgB,GACwB;IAIxC,MAAM,OAAO,GAAG,cAAc,EAAgB,CAAC;IAC/C,MAAM,EACJ,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAChD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAChD,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;UAClD,WAAW,CAAC,YAAY,CAAC;cACvB,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;cACnC,YAAY;UACd,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1C,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO;QACnC,IAAI;KACL,CAAC,CAAC;IACH,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IAE9C,KAAK,CAAC,SAAS,CAAC;QACd,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC;YACpE,IAAI,EAAE,CAAC,IAAI,KACT,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;gBACjC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC7C,CAAC,CAAC;QAEH,OAAO;YACL,sBAAsB,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,uBAAuB,IAAI,gBAAgB,EAAE;gBAC/C,UAAU,CAAC,IAAI,CAAC,CAAC;aAClB;iBAAM,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACvC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;aAC/C;SACF,CAAC;KACH,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,CAAC,KAAU;gBACnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACxC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAE1B,QAAQ,CAAC;oBACP,MAAM,EAAE;wBACN,KAAK;wBACL,IAAI,EAAE,IAAyB;qBAChC;oBACD,IAAI,EAAE,MAAM,CAAC,MAAM;iBACpB,CAAC,CAAC;aACJ;YACD,MAAM,EAAE;gBACN,MAAM,CAAC;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,IAAyB;qBAChC;oBACD,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC;aACJ;YACD,IAAI;YACJ,KAAK;YACL,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;SAC9B;QACD,SAAS;QACT,UAAU,EAAE,MAAM,CAAC,gBAAgB,CACjC,EAAE,EACF;YACE,OAAO,EAAE;gBACP,GAAG;oBACD,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACtC;aACF;YACD,OAAO,EAAE;gBACP,GAAG;oBACD,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC3C;aACF;YACD,SAAS,EAAE;gBACT,GAAG;oBACD,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;iBAC7C;aACF;YACD,KAAK,EAAE;gBACL,GAAG;oBACD,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACpC;aACF;SACF,CACF;KACF,CAAC;AACJ;;MC3HM,UAAU,GAAG,CAIjB,KAA2C,KACxC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAsB,KAAK,CAAC;;ACF3D,mBAAe,CACb,IAAuB,EACvB,wBAAiC,EACjC,MAA2B,EAC3B,IAAY,EACZ,OAAuB,KAEvB,wBAAwB;sCAEf,MAAM,CAAC,IAAI,CAAC,KACf,KAAK,mCACC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAE,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAE,CAAC,KAAK,GAAG,EAAE,MAClE,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,SAG3B,EAAE;;ACrBR,YAAe,CAAC,KAAa,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;ACErD,mBAAe,CAAC,KAAa,KAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;SCGhC,GAAG,CACzB,MAAmB,EACnB,IAAY,EACZ,KAAe;IAEf,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;IAE7B,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,QAAQ;gBACN,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;sBACzC,QAAQ;sBACR,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;0BAC5B,EAAE;0BACF,EAAE,CAAC;SACV;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACvB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KACtB;IACD,OAAO,MAAM,CAAC;AAChB;;AC3BA,MAAM,YAAY,GAAG,CACnB,MAAiB,EACjB,QAAmC,EACnC,WAAoC;IAEpC,KAAK,MAAM,GAAG,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACpD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE/B,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAElC,IAAI,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE;oBAC/C,MAAM;iBACP;qBAAM,IAAI,EAAE,CAAC,IAAI,EAAE;oBAClB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM;iBACP;aACF;iBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC5B,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACjC;SACF;KACF;AACH,CAAC;;ACxBD,MAAM,eAAe,GAAG,CACtB,SAA4C,EAC5C,gBAAsD,EACtD,SAAsB,EAAE;IAExB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAElC,GAAG,CACD,MAAM,EACN,IAAI,EACJ,EAAE;kBACE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;sBAClE,SAAS;sBACT,EAAE,CAAC,KAAK;kBACV,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;sBACpB,EAAE;sBACF,EAAE,CACP,CAAC;YAEF,OAAO;gBACL,eAAe,CACb;oBACE,OAAO;iBACR,EACD,gBAAgB,EAChB,MAAM,CAAC,IAAI,CAAC,CACb,CAAC;SACL;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;;ACxCD,iBAAe;IACb,MAAM,CAAC,GACL,OAAO,WAAW,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE3E,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5C,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC,CAAC;AACL,CAAC;;ACPD,aAAe,CAIb,SAAuC,EAAE,EACzC,OAAiB,KAEjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAiC,sBAC3C,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,IACjD,KAAK,EACR,CAAC;;ACTL,kBAAe,CAAC,KAAc,KAC5B,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;SCA1B,SAAS,CAC/B,OAAY,EACZ,OAAY,EACZ,aAAuB;IAEvB,IACE,WAAW,CAAC,OAAO,CAAC;QACpB,WAAW,CAAC,OAAO,CAAC;QACpB,OAAO,YAAY,IAAI;QACvB,OAAO,YAAY,IAAI,EACvB;QACA,OAAO,OAAO,KAAK,OAAO,CAAC;KAC5B;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,EAAE,aAAa,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE;gBACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE1B,IACE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;qBACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;sBACnC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;sBACrC,IAAI,KAAK,IAAI,EACjB;oBACA,OAAO,KAAK,CAAC;iBACd;aACF;SACF;KACF;IAED,OAAO,IAAI,CAAC;AACd;;SC5CgB,SAAS,CAGvB,MAAS,EAAE,MAAS;IACpB,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QAC9C,OAAO,MAAM,CAAC;KACf;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI;YACF,MAAM,CAAC,GAAG,CAAC;gBACT,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC;qBAC9C,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;sBACtD,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;sBACnC,WAAW,CAAC;SACnB;QAAC,WAAM,GAAE;KACX;IAED,OAAO,MAAM,CAAC;AAChB;;ACpBA,SAAS,cAAc,CAKrB,MAAS,EACT,aAAgB,EAChB,WAA2C,EAC3C,UAAc,EACd,UAAoB;IAEpB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IAEf,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACrC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjD,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC7B,cAAc,CACZ,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAM,EACvB,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EACxC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAO,EAC7B,WAAW,CAAC,KAAK,CAAC,EAClB,GAAG,CACJ,CAAC;aACH;iBAAM;gBACL,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;sBAC/D,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC;uBACjC,WAAW,CAAC,KAAK,CAAC,mCACd,WAAW,CAAC,KAAK,CAAC,KACrB,CAAC,GAAG,GAAG,IAAI,GACZ,CAAC,CAAC;aACR;SACF;QAED,UAAU;YACR,CAAC,WAAW,CAAC,MAAM;YACnB,OAAO,UAAU,CAAC,UAAqB,CAAC,CAAC;KAC5C;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+BAAe,CACb,MAAS,EACT,aAAgB,EAChB,WAA2C,KAE3C,SAAS,CACP,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAC1E,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAC3E;;SCtDqB,MAAM,CAAI,IAAS,EAAE,KAAc;IACzD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD;;ACJA,qBAAe,CAAI,KAAc,KAC/B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;;SCOhD,MAAM,CAC5B,IAAS,EACT,KAAa,EACb,KAAe;IAEf,OAAO;QACL,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QACvB,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC/B,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACrB,CAAC;AACJ;;AClBA,eAAe,CAAC,KAAc,KAAsB,OAAO,KAAK,KAAK,QAAQ;;ACE7E,kBAAe,CACb,IAAuB,EACvB,IAAY,EACZ,EAAU;IAEV,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;SACtB;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;;SCduB,OAAO,CAAI,IAAS,EAAE,KAAc;IAC1D,OAAO,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACpD;;ACAA,SAAS,eAAe,CAAI,IAAS,EAAE,OAAiB;IACtD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC,EAAE,CAAC;KACL;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,oBAAe,CAAI,IAAS,EAAE,KAAyB,KACrD,WAAW,CAAC,KAAK,CAAC;MACd,EAAE;MACF,eAAe,CACb,IAAI,EACH,qBAAqB,CAAC,KAAK,CAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CACjE;;ACtBP,kBAAe,CAAI,IAAS,EAAE,MAAc,EAAE,MAAc;IAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;;ACFD,gBAAe,CAAC,KAAc,KAAuB,OAAO,KAAK,KAAK,SAAS;;ACO/E,SAAS,OAAO,CAAC,MAAW,EAAE,UAA+B;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,MAAM,EAAE;QACrB,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;SAEuB,KAAK,CAAC,MAAW,EAAE,IAAY;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,WAAW,GACf,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,cAAc,CAAC;IAEnB,IAAI,WAAW,EAAE;QACf,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;KACzB;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,IAAI,SAAS,CAAC;QACd,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,cAAc,GAAG,MAAM,CAAC;SACzB;QAED,OAAO,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE;YACpC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IACE,kBAAkB,KAAK,KAAK;iBAC3B,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC;qBAC9C,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;wBACvB,CAAC,SAAS,CAAC,MAAM,CACf,CAAC,IAAI,KACH,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAC9D,CAAC,MAAM,CAAC,CAAC,EACd;gBACA,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;aACpE;YAED,cAAc,GAAG,SAAS,CAAC;SAC5B;KACF;IAED,OAAO,MAAM,CAAC;AAChB;;MCzBa,aAAa,GAAG,CAI3B,EACA,OAAO,EACP,IAAI,EACJ,OAAO,GAAG,IAAgB,EAC1B,gBAAgB,GAKjB;IACC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,EACJ,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC1B,UAAU,EACV,uBAAuB,GACxB,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAGxC,MAAM,CACJ,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;UACxB,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;UACrC,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAEA,iBAAuB,CAAC,IAAI,CAAC,CAAC;cACtE,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;cACjD,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAC3C,OAAO,CACR,CACF,CAAC;IAEF,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3D,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,CAKd,MAAS,KAET,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KACf,IAAI,EAAE,KAAK,IAAI,EAAE,GAA4B,OAAO,CAAC,CACtD,CAAC;IAEJ,MAAM,sBAAsB,GAAG;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAEzD,OAAO,MAAM,CACX,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CACnD,CAAC,IAA2B,EAAE,KAAa,sCACtC,IAAI,GACJ,MAAM,CAAC,KAAK,CAAC,EAChB,CACH,EACD,OAAO,CACR,CAAC;KACH,CAAC;IAEF,MAAM,cAAc,GAAG,CACrB,KAAa,EACb,OAA+B,KAE/B,OAAO;UACH,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;cAC9B,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE;cAC/B,OAAO,CAAC,SAAS;kBACjB,OAAO,CAAC,SAAS;kBACjB,CAAC,OAAO,CAAC,WAAW;sBACpB,EAAE;sBACF,GAAG,IAAI,IAAI,KAAK,EAAE;UACpB,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,CAAI,KAAS,KAC/B,qBAAqB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAChD,GAAG,CACD,SAAS,CAAC,OAAO,EACjB,GAAG,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,IAAI,YAAY,EAAE,EAAE,EAC/D,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,SAAS,CAC3C,CACF,CAAC;IAEJ,MAAM,kBAAkB,GAAG,CACzB,eAAqE,EAAE,KACpE,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,CAAI,GAAM,KACxB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE1D,MAAM,kCAAkC,GAAG,CAKzC,uBAA2B,KAE3B,uBAAuB;QACvB,GAAG,CACD,YAAY,CAAC,OAAO,CAAC,WAAW,EAChC,IAAI,EACJ,wBAAwB,CACtB,OAAO,CAAC,uBAAuB,CAAC,EAChC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EACvC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAChD,CACF,CAAC;IAEJ,MAAM,gBAAgB,GAAG,CACvB,MAAS,EACT,IAGC,EACD,0BAEM,EAAE,EACR,SAAS,GAAG,IAAI;QAEhB,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACnD;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,CACnB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EACtC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CACV,CAAC;YACF,SAAS,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5D,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACtC;QAED,IACE,gBAAgB,CAAC,OAAO,CAAC,aAAa;YACtC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAC7C;YACA,MAAM,MAAM,GAAG,MAAM,CACnB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAC7C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CACV,CAAC;YACF,SAAS,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC7C;QAED,IACE,gBAAgB,CAAC,OAAO,CAAC,WAAW;YACpC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAChC;YACA,GAAG,CACD,YAAY,CAAC,OAAO,CAAC,WAAW,EAChC,IAAI,EACJ,wBAAwB,CACtB,OAAO,CAAC,uBAAuB,CAAC,EAChC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EACvC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAChD,CACF,CAAC;YACF,kCAAkC,CAAC,uBAAuB,CAAC,CAAC;YAC5D,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC3C;QAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE;YACpC,GAAG,CACD,cAAc,CAAC,OAAO,EACtB,IAAI,EACJ,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CACzD,CAAC;YACF,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEhC,GAAG,CACD,uBAAuB,CAAC,OAAO,EAC/B,IAAI,EACJ,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SAC1C;QAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAC3D,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAmC;YAChE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;SACtC,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,kBAAkB,GAAG,CACzB,MAAS,EACT,KAAK,GAAG,CAAC,EACT,UAAU,GAAG,EAAE,KAEf,MAAM,CAAC,OAAO,CACZ,CAAC,eAAe,EAAE,UAAU,KAC1B,CAAC,WAAW,CAAC,eAAe,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,IACrC,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UACpC,IAAI,GAAG,EAAE,CAAC;YAEV,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;kBAChB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC;kBAChD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE;oBAChC,EAAE,EAAE;wBACF,GAAG,EAAE;4BACH,IAAI,EAAE,SAAS;yBAChB;wBACD,IAAI,EAAE,SAAS;wBACf,KAAK;qBACN;iBACF,CAAC,CAAC;SACR,CAAC,CACL,CAAC;IAEJ,MAAMC,QAAM,GAAG,CACb,KAEwD,EACxD,OAA+B;QAE/B,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,uBAAuB,GAAGC,MAAQ,CACtC,sBAAsB,EAAE,EACxB,WAAW,CACZ,CAAC;QACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACzE,kBAAkB,CAChB,uBAEG,CACJ,CAAC;QACF,gBAAgB,CACdA,MAAQ,EACR;YACE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;SAC5B,EACD,uBAEG,EACH,KAAK,CACN,CAAC;QACF,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE9C,YAAY,CAAC,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;KAC9D,CAAC;IAEF,MAAMC,SAAO,GAAG,CACd,KAEwD,EACxD,OAA+B;QAE/B,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,uBAAuB,GAAGC,OAAS,CACvC,sBAAsB,EAAE,EACxB,YAAY,CACb,CAAC;QACF,kBAAkB,CAChB,uBAEG,CACJ,CAAC;QACF,gBAAgB,CACdA,OAAS,EACT;YACE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;SAC5B,EACD,uBAEG,CACJ,CAAC;QACF,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAEjC,YAAY,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KACnD,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAyB;QACvC,MAAM,uBAAuB,GAEvB,aAAa,CAAC,sBAAsB,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;QAC5C,gBAAgB,CACd,aAAa,EACb;YACE,IAAI,EAAE,KAAK;SACZ,EACD,uBAAuB,CACxB,CAAC;KACH,CAAC;IAEF,MAAMC,QAAM,GAAG,CACb,KAAa,EACb,KAEwD,EACxD,OAA+B;QAE/B,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,uBAAuB,GAAGC,MAAQ,CACtC,sBAAsB,EAAE,EACxB,KAAK,EACL,WAAW,CACZ,CAAC;QACF,kBAAkB,CAChB,uBAEG,CACJ,CAAC;QACF,gBAAgB,CACdA,MAAQ,EACR;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;SAC5B,EACD,uBAEG,CACJ,CAAC;QACF,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEvC,YAAY,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACvD,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAc;QAC1C,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;QAC7C,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,gBAAgB,CACd,WAAW,EACX;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;SACb,EACD,WAAW,EACX,KAAK,CACN,CAAC;QACF,kBAAkB,CAAC,WAAW,CAAC,CAAC;KACjC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAU;QACpC,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;QAC7C,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChC,gBAAgB,CACd,WAAW,EACX;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,EAAE;SACT,EACD,WAAW,EACX,KAAK,CACN,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC;QACd,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtC;aAAM;YACL,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrC,MAAM;iBACP;aACF;SACF;QAED,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3B,IAAI;YACJ,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;SACjD,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO;YAClB,YAAY,CACV,SAAS,CAAC,OAAO,EACjB,CAAC,GAAW,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CACvE,CAAC;QAEJ,YAAY,CAAC,OAAO,GAAG,EAAE,CAAC;QAE1B,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAC7B,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEnB,KAAK,CAAC,SAAS,CAAC;QACd,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC;YACpE,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE;gBACjD,IAAI,OAAO,EAAE;oBACX,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,mBAAmB,IAAI,IAAI,CAAC,CAAC;oBAEtD,mBAAmB;0BACf,GAAG,CACD,0BAA0B,CAAC,OAAO,EAClC,mBAAmB,EACnB,MAAM,CACP;2BACA,0BAA0B,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;oBAElD,kBAAkB,CAAC,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;iBACnE;aACF;SACF,CAAC,CAAC;QACH,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAElE,OAAO;YACL,sBAAsB,CAAC,WAAW,EAAE,CAAC;YACrC,CAAC,uBAAuB,IAAI,gBAAgB,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;SACnE,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,KAAK,CAAC,WAAW,CAACH,SAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,EAAE,KAAK,CAAC,WAAW,CAACF,QAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,KAAK,CAAC,WAAW,CAACI,QAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,MAIL;KACJ,CAAC;AACJ;;SCtdwB,SAAS,CAC/B,WAAyD,EACzD,UAAqB;IAErB,MAAM,aAAa,GAA2C,EAAE,CAAC;IAEjE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;QAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,CAAsB,CAAC;QAEzD,IAAI,KAAK,EAAE;YACT,CAAC,KAAK,CAAC,IAAI,CAAC;kBACR,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;mBACjC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;SACtC;KACF;IAED,OAAO,aAAa,CAAC;AACvB;;ACpBA,kBAAe,CAAC,OAAqB,KACnC,OAAO,CAAC,IAAI,KAAK,MAAM;;ACAzB,uBAAe,CAAC,OAAqB,KACnC,OAAO,CAAC,IAAI,KAAK,GAAG,MAAM,WAAW;;ACFvC,mBAAe,CAAC,OAAqB,KACnC,OAAO,CAAC,IAAI,KAAK,OAAO;;ACI1B,MAAM,aAAa,GAAwB;IACzC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEnD,uBAAe,CAAC,OAA4B;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO;iBACnB,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAChE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACpD;QAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;;gBAE7C,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;sBAChE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;0BACtD,WAAW;0BACX,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;sBAC5C,WAAW;cACb,aAAa,CAAC;KACnB;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;;AChCD,sBAAe,CACb,KAAU,EACV,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAe,KAEvD,aAAa;MACT,KAAK,KAAK,EAAE;UACV,GAAG;UACH,CAAC,KAAK;MACR,WAAW;UACX,IAAI,IAAI,CAAC,KAAK,CAAC;UACf,UAAU;cACV,UAAU,CAAC,KAAK,CAAC;cACjB,KAAK;;ACdX,6BAAe,CACb,OAAoD,KAEpD,CAAC,GAAG,OAAO,CAAC;KACT,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAc,QAAQ,CAAC;KAC3C,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAa,KAAK,CAAC;;ACAtC,MAAM,aAAa,GAAqB;IACtC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,oBAAe,CAAC,OAA4B,KAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;MAClB,OAAO,CAAC,MAAM,CACZ,CAAC,QAAQ,EAAE,MAAM,KACf,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;UACxC;YACE,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB;UACD,QAAQ,EACd,aAAa,CACd;MACD,aAAa;;SCVK,aAAa,CAAC,KAAa;IACjD,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;QAEzB,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,OAAO;SACR;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,GAAG,CAAC,KAAK,CAAC;SAClB;QAED,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;SAC3C;QAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC5C;QAED,IAAIE,eAAU,CAAC,GAAG,CAAC,EAAE;YACnB,OAAO,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;SAC9C;QAED,OAAO,eAAe,CACpB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EACvD,KAAK,CAAC,EAAE,CACT,CAAC;KACH;AACH;;ACvCA,oBAAe,CAA4B,OAAW,EAAE,OAAiB,KACvE,OAAO;IACP,OAAO;KACN,OAAO,CAAC,QAAQ;QACf,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,QAAQ,CAAC;;ACXrB,qBAAe,CAAC,EACd,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,OAAO,GAWR;IACC,IAAI,OAAO,EAAE;QACX,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;QACpC,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,CAAC;KACpC;SAAM,IAAI,WAAW,GAAG,kBAAkB,GAAG,QAAQ,EAAE;QACtD,OAAO,CAAC,WAAW,CAAC;KACrB;SAAM,IAAI,WAAW,GAAG,oBAAoB,GAAG,UAAU,EAAE;QAC1D,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;;AC/BD,iBAAe,CAAC,KAAc,KAC5B,OAAO,KAAK,KAAK,UAAU;;ACI7B,gBAAe,CAAC,KAAc,KAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,KAAoB,CAAC;;ACN/D,cAAe,CAAC,KAAc,KAAsB,KAAK,YAAY,MAAM;;SCInD,gBAAgB,CACtC,MAAsB,EACtB,GAAQ,EACR,IAAI,GAAG,UAAU;IAEjB,IACE,SAAS,CAAC,MAAM,CAAC;SAChB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACjD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B;QACA,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE;YACxC,GAAG;SACJ,CAAC;KACH;AACH;;AChBA,yBAAe,CAAC,cAA+B,KAC7C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;MAChD,cAAc;MACd;QACE,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,EAAE;KACZ;;ACUP,oBAAe,OACb,EACE,EAAE,EAAE,EACF,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,GAAG,EACH,GAAG,EACH,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,KAAK,EAAE,UAAU,EACjB,aAAa,EACb,KAAK,GACN,GACK,EACR,wBAAiC;IAEjC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,CAAC;KACX;IACD,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,OAAO,IAAI,UAAU,CAAC;IAChD,MAAM,OAAO,GACX,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;QAClD,UAAU,KAAK,EAAE;SAChB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CACzC,IAAI,EACJ,IAAI,EACJ,wBAAwB,EACxB,KAAK,CACN,CAAC;IACF,MAAM,gBAAgB,GAAG,CACvB,SAAkB,EAClB,gBAAyB,EACzB,gBAAyB,EACzB,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAC1C,OAAO,GAAG,sBAAsB,CAAC,SAAS;QAE1C,MAAM,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,mBACT,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,EACnC,OAAO;YACP,GAAG,IACA,iBAAiB,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,CAC7D,CAAC;KACH,CAAC;IAEF,IACE,QAAQ;SACP,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;aACpE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aACrC,UAAU,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;aAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAC5C;QACA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;cAC1C,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;cACxC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,IAAI,CAAC,mBACT,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EACrC,OAAO,EACP,GAAG,EAAE,iBAAiB,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IACjD,iBAAiB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAC/D,CAAC;YACF,IAAI,CAAC,wBAAwB,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IACE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QACnD,UAAU,KAAK,EAAE,EACjB;QACA,IAAI,SAAS,CAAC;QACd,IAAI,SAAS,CAAC;QACd,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YACtB,MAAM,WAAW,GACd,GAAwB,CAAC,aAAa,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;aAC3C;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;aAC3C;SACF;aAAM;YACL,MAAM,SAAS,GACZ,GAAwB,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC7B,SAAS,GAAG,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACnD;YACD,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC7B,SAAS,GAAG,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACnD;SACF;QAED,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,gBAAgB,CACd,CAAC,CAAC,SAAS,EACX,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,OAAO,EACjB,sBAAsB,CAAC,GAAG,EAC1B,sBAAsB,CAAC,GAAG,CAC3B,CAAC;YACF,IAAI,CAAC,wBAAwB,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,EAAE;QAChE,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,SAAS,GACb,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC;YACzC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;QAC5C,MAAM,SAAS,GACb,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC;YACzC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;QAE5C,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,gBAAgB,CACd,SAAS,EACT,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,OAAO,CACxB,CAAC;YACF,IAAI,CAAC,wBAAwB,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;QAC/C,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YAC5D,KAAK,CAAC,IAAI,CAAC,mBACT,IAAI,EAAE,sBAAsB,CAAC,OAAO,EACpC,OAAO;gBACP,GAAG,IACA,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC9D,CAAC;YACF,IAAI,CAAC,wBAAwB,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IAAI,QAAQ,EAAE;QACZ,MAAM,WAAW,GAAG,iBAAiB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAE9D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE5D,IAAI,aAAa,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC,mCACN,aAAa,GACb,iBAAiB,CAClB,sBAAsB,CAAC,QAAQ,EAC/B,aAAa,CAAC,OAAO,CACtB,CACF,CAAC;gBACF,IAAI,CAAC,wBAAwB,EAAE;oBAC7B,OAAO,KAAK,CAAC;iBACd;aACF;SACF;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC7B,IAAI,gBAAgB,GAAG,EAAgB,CAAC;YACxC,KAAK,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC9D,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,EAAE;oBACjE,MAAM;iBACP;gBAED,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,gBAAgB,CACpC,cAAc,EACd,WAAW,EACX,GAAG,CACJ,CAAC;gBAEF,IAAI,aAAa,EAAE;oBACjB,gBAAgB,mCACX,aAAa,GACb,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,CACjD,CAAC;oBAEF,IAAI,wBAAwB,EAAE;wBAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;qBAChC;iBACF;aACF;YAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE;gBACpC,KAAK,CAAC,IAAI,CAAC,mBACT,GAAG,EAAE,WAAW,IACb,gBAAgB,CACpB,CAAC;gBACF,IAAI,CAAC,wBAAwB,EAAE;oBAC7B,OAAO,KAAK,CAAC;iBACd;aACF;SACF;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;ACzOD,yBAAe,CACb,IAAW,MAOP;IACJ,UAAU,EAAE,CAAC,IAAI,IAAI,IAAI,KAAK,eAAe,CAAC,QAAQ;IACtD,QAAQ,EAAE,IAAI,KAAK,eAAe,CAAC,MAAM;IACzC,UAAU,EAAE,IAAI,KAAK,eAAe,CAAC,QAAQ;IAC7C,OAAO,EAAE,IAAI,KAAK,eAAe,CAAC,GAAG;IACrC,SAAS,EAAE,IAAI,KAAK,eAAe,CAAC,SAAS;CAC9C,CAAC;;ACjBF,oBAAe,CAAC,KAAU,KACxB,KAAK,YAAY,WAAW;;ACI9B,gCAAe,CAAC,GAAiB,KAC/B,YAAY,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC;;MCS9B,YAAY;IAAzB;QACU,cAAS,GAAe,EAAE,CAAC;KAYpC;IAVC,GAAG,CAAC,QAAkB;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;IAED,WAAW;QACT,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,QAAQ,EAAE,CAAC;SACZ;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;CACF;AAED,MAAM,UAAU;IAGd,YAAoB,QAAqB,EAAE,YAA0B;QAAjD,aAAQ,GAAR,QAAQ,CAAa;QAFzC,WAAM,GAAG,KAAK,CAAC;QAGb,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;KAC9C;IAED,IAAI,CAAC,KAAQ;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;CACF;MAEoB,OAAO;IAG1B;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,IAAI,CAAC,KAAQ;QACX,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;KACF;IAED,SAAS,CAAC,QAAqB;QAC7B,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhC,OAAO,YAAY,CAAC;KACrB;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;ACmBH,MAAM,iBAAiB,GAAG,OAAO,MAAM,KAAK,SAAS,CAAC;SAEtC,OAAO,CAGrB,EACA,IAAI,GAAG,eAAe,CAAC,QAAQ,EAC/B,cAAc,GAAG,eAAe,CAAC,QAAQ,EACzC,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,EAAiC,EACjD,gBAAgB,GAAG,IAAI,EACvB,gBAAgB,EAChB,YAAY,MAC4B,EAAE;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAY,EAAE,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAyB,IAAI,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CACtC,IAAI,OAAO,EAAE,CACd,CAAC;IACF,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAC3C,IAAI,GAAG,EAAE,CACV,CAAC;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAClC,IAAI,OAAO,EAIP,CACL,CAAC;IACF,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CACvC,IAAI,OAAO,EAGP,CACL,CAAC;IACF,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CACvC,IAAI,OAAO,EAIP,CACL,CAAC;IACF,MAAM,0BAA0B,GAAG,KAAK,CAAC,MAAM,CAA0B,EAAE,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAkB,IAAI,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAE1C,EAAE,CAAC,CAAC;IACN,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CACjC,EAAE,CACH,CAAC;IACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CACnC,aAAa,CACd,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAkB,IAAI,GAAG,EAAE,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,0BAA0B,GAAG,YAAY,KAAK,eAAe,CAAC,GAAG,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA0B;QAC3E,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,KAAK;QACnB,kBAAkB,EAAE,KAAK;QACzB,OAAO,EAAE,CAAC,cAAc,CAAC,UAAU;QACnC,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAgB;QACnD,OAAO,EAAE,CAAC,cAAc;QACxB,WAAW,EAAE,CAAC,cAAc;QAC5B,aAAa,EAAE,CAAC,cAAc;QAC9B,YAAY,EAAE,CAAC,cAAc;QAC7B,OAAO,EAAE,CAAC,cAAc;QACxB,MAAM,EAAE,CAAC,cAAc;KACxB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,MAAM,UAAU,GAAG,OAChB,YAAY,CAAC,OAAO,CAAC,OAAO;QAC3B,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC;YAClE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAC/C,CACE,IAAuB,EACvB,KAAkB,EAClB,eAA+B,KAAK,EACpC,QAII,EAAE,EACN,OAAiB,EACjB,SAAmB;QAEnB,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,cAAc,GAChB,YAAY;YACZ,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;aACrC,gBAAgB,CAAC,OAAO,CAAC,OAAO;gBAC/B,WAAW,CAAC,KAAK,CAAC;gBAClB,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC;gBAC1C,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACpC,cAAc;gBACZ,cAAc;oBACd,CAAC,aAAa;oBACd,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,IAAI,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE;gBACrE,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxC,cAAc,GAAG,cAAc,IAAI,aAAa,CAAC;aAClD;YAED,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC1C;QAED,IACE,CAAC,cAAc,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;YACnD,CAAC,aAAa,CAAC,KAAK,CAAC;YACrB,SAAS,EACT;YACA,MAAM,gBAAgB,mCACjB,KAAK,KACR,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,UAAU,EAAE,EACvD,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EACnC,IAAI,GACL,CAAC;YAEF,YAAY,CAAC,OAAO,mCACf,YAAY,CAAC,OAAO,GACpB,gBAAgB,CACpB,CAAC;YAEF,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAC9B,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,gBAAgB,CACxC,CAAC;SACH;QAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;KACJ,EACD,EAAE,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CACE,IAAuB,EACvB,QAAqC,EACrC,UAA0B,EAAE,EAC5B,YAAsB,EACtB,cAAwB;QAExB,cAAc,IAAI,QAAQ,CAAC,IAA0B,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAiB,CAAC;QAE9D,IAAI,EAAE,EAAE;YACN,MAAM,KAAK,GACT,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC;kBACzD,EAAE;kBACF,QAAQ,CAAC;YACf,EAAE,CAAC,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;gBACxB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CACrB,CAAC,QAA0B,MACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,CAChD,CAAC;aACH;iBAAM,IAAI,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClD,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,KAAiB,CAAC;aAClC;iBAAM,IAAI,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;gBACnC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CACzB,CAAC,SAAS,MACP,SAAS,CAAC,QAAQ,GAAI,KAAkB,CAAC,QAAQ,CAChD,SAAS,CAAC,KAAK,CAChB,CAAC,CACL,CAAC;aACH;iBAAM,IAAI,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;gBAC7C,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;sBACd,EAAE,CAAC,IAAI,CAAC,OAAO,CACb,CAAC,WAAW,MACT,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;0BACvC,CAAC,CAAE,KAAY,CAAC,IAAI,CAClB,CAAC,IAAY,KAAK,IAAI,KAAK,WAAW,CAAC,KAAK,CAC7C;0BACD,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC,CACnC;uBACA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;gBACL,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;aACtB;YAED,IAAI,YAAY,EAAE;gBAChB,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC1C,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC5B,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChC,MAAM,EAAE,gCACH,gBAAgB,CAAC,OAAO,GACxB,MAAM,CACqB;oBAChC,IAAI;iBACL,CAAC,CAAC;aACJ;YAED,OAAO,CAAC,WAAW,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,IAA0B,CAAC,CAAC;SAC/D;KACF,EACD,EAAE,CACH,CAAC;IAEF,MAAM,UAAU,GAAe,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI;QAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;KACzD,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC9C,CACE,IAAuB,EACvB,UAAmB,EACnB,YAAY,GAAG,IAAI;QAInB,IACE,gBAAgB,CAAC,OAAO,CAAC,OAAO;YAChC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EACpC;YACA,MAAM,YAAY,GAAG,CAAC,SAAS,CAC7B,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,EACnC,UAAU,CACX,CAAC;YACF,MAAM,iBAAiB,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACtE,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAErD,YAAY;kBACR,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;kBACjD,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAElD,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;YAE5C,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;gBACrC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW;gBAC7C,IAAI;aACL,CAAC;YAEF,MAAM,SAAS,GACb,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO;gBAC/B,eAAe,KAAK,KAAK,CAAC,OAAO;iBAClC,gBAAgB,CAAC,OAAO,CAAC,WAAW;oBACnC,iBAAiB,KAAK,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;YAEvE,SAAS,IAAI,YAAY,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAErE,OAAO,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;SAC/B;QAED,OAAO,EAAE,CAAC;KACX,EACD,EAAE,CACH,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,OACE,IAAuB,EACvB,YAA6B;QAE7B,MAAM,KAAK,GAAG,CACZ,MAAM,aAAa,CACjB,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,EACrC,0BAA0B,CAC3B,EACD,IAAI,CAAC,CAAC;QAER,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAEnD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;KAC3B,EACD,CAAC,0BAA0B,CAAC,CAC7B,CAAC;IAEF,MAAM,iCAAiC,GAAG,KAAK,CAAC,WAAW,CACzD,OACE,KAA0B,EAC1B,eAA0C,EAAE;QAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAQ,CAC3C,eAAe,CAAC,SAAS,CAAC,EAC1B,UAAU,CAAC,OAAO,EAClB;YACE,YAAY;YACZ,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;SAC7D,CACF,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,KAAK;kBACD,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;kBAC7C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SAC9C;QAED,OAAO,MAAM,CAAC;KACf,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,SAAoB;QAC9C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,KAAK,EAAE;gBACT,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAElC,IAAI,EAAE,EAAE;oBACN,MAAM,UAAU,GAAG,MAAM,aAAa,CACpC,KAAK,EACL,0BAA0B,CAC3B,CAAC;oBAEF,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;wBACvB,OAAO,GAAG,KAAK,CAAC;wBAChB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC/D,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;qBACxC;yBAAM,IAAI,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;wBACxD,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC3C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;qBAC7C;iBACF;gBAED,OAAO,KAAK,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;aAC1C;SACF;QAED,OAAO,OAAO,CAAC;KAChB,CAAC;IAEF,MAAM,OAAO,GAAiC,KAAK,CAAC,WAAW,CAC7D,OAAO,IAAI;QACT,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;cAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;cAC7B,qBAAqB,CAAC,IAAI,CAAyB,CAAC;QACzD,IAAI,OAAO,CAAC;QACZ,IAAI,YAAY,GAAmC,EAAE,CAAC;QAEtD,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,OAAO,EAAE;YACvB,YAAY,GAAG,MAAM,iCAAiC,CACpD,MAAM,EACN,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,GAAI,MAAoC,CACtE,CAAC;YACF,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;SAC5D;aAAM;YACL,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;kBACvB,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC;kBACrC,CACE,MAAM,OAAO,CAAC,GAAG,CACf,MAAM;qBACH,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;qBACxD,GAAG,CACF,OAAO,SAAS,KACd,MAAM,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAC3C,CACJ,EACD,KAAK,CAAC,OAAO,CAAC,CAAC;SACtB;QAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,kCAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAClC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EACnC,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,WAAW,CAAC,OAAO;kBACxB,aAAa,CAAC,YAAY,CAAC;kBAC3B,UAAU,EAAE,IAChB,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB,EACD,CAAC,iCAAiC,EAAE,iBAAiB,CAAC,CACvD,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CACE,IAA6B,EAC7B,KAEC,EACD,OAAuB,KAEvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;QACnD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,QAAQ,EAAwB,CAAC;QAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1D,YAAY,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;cAChC,iBAAiB,CACf,SAAS,EACT,UAAyC,EACzC,OAAO,CACR;cACD,aAAa,CACX,SAAS,EACT,UAAyC,EACzC,OAAO,EACP,IAAI,EACJ,CAAC,KAAK,CACP,CAAC;KACP,CAAC,EACJ,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,IAA6B,KACnD,aAAa,CAAC,OAAO;QACrB,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,mBAAmB,GAAG,CAC1B,IAAuB,EACvB,OAAyB,EACzB,GAAS,EACT,mBAA6B;QAE7B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,CAAC;QACpD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;cAC5C,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;cACnC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;QAEnB,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;YACvC,IAAI,GAAG,IAAK,GAAwB,CAAC,cAAc,EAAE;gBACnD,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;aACvC;iBAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChE,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;aACnC;iBAAM;gBACL,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC;aAC/B;SACF;QAED,IACE,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,mBAAmB;YAClD,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,CAAC,cAAc,CAAC,UAAU;YAC1B,KAAK;YACL,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAChC;YACA,aAAa,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK;gBAC1D,aAAa,CAAC,KAAK,CAAC;sBAChB,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;sBACvC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAExC,YAAY,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC3C,eAAe,iCAAM,YAAY,CAAC,OAAO,KAAE,OAAO,EAAE,UAAU,EAAE,IAAG,CAAC;aACvE,CAAC,CAAC;SACJ;QAED,OAAO,YAAY,CAAC;KACrB,CAAC;IAEF,MAAM,QAAQ,GAAkC,CAC9C,IAAI,EACJ,KAAK,EACL,OAAO,GAAG,EAAE;QAEZ,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,YAAY,EAAE;YAChB,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChC,MAAM,EAAE,KAAK;gBACb,IAAI;gBACJ,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IACE,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO;gBAC/B,gBAAgB,CAAC,OAAO,CAAC,WAAW;gBACtC,OAAO,CAAC,WAAW,EACnB;gBACA,GAAG,CACD,YAAY,CAAC,OAAO,CAAC,WAAW,EAChC,IAAI,EACJ,wBAAwB,CACtB,KAAK,EACL,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EACvC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAChD,CACF,CAAC;gBAEF,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC/B,IAAI;oBACJ,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW;oBAC7C,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACjC,CAAC,CAAC;aACJ;YAED,CAAE,KAAY,CAAC,MAAM;gBACnB,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;gBAChC,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;SACrD;QAED,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,YAAY;cAChC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,GAAG,OAAO,CAAC;cAC3D,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QAEtD,cAAc,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/C,CAAC;IAEF,MAAM,YAAY,GAAkB,KAAK,CAAC,WAAW,CACnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;QACzD,IAAI,IAAI,GAAI,MAAe,CAAC,IAAI,CAAC;QACjC,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,CAAC;QACZ,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,CAAC;QAEpD,IAAI,KAAK,EAAE;YACT,IAAI,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;YAC9D,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC;YAE1D,MAAM,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;YACzC,MAAM,EACJ,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,oBAAoB,GACjC,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAEvC,MAAM,oBAAoB,GACxB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;gBACvC,CAAC,WAAW,CAAC,OAAO;gBACpB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBACzC,cAAc,iBACZ,WAAW,EACX,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAC1D,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,EAC7C,kBAAkB;oBAClB,oBAAoB,IACjB,cAAc,EACjB,CAAC;YACL,MAAM,SAAS,GACb,CAAC,WAAW,IAAI,cAAc,CAAC,IAA+B,CAAC,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;gBAC5B,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC;aAC7B;YAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAElE,IAAI,WAAW,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;gBACjE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpD,gBAAgB,CAAC,OAAO,CAAC,aAAa;qBACnC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAC9D;YAED,IAAI,YAAY,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;YAEtD,IAAI,oBAAoB,EAAE;gBACxB,CAAC,WAAW;oBACV,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC3B,IAAI;wBACJ,IAAI;wBACJ,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;gBACL,QACE,YAAY;oBACZ,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAC9B,SAAS,GAAG,EAAE,IAAI,EAAE,mCAAQ,KAAK,KAAE,IAAI,GAAE,CAC1C,EACD;aACH;YAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,WAAW,CAAC,OAAO,EAAE;gBACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAC1C,eAAe,CAAC,SAAS,CAAC,EAC1B,UAAU,CAAC,OAAO,EAClB;oBACE,YAAY;oBACZ,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC;oBAC5C,KAAK,EAAE,CAAC,IAA+B,CAAC;iBACzC,CACF,CAAC;gBACF,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzD,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAE1B,IAAI,eAAe,CAAC,MAAa,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;oBACrD,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,GAAG,YAAY,CAAC,CAAC;oBAEpE,IACE,YAAY;wBACZ,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,EAChD;wBACA,IAAI,GAAG,cAAc,CAAC;qBACvB;iBACF;gBAED,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBAEhC,mBAAmB,KAAK,OAAO,KAAK,YAAY,GAAG,IAAI,CAAC,CAAC;aAC1D;iBAAM;gBACL,KAAK,GAAG,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,0BAA0B,CAAC,EAC7D,IAAI,CACL,CAAC;aACH;YAED,CAAC,WAAW;gBACV,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3B,IAAI;oBACJ,IAAI;oBACJ,KAAK,EAAE,UAAU;iBAClB,CAAC,CAAC;YACL,uBAAuB,CACrB,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;SACH;KACF,EACD,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAmC,CAChD,UAE0C;QAE1C,MAAM,MAAM,mCACP,gBAAgB,CAAC,OAAO,GACxB,eAAe,CAAC,SAAS,CAAC,CAC9B,CAAC;QAEF,OAAO,WAAW,CAAC,UAAU,CAAC;cAC1B,MAAM;cACN,QAAQ,CAAC,UAAU,CAAC;kBACpB,GAAG,CAAC,MAAM,EAAE,UAA+B,CAAC;kBAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,IAAyB,CAAC,CAAC,CAAC;KACtE,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,OAAO,MAAM,GAAG,EAAE;QAChB,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;QAErD,IAAI,QAAQ,EAAE;YACZ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAQ,iCAEtC,eAAe,CAAC,SAAS,CAAC,GAC1B,MAAM,GAEX,UAAU,CAAC,OAAO,EAClB;gBACE,YAAY;gBACZ,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;aAC7D,CACF,CAAC;YACF,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;SACtD;aAAM;YACL,UAAU,EAAE,CAAC;SACd;QAED,eAAe,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO;YAC9C,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;aACtC,CAAC,CAAC;KACN,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,WAAW,GAAqC,CAAC,IAAI;QACzD,IAAI;cACA,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAC5C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAC9C;eACA,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAEvC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM;SACpC,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,QAAQ,GAAkC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO;QACnE,MAAM,GAAG,GAAG,CACV,CAAE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAW,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAChE,GAAG,CAAC;QAEN,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,kCAChC,KAAK,KACR,GAAG,IACH,CAAC;QAEH,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,IAAI;YACJ,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM;YACnC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAC,WAAW,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;KACnE,CAAC;IAEF,MAAM,aAAa,GAAgC,KAAK,CAAC,WAAW,CAClE,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ;QACjC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO;8CAE/B,gBAAgB,CAAC,OAAO,GACxB,eAAe,CAAC,SAAS,CAAC,IAE/B,WAAW,CAAC,YAAY,CAAC;cACzB,gBAAgB,CAAC,OAAO;cACxB,YAAY;kBACZ,YAAY,IAAI,EAAE;kBAClB,EAAE,CAAC,UAAoB,GAAG,YAAY,EAAE,CAAC;QAE7C,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE;YAC3B,QAAQ,KAAK,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YAC3C,OAAO,WAAW,CAAC;SACpB;QAED,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,SAAS,IAAI,YAAY,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,EAAE;YAChE,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,SAAmB,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAmB,CAAC,CAAC,CAAC;SACpD;QAED,OAAO,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC1C,EACD,EAAE,CACH,CAAC;IAEF,MAAM,KAAK,GAA+B,CACxC,SAG+B,EAC/B,YAAsB,KAEtB,UAAU,CAAC,SAAS,CAAC;UACjB,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;YAChC,IAAI,EAAE,CAAC,IAAI,KACT,SAAS,CACP,aAAa,CACX,SAAS,EACT,YAA4D,CAC1B,EACpC,IAAI,CACL;SACJ,CAAC;UACF,aAAa,CACX,SAA8B,EAC9B,YAA4D,EAC5D,IAAI,CACL,CAAC;IAER,MAAM,UAAU,GAAoC,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE;QACrE,KAAK,MAAM,SAAS,IAAI,IAAI;cACxB,qBAAqB,CAAC,IAAI,CAAC;cAC3B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACvC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE7C,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAU,EAAE;gBAC9C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;oBACxB,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAClD,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBAC1C;gBACD,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACpE,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC1D,CAAC,OAAO,CAAC,SAAS;oBAChB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACrD,CAAC,OAAO,CAAC,WAAW;oBAClB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBACvD,CAAC,gBAAgB;oBACf,CAAC,OAAO,CAAC,gBAAgB;oBACzB,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAE7C,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;aACJ;SACF;QAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,+CAC3B,YAAY,CAAC,OAAO,IACnB,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,KACnD,WAAW,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GACxD,CAAC;QACH,CAAC,OAAO,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;KACzC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CACvB,IAAuB,EACvB,GAAqB,EACrB,OAAyB;QAEzB,QAAQ,CAAC,IAA+B,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,CAAC;QAElD,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAEzD,IACE,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG;aACnB,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aAC5D,iBAAiB;gBAChB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC,EAC1D;YACA,OAAO;SACR;QAED,KAAK,GAAG;YACN,EAAE,EAAE,iBAAiB;kDAEZ,KAAK,CAAC,EAAE,KACX,IAAI,EAAE;wBACJ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CACpC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CACtD;wBACD,GAAG;qBACJ,EACD,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,sCAG1B,KAAK,CAAC,EAAE,KACX,GAAG,GACJ;SACN,CAAC;QAEF,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEpC,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAEnE,IACE,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;cAC5C,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;cAC/D,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACtD;YACA,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,aAAa,CACnD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAC7B,CAAC;SACH;KACF,CAAC;IAEF,MAAM,QAAQ,GAAkC,KAAK,CAAC,WAAW,CAC/D,CAAC,IAAI,EAAE,OAAO;QACZ,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAExD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;YAC3B,EAAE,iDACI,iBAAiB;kBACjB,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;kCAEf,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAC7C,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CACnC,MACL,IAAI,EACJ,KAAK,EAAE,IAAI,KACR,OAAO,CACX;SACF,CAAC,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1B,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,iBAAiB,IAAI,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAExD,OAAO,iBAAiB;cACnB,EAAE,IAAI,EAAE,IAAyB,EAA4B;cAC9D;gBACE,IAAI;gBACJ,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,YAAY;gBACpB,GAAG,EAAE,CAAC,GAA4B;oBAChC,IAAI,GAAG,EAAE;wBACP,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;qBACtC;yBAAM;wBACL,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,CAAC;wBACpD,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;wBAElC,IACE,KAAK;6BACJ,gBAAgB,KAAK,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAC3D;4BACA,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;yBAC5C;qBACF;iBACF;aACF,CAAC;KACP,EACD,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAC3B,CAAC;IAEF,MAAM,YAAY,GAAsC,KAAK,CAAC,WAAW,CACvE,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE;YACL,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACvC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1B;QACD,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAC7B,IAAI,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE7C,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI;YACF,IAAI,WAAW,CAAC,OAAO,EAAE;gBACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAClD,WAAW,EACX,UAAU,CAAC,OAAO,EAClB;oBACE,YAAY;oBACZ,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;iBAC7D,CACF,CAAC;gBACF,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrC,WAAW,GAAG,MAAM,CAAC;aACtB;iBAAM;gBACL,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IACE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAClD,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CACvB,EACD;gBACA,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC/B,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAC/B;iBAAM;gBACL,SAAS,KAAK,MAAM,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/D,gBAAgB;oBACd,YAAY,CACV,SAAS,CAAC,OAAO,EACjB,CAAC,GAAW,KAAK,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EACtD,cAAc,CAAC,OAAO,CACvB,CAAC;aACL;SACF;QAAC,WAAM;YACN,iBAAiB,GAAG,KAAK,CAAC;SAC3B;gBAAS;YACR,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YACxC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;gBACnB,kBAAkB,EAChB,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,iBAAiB;gBACjE,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;gBACjD,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM;aACpC,CAAC,CAAC;SACJ;KACF,EACD,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,YAAY,CAAC,CAC7D,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACtC,CACE,EACE,UAAU,EACV,SAAS,EACT,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,eAAe,GACE,EACnB,MAAoC;QAEpC,IAAI,CAAC,WAAW,EAAE;YAChB,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;YAC5B,uBAAuB,CAAC,OAAO,GAAG,EAAE,CAAC;SACtC;QAED,cAAc,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;QAE9B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,WAAW,EAAE,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;YACnE,OAAO,EAAE,SAAS;kBACd,YAAY,CAAC,OAAO,CAAC,OAAO;kBAC5B,iBAAiB;sBACjB,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC;sBAC3C,KAAK;YACT,WAAW,EAAE,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;YACvE,OAAO,EAAE,WAAW;kBAChB,YAAY,CAAC,OAAO,CAAC,OAAO;kBAC5B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;YAC3B,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE;YAC9D,aAAa,EAAE,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE;YACpE,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;YACrD,YAAY,EAAE,KAAK;YACnB,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;KACJ,EACD,EAAE,CACH,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAC3B,KAAQ,EACR,IAAI,GAAG,EAAE;QAET,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;aAC1B,WAAW,CAAC,KAAK,CAAC;iBAChB,KAAK,KAAK,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC;YAC9D,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;gBAC3B,EAAE,EAAE;oBACF,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;oBACpB,KAAK;oBACL,IAAI;iBACL;aACF,CAAC,CAAC;QAEL,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACzC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;aAC9D;YAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;gBACvB,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;aAClE;SACF;KACF,CAAC;IAEF,MAAM,KAAK,GAA+B,CAAC,MAAM,EAAE,gBAAgB,GAAG,EAAE;QACtE,MAAM,aAAa,GAAG,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC;QAEzD,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;YACzC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,OAAO,EAAE;gBACzC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE;oBACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;0BACzC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;0BAChB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;oBAEjB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;wBAC3B,IAAI;4BACF,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC,KAAK,EAAE,CAAC;4BAClC,MAAM;yBACP;wBAAC,WAAM,GAAE;qBACX;iBACF;aACF;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;YACvC,gBAAgB,CAAC,OAAO,qBAAQ,aAAa,CAAE,CAAC;YAChD,oBAAoB,CAAC,aAAa,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAChC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;YAEvB,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChC,MAAM,oBAAO,aAAa,CAAE;aAC7B,CAAC,CAAC;YAEH,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3B,KAAK,oBAAO,aAAa,CAAE;aAC5B,CAAC,CAAC;YAEH,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChC,MAAM,oBAAO,aAAa,CAAE;gBAC5B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;QAED,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;KAC9B,CAAC;IAEF,MAAM,QAAQ,GAAkC,CAAC,IAAI,KACnD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAE9C,KAAK,CAAC,SAAS,CAAC;QACd,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC;YAClE,IAAI,CAAC,SAAS;gBACZ,IAAI,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpE,YAAY,CAAC,OAAO,mCACf,YAAY,CAAC,OAAO,GACpB,SAAS,CACb,CAAC;oBACF,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACvC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC;YACvE,IAAI,CAAC,KAAK;gBACR,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE;oBAClE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC1C,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACtC,aAAa,CAAC,MAAM,CAAC,CAAC;iBACvB;aACF;SACF,CAAC,CAAC;QAEH,WAAW,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;QAE3E,OAAO;YACL,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,qBAAqB,CAAC,WAAW,EAAE,CAAC;YACpC,yBAAyB,CAAC,WAAW,EAAE,CAAC;SACzC,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC;QACd,MAAM,WAAW,GAAG,CAAC,GAAQ,KAC3B,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjD,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI;YAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAU,CAAC;YAEpD,KAAK;iBACF,KAAK,CAAC,EAAE,CAAC,IAAI;sBACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;sBAChC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC9B,UAAU,CAAC,IAA+B,CAAC,CAAC;SAC/C,CAAC,CAAC;QACH,wBAAwB,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;KAC9C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,CACpB,OAAO;YACL,QAAQ;YACR,aAAa;YACb,cAAc;YACd,UAAU;YACV,mBAAmB;YACnB,oBAAoB;YACpB,oBAAoB;YACpB,eAAe;YACf,aAAa;YACb,SAAS;YACT,cAAc;YACd,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,0BAA0B;YAC1B,UAAU;YACV,uBAAuB,EAAE,gBAAgB;SAC1C,CAAC,EACF,EAAE,CACH;QACD,SAAS,EAAE,iBAAiB,CAC1B,cAAc,EACd,SAAS,EACT,gBAAgB,CACjB;QACD,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC1D,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QAC3C,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/C,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;QAC7C,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;KAC1C,CAAC;AACJ;;SC1tCgB,QAAQ,CAAe,KAAmC;IACxE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAEvB,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CACzC,WAAW,CAAC,YAAY,CAAC;UACrB,aAAa,CAAC,IAAyB,CAAC;UACxC,YAAY,CACjB,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC;QACd,aAAa,CAAC,IAAyB,CAAC,CAAC;QAEzC,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1D,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAC/B,CAAC,CAAC,OAAO,CAAC,OAAO;gBACf,CAAC,SAAS;gBACV,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACzC,CAAC,SAAS,KACR,SAAS;oBACT,SAAS;qBACR,SAAS,CAAC,UAAU,CAAC,SAA8B,CAAC;wBACnD,SAAS,CAAC,UAAU,CAAC,SAA8B,CAAC,CAAC,CAC1D;gBACH,WAAW,CACT,QAAQ,CAAC,SAAS,CAAC;oBACjB,OAAO,CAAC,OAAO,KAAK,SAAS;oBAC7B,CAAC,WAAW,CAAC,KAAK,CAAC;sBACjB,KAAK;sBACL,aAAa,CACX,OAAO,CAAC,OAAiB,EACzB,YAA4D,CAC7D,CACN;SACJ,CAAC,CAAC;QAEH,OAAO,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC;KAC9C,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,KAAK,CAAC;AACf;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/isCheckBoxInput.ts","../src/utils/isNullOrUndefined.ts","../src/utils/isObject.ts","../src/logic/getControllerValue.ts","../src/logic/getNodeParentName.ts","../src/logic/isNameInFieldArray.ts","../src/utils/compact.ts","../src/utils/isUndefined.ts","../src/utils/get.ts","../src/constants.ts","../src/utils/omit.ts","../src/useFormContext.tsx","../src/logic/getProxyFormState.ts","../src/utils/isEmptyObject.ts","../src/logic/shouldRenderFormState.ts","../src/utils/convertToArrayPayload.ts","../src/utils/isWeb.ts","../src/utils/isProxyEnabled.ts","../src/useFormState.ts","../src/useController.ts","../src/controller.tsx","../src/logic/appendErrors.ts","../src/utils/isKey.ts","../src/utils/stringToPath.ts","../src/utils/set.ts","../src/logic/focusFieldBy.ts","../src/logic/getFieldsValues.ts","../src/logic/generateId.ts","../src/logic/mapId.ts","../src/utils/isPrimitive.ts","../src/utils/deepEqual.ts","../src/utils/deepMerge.ts","../src/logic/setFieldArrayDirtyFields.ts","../src/utils/append.ts","../src/utils/fillEmptyArray.ts","../src/utils/insert.ts","../src/utils/move.ts","../src/utils/prepend.ts","../src/utils/remove.ts","../src/utils/swap.ts","../src/utils/isBoolean.ts","../src/utils/unset.ts","../src/useFieldArray.ts","../src/logic/getFields.ts","../src/utils/isFileInput.ts","../src/utils/isMultipleSelect.ts","../src/utils/isRadioInput.ts","../src/logic/getCheckboxValue.ts","../src/logic/getFieldValueAs.ts","../src/logic/getMultipleSelectValue.ts","../src/logic/getRadioValue.ts","../src/logic/getFieldValue.ts","../src/logic/hasValidation.ts","../src/logic/skipValidation.ts","../src/utils/isFunction.ts","../src/utils/isString.ts","../src/utils/isMessage.ts","../src/utils/isRegex.ts","../src/logic/getValidateError.ts","../src/logic/getValueAndMessage.ts","../src/logic/validateField.ts","../src/utils/getValidationModes.ts","../src/utils/isHTMLElement.ts","../src/utils/isRadioOrCheckbox.ts","../src/utils/Subject.ts","../src/useForm.ts","../src/useWatch.ts"],"sourcesContent":["import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is null | undefined => value == null;\n","import isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !(value instanceof Date);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","export default (name: string) => name.substring(0, name.search(/.\\d/)) || name;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n [...names].some((current) => getNodeParentName(name) === current);\n","export default (value: any[]) => value.filter(Boolean);\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isUndefined from './isUndefined';\n\nexport default (obj: any = {}, path: string, defaultValue?: unknown) => {\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) => (isNullOrUndefined(result) ? result : result[key]),\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path])\n ? defaultValue\n : obj[path]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const SELECT = 'select';\n\nexport const UNDEFINED = 'undefined';\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n","export default <Key extends string, T extends Record<Key, any>>(\n source: T,\n key: Key,\n): Omit<T, Key> => {\n const copy = { ...source };\n delete copy[key];\n\n return copy;\n};\n","import * as React from 'react';\n\nimport omit from './utils/omit';\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst FormContext = React.createContext<UseFormReturn | null>(null);\n\nFormContext.displayName = 'RHFContext';\n\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n React.useContext(FormContext) as unknown as UseFormReturn<TFieldValues>;\n\nexport const FormProvider = <TFieldValues extends FieldValues>(\n props: FormProviderProps<TFieldValues>,\n) => (\n <FormContext.Provider\n value={omit(props, 'children') as unknown as UseFormReturn}\n >\n {props.children}\n </FormContext.Provider>\n);\n","import * as React from 'react';\n\nimport { VALIDATION_MODE } from '../constants';\nimport { FormState, FormStateProxy, ReadFormState } from '../types';\n\nexport default <TFieldValues>(\n isProxyEnabled: boolean,\n formState: FormState<TFieldValues>,\n readFormStateRef: React.MutableRefObject<ReadFormState>,\n localReadFormStateRef?: React.MutableRefObject<ReadFormState>,\n isRoot = true,\n) =>\n isProxyEnabled\n ? new Proxy(formState, {\n get: (obj, prop: keyof FormStateProxy) => {\n if (prop in obj) {\n if (readFormStateRef.current[prop] !== VALIDATION_MODE.all) {\n readFormStateRef.current[prop] = isRoot\n ? VALIDATION_MODE.all\n : true;\n }\n localReadFormStateRef &&\n (localReadFormStateRef.current[prop] = true);\n return obj[prop];\n }\n\n return undefined;\n },\n })\n : formState;\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport omit from '../utils/omit';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n readFormStateRef: K,\n isRoot?: boolean,\n) => {\n const formState = omit(formStateData, 'name');\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(readFormStateRef).length ||\n Object.keys(formState).find(\n (key) =>\n readFormStateRef[key as keyof ReadFormState] ===\n (isRoot ? VALIDATION_MODE.all : true),\n )\n );\n};\n","export default <T extends unknown>(value: T) =>\n Array.isArray(value) ? value : [value];\n","import { UNDEFINED } from '../constants';\n\nexport default typeof window !== UNDEFINED &&\n typeof window.HTMLElement !== UNDEFINED &&\n typeof document !== UNDEFINED;\n","import { UNDEFINED } from '../constants';\n\nimport isWeb from './isWeb';\n\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\n\nexport default isProxyEnabled;\n","import * as React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const { control, name } = props || {};\n const methods = useFormContext();\n const { formStateRef, formStateSubjectRef, readFormStateRef } =\n control || methods.control;\n const nameRef = React.useRef<InternalFieldName>(name as InternalFieldName);\n nameRef.current = name as InternalFieldName;\n\n const [formState, updateFormState] = React.useState(formStateRef.current);\n const readFormState = React.useRef({\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next: (formState) =>\n (!nameRef.current ||\n !formState.name ||\n convertToArrayPayload(nameRef.current).includes(formState.name)) &&\n shouldRenderFormState(formState, readFormState.current) &&\n updateFormState({\n ...formStateRef.current,\n ...formState,\n }),\n });\n\n return () => formStateSubscription.unsubscribe();\n }, []);\n\n return getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState as FormState<TFieldValues>,\n readFormStateRef,\n readFormState,\n false,\n );\n}\n\nexport { useFormState };\n","import * as React from 'react';\n\nimport getControllerValue from './logic/getControllerValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport isUndefined from './utils/isUndefined';\nimport { EVENTS } from './constants';\nimport {\n FieldPath,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\n\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n rules,\n defaultValue,\n control,\n shouldUnregister,\n}: UseControllerProps<TFieldValues, TName>): UseControllerReturn<\n TFieldValues,\n TName\n> {\n const methods = useFormContext<TFieldValues>();\n const {\n defaultValuesRef,\n register,\n fieldsRef,\n unregister,\n fieldArrayNamesRef,\n controllerSubjectRef,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const { onChange, onBlur, ref } = register(name, rules);\n const [value, setInputStateValue] = React.useState(\n isUndefined(get(fieldsRef.current, name)._f.value) ||\n isNameInFieldArray(fieldArrayNamesRef.current, name)\n ? isUndefined(defaultValue)\n ? get(defaultValuesRef.current, name)\n : defaultValue\n : get(fieldsRef.current, name)._f.value,\n );\n const formState = useFormState({\n control: control || methods.control,\n name,\n });\n get(fieldsRef.current, name)._f.value = value;\n\n React.useEffect(() => {\n const controllerSubscription = controllerSubjectRef.current.subscribe({\n next: (data) =>\n (!data.name || name === data.name) &&\n setInputStateValue(get(data.values, name)),\n });\n\n return () => {\n controllerSubscription.unsubscribe();\n if (shouldUnmountUnregister || shouldUnregister) {\n unregister(name);\n } else if (get(fieldsRef.current, name)) {\n get(fieldsRef.current, name)._f.mount = false;\n }\n };\n }, [name]);\n\n return {\n field: {\n onChange: (event: any) => {\n const value = getControllerValue(event);\n setInputStateValue(value);\n\n onChange({\n target: {\n value,\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n });\n },\n onBlur: () => {\n onBlur({\n target: {\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n });\n },\n name,\n value,\n ref: (elm) => elm && ref(elm),\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n get() {\n return !!get(formState.errors, name);\n },\n },\n isDirty: {\n get() {\n return !!get(formState.dirtyFields, name);\n },\n },\n isTouched: {\n get() {\n return !!get(formState.touchedFields, name);\n },\n },\n error: {\n get() {\n return get(formState.errors, name);\n },\n },\n },\n ),\n };\n}\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\n value?: unknown,\n) {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\nimport isUndefined from '../utils/isUndefined';\nimport omit from '../utils/omit';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName>,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\n break;\n } else if (_f.refs) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(current)) {\n focusFieldBy(current, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import * as React from 'react';\n\nimport { FieldRefs, FieldValues } from '../types';\nimport omit from '../utils/omit';\nimport set from '../utils/set';\n\nconst getFieldsValues = (\n fieldsRef: React.MutableRefObject<FieldRefs>,\n defaultValuesRef?: FieldValues,\n output: Record<string, any> = {},\n): any => {\n for (const name in fieldsRef.current) {\n const field = fieldsRef.current[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n set(\n output,\n name,\n _f\n ? _f.ref.disabled || (_f.refs && _f.refs.every((ref) => ref.disabled))\n ? undefined\n : _f.value\n : Array.isArray(field)\n ? []\n : {},\n );\n\n if (current) {\n getFieldsValues(\n {\n current,\n },\n defaultValuesRef,\n output[name],\n );\n }\n }\n }\n\n return {\n ...defaultValuesRef,\n ...output,\n };\n};\n\nexport default getFieldsValues;\n","import { UNDEFINED } from '../constants';\n\nexport default () => {\n const d =\n typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldValues } from '../types';\n\nimport generateId from './generateId';\n\nexport default <\n TFieldArrayValues extends FieldValues = FieldValues,\n TKeyName extends string = 'id',\n>(\n values: Partial<TFieldArrayValues>[] = [],\n keyName: TKeyName,\n): any =>\n values.map((value: Partial<TFieldArrayValues>) => ({\n [keyName]: (value && value[keyName]) || generateId(),\n ...value,\n }));\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import * as React from 'react';\n\nimport isObject from '../utils/isObject';\n\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(\n object1: any,\n object2: any,\n isErrorObject?: boolean,\n) {\n if (\n isPrimitive(object1) ||\n isPrimitive(object2) ||\n object1 instanceof Date ||\n object2 instanceof Date\n ) {\n return object1 === object2;\n }\n\n if (!React.isValidElement(object1)) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!(isErrorObject && key === 'ref')) {\n const val2 = object2[key];\n\n if (\n (isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2))\n ? !deepEqual(val1, val2, isErrorObject)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n","import isObject from './isObject';\nimport isPrimitive from './isPrimitive';\n\nexport function deepMerge<\n T extends Record<keyof T, any>,\n U extends Record<keyof U, any>,\n>(target: T, source: U): T & U {\n if (isPrimitive(target) || isPrimitive(source)) {\n return source;\n }\n\n for (const key in source) {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n try {\n target[key] =\n (isObject(targetValue) && isObject(sourceValue)) ||\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\n ? deepMerge(targetValue, sourceValue)\n : sourceValue;\n } catch {}\n }\n\n return target;\n}\n","import { get } from '../utils';\nimport deepEqual from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport set from '../utils/set';\n\nfunction setDirtyFields<\n T extends Record<string, unknown>[],\n U extends Record<string, unknown>[],\n K extends Record<string, boolean | []>,\n>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n parentNode?: K,\n parentName?: keyof K,\n) {\n let index = -1;\n\n while (++index < values.length) {\n for (const key in values[index]) {\n if (Array.isArray(values[index][key])) {\n !dirtyFields[index] && (dirtyFields[index] = {});\n dirtyFields[index][key] = [];\n setDirtyFields(\n values[index][key] as T,\n get(defaultValues[index] || {}, key, []),\n dirtyFields[index][key] as [],\n dirtyFields[index],\n key,\n );\n } else {\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\n ? set(dirtyFields[index] || {}, key)\n : (dirtyFields[index] = {\n ...dirtyFields[index],\n [key]: true,\n });\n }\n }\n\n parentNode &&\n !dirtyFields.length &&\n delete parentNode[parentName as keyof K];\n }\n\n return dirtyFields;\n}\n\nexport default <T extends U, U extends Record<string, unknown>[]>(\n values: T,\n defaultValues: U,\n dirtyFields: Record<string, boolean | []>[],\n) =>\n deepMerge(\n setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)),\n setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)),\n );\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n return [...data, ...convertToArrayPayload(value)];\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (Array.isArray(data)) {\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n }\n\n return [];\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n return [...convertToArrayPayload(value), ...data];\n}\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import isBoolean from './isBoolean';\nimport isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) &&\n !objectRef.filter(\n (data) =>\n (isObject(data) && !isEmptyObject(data)) || isBoolean(data),\n ).length))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldArrayParentName from './logic/getNodeParentName';\nimport mapIds from './logic/mapId';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport appendAt from './utils/append';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isPrimitive from './utils/isPrimitive';\nimport isUndefined from './utils/isUndefined';\nimport moveArrayAt from './utils/move';\nimport omit from './utils/omit';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport {\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldValues,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport const useFieldArray = <\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id',\n>({\n control,\n name,\n keyName = 'id' as TKeyName,\n shouldUnregister,\n}: UseFieldArrayProps<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n>): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> => {\n const methods = useFormContext();\n const focusNameRef = React.useRef('');\n const {\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n watchSubjectRef,\n fieldArraySubjectRef,\n fieldArrayNamesRef,\n fieldsRef,\n defaultValuesRef,\n formStateRef,\n formStateSubjectRef,\n readFormStateRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister,\n } = control || methods.control;\n\n const [fields, setFields] = React.useState<\n Partial<FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>>[]\n >(\n mapIds(\n get(fieldsRef.current, name)\n ? get(getFieldsValues(fieldsRef), name)\n : get(fieldArrayDefaultValuesRef.current, getFieldArrayParentName(name))\n ? get(fieldArrayDefaultValuesRef.current, name, [])\n : get(defaultValuesRef.current, name, []),\n keyName,\n ),\n );\n\n set(fieldArrayDefaultValuesRef.current, name, [...fields]);\n fieldArrayNamesRef.current.add(name);\n\n const omitKey = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n fields: T,\n ) =>\n fields.map((field) =>\n omit((field || {}) as Record<TKeyName, any>, keyName),\n );\n\n const getCurrentFieldsValues = () => {\n const values = get(\n getFieldsValues(fieldsRef, defaultValuesRef.current),\n name,\n [],\n );\n\n return mapIds<TFieldValues, TKeyName>(\n get(fieldArrayDefaultValuesRef.current, name, []).map(\n (item: Partial<TFieldValues>, index: number) => ({\n ...item,\n ...values[index],\n }),\n ),\n keyName,\n );\n };\n\n const getFocusDetail = (\n index: number,\n options?: FieldArrayMethodProps,\n ): string =>\n options\n ? !isUndefined(options.focusIndex)\n ? `${name}.${options.focusIndex}`\n : options.focusName\n ? options.focusName\n : !options.shouldFocus\n ? ''\n : `${name}.${index}`\n : `${name}.${index}`;\n\n const resetFields = <T>(index?: T) =>\n convertToArrayPayload(index).forEach((currentIndex) =>\n set(\n fieldsRef.current,\n `${name}${isUndefined(currentIndex) ? '' : `.${currentIndex}`}`,\n isUndefined(currentIndex) ? [] : undefined,\n ),\n );\n\n const setFieldsAndNotify = (\n fieldsValues: Partial<FieldArray<TFieldValues, TFieldArrayName>>[] = [],\n ) => setFields(mapIds(fieldsValues, keyName));\n\n const cleanup = <T>(ref: T) =>\n !compact(get(ref, name, [])).length && unset(ref, name);\n\n const updateDirtyFieldsWithDefaultValues = <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n updatedFieldArrayValues?: T,\n ) =>\n updatedFieldArrayValues &&\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n const batchStateUpdate = <T extends Function>(\n method: T,\n args: {\n argA?: unknown;\n argB?: unknown;\n },\n updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = [],\n shouldSet = true,\n ) => {\n if (get(fieldsRef.current, name)) {\n const output = method(get(fieldsRef.current, name), args.argA, args.argB);\n shouldSet && set(fieldsRef.current, name, output);\n }\n\n if (Array.isArray(get(formStateRef.current.errors, name))) {\n const output = method(\n get(formStateRef.current.errors, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.errors, name, output);\n cleanup(formStateRef.current.errors);\n }\n\n if (\n readFormStateRef.current.touchedFields &&\n get(formStateRef.current.touchedFields, name)\n ) {\n const output = method(\n get(formStateRef.current.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSet && set(formStateRef.current.touchedFields, name, output);\n cleanup(formStateRef.current.touchedFields);\n }\n\n if (\n readFormStateRef.current.dirtyFields ||\n readFormStateRef.current.isDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n omitKey(updatedFieldArrayValues),\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n updateDirtyFieldsWithDefaultValues(updatedFieldArrayValues);\n cleanup(formStateRef.current.dirtyFields);\n }\n\n if (readFormStateRef.current.isValid) {\n set(\n validFieldsRef.current,\n name,\n method(get(validFieldsRef.current, name, []), args.argA),\n );\n cleanup(validFieldsRef.current);\n\n set(\n fieldsWithValidationRef.current,\n name,\n method(get(fieldsWithValidationRef.current, name, []), args.argA),\n );\n cleanup(fieldsWithValidationRef.current);\n }\n\n formStateSubjectRef.current.next({\n isDirty: getIsDirty(name, omitKey(updatedFieldArrayValues)),\n errors: formStateRef.current.errors as FieldErrors<TFieldValues>,\n isValid: formStateRef.current.isValid,\n });\n };\n\n const registerFieldArray = <T extends Object[]>(\n values: T,\n index = 0,\n parentName = '',\n ) =>\n values.forEach(\n (appendValueItem, valueIndex) =>\n !isPrimitive(appendValueItem) &&\n Object.entries(appendValueItem).forEach(([key, value]) => {\n const inputName = `${parentName || name}.${\n parentName ? valueIndex : index + valueIndex\n }.${key}`;\n\n Array.isArray(value)\n ? registerFieldArray(value, valueIndex, inputName)\n : set(fieldsRef.current, inputName, {\n _f: {\n ref: {\n name: inputName,\n },\n name: inputName,\n value,\n },\n });\n }),\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = appendAt(\n getCurrentFieldsValues(),\n appendValue,\n );\n const currentIndex = updatedFieldArrayValues.length - appendValue.length;\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n appendAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n false,\n );\n registerFieldArray(appendValue, currentIndex);\n\n focusNameRef.current = getFocusDetail(currentIndex, options);\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = prependAt(\n getCurrentFieldsValues(),\n prependValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n prependAt,\n {\n argA: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(prependValue);\n\n focusNameRef.current = getFocusDetail(0, options);\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(getCurrentFieldsValues(), index);\n resetFields(index);\n setFieldsAndNotify(updatedFieldArrayValues);\n batchStateUpdate(\n removeArrayAt,\n {\n argA: index,\n },\n updatedFieldArrayValues,\n );\n };\n\n const insert = (\n index: number,\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const insertValue = convertToArrayPayload(value);\n const updatedFieldArrayValues = insertAt(\n getCurrentFieldsValues(),\n index,\n insertValue,\n );\n setFieldsAndNotify(\n updatedFieldArrayValues as Partial<\n FieldArray<TFieldValues, TFieldArrayName>\n >[],\n );\n batchStateUpdate(\n insertAt,\n {\n argA: index,\n argB: fillEmptyArray(value),\n },\n updatedFieldArrayValues as Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n );\n registerFieldArray(insertValue, index);\n\n focusNameRef.current = getFocusDetail(index, options);\n };\n\n const swap = (indexA: number, indexB: number) => {\n const fieldValues = getCurrentFieldsValues();\n swapArrayAt(fieldValues, indexA, indexB);\n batchStateUpdate(\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n fieldValues,\n false,\n );\n setFieldsAndNotify(fieldValues);\n };\n\n const move = (from: number, to: number) => {\n const fieldValues = getCurrentFieldsValues();\n moveArrayAt(fieldValues, from, to);\n setFieldsAndNotify(fieldValues);\n batchStateUpdate(\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n fieldValues,\n false,\n );\n };\n\n React.useEffect(() => {\n if (isWatchAllRef.current) {\n formStateSubjectRef.current.next({});\n } else {\n for (const watchField of watchFieldsRef.current) {\n if (name.startsWith(watchField)) {\n formStateSubjectRef.current.next({});\n break;\n }\n }\n }\n\n watchSubjectRef.current.next({\n name,\n value: get(\n getFieldsValues(fieldsRef, defaultValuesRef.current),\n name,\n [],\n ),\n });\n\n focusNameRef.current &&\n focusFieldBy(fieldsRef.current, (key: string) =>\n key.startsWith(focusNameRef.current),\n );\n\n focusNameRef.current = '';\n\n fieldArraySubjectRef.current.next({\n name,\n fields: omitKey([...fields]),\n });\n }, [fields, name]);\n\n React.useEffect(() => {\n const fieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next({ name: inputFieldArrayName, fields, isReset }) {\n if (isReset) {\n unset(fieldsRef.current, inputFieldArrayName || name);\n\n inputFieldArrayName\n ? set(\n fieldArrayDefaultValuesRef.current,\n inputFieldArrayName,\n fields,\n )\n : (fieldArrayDefaultValuesRef.current = fields);\n\n setFieldsAndNotify(get(fieldArrayDefaultValuesRef.current, name));\n }\n },\n });\n !get(fieldsRef.current, name) && set(fieldsRef.current, name, []);\n\n return () => {\n fieldArraySubscription.unsubscribe();\n (shouldUnmountUnregister || shouldUnregister) && unregister(name);\n };\n }, []);\n\n return {\n swap: React.useCallback(swap, [name]),\n move: React.useCallback(move, [name]),\n prepend: React.useCallback(prepend, [name]),\n append: React.useCallback(append, [name]),\n remove: React.useCallback(remove, [name]),\n insert: React.useCallback(insert, [name]),\n fields: fields as FieldArrayWithId<\n TFieldValues,\n TFieldArrayName,\n TKeyName\n >[],\n };\n};\n","import { Field, FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isKey from '../utils/isKey';\nimport set from '../utils/set';\n\nexport default function getFields(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n fieldsRefs: FieldRefs,\n) {\n const currentFields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field = get(fieldsRefs, name) as Field | undefined;\n\n if (field) {\n !isKey(name)\n ? set(currentFields, name, field._f)\n : (currentFields[name] = field._f);\n }\n }\n\n return currentFields;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import { SELECT } from '../constants';\nimport { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `${SELECT}-multiple`;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","import { Field } from '../types';\n\nexport default (\n value: any,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n valueAsNumber\n ? value === ''\n ? NaN\n : +value\n : valueAsDate\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","export default (\n options: HTMLOptionElement[] | HTMLOptionsCollection,\n): string[] =>\n [...options]\n .filter(({ selected }): boolean => selected)\n .map(({ value }): string => value);\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getMultipleSelectValue from './getMultipleSelectValue';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(field?: Field) {\n if (field && field._f) {\n const ref = field._f.ref;\n\n if (ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(field._f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return getMultipleSelectValue(ref.options);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(field._f.refs).value;\n }\n\n return getFieldValueAs(\n isUndefined(ref.value) ? field._f.ref.value : ref.value,\n field._f,\n );\n }\n}\n","import { RegisterOptions } from '../types';\n\nexport default <T extends RegisterOptions>(options?: T, mounted?: boolean) =>\n options &&\n mounted &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","export default ({\n isOnBlur,\n isOnChange,\n isOnTouch,\n isTouched,\n isReValidateOnBlur,\n isReValidateOnChange,\n isBlurEvent,\n isSubmitted,\n isOnAll,\n}: {\n isOnAll?: boolean;\n isOnBlur?: boolean;\n isOnChange?: boolean;\n isReValidateOnBlur?: boolean;\n isReValidateOnChange?: boolean;\n isBlurEvent?: boolean;\n isSubmitted?: boolean;\n isOnTouch?: boolean;\n isTouched?: boolean;\n}) => {\n if (isOnAll) {\n return false;\n } else if (!isSubmitted && isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? isReValidateOnChange : isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","export default (value: unknown): value is string => typeof value === 'string';\n","import * as React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport { Field, FieldError, InternalFieldErrors, Message } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n {\n _f: {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n value: inputValue,\n valueAsNumber,\n mount,\n },\n }: Field,\n validateAllFieldCriteria: boolean,\n): Promise<InternalFieldErrors> => {\n if (!mount) {\n return {};\n }\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType = INPUT_VALIDATION_RULES.maxLength,\n minType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n required &&\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: isRadioOrCheckbox ? (refs || [])[0] || {} : ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (\n (!isNullOrUndefined(min) || !isNullOrUndefined(max)) &&\n inputValue !== ''\n ) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNaN(inputValue)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber || parseFloat(inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && !isEmpty && (maxLength || minLength)) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (isString(inputValue) && pattern && !isEmpty) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n\n if (validate) {\n const validateRef = isRadioOrCheckbox && refs ? refs[0] : ref;\n\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, validateRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n for (const [key, validateFunction] of Object.entries(validate)) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateResult = await validateFunction(inputValue);\n const validateError = getValidateError(\n validateResult,\n validateRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: validateRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n return error;\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","export default (value: any): value is HTMLElement =>\n value instanceof HTMLElement;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","export type Observer<T> = {\n next: (value: T) => void;\n};\n\ntype TearDown = () => void;\n\nexport type SubjectType<T> = {\n next: (value: T) => void;\n subscribe: (value: Observer<T>) => {\n unsubscribe: TearDown;\n };\n};\n\nexport class Subscription {\n private tearDowns: TearDown[] = [];\n\n add(tearDown: TearDown) {\n this.tearDowns.push(tearDown);\n }\n\n unsubscribe() {\n for (const teardown of this.tearDowns) {\n teardown();\n }\n this.tearDowns = [];\n }\n}\n\nclass Subscriber<T> implements Observer<T> {\n closed = false;\n\n constructor(private observer: Observer<T>, subscription: Subscription) {\n subscription.add(() => (this.closed = true));\n }\n\n next(value: T) {\n if (!this.closed) {\n this.observer.next(value);\n }\n }\n}\n\nexport default class Subject<T> {\n observers: Observer<T>[];\n\n constructor() {\n this.observers = [];\n }\n\n next(value: T) {\n for (const observer of this.observers) {\n observer.next(value);\n }\n }\n\n subscribe(observer: Observer<T>) {\n const subscription = new Subscription();\n const subscriber = new Subscriber(observer, subscription);\n this.observers.push(subscriber);\n\n return subscription;\n }\n\n unsubscribe() {\n this.observers = [];\n }\n}\n","import * as React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport getFields from './logic/getFields';\nimport getFieldsValues from './logic/getFieldsValues';\nimport getFieldValue from './logic/getFieldValue';\nimport getFieldValueAs from './logic/getFieldValueAs';\nimport getNodeParentName from './logic/getNodeParentName';\nimport getProxyFormState from './logic/getProxyFormState';\nimport hasValidation from './logic/hasValidation';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport setFieldArrayDirtyFields from './logic/setFieldArrayDirtyFields';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport skipValidation from './logic/skipValidation';\nimport validateField from './logic/validateField';\nimport compact from './utils/compact';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport deepEqual from './utils/deepEqual';\nimport get from './utils/get';\nimport getValidationModes from './utils/getValidationModes';\nimport isCheckBoxInput from './utils/isCheckBoxInput';\nimport isEmptyObject from './utils/isEmptyObject';\nimport isFileInput from './utils/isFileInput';\nimport isFunction from './utils/isFunction';\nimport isHTMLElement from './utils/isHTMLElement';\nimport isMultipleSelect from './utils/isMultipleSelect';\nimport isNullOrUndefined from './utils/isNullOrUndefined';\nimport isProxyEnabled from './utils/isProxyEnabled';\nimport isRadioInput from './utils/isRadioInput';\nimport isRadioOrCheckboxFunction from './utils/isRadioOrCheckbox';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport isWeb from './utils/isWeb';\nimport omit from './utils/omit';\nimport set from './utils/set';\nimport Subject from './utils/Subject';\nimport unset from './utils/unset';\nimport { EVENTS, UNDEFINED, VALIDATION_MODE } from './constants';\nimport {\n ChangeHandler,\n DeepPartial,\n DefaultValues,\n EventType,\n Field,\n FieldArrayDefaultValues,\n FieldError,\n FieldErrors,\n FieldName,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n FormStateSubjectRef,\n GetIsDirty,\n InternalFieldName,\n InternalNameSet,\n KeepStateOptions,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n RegisterOptions,\n SetFieldValue,\n SetValueConfig,\n UnpackNestedValue,\n UseFormClearErrors,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormRegisterReturn,\n UseFormReset,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from './types';\n\nconst isWindowUndefined = typeof window === UNDEFINED;\n\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext extends object = object,\n>({\n mode = VALIDATION_MODE.onSubmit,\n reValidateMode = VALIDATION_MODE.onChange,\n resolver,\n context,\n defaultValues = {} as DefaultValues<TFieldValues>,\n shouldFocusError = true,\n shouldUnregister,\n criteriaMode,\n}: UseFormProps<TFieldValues, TContext> = {}): UseFormReturn<TFieldValues> {\n const fieldsRef = React.useRef<FieldRefs>({});\n const fieldsNamesRef = React.useRef<Set<InternalFieldName>>(new Set());\n const formStateSubjectRef = React.useRef<FormStateSubjectRef<TFieldValues>>(\n new Subject(),\n );\n const unregisterFieldsNamesRef = React.useRef<Set<InternalFieldName>>(\n new Set(),\n );\n const watchSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n type?: EventType;\n value?: unknown;\n }>(),\n );\n const controllerSubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n values: DefaultValues<TFieldValues>;\n }>(),\n );\n const fieldArraySubjectRef = React.useRef(\n new Subject<{\n name?: InternalFieldName;\n fields: any;\n isReset?: boolean;\n }>(),\n );\n const fieldArrayDefaultValuesRef = React.useRef<FieldArrayDefaultValues>({});\n const watchFieldsRef = React.useRef<InternalNameSet>(new Set());\n const isMountedRef = React.useRef(false);\n const fieldsWithValidationRef = React.useRef<\n FieldNamesMarkedBoolean<TFieldValues>\n >({});\n const validFieldsRef = React.useRef<FieldNamesMarkedBoolean<TFieldValues>>(\n {},\n );\n const defaultValuesRef =\n React.useRef<DefaultValues<TFieldValues>>(defaultValues);\n const isWatchAllRef = React.useRef(false);\n const contextRef = React.useRef(context);\n const resolverRef = React.useRef(resolver);\n const fieldArrayNamesRef = React.useRef<InternalNameSet>(new Set());\n const validationMode = getValidationModes(mode);\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n dirtyFields: {},\n isSubmitted: false,\n submitCount: 0,\n touchedFields: {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: !validationMode.isOnSubmit,\n errors: {},\n });\n const readFormStateRef = React.useRef<ReadFormState>({\n isDirty: !isProxyEnabled,\n dirtyFields: !isProxyEnabled,\n touchedFields: !isProxyEnabled,\n isValidating: !isProxyEnabled,\n isValid: !isProxyEnabled,\n errors: !isProxyEnabled,\n });\n const formStateRef = React.useRef(formState);\n\n contextRef.current = context;\n resolverRef.current = resolver;\n\n const getIsValid = () =>\n (formStateRef.current.isValid =\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\n isEmptyObject(formStateRef.current.errors));\n\n const shouldRenderBaseOnError = React.useCallback(\n (\n name: InternalFieldName,\n error?: FieldError,\n shouldRender: boolean | null = false,\n state: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n } = {},\n isValid?: boolean,\n isWatched?: boolean,\n ): boolean | void => {\n const previousError = get(formStateRef.current.errors, name);\n\n let shouldReRender =\n shouldRender ||\n !deepEqual(previousError, error, true) ||\n (readFormStateRef.current.isValid &&\n isUndefined(error) &&\n get(fieldsWithValidationRef.current, name) &&\n !get(validFieldsRef.current, name));\n\n if (error) {\n unset(validFieldsRef.current, name);\n shouldReRender =\n shouldReRender ||\n !previousError ||\n !deepEqual(previousError, error, true);\n set(formStateRef.current.errors, name, error);\n } else {\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\n set(validFieldsRef.current, name, true);\n shouldReRender = shouldReRender || previousError;\n }\n\n unset(formStateRef.current.errors, name);\n }\n\n if (\n (shouldReRender && !isNullOrUndefined(shouldRender)) ||\n !isEmptyObject(state) ||\n isWatched\n ) {\n const updatedFormState = {\n ...state,\n isValid: resolverRef.current ? !!isValid : getIsValid(),\n errors: formStateRef.current.errors,\n name,\n };\n\n formStateRef.current = {\n ...formStateRef.current,\n ...updatedFormState,\n };\n\n formStateSubjectRef.current.next(\n isWatched ? { name } : updatedFormState,\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: false,\n });\n },\n [],\n );\n\n const setFieldValue = React.useCallback(\n (\n name: InternalFieldName,\n rawValue: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n shouldRender?: boolean,\n shouldRegister?: boolean,\n ) => {\n shouldRegister && register(name as Path<TFieldValues>);\n const _f = get(fieldsRef.current, name, {})._f as Field['_f'];\n\n if (_f) {\n const value =\n isWeb && isHTMLElement(_f.ref) && isNullOrUndefined(rawValue)\n ? ''\n : rawValue;\n _f.value = getFieldValueAs(rawValue, _f);\n\n if (isRadioInput(_f.ref)) {\n (_f.refs || []).forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === value),\n );\n } else if (isFileInput(_f.ref) && !isString(value)) {\n _f.ref.files = value as FileList;\n } else if (isMultipleSelect(_f.ref)) {\n [..._f.ref.options].forEach(\n (selectRef) =>\n (selectRef.selected = (value as string[]).includes(\n selectRef.value,\n )),\n );\n } else if (isCheckBoxInput(_f.ref) && _f.refs) {\n _f.refs.length > 1\n ? _f.refs.forEach(\n (checkboxRef) =>\n (checkboxRef.checked = Array.isArray(value)\n ? !!(value as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : value === checkboxRef.value),\n )\n : (_f.refs[0].checked = !!value);\n } else {\n _f.ref.value = value;\n }\n\n if (shouldRender) {\n const values = getFieldsValues(fieldsRef);\n set(values, name, rawValue);\n controllerSubjectRef.current.next({\n values: {\n ...defaultValuesRef.current,\n ...values,\n } as DefaultValues<TFieldValues>,\n name,\n });\n }\n\n options.shouldDirty && updateAndGetDirtyState(name, value);\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n }\n },\n [],\n );\n\n const getIsDirty: GetIsDirty = React.useCallback((name, data) => {\n const formValues = getFieldsValues(fieldsRef);\n\n name && data && set(formValues, name, data);\n\n return !deepEqual(formValues, defaultValuesRef.current);\n }, []);\n\n const updateAndGetDirtyState = React.useCallback(\n (\n name: InternalFieldName,\n inputValue: unknown,\n shouldRender = true,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n if (\n readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields\n ) {\n const isFieldDirty = !deepEqual(\n get(defaultValuesRef.current, name),\n inputValue,\n );\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\n const previousIsDirty = formStateRef.current.isDirty;\n\n isFieldDirty\n ? set(formStateRef.current.dirtyFields, name, true)\n : unset(formStateRef.current.dirtyFields, name);\n\n formStateRef.current.isDirty = getIsDirty();\n\n const state = {\n isDirty: formStateRef.current.isDirty,\n dirtyFields: formStateRef.current.dirtyFields,\n name,\n };\n\n const isChanged =\n (readFormStateRef.current.isDirty &&\n previousIsDirty !== state.isDirty) ||\n (readFormStateRef.current.dirtyFields &&\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\n\n isChanged && shouldRender && formStateSubjectRef.current.next(state);\n\n return isChanged ? state : {};\n }\n\n return {};\n },\n [],\n );\n\n const executeValidation = React.useCallback(\n async (\n name: InternalFieldName,\n skipReRender?: boolean | null,\n ): Promise<boolean> => {\n const error = (\n await validateField(\n get(fieldsRef.current, name) as Field,\n isValidateAllFieldCriteria,\n )\n )[name];\n\n shouldRenderBaseOnError(name, error, skipReRender);\n\n return isUndefined(error);\n },\n [isValidateAllFieldCriteria],\n );\n\n const executeSchemaOrResolverValidation = React.useCallback(\n async (\n names: InternalFieldName[],\n currentNames: FieldName<TFieldValues>[] = [],\n ) => {\n const { errors } = await resolverRef.current!(\n getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n contextRef.current,\n {\n criteriaMode,\n names: currentNames,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(formStateRef.current.errors, name, error)\n : unset(formStateRef.current.errors, name);\n }\n\n return errors;\n },\n [criteriaMode],\n );\n\n const validateForm = async (fieldsRef: FieldRefs) => {\n let isValid = true;\n\n for (const name in fieldsRef) {\n const field = fieldsRef[name];\n\n if (field) {\n const _f = field._f;\n const current = omit(field, '_f');\n\n if (_f) {\n const fieldError = await validateField(\n field,\n isValidateAllFieldCriteria,\n );\n\n if (fieldError[_f.name]) {\n isValid = false;\n set(formStateRef.current.errors, _f.name, fieldError[_f.name]);\n unset(validFieldsRef.current, _f.name);\n } else if (get(fieldsWithValidationRef.current, _f.name)) {\n set(validFieldsRef.current, _f.name, true);\n unset(formStateRef.current.errors, _f.name);\n }\n }\n\n current && (await validateForm(current));\n }\n }\n\n return isValid;\n };\n\n const trigger: UseFormTrigger<TFieldValues> = React.useCallback(\n async (name) => {\n const fields = isUndefined(name)\n ? Object.keys(fieldsRef.current)\n : (convertToArrayPayload(name) as InternalFieldName[]);\n let isValid;\n let schemaResult: FieldErrors<TFieldValues> | {} = {};\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n schemaResult = await executeSchemaOrResolverValidation(\n fields,\n isUndefined(name) ? undefined : (fields as FieldName<TFieldValues>[]),\n );\n isValid = fields.every((name) => !get(schemaResult, name));\n } else {\n isValid = isUndefined(name)\n ? await validateForm(fieldsRef.current)\n : (\n await Promise.all(\n fields\n .filter((fieldName) => get(fieldsRef.current, fieldName))\n .map(\n async (fieldName) =>\n await executeValidation(fieldName, null),\n ),\n )\n ).every(Boolean);\n }\n\n formStateSubjectRef.current.next({\n ...(isString(name) ? { name } : {}),\n errors: formStateRef.current.errors,\n isValidating: false,\n isValid: resolverRef.current\n ? isEmptyObject(schemaResult)\n : getIsValid(),\n });\n\n return isValid;\n },\n [executeSchemaOrResolverValidation, executeValidation],\n );\n\n const setInternalValues = React.useCallback(\n (\n name: FieldPath<TFieldValues>,\n value: UnpackNestedValue<\n PathValue<TFieldValues, FieldPath<TFieldValues>>\n >,\n options: SetValueConfig,\n ) =>\n Object.entries(value).forEach(([inputKey, inputValue]) => {\n const fieldName = `${name}.${inputKey}` as Path<TFieldValues>;\n const field = get(fieldsRef.current, fieldName);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n isFieldArray || (field && !field._f)\n ? setInternalValues(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n )\n : setFieldValue(\n fieldName,\n inputValue as SetFieldValue<TFieldValues>,\n options,\n true,\n !field,\n );\n }),\n [trigger],\n );\n\n const isFieldWatched = (name: FieldPath<TFieldValues>) =>\n isWatchAllRef.current ||\n watchFieldsRef.current.has(name) ||\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\n\n const updateValidAndValue = (\n name: InternalFieldName,\n options?: RegisterOptions,\n ref?: Ref,\n isWithinRefCallback?: boolean,\n ) => {\n const field = get(fieldsRef.current, name) as Field;\n const defaultValue = isUndefined(field._f.value)\n ? get(defaultValuesRef.current, name)\n : field._f.value;\n\n if (field && !isUndefined(defaultValue)) {\n if (ref && (ref as HTMLInputElement).defaultChecked) {\n field._f.value = getFieldValue(field);\n } else if (!isNameInFieldArray(fieldArrayNamesRef.current, name)) {\n setFieldValue(name, defaultValue);\n } else {\n field._f.value = defaultValue;\n }\n }\n\n if (\n (!isUndefined(defaultValue) || isWithinRefCallback) &&\n hasValidation(options, field._f.mount) &&\n !validationMode.isOnSubmit &&\n field &&\n readFormStateRef.current.isValid\n ) {\n validateField(field, isValidateAllFieldCriteria).then((error) => {\n isEmptyObject(error)\n ? set(validFieldsRef.current, name, true)\n : unset(validFieldsRef.current, name);\n\n formStateRef.current.isValid !== getIsValid() &&\n updateFormState({ ...formStateRef.current, isValid: getIsValid() });\n });\n }\n\n return defaultValue;\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(fieldsRef.current, name);\n const isFieldArray = fieldArrayNamesRef.current.has(name);\n\n if (isFieldArray) {\n fieldArraySubjectRef.current.next({\n fields: value,\n name,\n isReset: true,\n });\n\n if (\n (readFormStateRef.current.isDirty ||\n readFormStateRef.current.dirtyFields) &&\n options.shouldDirty\n ) {\n set(\n formStateRef.current.dirtyFields,\n name,\n setFieldArrayDirtyFields(\n value,\n get(defaultValuesRef.current, name, []),\n get(formStateRef.current.dirtyFields, name, []),\n ),\n );\n\n formStateSubjectRef.current.next({\n name,\n dirtyFields: formStateRef.current.dirtyFields,\n isDirty: getIsDirty(name, value),\n });\n }\n\n !(value as []).length &&\n set(fieldsRef.current, name, []) &&\n set(fieldArrayDefaultValuesRef.current, name, []);\n }\n\n (field && !field._f) || isFieldArray\n ? setInternalValues(name, value, isFieldArray ? {} : options)\n : setFieldValue(name, value, options, true, !field);\n\n isFieldWatched(name) && formStateSubjectRef.current.next({});\n watchSubjectRef.current.next({ name, value });\n };\n\n const handleChange: ChangeHandler = React.useCallback(\n async ({ type, target, target: { value, type: inputType } }) => {\n let name = (target as Ref)!.name;\n let error;\n let isValid;\n const field = get(fieldsRef.current, name) as Field;\n\n if (field) {\n let inputValue = inputType ? getFieldValue(field) : undefined;\n inputValue = isUndefined(inputValue) ? value : inputValue;\n\n const isBlurEvent = type === EVENTS.BLUR;\n const {\n isOnBlur: isReValidateOnBlur,\n isOnChange: isReValidateOnChange,\n } = getValidationModes(reValidateMode);\n\n const shouldSkipValidation =\n (!hasValidation(field._f, field._f.mount) &&\n !resolverRef.current &&\n !get(formStateRef.current.errors, name)) ||\n skipValidation({\n isBlurEvent,\n isTouched: !!get(formStateRef.current.touchedFields, name),\n isSubmitted: formStateRef.current.isSubmitted,\n isReValidateOnBlur,\n isReValidateOnChange,\n ...validationMode,\n });\n const isWatched =\n !isBlurEvent && isFieldWatched(name as FieldPath<TFieldValues>);\n\n if (!isUndefined(inputValue)) {\n field._f.value = inputValue;\n }\n\n const state = updateAndGetDirtyState(name, field._f.value, false);\n\n if (isBlurEvent && !get(formStateRef.current.touchedFields, name)) {\n set(formStateRef.current.touchedFields, name, true);\n readFormStateRef.current.touchedFields &&\n (state.touchedFields = formStateRef.current.touchedFields);\n }\n\n let shouldRender = !isEmptyObject(state) || isWatched;\n\n if (shouldSkipValidation) {\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n return (\n shouldRender &&\n formStateSubjectRef.current.next(\n isWatched ? { name } : { ...state, name },\n )\n );\n }\n\n formStateSubjectRef.current.next({\n isValidating: true,\n });\n\n if (resolverRef.current) {\n const { errors } = await resolverRef.current(\n getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n contextRef.current,\n {\n criteriaMode,\n fields: getFields([name], fieldsRef.current),\n names: [name as FieldName<TFieldValues>],\n },\n );\n const previousFormIsValid = formStateRef.current.isValid;\n error = get(errors, name);\n\n if (isCheckBoxInput(target as Ref) && !error) {\n const parentNodeName = getNodeParentName(name);\n const currentError = get(errors, parentNodeName, {});\n currentError.type && currentError.message && (error = currentError);\n\n if (\n currentError ||\n get(formStateRef.current.errors, parentNodeName)\n ) {\n name = parentNodeName;\n }\n }\n\n isValid = isEmptyObject(errors);\n\n previousFormIsValid !== isValid && (shouldRender = true);\n } else {\n error = (await validateField(field, isValidateAllFieldCriteria))[\n name\n ];\n }\n\n !isBlurEvent &&\n watchSubjectRef.current.next({\n name,\n type,\n value: inputValue,\n });\n shouldRenderBaseOnError(\n name,\n error,\n shouldRender,\n state,\n isValid,\n isWatched,\n );\n }\n },\n [],\n );\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = isMountedRef.current\n ? getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n )\n : defaultValuesRef.current;\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const updateIsValid = React.useCallback(\n async (values = {}) => {\n const previousIsValid = formStateRef.current.isValid;\n\n if (resolver) {\n const { errors } = await resolverRef.current!(\n {\n ...getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n ),\n ...values,\n },\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.isValid = isEmptyObject(errors);\n } else {\n getIsValid();\n }\n\n previousIsValid !== formStateRef.current.isValid &&\n formStateSubjectRef.current.next({\n isValid: formStateRef.current.isValid,\n });\n },\n [criteriaMode],\n );\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name\n ? convertToArrayPayload(name).forEach((inputName) =>\n unset(formStateRef.current.errors, inputName),\n )\n : (formStateRef.current.errors = {});\n\n formStateSubjectRef.current.next({\n errors: formStateRef.current.errors,\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (\n ((get(fieldsRef.current, name) as Field) || { _f: {} })._f || {}\n ).ref;\n\n set(formStateRef.current.errors, name, {\n ...error,\n ref,\n });\n\n formStateSubjectRef.current.next({\n name,\n errors: formStateRef.current.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watchInternal: WatchInternal<TFieldValues> = React.useCallback(\n (fieldNames, defaultValue, isGlobal) => {\n const isArrayNames = Array.isArray(fieldNames);\n const fieldValues = isMountedRef.current\n ? getFieldsValues(fieldsRef, defaultValuesRef.current)\n : isUndefined(defaultValue)\n ? defaultValuesRef.current\n : isArrayNames\n ? defaultValue || {}\n : { [fieldNames as string]: defaultValue };\n\n if (isUndefined(fieldNames)) {\n isGlobal && (isWatchAllRef.current = true);\n return fieldValues;\n }\n\n const result = [];\n\n for (const fieldName of isArrayNames ? fieldNames : [fieldNames]) {\n isGlobal && watchFieldsRef.current.add(fieldName as string);\n result.push(get(fieldValues, fieldName as string));\n }\n\n return isArrayNames ? result : result[0];\n },\n [],\n );\n\n const watch: UseFormWatch<TFieldValues> = (\n fieldName?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(fieldName)\n ? watchSubjectRef.current.subscribe({\n next: (info) =>\n fieldName(\n watchInternal(\n undefined,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ) as UnpackNestedValue<TFieldValues>,\n info,\n ),\n })\n : watchInternal(\n fieldName as string | string[],\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const inputName of name\n ? convertToArrayPayload(name)\n : Object.keys(fieldsNamesRef.current)) {\n fieldsNamesRef.current.delete(inputName);\n fieldArrayNamesRef.current.delete(inputName);\n\n if (get(fieldsRef.current, inputName) as Field) {\n if (!options.keepIsValid) {\n unset(fieldsWithValidationRef.current, inputName);\n unset(validFieldsRef.current, inputName);\n }\n !options.keepError && unset(formStateRef.current.errors, inputName);\n !options.keepValue && unset(fieldsRef.current, inputName);\n !options.keepDirty &&\n unset(formStateRef.current.dirtyFields, inputName);\n !options.keepTouched &&\n unset(formStateRef.current.touchedFields, inputName);\n !shouldUnregister &&\n !options.keepDefaultValue &&\n unset(defaultValuesRef.current, inputName);\n\n watchSubjectRef.current.next({\n name: inputName,\n });\n }\n }\n\n formStateSubjectRef.current.next({\n ...formStateRef.current,\n ...(!options.keepDirty ? {} : { isDirty: getIsDirty() }),\n ...(resolverRef.current ? {} : { isValid: getIsValid() }),\n });\n !options.keepIsValid && updateIsValid();\n };\n\n const registerFieldRef = (\n name: InternalFieldName,\n ref: HTMLInputElement,\n options?: RegisterOptions,\n ): ((name: InternalFieldName) => void) | void => {\n register(name as FieldPath<TFieldValues>, options);\n let field = get(fieldsRef.current, name) as Field;\n\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\n\n if (\n ref === field._f.ref ||\n (isWeb && isHTMLElement(field._f.ref) && !isHTMLElement(ref)) ||\n (isRadioOrCheckbox &&\n Array.isArray(field._f.refs) &&\n compact(field._f.refs).find((option) => option === ref))\n ) {\n return;\n }\n\n field = {\n _f: isRadioOrCheckbox\n ? {\n ...field._f,\n refs: [\n ...compact(field._f.refs || []).filter(\n (ref) => isHTMLElement(ref) && document.contains(ref),\n ),\n ref,\n ],\n ref: { type: ref.type, name },\n }\n : {\n ...field._f,\n ref,\n },\n };\n\n set(fieldsRef.current, name, field);\n\n const defaultValue = updateValidAndValue(name, options, ref, true);\n\n if (\n isRadioOrCheckbox && Array.isArray(defaultValue)\n ? !deepEqual(get(fieldsRef.current, name)._f.value, defaultValue)\n : isUndefined(get(fieldsRef.current, name)._f.value)\n ) {\n get(fieldsRef.current, name)._f.value = getFieldValue(\n get(fieldsRef.current, name),\n );\n }\n };\n\n const register: UseFormRegister<TFieldValues> = React.useCallback(\n (name, options) => {\n const isInitialRegister = !get(fieldsRef.current, name);\n\n set(fieldsRef.current, name, {\n _f: {\n ...(isInitialRegister\n ? { ref: { name } }\n : {\n ref: (get(fieldsRef.current, name)._f || {}).ref,\n ...get(fieldsRef.current, name)._f,\n }),\n name,\n mount: true,\n ...options,\n },\n });\n hasValidation(options, true) &&\n set(fieldsWithValidationRef.current, name, true);\n fieldsNamesRef.current.add(name);\n isInitialRegister && updateValidAndValue(name, options);\n\n return isWindowUndefined\n ? ({ name: name as InternalFieldName } as UseFormRegisterReturn)\n : {\n name,\n onChange: handleChange,\n onBlur: handleChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n registerFieldRef(name, ref, options);\n } else {\n const field = get(fieldsRef.current, name) as Field;\n field && (field._f.mount = false);\n\n if (\n isWeb &&\n (shouldUnregister || (options && options.shouldUnregister))\n ) {\n unregisterFieldsNamesRef.current.add(name);\n }\n }\n },\n };\n },\n [defaultValuesRef.current],\n );\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> = React.useCallback(\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues = getFieldsValues(\n fieldsRef,\n shouldUnregister ? {} : defaultValuesRef.current,\n );\n\n formStateSubjectRef.current.next({\n isSubmitting: true,\n });\n\n try {\n if (resolverRef.current) {\n const { errors, values } = await resolverRef.current(\n fieldValues,\n contextRef.current,\n {\n criteriaMode,\n fields: getFields(fieldsNamesRef.current, fieldsRef.current),\n },\n );\n formStateRef.current.errors = errors;\n fieldValues = values;\n } else {\n await validateForm(fieldsRef.current);\n }\n\n if (\n isEmptyObject(formStateRef.current.errors) &&\n Object.keys(formStateRef.current.errors).every((name) =>\n get(fieldValues, name),\n )\n ) {\n formStateSubjectRef.current.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\n shouldFocusError &&\n focusFieldBy(\n fieldsRef.current,\n (key: string) => get(formStateRef.current.errors, key),\n fieldsNamesRef.current,\n );\n }\n } catch {\n hasNoPromiseError = false;\n } finally {\n formStateRef.current.isSubmitted = true;\n formStateSubjectRef.current.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(formStateRef.current.errors) && hasNoPromiseError,\n submitCount: formStateRef.current.submitCount + 1,\n errors: formStateRef.current.errors,\n });\n }\n },\n [shouldFocusError, isValidateAllFieldCriteria, criteriaMode],\n );\n\n const resetFromState = React.useCallback(\n (\n {\n keepErrors,\n keepDirty,\n keepIsSubmitted,\n keepTouched,\n keepDefaultValues,\n keepIsValid,\n keepSubmitCount,\n }: KeepStateOptions,\n values?: DefaultValues<TFieldValues>,\n ) => {\n if (!keepIsValid) {\n validFieldsRef.current = {};\n fieldsWithValidationRef.current = {};\n }\n\n watchFieldsRef.current = new Set();\n isWatchAllRef.current = false;\n\n formStateSubjectRef.current.next({\n submitCount: keepSubmitCount ? formStateRef.current.submitCount : 0,\n isDirty: keepDirty\n ? formStateRef.current.isDirty\n : keepDefaultValues\n ? deepEqual(values, defaultValuesRef.current)\n : false,\n isSubmitted: keepIsSubmitted ? formStateRef.current.isSubmitted : false,\n isValid: keepIsValid\n ? formStateRef.current.isValid\n : !!updateIsValid(values),\n dirtyFields: keepDirty ? formStateRef.current.dirtyFields : {},\n touchedFields: keepTouched ? formStateRef.current.touchedFields : {},\n errors: keepErrors ? formStateRef.current.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n },\n [],\n );\n\n const reset: UseFormReset<TFieldValues> = (values, keepStateOptions = {}) => {\n const updatedValues = values || defaultValuesRef.current;\n\n if (isWeb && !keepStateOptions.keepValues) {\n for (const name of fieldsNamesRef.current) {\n const field = get(fieldsRef.current, name);\n if (field && field._f) {\n const inputRef = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(inputRef)) {\n try {\n inputRef.closest('form')!.reset();\n break;\n } catch {}\n }\n }\n }\n }\n\n !keepStateOptions.keepDefaultValues &&\n (defaultValuesRef.current = { ...updatedValues });\n\n if (!keepStateOptions.keepValues) {\n fieldsRef.current = {};\n\n controllerSubjectRef.current.next({\n values: { ...updatedValues },\n });\n\n watchSubjectRef.current.next({\n value: { ...updatedValues },\n });\n\n fieldArraySubjectRef.current.next({\n fields: { ...updatedValues },\n isReset: true,\n });\n }\n\n resetFromState(keepStateOptions, values);\n isMountedRef.current = false;\n };\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name) =>\n get(fieldsRef.current, name)._f.ref.focus();\n\n React.useEffect(() => {\n const formStateSubscription = formStateSubjectRef.current.subscribe({\n next(formState) {\n if (shouldRenderFormState(formState, readFormStateRef.current, true)) {\n formStateRef.current = {\n ...formStateRef.current,\n ...formState,\n };\n updateFormState(formStateRef.current);\n }\n },\n });\n\n const useFieldArraySubscription = fieldArraySubjectRef.current.subscribe({\n next(state) {\n if (state.fields && state.name && readFormStateRef.current.isValid) {\n const values = getFieldsValues(fieldsRef);\n set(values, state.name, state.fields);\n updateIsValid(values);\n }\n },\n });\n\n resolverRef.current && readFormStateRef.current.isValid && updateIsValid();\n\n return () => {\n watchSubjectRef.current.unsubscribe();\n formStateSubscription.unsubscribe();\n useFieldArraySubscription.unsubscribe();\n };\n }, []);\n\n React.useEffect(() => {\n const isLiveInDom = (ref: Ref) =>\n !isHTMLElement(ref) || !document.contains(ref);\n\n isMountedRef.current = true;\n unregisterFieldsNamesRef.current.forEach((name) => {\n const field = get(fieldsRef.current, name) as Field;\n\n field &&\n (field._f.refs\n ? field._f.refs.every(isLiveInDom)\n : isLiveInDom(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n });\n unregisterFieldsNamesRef.current = new Set();\n });\n\n return {\n control: React.useMemo(\n () => ({\n register,\n isWatchAllRef,\n watchFieldsRef,\n getIsDirty,\n formStateSubjectRef,\n fieldArraySubjectRef,\n controllerSubjectRef,\n watchSubjectRef,\n watchInternal,\n fieldsRef,\n validFieldsRef,\n fieldsWithValidationRef,\n fieldArrayNamesRef,\n readFormStateRef,\n formStateRef,\n defaultValuesRef,\n fieldArrayDefaultValuesRef,\n unregister,\n shouldUnmountUnregister: shouldUnregister,\n }),\n [],\n ),\n formState: getProxyFormState<TFieldValues>(\n isProxyEnabled,\n formState,\n readFormStateRef,\n ),\n trigger,\n register,\n handleSubmit,\n watch: React.useCallback(watch, []),\n setValue: React.useCallback(setValue, [setInternalValues]),\n getValues: React.useCallback(getValues, []),\n reset: React.useCallback(reset, []),\n clearErrors: React.useCallback(clearErrors, []),\n unregister: React.useCallback(unregister, []),\n setError: React.useCallback(setError, []),\n setFocus: React.useCallback(setFocus, []),\n };\n}\n","import * as React from 'react';\n\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport isString from './utils/isString';\nimport isUndefined from './utils/isUndefined';\nimport {\n Control,\n DeepPartial,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UnpackNestedValue,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\n\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(props: {\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): UnpackNestedValue<DeepPartial<TFieldValues>>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: {\n name: TName;\n defaultValue?: FieldPathValue<TFieldValues, TName>;\n control?: Control<TFieldValues>;\n}): FieldPathValue<TFieldValues, TName>;\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues>[] = FieldPath<TFieldValues>[],\n>(props: {\n name: TName;\n defaultValue?: UnpackNestedValue<DeepPartial<TFieldValues>>;\n control?: Control<TFieldValues>;\n}): FieldPathValues<TFieldValues, TName>;\nexport function useWatch<TFieldValues>(props?: UseWatchProps<TFieldValues>) {\n const { control, name, defaultValue } = props || {};\n const methods = useFormContext();\n const nameRef = React.useRef(name);\n nameRef.current = name;\n\n const { watchInternal, watchSubjectRef } = control || methods.control;\n const [value, updateValue] = React.useState<unknown>(\n isUndefined(defaultValue)\n ? watchInternal(name as InternalFieldName)\n : defaultValue,\n );\n\n React.useEffect(() => {\n watchInternal(name as InternalFieldName);\n\n const watchSubscription = watchSubjectRef.current.subscribe({\n next: ({ name: inputName, value }) =>\n (!nameRef.current ||\n !inputName ||\n convertToArrayPayload(nameRef.current).some(\n (fieldName) =>\n inputName &&\n fieldName &&\n (fieldName.startsWith(inputName as InternalFieldName) ||\n inputName.startsWith(fieldName as InternalFieldName)),\n )) &&\n updateValue(\n isString(inputName) &&\n nameRef.current === inputName &&\n !isUndefined(value)\n ? value\n : watchInternal(\n nameRef.current as string,\n defaultValue as UnpackNestedValue<DeepPartial<TFieldValues>>,\n ),\n ),\n });\n\n return () => watchSubscription.unsubscribe();\n }, []);\n\n return value;\n}\n"],"names":["getFieldArrayParentName","append","appendAt","prepend","prependAt","insert","insertAt","isCheckBox"],"mappings":"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"}