{"version":3,"file":"form-item.mjs","sources":["../../../common/js/utils/stringTemplate.ts","../../../components/form/form-item.tsx"],"sourcesContent":["/**\n * 用正则实现模板字符串功能\n * @param str 模板字符串\n * @param vars 取值的对象\n * @returns 替换后的字符串\n */\nexport function template<T extends Record<string, string>>(str: string, vars: T): string {\n  return str.replace(/\\${(.*?)}/g, (_, prop: string) => vars[prop.trim()] ?? '');\n}\n","import {\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  VNode,\n  watch,\n} from 'vue';\nimport {\n  CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n  CloseCircleFilledIcon as TdCloseCircleFilledIcon,\n  ErrorCircleFilledIcon as TdErrorCircleFilledIcon,\n  GlobalIconType,\n} from 'tdesign-icons-vue-next';\nimport {\n  isNil,\n  isArray,\n  isNumber,\n  isString,\n  isBoolean,\n  cloneDeep,\n  get as lodashGet,\n  set as lodashSet,\n} from 'lodash-es';\n\nimport { validate } from './utils/form-model';\nimport {\n  AllValidateResult,\n  Data,\n  FormErrorMessage,\n  FormItemValidateMessage,\n  FormRule,\n  ValidateTriggerType,\n  ValueType,\n} from './type';\nimport props from './form-item-props';\nimport {\n  AnalysisValidateResult,\n  ErrorListType,\n  FormInjectionKey,\n  FormItemContext,\n  FormItemInjectionKey,\n  SuccessListType,\n  useCLASSNAMES,\n  ValidateStatus,\n} from './constants';\n\nimport { useConfig, useTNodeJSX, useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\nimport { getFormItemClassName } from './utils';\nimport { template } from '@tdesign/common-js/utils/stringTemplate';\n\nexport type FormItemValidateResult<T extends Data = Data> = { [key in keyof T]: boolean | AllValidateResult[] };\n\nexport default defineComponent({\n  name: 'TFormItem',\n  props,\n  setup(props, { slots }) {\n    const renderContent = useTNodeJSX();\n    const CLASS_NAMES = useCLASSNAMES();\n    const { globalConfig } = useConfig('form');\n    const { CheckCircleFilledIcon, CloseCircleFilledIcon, ErrorCircleFilledIcon } = useGlobalIcon({\n      CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n      CloseCircleFilledIcon: TdCloseCircleFilledIcon,\n      ErrorCircleFilledIcon: TdErrorCircleFilledIcon,\n    });\n    const form = inject(FormInjectionKey, undefined);\n\n    const classPrefix = usePrefixClass();\n    const formItemClassPrefix = usePrefixClass('form-item');\n\n    const needRequiredMark = computed(() => {\n      const requiredMark = props.requiredMark ?? form?.requiredMark ?? globalConfig.value.requiredMark;\n      const isRequired = innerRules.value.filter((rule) => rule.required).length > 0;\n      return requiredMark ?? isRequired;\n    });\n\n    const requiredMarkPosition = computed(() => {\n      return form?.requiredMarkPosition ?? globalConfig.value.requiredMarkPosition;\n    });\n\n    const hasLabel = computed(() => slots.label || props.label);\n    const hasColon = computed(() => !!(form?.colon && hasLabel.value));\n    const FROM_LABEL = usePrefixClass('form__label');\n    const labelAlign = computed(() => (isNil(props.labelAlign) ? form?.labelAlign : props.labelAlign));\n    const labelWidth = computed(() => (isNil(props.labelWidth) ? form?.labelWidth : props.labelWidth));\n\n    const labelClasses = computed(() => [\n      CLASS_NAMES.value.label,\n      {\n        [`${FROM_LABEL.value}--required`]: needRequiredMark.value,\n        [`${FROM_LABEL.value}--required-right`]: needRequiredMark.value && requiredMarkPosition.value === 'right',\n        [`${FROM_LABEL.value}--top`]: hasLabel.value && (labelAlign.value === 'top' || !labelWidth.value),\n        [`${FROM_LABEL.value}--left`]: labelAlign.value === 'left' && labelWidth.value,\n        [`${FROM_LABEL.value}--right`]: labelAlign.value === 'right' && labelWidth.value,\n      },\n    ]);\n\n    const statusClass = computed(\n      () =>\n        `${classPrefix.value}-is-${props.status || 'default'} ${\n          props.status === 'success' ? CLASS_NAMES.value.successBorder : ''\n        }`,\n    );\n\n    const renderLabel = () => {\n      if (Number(labelWidth.value) === 0) return;\n\n      let labelStyle = {};\n      if (labelWidth.value && labelAlign.value !== 'top') {\n        if (isNumber(labelWidth.value)) {\n          labelStyle = { width: `${labelWidth.value}px` };\n        } else {\n          labelStyle = { width: labelWidth.value };\n        }\n      }\n\n      return (\n        <div class={labelClasses.value} style={labelStyle}>\n          <label for={props.for || null}>{renderContent('label')}</label>\n          {hasColon.value && globalConfig.value.colonText}\n        </div>\n      );\n    };\n\n    /** Suffix Icon */\n    const getDefaultIcon = (): VNode => {\n      const resultIcon = (Icon: GlobalIconType) => (\n        <span class={CLASS_NAMES.value.status}>\n          <Icon />\n        </span>\n      );\n      const list = errorList.value;\n      if (verifyStatus.value === ValidateStatus.SUCCESS) {\n        return resultIcon(CheckCircleFilledIcon);\n      }\n      if (list?.[0]) {\n        const type = list[0].type || 'error';\n        const icon = {\n          error: CloseCircleFilledIcon,\n          warning: ErrorCircleFilledIcon,\n          success: CheckCircleFilledIcon,\n        }[type];\n        return resultIcon(icon);\n      }\n      return null;\n    };\n    const renderSuffixIcon = () => {\n      const { statusIcon } = props;\n      if (statusIcon === false) return;\n\n      let resultIcon = renderContent('statusIcon', { defaultNode: getDefaultIcon() });\n      if (resultIcon) return <span class={CLASS_NAMES.value.status}>{resultIcon}</span>;\n      if (resultIcon === false) return;\n\n      resultIcon = form?.renderContent('statusIcon', { defaultNode: getDefaultIcon(), params: props });\n      if (resultIcon) return resultIcon;\n    };\n    /** Suffix Icon END */\n\n    /** Content Style */\n    const statusClasses = computed(() => {\n      if (!showErrorMessage.value) return '';\n      if (verifyStatus.value === ValidateStatus.SUCCESS) {\n        return props.successBorder\n          ? [CLASS_NAMES.value.success, CLASS_NAMES.value.successBorder].join(' ')\n          : CLASS_NAMES.value.success;\n      }\n      if (!errorList.value.length) return;\n      const type = errorList.value[0].type || 'error';\n      if (props.status) return statusClass.value;\n      return type === 'error' ? CLASS_NAMES.value.error : CLASS_NAMES.value.warning;\n    });\n    const contentClasses = computed(() => [CLASS_NAMES.value.controls, statusClasses.value]);\n    const contentStyle = computed(() => {\n      let contentStyle = {};\n      if (labelWidth.value && labelAlign.value !== 'top') {\n        if (isNumber(labelWidth.value)) {\n          contentStyle = { marginLeft: `${labelWidth.value}px` };\n        } else {\n          contentStyle = { marginLeft: labelWidth.value };\n        }\n      }\n\n      return contentStyle;\n    });\n    /** Content Style END */\n\n    const errorList = ref<ErrorListType[]>([]);\n    const successList = ref<SuccessListType[]>([]);\n    const verifyStatus = ref(ValidateStatus.TO_BE_VALIDATED);\n    const resetValidating = ref(false);\n    const needResetField = ref(false);\n\n    const resetHandler = () => {\n      needResetField.value = false;\n      errorList.value = [];\n      successList.value = [];\n      verifyStatus.value = ValidateStatus.TO_BE_VALIDATED;\n    };\n    const getEmptyValue = (): ValueType => {\n      const type = Object.prototype.toString.call(lodashGet(form?.data, props.name));\n      let emptyValue: ValueType;\n      if (type === '[object String]') {\n        emptyValue = '';\n      }\n      if (type === '[object Array]') {\n        emptyValue = [];\n      }\n      if (type === '[object Object]') {\n        emptyValue = {};\n      }\n      return emptyValue;\n    };\n    const resetField = async (resetType: 'initial' | 'empty' | undefined = form?.resetType) => {\n      if (!props.name) return;\n\n      if (resetType === 'empty') lodashSet(form?.data, props.name, getEmptyValue());\n      else if (resetType === 'initial') lodashSet(form?.data, props.name, initialValue.value);\n\n      await nextTick();\n      if (resetValidating.value) {\n        needResetField.value = true;\n      } else {\n        resetHandler();\n      }\n    };\n\n    const errorMessages = computed<FormErrorMessage>(() => form?.errorMessage ?? globalConfig.value.errorMessage);\n    const innerRules = computed<FormRule[]>(() => {\n      if (props.rules?.length) return props.rules;\n      if (!props.name) return [];\n\n      return lodashGet(form?.rules, props.name) || [];\n    });\n\n    const analysisValidateResult = async (trigger: ValidateTriggerType): Promise<AnalysisValidateResult> => {\n      const result: AnalysisValidateResult = {\n        successList: [],\n        errorList: [],\n        rules: [],\n        resultList: [],\n        allowSetValue: false,\n      };\n      result.rules =\n        trigger === 'all'\n          ? innerRules.value\n          : innerRules.value.filter((item) => (item.trigger || 'change') === trigger);\n      if (innerRules.value.length && !result.rules?.length) {\n        return result;\n      }\n      result.allowSetValue = true;\n      result.resultList = await validate(value.value, result.rules, { formData: form?.data, name: props.name });\n      result.errorList = result.resultList\n        .filter((item) => item.result !== true)\n        .map((item: ErrorListType) => {\n          Object.keys(item).forEach((key) => {\n            // @ts-ignore\n            if (!item.message && errorMessages.value[key]) {\n              const name = isString(props.label) ? props.label : props.name;\n              // @ts-ignore\n              item.message = template(errorMessages.value[key], {\n                name,\n                // @ts-ignore\n                validate: item[key],\n              });\n            }\n          });\n          return item;\n        });\n      // 仅有自定义校验方法才会存在 successList\n      result.successList = result.resultList.filter(\n        (item) => item.result === true && item.message && item.type === 'success',\n      ) as SuccessListType[];\n\n      return result;\n    };\n    const validateHandler = async <T extends Data = Data>(\n      trigger: ValidateTriggerType,\n      showErrorMessage?: boolean,\n    ): Promise<FormItemValidateResult<T>> => {\n      resetValidating.value = true;\n      // undefined | boolean\n      freeShowErrorMessage.value = showErrorMessage;\n      const {\n        successList: innerSuccessList,\n        errorList: innerErrorList,\n        rules,\n        resultList,\n        allowSetValue,\n      } = await analysisValidateResult(trigger);\n\n      if (allowSetValue) {\n        successList.value = innerSuccessList;\n        errorList.value = innerErrorList;\n      }\n      // 根据校验结果设置校验状态\n      if (rules.length) {\n        verifyStatus.value = innerErrorList.length ? ValidateStatus.FAIL : ValidateStatus.SUCCESS;\n      }\n      // 重置处理\n      if (needResetField.value) {\n        resetHandler();\n      }\n      resetValidating.value = false;\n\n      return {\n        [props.name]: innerErrorList.length === 0 ? true : resultList,\n      } as FormItemValidateResult<T>;\n    };\n    const validateOnly = async <T extends Data>(trigger: ValidateTriggerType): Promise<FormItemValidateResult<T>> => {\n      const { errorList: innerErrorList, resultList } = await analysisValidateResult(trigger);\n\n      return {\n        [props.name]: innerErrorList.length === 0 ? true : resultList,\n      } as FormItemValidateResult<T>;\n    };\n\n    const setValidateMessage = (validateMessage: FormItemValidateMessage[]) => {\n      if (!validateMessage || !isArray(validateMessage)) return;\n      errorList.value = [];\n      successList.value = [];\n      if (validateMessage.length === 0) {\n        verifyStatus.value = ValidateStatus.SUCCESS;\n        return;\n      }\n      const errors = validateMessage.filter(\n        (item) => item.type === 'error' || item.type === 'warning',\n      ) as FormItemValidateMessage[];\n      const successes = validateMessage.filter((item) => item.type === 'success') as FormItemValidateMessage[];\n      errorList.value = errors.map((item) => ({\n        message: item.message,\n        type: item.type as 'error' | 'warning',\n        result: false,\n      }));\n      successList.value = successes.map((item) => ({\n        message: item.message,\n        type: item.type as 'success',\n        result: true,\n      }));\n      verifyStatus.value = errors.length > 0 ? ValidateStatus.FAIL : ValidateStatus.SUCCESS;\n    };\n\n    const value = computed<ValueType>(() => form?.data && lodashGet(form?.data, props.name));\n    const initialValue = ref<ValueType>(undefined);\n    const { name } = toRefs(props);\n    const context: FormItemContext = reactive({\n      name,\n      resetHandler,\n      resetField,\n      validate: validateHandler,\n      validateOnly,\n      setValidateMessage,\n    });\n\n    onMounted(() => {\n      initialValue.value = cloneDeep(value.value);\n      form?.children.push(context);\n    });\n\n    onBeforeUnmount(() => {\n      if (form) form.children = form?.children.filter((ctx) => ctx !== context);\n    });\n\n    watch(\n      value,\n      async () => {\n        await validateHandler('change');\n      },\n      { deep: true },\n    );\n\n    watch(\n      () => [props.name, JSON.stringify(props.rules)].join(','),\n      () => {\n        validateHandler('change');\n      },\n    );\n\n    const freeShowErrorMessage = ref<boolean>(undefined);\n    const showErrorMessage = computed(() => {\n      if (isBoolean(freeShowErrorMessage.value)) return freeShowErrorMessage.value;\n      if (isBoolean(props.showErrorMessage)) return props.showErrorMessage;\n      return form?.showErrorMessage;\n    });\n\n    const classes = computed(() => [\n      CLASS_NAMES.value.formItem,\n      getFormItemClassName(formItemClassPrefix.value, props.name),\n      {\n        [CLASS_NAMES.value.formItemWithHelp]: helpNode.value,\n        [CLASS_NAMES.value.formItemWithExtra]: extraNode.value,\n      },\n    ]);\n    const helpNode = computed<VNode>(() => {\n      const help = renderContent('help');\n      if (help) return <div class={CLASS_NAMES.value.help}>{help}</div>;\n      return null;\n    });\n    const extraNode = computed<VNode>(() => {\n      const getExtraNode = (content: string) => (\n        <div class={CLASS_NAMES.value.extra} title={content}>\n          {content}\n        </div>\n      );\n      const list = errorList.value;\n      if (showErrorMessage.value && list?.[0]?.message) {\n        return getExtraNode(list[0].message);\n      }\n      if (successList.value.length) {\n        return getExtraNode(successList.value[0].message);\n      }\n      return null;\n    });\n\n    const tipsNode = computed<VNode>(() => {\n      const tmpTips = renderContent('tips');\n      if (!tmpTips) return null;\n      const tmpClasses = [`${formItemClassPrefix.value}-tips`, `${classPrefix.value}-tips`, statusClass.value];\n      return <div class={tmpClasses}>{tmpTips}</div>;\n    });\n\n    const handleBlur = async () => {\n      await validateHandler('blur');\n    };\n    provide(FormItemInjectionKey, {\n      handleBlur,\n    });\n\n    return () => (\n      <div class={classes.value}>\n        {renderLabel()}\n        <div class={contentClasses.value} style={contentStyle.value}>\n          <div class={CLASS_NAMES.value.controlsContent}>\n            {renderContent('default')}\n            {renderSuffixIcon()}\n          </div>\n          {helpNode.value}\n          {tipsNode.value}\n          {extraNode.value}\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["template","str","vars","replace","_","prop","trim","_vars$prop$trim","defineComponent","name","props","setup","slots","_ref","renderContent","useTNodeJSX","CLASS_NAMES","useCLASSNAMES","_useConfig","useConfig","globalConfig","_useGlobalIcon","useGlobalIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","CloseCircleFilledIcon","TdCloseCircleFilledIcon","ErrorCircleFilledIcon","TdErrorCircleFilledIcon","form","inject","FormInjectionKey","classPrefix","usePrefixClass","formItemClassPrefix","needRequiredMark","computed","_ref2","_props2$requiredMark","requiredMark","value","isRequired","innerRules","filter","rule","required","length","requiredMarkPosition","_form$requiredMarkPos","hasLabel","label","hasColon","colon","FROM_LABEL","labelAlign","isNil","labelWidth","labelClasses","_defineProperty","concat","statusClass","status","successBorder","renderLabel","Number","labelStyle","isNumber","width","_createVNode","colonText","getDefaultIcon","resultIcon","Icon","list","errorList","verifyStatus","ValidateStatus","SUCCESS","type","icon","error","warning","success","renderSuffixIcon","statusIcon","defaultNode","params","statusClasses","showErrorMessage","join","contentClasses","controls","contentStyle","marginLeft","ref","successList","TO_BE_VALIDATED","resetValidating","needResetField","resetHandler","getEmptyValue","Object","prototype","toString","call","lodashGet","data","emptyValue","resetField","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","resetType","_args","arguments","wrap","_context","prev","next","undefined","abrupt","lodashSet","initialValue","nextTick","stop","apply","errorMessages","_form$errorMessage","errorMessage","_props2$rules","rules","analysisValidateResult","_ref5","_callee2","trigger","_result$rules","result","_context2","resultList","allowSetValue","item","validate","formData","sent","map","keys","forEach","key","message","isString","_x","validateHandler","_ref6","_callee3","_yield$analysisValida","innerSuccessList","innerErrorList","_context3","freeShowErrorMessage","FAIL","_x2","_x3","validateOnly","_ref8","_callee4","_yield$analysisValida2","_context4","_x4","setValidateMessage","validateMessage","isArray","errors","successes","_toRefs","toRefs","context","reactive","onMounted","cloneDeep","children","push","onBeforeUnmount","ctx","watch","_callee5","_context5","deep","JSON","stringify","isBoolean","classes","formItem","getFormItemClassName","formItemWithHelp","helpNode","formItemWithExtra","extraNode","help","_list$","getExtraNode","content","extra","tipsNode","tmpTips","tmpClasses","handleBlur","_callee6","_context6","provide","FormItemInjectionKey","controlsContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMgB,SAAAA,QAAAA,CAA2CC,KAAaC,IAAiB,EAAA;EAChF,OAAAD,GAAA,CAAIE,OAAQ,CAAA,YAAA,EAAc,UAACC,CAAA,EAAGC;;8BAAiBH,IAAK,CAAAG,IAAA,CAAKC,IAAK,EAAA,CAAA,MAAAC,IAAAA,IAAAA,eAAA,KAAAA,KAAAA,CAAAA,GAAAA,eAAA,GAAM,EAAE,CAAA;GAAA,CAAA,CAAA;AAC/E;;ACmDA,gBAAeC,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,WAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAkB;AAAA,IAAA,IAATE,KAAA,GAAAC,IAAA,CAAAD,KAAA,CAAA;AACb,IAAA,IAAME,gBAAgBC,WAAY,EAAA,CAAA;AAClC,IAAA,IAAMC,cAAcC,aAAc,EAAA,CAAA;AAClC,IAAA,IAAAC,UAAA,GAAyBC,SAAA,CAAU,MAAM,CAAA;MAAjCC,YAAA,GAAAF,UAAA,CAAAE,YAAA,CAAA;IACR,IAAAC,cAAA,GAAgFC,aAAc,CAAA;AAC5FC,QAAAA,qBAAuB,EAAAC,qBAAA;AACvBC,QAAAA,qBAAuB,EAAAC,qBAAA;AACvBC,QAAAA,qBAAuB,EAAAC,qBAAAA;AACzB,OAAC,CAAA;MAJOL,uBAAA,GAAAF,cAAA,CAAAE,qBAAA;MAAuBE,uBAAuB,GAAAJ,cAAA,CAAvBI,qBAAuB;MAAAE,uBAAA,GAAAN,cAAA,CAAAM,qBAAA,CAAA;IAKhD,IAAAE,IAAA,GAAOC,MAAO,CAAAC,gBAAA,EAAkB,KAAS,CAAA,CAAA,CAAA;AAE/C,IAAA,IAAMC,cAAcC,cAAe,EAAA,CAAA;AAC7B,IAAA,IAAAC,mBAAA,GAAsBD,eAAe,WAAW,CAAA,CAAA;AAEhD,IAAA,IAAAE,gBAAA,GAAmBC,SAAS,YAAM;MAAA,IAAAC,KAAA,EAAAC,oBAAA,CAAA;AACtC,MAAA,IAAMC,gDAAe7B,MAAM,CAAA6B,YAAA,MAAA,IAAA,IAAAD,oBAAA,KAAA,KAAA,CAAA,GAAAA,oBAAA,GAAgBT,IAAM,KAANA,IAAAA,IAAAA,IAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAM,CAAAU,YAAA,MAAAF,IAAAA,IAAAA,KAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAA,GAAgBjB,aAAaoB,KAAM,CAAAD,YAAA,CAAA;MAC9E,IAAAE,UAAA,GAAaC,WAAWF,KAAM,CAAAG,MAAA,CAAO,UAACC,IAAS,EAAA;QAAA,OAAAA,IAAA,CAAKC,QAAQ,CAAA;OAAA,CAAA,CAAEC,MAAS,GAAA,CAAA,CAAA;AAC7E,MAAA,OAAOP,YAAgB,KAAhBA,IAAAA,IAAAA,YAAgB,KAAhBA,KAAAA,CAAAA,GAAAA,YAAgB,GAAAE,UAAA,CAAA;AACzB,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAM,oBAAA,GAAuBX,SAAS,YAAM;AAAA,MAAA,IAAAY,qBAAA,CAAA;AACnC,MAAA,OAAA,CAAAA,qBAAA,GAAAnB,IAAA,aAAAA,IAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAMkB,oBAAwB,MAAAC,IAAAA,IAAAA,qBAAA,cAAAA,qBAAA,GAAA5B,YAAA,CAAaoB,KAAM,CAAAO,oBAAA,CAAA;AAC1D,KAAC,CAAA,CAAA;IAED,IAAME,WAAWb,QAAS,CAAA,YAAA;AAAA,MAAA,OAAMxB,KAAM,CAAAsC,KAAA,IAASxC,OAAMwC,KAAK,CAAA;KAAA,CAAA,CAAA;IACpD,IAAAC,QAAA,GAAWf,SAAS,YAAA;AAAA,MAAA,OAAM,CAAC,EAAEP,IAAM,KAAA,IAAA,IAANA,IAAM,KAAA,KAAA,CAAA,IAANA,IAAM,CAAAuB,KAAA,IAASH,SAAST,KAAM,CAAA,CAAA;KAAA,CAAA,CAAA;AAC3D,IAAA,IAAAa,UAAA,GAAapB,eAAe,aAAa,CAAA,CAAA;IACzC,IAAAqB,UAAA,GAAalB,QAAS,CAAA,YAAA;AAAA,MAAA,OAAOmB,KAAM7C,CAAAA,MAAAA,CAAM4C,UAAU,CAAI,GAAAzB,IAAA,KAAAA,IAAAA,IAAAA,IAAA,uBAAAA,IAAA,CAAMyB,UAAa5C,GAAAA,MAAAA,CAAM4C,UAAW,CAAA;KAAA,CAAA,CAAA;IAC3F,IAAAE,UAAA,GAAapB,QAAS,CAAA,YAAA;AAAA,MAAA,OAAOmB,KAAM7C,CAAAA,MAAAA,CAAM8C,UAAU,CAAI,GAAA3B,IAAA,KAAAA,IAAAA,IAAAA,IAAA,uBAAAA,IAAA,CAAM2B,UAAa9C,GAAAA,MAAAA,CAAM8C,UAAW,CAAA;KAAA,CAAA,CAAA;IAE3F,IAAAC,YAAA,GAAerB,SAAS,YAAA;MAAA,OAAM,CAClCpB,YAAYwB,KAAM,CAAAU,KAAA,EAAAQ,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,QAAAC,MAAA,CAEZN,UAAW,CAAAb,KAAA,EAAA,YAAA,CAAA,EAAoBL,gBAAiB,CAAAK,KAAA,MAAAmB,MAAA,CAChDN,UAAA,CAAWb,4BAA0BL,gBAAiB,CAAAK,KAAA,IAASO,qBAAqBP,KAAU,KAAA,OAAA,CAAAmB,EAAAA,EAAAA,CAAAA,MAAA,CAC9FN,UAAA,CAAWb,KAAe,YAAAS,QAAA,CAAST,UAAUc,UAAW,CAAAd,KAAA,KAAU,KAAS,IAAA,CAACgB,UAAW,CAAAhB,KAAA,CAAA,CAAAmB,EAAAA,EAAAA,CAAAA,MAAA,CACvFN,UAAA,CAAWb,kBAAgBc,UAAW,CAAAd,KAAA,KAAU,UAAUgB,UAAW,CAAAhB,KAAA,CAAAmB,EAAAA,EAAAA,CAAAA,MAAA,CACrEN,UAAA,CAAWb,OAAiBc,SAAAA,CAAAA,EAAAA,UAAW,CAAAd,KAAA,KAAU,WAAWgB,UAAW,CAAAhB,KAAA,CAE9E,CAAA,CAAA;KAAA,CAAA,CAAA;IAED,IAAMoB,WAAc,GAAAxB,QAAA,CAClB,YAAA;AAAA,MAAA,OAAA,EAAA,CAAAuB,MAAA,CACK3B,WAAY,CAAAQ,KAAA,EAAA,MAAA,CAAA,CAAAmB,MAAA,CAAYjD,MAAM,CAAAmD,MAAA,IAAU,SACzCnD,EAAAA,GAAAA,CAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAMmD,MAAW,KAAA,SAAA,GAAY7C,WAAY,CAAAwB,KAAA,CAAMsB,aAAgB,GAAA,EAAA,CAAA,CAAA;AAAA,KAErE,CAAA,CAAA;AAEA,IAAA,IAAMC,cAAc,SAAdA,cAAoB;MACpB,IAAAC,MAAA,CAAOR,UAAW,CAAAhB,KAAK,CAAM,KAAA,CAAA,EAAG,OAAA;MAEpC,IAAIyB,aAAa,EAAC,CAAA;MAClB,IAAIT,UAAW,CAAAhB,KAAA,IAASc,UAAW,CAAAd,KAAA,KAAU,KAAO,EAAA;AAC9C,QAAA,IAAA0B,QAAA,CAASV,UAAW,CAAAhB,KAAK,CAAG,EAAA;AAC9ByB,UAAAA,UAAA,GAAa;AAAEE,YAAAA,KAAA,EAAAR,EAAAA,CAAAA,MAAA,CAAUH,UAAA,CAAWhB,KAAU,EAAA,IAAA,CAAA;WAAA,CAAA;AAChD,SAAO,MAAA;AACQyB,UAAAA,UAAA,GAAA;YAAEE,KAAO,EAAAX,UAAA,CAAWhB,KAAAA;WAAM,CAAA;AACzC,SAAA;AACF,OAAA;AAEA,MAAA,OAAA4B,WAAA,CAAA,KAAA,EAAA;QAAA,OACcX,EAAAA,YAAA,CAAajB;eAAcyB,EAAAA,UAAAA;AAAA,OAAA,EAAA,CAAAG,WAAA,CAAA,OAAA,EAAA;QAAA,KACzB1D,EAAAA,MAAAA,WAAa,IAAA;AAAO,OAAA,EAAA,CAAAI,aAAA,CAAc,OAAO,CAAA,CACpDqC,CAAAA,EAAAA,QAAA,CAASX,KAAS,IAAApB,YAAA,CAAaoB,KAAM,CAAA6B,SAAA,CAAA,CAAA,CAAA;KAG5C,CAAA;AAGA,IAAA,IAAMC,iBAAiB,SAAjBA,iBAA8B;AAClC,MAAA,IAAMC,UAAa,GAAA,SAAbA,UAAaA,CAACC,IAClB,EAAA;AAAA,QAAA,OAAAJ,WAAA,CAAA,MAAA,EAAA;UAAA,OAAapD,EAAAA,WAAY,CAAAwB,KAAA,CAAMqB,MAAAA;SAC7BO,EAAAA,CAAAA,WAAA,CAAAI,IAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;OADD,CAAA;AAIH,MAAA,IAAMC,OAAOC,SAAU,CAAAlC,KAAA,CAAA;AACnB,MAAA,IAAAmC,YAAA,CAAanC,KAAU,KAAAoC,cAAA,CAAeC,OAAS,EAAA;QACjD,OAAON,WAAWhD,uBAAqB,CAAA,CAAA;AACzC,OAAA;MACA,IAAIkD,iBAAAA,mBAAAA,KAAO,CAAI,CAAA,EAAA;QACP,IAAAK,IAAA,GAAOL,IAAK,CAAA,CAAA,CAAA,CAAGK,IAAQ,IAAA,OAAA,CAAA;AAC7B,QAAA,IAAMC,IAAO,GAAA;AACXC,UAAAA,KAAO,EAAAvD,uBAAA;AACPwD,UAAAA,OAAS,EAAAtD,uBAAA;AACTuD,UAAAA,OAAS,EAAA3D,uBAAAA;SACT,CAAAuD,IAAA,CAAA,CAAA;QACF,OAAOP,WAAWQ,IAAI,CAAA,CAAA;AACxB,OAAA;AACO,MAAA,OAAA,IAAA,CAAA;KACT,CAAA;AACA,IAAA,IAAMI,mBAAmB,SAAnBA,mBAAyB;AACvB,MAAA,IAAEC,aAAe1E,MAAAA,CAAf0E;MACR,IAAIA,UAAe,KAAA,KAAA,EAAO,OAAA;AAE1B,MAAA,IAAIb,aAAazD,aAAc,CAAA,YAAA,EAAc;QAAEuE,WAAa,EAAAf,cAAA,EAAe;AAAE,OAAC,CAAA,CAAA;MAC1E,IAAAC,UAAA,EAAY,OAAAH,WAAA,CAAA,MAAA,EAAA;QAAA,OAAoBpD,EAAAA,YAAYwB,KAAM,CAAAqB,MAAAA;AAAA,OAAA,EAAA,CAASU;MAC/D,IAAIA,UAAe,KAAA,KAAA,EAAO,OAAA;MAEbA,UAAA,GAAA1C,IAAA,KAAA,IAAA,IAAAA,IAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,CAAMf,cAAc,YAAc,EAAA;QAAEuE,aAAaf,cAAe,EAAA;AAAGgB,QAAAA,MAAQ5E,EAAAA,MAAAA;AAAM,OAAC,CAAA,CAAA;MAC3F,IAAA6D,UAAA,EAAmB,OAAAA,UAAA,CAAA;KACzB,CAAA;AAIM,IAAA,IAAAgB,aAAA,GAAgBnD,SAAS,YAAM;AACnC,MAAA,IAAI,CAACoD,gBAAiB,CAAAhD,KAAA,EAAc,OAAA,EAAA,CAAA;AAChC,MAAA,IAAAmC,YAAA,CAAanC,KAAU,KAAAoC,cAAA,CAAeC,OAAS,EAAA;QACjD,OAAOnE,MAAM,CAAAoD,aAAA,GACT,CAAC9C,WAAA,CAAYwB,MAAM0C,OAAS,EAAAlE,WAAA,CAAYwB,KAAM,CAAAsB,aAAa,CAAE,CAAA2B,IAAA,CAAK,GAAG,CAAA,GACrEzE,YAAYwB,KAAM,CAAA0C,OAAA,CAAA;AACxB,OAAA;AACI,MAAA,IAAA,CAACR,UAAUlC,KAAM,CAAAM,MAAA,EAAQ,OAAA;MAC7B,IAAMgC,IAAO,GAAAJ,SAAA,CAAUlC,KAAM,CAAA,CAAA,CAAA,CAAGsC,IAAQ,IAAA,OAAA,CAAA;AACxC,MAAA,IAAIpE,MAAM,CAAAmD,MAAA,EAAQ,OAAOD,WAAY,CAAApB,KAAA,CAAA;AACrC,MAAA,OAAOsC,SAAS,OAAU,GAAA9D,WAAA,CAAYwB,KAAM,CAAAwC,KAAA,GAAQhE,YAAYwB,KAAM,CAAAyC,OAAA,CAAA;AACxE,KAAC,CAAA,CAAA;IACK,IAAAS,cAAA,GAAiBtD,SAAS,YAAA;MAAA,OAAM,CAACpB,YAAYwB,KAAM,CAAAmD,QAAA,EAAUJ,aAAc,CAAA/C,KAAK,CAAC,CAAA;KAAA,CAAA,CAAA;AACjF,IAAA,IAAAoD,YAAA,GAAexD,SAAS,YAAM;MAClC,IAAIwD,gBAAe,EAAC,CAAA;MACpB,IAAIpC,UAAW,CAAAhB,KAAA,IAASc,UAAW,CAAAd,KAAA,KAAU,KAAO,EAAA;AAC9C,QAAA,IAAA0B,QAAA,CAASV,UAAW,CAAAhB,KAAK,CAAG,EAAA;AAC9BoD,UAAAA,aAAe,GAAA;AAAEC,YAAAA,UAAY,EAAAlC,EAAAA,CAAAA,MAAA,CAAGH,WAAWhB,KAAU,EAAA,IAAA,CAAA;WAAA,CAAA;AACvD,SAAO,MAAA;AACLoD,UAAAA,aAAe,GAAA;YAAEC,UAAY,EAAArC,UAAA,CAAWhB,KAAAA;WAAM,CAAA;AAChD,SAAA;AACF,OAAA;AAEOoD,MAAAA,OAAAA,aAAAA,CAAAA;AACT,KAAC,CAAA,CAAA;AAGK,IAAA,IAAAlB,SAAA,GAAYoB,GAAqB,CAAA,EAAE,CAAA,CAAA;AACnC,IAAA,IAAAC,WAAA,GAAcD,GAAuB,CAAA,EAAE,CAAA,CAAA;AACvC,IAAA,IAAAnB,YAAA,GAAemB,GAAI,CAAAlB,cAAA,CAAeoB,eAAe,CAAA,CAAA;AACjD,IAAA,IAAAC,eAAA,GAAkBH,IAAI,KAAK,CAAA,CAAA;AAC3B,IAAA,IAAAI,cAAA,GAAiBJ,IAAI,KAAK,CAAA,CAAA;AAEhC,IAAA,IAAMK,eAAe,SAAfA,eAAqB;MACzBD,cAAA,CAAe1D,KAAQ,GAAA,KAAA,CAAA;MACvBkC,SAAA,CAAUlC,QAAQ,EAAC,CAAA;MACnBuD,WAAA,CAAYvD,QAAQ,EAAC,CAAA;AACrBmC,MAAAA,YAAA,CAAanC,QAAQoC,cAAe,CAAAoB,eAAA,CAAA;KACtC,CAAA;AACA,IAAA,IAAMI,gBAAgB,SAAhBA,gBAAiC;MAC/B,IAAAtB,IAAA,GAAOuB,MAAO,CAAAC,SAAA,CAAUC,QAAS,CAAAC,IAAA,CAAKC,IAAU5E,IAAM,KAANA,IAAAA,IAAAA,IAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAM,CAAA6E,IAAA,EAAMhG,MAAM,CAAAD,IAAI,CAAC,CAAA,CAAA;AACzE,MAAA,IAAAkG,UAAA,CAAA;MACJ,IAAI7B,SAAS,iBAAmB,EAAA;AACjB6B,QAAAA,UAAA,GAAA,EAAA,CAAA;AACf,OAAA;MACA,IAAI7B,SAAS,gBAAkB,EAAA;AAC7B6B,QAAAA,UAAA,GAAa,EAAC,CAAA;AAChB,OAAA;MACA,IAAI7B,SAAS,iBAAmB,EAAA;QAC9B6B,UAAA,GAAa,EAAC,CAAA;AAChB,OAAA;AACO,MAAA,OAAAA,UAAA,CAAA;KACT,CAAA;AACA,IAAA,IAAMC,UAAa,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAA,SAAAC,OAAA,GAAA;AAAA,QAAA,IAAAC,SAAA;AAAAC,UAAAA,KAAA,GAAAC,SAAA,CAAA;AAAA,QAAA,OAAAL,mBAAA,CAAAM,IAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAON,cAAAA,SAA6C,GAAAC,KAAA,CAAArE,MAAA,GAAA,CAAA,IAAAqE,KAAA,CAAAM,CAAAA,CAAAA,KAAAA,SAAA,GAAAN,KAAA,MAAAtF,IAAA,KAAA,IAAA,IAAAA,IAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAA,CAAMqF,SAAc,CAAA;cAAA,IACpFxG,MAAM,CAAAD,IAAA,EAAA;AAAA6G,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,OAAAF,QAAA,CAAAI,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAEX,IAAIR,SAAc,KAAA,OAAA,EAASS,GAAA,CAAU9F,IAAM,aAANA,IAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,IAAM,CAAA6E,IAAA,EAAMhG,MAAM,CAAAD,IAAA,EAAM2F,eAAe,CAAA,CAAA,KAAA,IACnEc,SAAc,KAAA,SAAA,EAAWS,GAAA,CAAU9F,IAAM,aAANA,IAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,IAAM,CAAA6E,IAAA,EAAMhG,MAAM,CAAAD,IAAA,EAAMmH,aAAapF,KAAK,CAAA,CAAA;AAAA8E,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;cAAA,OAEhFK,QAAS,EAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cACf,IAAI5B,gBAAgBzD,KAAO,EAAA;gBACzB0D,cAAA,CAAe1D,KAAQ,GAAA,IAAA,CAAA;AACzB,eAAO,MAAA;AACQ2D,gBAAAA,YAAA,EAAA,CAAA;AACf,eAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAmB,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAb,OAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAZML,UAAaA,GAAA;AAAA,QAAA,OAAAC,KAAA,CAAAkB,KAAA,CAAA,IAAA,EAAAX,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAYnB,EAAA,CAAA;IAEA,IAAMY,gBAAgB5F,QAA2B,CAAA,YAAA;AAAA,MAAA,IAAA6F,kBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,kBAAA,GAAMpG,iBAAAA,2BAAAA,KAAMqG,YAAgB,MAAAD,IAAAA,IAAAA,kBAAA,cAAAA,kBAAA,GAAA7G,YAAA,CAAaoB,MAAM0F,YAAY,CAAA;KAAA,CAAA,CAAA;AACtG,IAAA,IAAAxF,UAAA,GAAaN,SAAqB,YAAM;AAAA,MAAA,IAAA+F,aAAA,CAAA;AAC5C,MAAA,IAAA,CAAAA,aAAA,GAAIzH,OAAM0H,KAAO,MAAAD,IAAAA,IAAAA,aAAA,KAAbzH,KAAAA,CAAAA,IAAAA,aAAAA,CAAaoC,MAAA,EAAQ,OAAOpC,MAAM,CAAA0H,KAAA,CAAA;AACtC,MAAA,IAAI,CAAC1H,MAAM,CAAAD,IAAA,EAAM,OAAO,EAAC,CAAA;AAEzB,MAAA,OAAOgG,IAAU5E,IAAM,KAAA,IAAA,IAANA,IAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAM,CAAAuG,KAAA,EAAO1H,MAAM,CAAAD,IAAI,KAAK,EAAC,CAAA;AAChD,KAAC,CAAA,CAAA;AAEK,IAAA,IAAA4H,sBAAA,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAAxB,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAyB,SAAAuB,QAAAA,CAAOC,OAAkE,EAAA;AAAA,QAAA,IAAAC,aAAA,CAAA;AAAA,QAAA,IAAAC,MAAA,CAAA;AAAA,QAAA,OAAA3B,mBAAA,CAAAM,IAAA,CAAA,UAAAsB,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAApB,IAAA,GAAAoB,SAAA,CAAAnB,IAAA;AAAA,YAAA,KAAA,CAAA;AAChGkB,cAAAA,MAAiC,GAAA;AACrC3C,gBAAAA,aAAa,EAAC;AACdrB,gBAAAA,WAAW,EAAC;AACZ0D,gBAAAA,OAAO,EAAC;AACRQ,gBAAAA,YAAY,EAAC;AACbC,gBAAAA,aAAe,EAAA,KAAA;eACjB,CAAA;AACAH,cAAAA,MAAA,CAAON,KACL,GAAAI,OAAA,KAAY,KACR,GAAA9F,UAAA,CAAWF,KACX,GAAAE,UAAA,CAAWF,KAAM,CAAAG,MAAA,CAAO,UAACmG,IAAA,EAAA;AAAA,gBAAA,OAAA,CAAUA,IAAK,CAAAN,OAAA,IAAW,cAAcA,OAAO,CAAA;eAAA,CAAA,CAAA;AAAA,cAAA,IAAA,EAC1E9F,WAAWF,KAAM,CAAAM,MAAA,IAAU,EAAA2F,CAAAA,aAAA,GAACC,MAAA,CAAON,qCAAPK,KAAAA,CAAAA,IAAAA,aAAA,CAAc3F,MAAQ,CAAA,CAAA,EAAA;AAAA6F,gBAAAA,SAAA,CAAAnB,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;AAAA,cAAA,OAAAmB,SAAA,CAAAjB,MAAA,CAAA,QAAA,EAC7CgB,MAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAETA,MAAA,CAAOG,aAAgB,GAAA,IAAA,CAAA;AAAAF,cAAAA,SAAA,CAAAnB,IAAA,GAAA,CAAA,CAAA;cAAA,OACGuB,QAAS,CAAAvG,KAAA,CAAMA,OAAOkG,MAAO,CAAAN,KAAA,EAAO;AAAEY,gBAAAA,QAAA,EAAUnH,IAAM,KAAA,IAAA,IAANA,IAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAM,CAAA6E,IAAA;gBAAMjG,IAAMC,EAAAA,MAAAA,CAAMD,IAAAA;AAAK,eAAC,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAAxGiI,cAAAA,MAAA,CAAOE,UAAa,GAAAD,SAAA,CAAAM,IAAA,CAAA;cACpBP,MAAA,CAAOhE,SAAY,GAAAgE,MAAA,CAAOE,UACvB,CAAAjG,MAAA,CAAO,UAACmG,IAAA,EAAA;AAAA,gBAAA,OAASA,IAAK,CAAAJ,MAAA,KAAW,IAAI,CAAA;AAAA,eAAA,CAAA,CACrCQ,GAAI,CAAA,UAACJ,IAAwB,EAAA;gBAC5BzC,MAAA,CAAO8C,IAAK,CAAAL,IAAI,CAAE,CAAAM,OAAA,CAAQ,UAACC,GAAQ,EAAA;kBAEjC,IAAI,CAACP,IAAA,CAAKQ,OAAW,IAAAtB,aAAA,CAAcxF,MAAM6G,GAAM,CAAA,EAAA;AAC7C,oBAAA,IAAM5I,QAAO8I,QAAS7I,CAAAA,MAAAA,CAAMwC,KAAK,CAAIxC,GAAAA,MAAAA,CAAMwC,QAAQxC,MAAM,CAAAD,IAAA,CAAA;oBAEzDqI,IAAA,CAAKQ,OAAU,GAAAtJ,QAAA,CAASgI,aAAc,CAAAxF,KAAA,CAAM6G,GAAM,CAAA,EAAA;AAChD5I,sBAAAA,IAAAA,EAAAA,KAAAA;sBAEAsI,UAAUD,IAAK,CAAAO,GAAA,CAAA;AACjB,qBAAC,CAAA,CAAA;AACH,mBAAA;AACF,iBAAC,CAAA,CAAA;AACM,gBAAA,OAAAP,IAAA,CAAA;AACT,eAAC,CAAA,CAAA;cAEIJ,MAAA,CAAA3C,WAAA,GAAc2C,OAAOE,UAAW,CAAAjG,MAAA,CACrC,UAACmG;uBAASA,IAAK,CAAAJ,MAAA,KAAW,QAAQI,IAAK,CAAAQ,OAAA,IAAWR,KAAKhE,IAAS,KAAA,SAAA,CAAA;AAAA,eAClE,CAAA,CAAA;AAAA,cAAA,OAAA6D,SAAA,CAAAjB,MAAA,CAAA,QAAA,EAEOgB,MAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAS,QAAA,CAAA,CAAA;OACT,CAAA,CAAA,CAAA;MAAA,OAxCMF,SAAAA,sBAAAA,CAAAmB,EAAA,EAAA;AAAA,QAAA,OAAAlB,KAAA,CAAAP,KAAA,CAAA,IAAA,EAAAX,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAwCN,EAAA,CAAA;AACM,IAAA,IAAAqC,eAAA,gBAAA,YAAA;AAAA,MAAA,IAAAC,KAAA,GAAA5C,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAkB,SAAA2C,QAAAA,CACtBnB,OAAA,EACAhD,iBACuC,EAAA;QAAA,IAAAoE,qBAAA,EAAAC,gBAAA,EAAAC,cAAA,EAAA1B,KAAA,EAAAQ,UAAA,EAAAC,aAAA,CAAA;AAAA,QAAA,OAAA9B,mBAAA,CAAAM,IAAA,CAAA,UAAA0C,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxC,IAAA,GAAAwC,SAAA,CAAAvC,IAAA;AAAA,YAAA,KAAA,CAAA;cACvCvB,eAAA,CAAgBzD,KAAQ,GAAA,IAAA,CAAA;cAExBwH,oBAAA,CAAqBxH,KAAQgD,GAAAA,iBAAAA,CAAAA;AAAAA,cAAAA,SAAAA,CAAAA,IAAAA,GAAAA,CAAAA,CAAAA;cAAAA,OAOnB6C,sBAAA,CAAuBG,OAAO,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAAAoB,qBAAA,GAAAG,SAAA,CAAAd,IAAA,CAAA;cALzBY,gBAAA,GAAAD,qBAAA,CAAb7D,WAAa,CAAA;cACF+D,cAAA,GAAAF,qBAAA,CAAXlF,SAAW,CAAA;cACX0D,KAAA,GAAAwB,qBAAA,CAAAxB,KAAA,CAAA;cACAQ,UAAA,GAAAgB,qBAAA,CAAAhB,UAAA,CAAA;cACAC,aAAA,GAAAe,qBAAA,CAAAf,aAAA,CAAA;AAGF,cAAA,IAAIA,aAAe,EAAA;gBACjB9C,WAAA,CAAYvD,KAAQ,GAAAqH,gBAAA,CAAA;gBACpBnF,SAAA,CAAUlC,KAAQ,GAAAsH,cAAA,CAAA;AACpB,eAAA;cAEA,IAAI1B,MAAMtF,MAAQ,EAAA;AAChB6B,gBAAAA,YAAA,CAAanC,KAAQ,GAAAsH,cAAA,CAAehH,MAAS,GAAA8B,cAAA,CAAeqF,OAAOrF,cAAe,CAAAC,OAAA,CAAA;AACpF,eAAA;cAEA,IAAIqB,eAAe1D,KAAO,EAAA;AACX2D,gBAAAA,YAAA,EAAA,CAAA;AACf,eAAA;cACAF,eAAA,CAAgBzD,KAAQ,GAAA,KAAA,CAAA;AAAA,cAAA,OAAAuH,SAAA,CAAArC,MAAA,WAAAhE,eAAA,CAAA,EAAA,EAGrBhD,MAAM,CAAAD,IAAA,EAAOqJ,cAAe,CAAAhH,MAAA,KAAW,IAAI,IAAO,GAAA8F,UAAA,CAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAmB,SAAA,CAAAjC,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA6B,QAAA,CAAA,CAAA;OAEvD,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAhCMF,eAAAA,CAAAS,GAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAT,KAAA,CAAA3B,KAAA,CAAA,IAAA,EAAAX,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAgCN,EAAA,CAAA;AACM,IAAA,IAAAgD,YAAA,gBAAA,YAAA;MAAA,IAAAC,KAAA,GAAAvD,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAe,SAAAsD,QAAAA,CAAuB9B,OAAqE,EAAA;AAAA,QAAA,IAAA+B,sBAAA,EAAAT,cAAA,EAAAlB,UAAA,CAAA;AAAA,QAAA,OAAA7B,mBAAA,CAAAM,IAAA,CAAA,UAAAmD,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAgD,cAAAA,SAAA,CAAAhD,IAAA,GAAA,CAAA,CAAA;cAAA,OACvDa,uBAAuBG,OAAO,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAAA+B,sBAAA,GAAAC,SAAA,CAAAvB,IAAA,CAAA;cAAnEa,cAAA,GAAAS,sBAAA,CAAX7F,SAAW,CAAA;cAAgBkE,oCAAAA;oEAGhClI,MAAM,CAAAD,IAAA,EAAOqJ,cAAe,CAAAhH,MAAA,KAAW,IAAI,IAAO,GAAA8F,UAAA,CAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA4B,SAAA,CAAA1C,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAwC,QAAA,CAAA,CAAA;OAEvD,CAAA,CAAA,CAAA;MAAA,OANMF,SAAAA,YAAAA,CAAAK,GAAA,EAAA;AAAA,QAAA,OAAAJ,KAAA,CAAAtC,KAAA,CAAA,IAAA,EAAAX,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;KAMN,EAAA,CAAA;AAEM,IAAA,IAAAsD,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBC,eAA+C,EAAA;MACzE,IAAI,CAACA,eAAA,IAAmB,CAACC,OAAA,CAAQD,eAAe,CAAA,EAAG,OAAA;MACnDjG,SAAA,CAAUlC,QAAQ,EAAC,CAAA;MACnBuD,WAAA,CAAYvD,QAAQ,EAAC,CAAA;AACjB,MAAA,IAAAmI,eAAA,CAAgB7H,WAAW,CAAG,EAAA;AAChC6B,QAAAA,YAAA,CAAanC,QAAQoC,cAAe,CAAAC,OAAA,CAAA;AACpC,QAAA,OAAA;AACF,OAAA;AACA,MAAA,IAAMgG,SAASF,eAAgB,CAAAhI,MAAA,CAC7B,UAACmG,IAAS,EAAA;QAAA,OAAAA,IAAA,CAAKhE,IAAS,KAAA,OAAA,IAAWgE,KAAKhE,IAAS,KAAA,SAAA,CAAA;AAAA,OACnD,CAAA,CAAA;AACA,MAAA,IAAMgG,YAAYH,eAAgB,CAAAhI,MAAA,CAAO,UAACmG,IAAS,EAAA;AAAA,QAAA,OAAAA,IAAA,CAAKhE,SAAS,SAAS,CAAA;OAAA,CAAA,CAAA;MAC1EJ,SAAA,CAAUlC,KAAQ,GAAAqI,MAAA,CAAO3B,GAAI,CAAA,UAACJ,IAAU,EAAA;QAAA,OAAA;UACtCQ,SAASR,IAAK,CAAAQ,OAAA;UACdxE,MAAMgE,IAAK,CAAAhE,IAAA;AACX4D,UAAAA,MAAQ,EAAA,KAAA;SACR,CAAA;AAAA,OAAA,CAAA,CAAA;MACF3C,WAAA,CAAYvD,KAAQ,GAAAsI,SAAA,CAAU5B,GAAI,CAAA,UAACJ,IAAU,EAAA;QAAA,OAAA;UAC3CQ,SAASR,IAAK,CAAAQ,OAAA;UACdxE,MAAMgE,IAAK,CAAAhE,IAAA;AACX4D,UAAAA,MAAQ,EAAA,IAAA;SACR,CAAA;AAAA,OAAA,CAAA,CAAA;AACF/D,MAAAA,YAAA,CAAanC,QAAQqI,MAAO,CAAA/H,MAAA,GAAS,CAAI,GAAA8B,cAAA,CAAeqF,OAAOrF,cAAe,CAAAC,OAAA,CAAA;KAChF,CAAA;IAEM,IAAArC,KAAA,GAAQJ,QAAoB,CAAA,YAAA;MAAA,OAAM,CAAAP,IAAM,KAANA,IAAAA,IAAAA,IAAM,uBAANA,IAAM,CAAA6E,IAAA,KAAQD,IAAU5E,IAAM,KAANA,IAAAA,IAAAA,IAAM,uBAANA,IAAM,CAAA6E,IAAA,EAAMhG,MAAM,CAAAD,IAAI,CAAC,CAAA;KAAA,CAAA,CAAA;AACjF,IAAA,IAAAmH,YAAA,GAAe9B,IAAe,KAAS,CAAA,CAAA,CAAA;AAC7C,IAAA,IAAAiF,OAAA,GAAiBC,MAAA,CAAOtK,MAAK,CAAA;MAArBD,IAAA,GAAAsK,OAAA,CAAAtK,IAAA,CAAA;IACR,IAAMwK,UAA2BC,QAAS,CAAA;AACxCzK,MAAAA,IAAA,EAAAA,IAAA;AACA0F,MAAAA,YAAA,EAAAA,YAAA;AACAS,MAAAA,UAAA,EAAAA,UAAA;AACAmC,MAAAA,QAAU,EAAAU,eAAA;AACVW,MAAAA,YAAA,EAAAA,YAAA;AACAM,MAAAA,kBAAA,EAAAA,kBAAAA;AACF,KAAC,CAAA,CAAA;AAEDS,IAAAA,SAAA,CAAU,YAAM;MACDvD,YAAA,CAAApF,KAAA,GAAQ4I,SAAU,CAAA5I,KAAA,CAAMA,KAAK,CAAA,CAAA;MACpCX,IAAA,KAAA,IAAA,IAAAA,IAAA,KAAA,KAAA,CAAA,IAAAA,IAAA,CAAAwJ,QAAA,CAASC,KAAKL,OAAO,CAAA,CAAA;AAC7B,KAAC,CAAA,CAAA;AAEDM,IAAAA,eAAA,CAAgB,YAAM;AAChB,MAAA,IAAA1J,IAAA,EAAMA,IAAA,CAAKwJ,WAAWxJ,IAAM,KAAA,IAAA,IAANA,IAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,IAAM,CAAAwJ,QAAA,CAAS1I,OAAO,UAAC6I,GAAA,EAAA;QAAA,OAAQA,QAAQP,OAAO,CAAA;OAAA,CAAA,CAAA;AAC1E,KAAC,CAAA,CAAA;IAEDQ,KAAA,CACEjJ,KAAA,eAAAsE,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CACA,SAAA0E,QAAA,GAAA;AAAA,MAAA,OAAA3E,mBAAA,CAAAM,IAAA,CAAA,UAAAsE,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAApE,IAAA,GAAAoE,SAAA,CAAAnE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAmE,YAAAA,SAAA,CAAAnE,IAAA,GAAA,CAAA,CAAA;YAAA,OACQiC,gBAAgB,QAAQ,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAkC,SAAA,CAAA7D,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA4D,QAAA,CAAA,CAAA;AAAA,KAChC,CACA,CAAA,EAAA;AAAEE,MAAAA,MAAM,IAAA;AAAK,KACf,CAAA,CAAA;AAEAH,IAAAA,KAAA,CACE,YAAA;AAAA,MAAA,OAAM,CAAC/K,MAAAA,CAAMD,IAAM,EAAAoL,IAAA,CAAKC,SAAUpL,CAAAA,MAAAA,CAAM0H,KAAK,CAAC,CAAE,CAAA3C,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KAAA,EACxD,YAAM;MACJgE,eAAA,CAAgB,QAAQ,CAAA,CAAA;AAC1B,KACF,CAAA,CAAA;AAEM,IAAA,IAAAO,oBAAA,GAAuBlE,IAAa,KAAS,CAAA,CAAA,CAAA;AAC7C,IAAA,IAAAN,gBAAA,GAAmBpD,SAAS,YAAM;MAClC,IAAA2J,SAAA,CAAU/B,qBAAqBxH,KAAK,CAAA,EAAG,OAAOwH,oBAAqB,CAAAxH,KAAA,CAAA;MACnE,IAAAuJ,SAAA,CAAUrL,OAAM8E,gBAAgB,CAAA,EAAG,OAAO9E,MAAM,CAAA8E,gBAAA,CAAA;AACpD,MAAA,OAAO3D,IAAM,KAANA,IAAAA,IAAAA,IAAM,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAM,CAAA2D,gBAAA,CAAA;AACf,KAAC,CAAA,CAAA;IAEK,IAAAwG,OAAA,GAAU5J,SAAS,YAAA;AAAA,MAAA,OAAM,CAC7BpB,YAAYwB,KAAM,CAAAyJ,QAAA,EAClBC,oBAAqB,CAAAhK,mBAAA,CAAoBM,KAAO9B,EAAAA,MAAAA,CAAMD,IAAI,CAAA,EAAAiD,eAAA,CAAAA,eAAA,CAAA,EAAA,EAEvD1C,WAAA,CAAYwB,KAAM,CAAA2J,gBAAA,EAAmBC,QAAS,CAAA5J,KAAA,GAC9CxB,WAAA,CAAYwB,KAAM,CAAA6J,iBAAA,EAAoBC,SAAU,CAAA9J,KAAA,CAEpD,CAAA,CAAA;KAAA,CAAA,CAAA;AACK,IAAA,IAAA4J,QAAA,GAAWhK,SAAgB,YAAM;AAC/B,MAAA,IAAAmK,IAAA,GAAOzL,cAAc,MAAM,CAAA,CAAA;MAC7B,IAAAyL,IAAA,EAAM,OAAAnI,WAAA,CAAA,KAAA,EAAA;QAAA,OAAmBpD,EAAAA,YAAYwB,KAAM,CAAA+J,IAAAA;AAAA,OAAA,EAAA,CAAOA;AAC/C,MAAA,OAAA,IAAA,CAAA;AACT,KAAC,CAAA,CAAA;AACK,IAAA,IAAAD,SAAA,GAAYlK,SAAgB,YAAM;AAAA,MAAA,IAAAoK,MAAA,CAAA;AACtC,MAAA,IAAMC,YAAe,GAAA,SAAfA,YAAeA,CAACC,OACpB,EAAA;AAAA,QAAA,OAAAtI,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAYpD,WAAY,CAAAwB,KAAA,CAAMmK,KAAO;UAAA,OAAOD,EAAAA,OAAAA;AACzC,SAAA,EAAA,CAAAA,OAAA,CAAA,CAAA,CAAA;OADF,CAAA;AAIH,MAAA,IAAMjI,OAAOC,SAAU,CAAAlC,KAAA,CAAA;MACvB,IAAIgD,gBAAiB,CAAAhD,KAAA,IAASiC,IAAO,KAAPA,IAAAA,IAAAA,IAAO,gBAAA+H,MAAA,GAAP/H,IAAO,CAAA,CAAA,CAAA,MAAA+H,IAAAA,IAAAA,MAAA,eAAPA,MAAA,CAAWlD,OAAS,EAAA;QACzC,OAAAmD,YAAA,CAAahI,IAAK,CAAA,CAAA,CAAA,CAAG6E,OAAO,CAAA,CAAA;AACrC,OAAA;AACI,MAAA,IAAAvD,WAAA,CAAYvD,MAAMM,MAAQ,EAAA;QAC5B,OAAO2J,YAAa,CAAA1G,WAAA,CAAYvD,KAAM,CAAA,CAAA,CAAA,CAAG8G,OAAO,CAAA,CAAA;AAClD,OAAA;AACO,MAAA,OAAA,IAAA,CAAA;AACT,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAsD,QAAA,GAAWxK,SAAgB,YAAM;AAC/B,MAAA,IAAAyK,OAAA,GAAU/L,cAAc,MAAM,CAAA,CAAA;AACpC,MAAA,IAAI,CAAC+L,OAAA,EAAgB,OAAA,IAAA,CAAA;AACf,MAAA,IAAAC,UAAA,GAAa,CAAA,EAAA,CAAAnJ,MAAA,CAAIzB,mBAAA,CAAoBM,2BAAiBR,WAAA,CAAYQ,KAAc,YAAAoB,WAAA,CAAYpB,KAAK,CAAA,CAAA;AACvG,MAAA,OAAA4B,WAAA,CAAA,KAAA,EAAA;QAAA,OAAmB0I,EAAAA,UAAAA;AAAA,OAAA,EAAA,CAAaD;AAClC,KAAC,CAAA,CAAA;AAED,IAAA,IAAME;2EAAa,SAAAC,QAAA,GAAA;AAAA,QAAA,OAAAjG,mBAAA,CAAAM,IAAA,CAAA,UAAA4F,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1F,IAAA,GAAA0F,SAAA,CAAAzF,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAyF,cAAAA,SAAA,CAAAzF,IAAA,GAAA,CAAA,CAAA;cAAA,OACXiC,gBAAgB,MAAM,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAwD,SAAA,CAAAnF,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAkF,QAAA,CAAA,CAAA;OAC9B,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAFMD;;;KAEN,EAAA,CAAA;IACAG,OAAA,CAAQC,oBAAsB,EAAA;AAC5BJ,MAAAA,UAAA,EAAAA,UAAAA;AACF,KAAC,CAAA,CAAA;IAED,OAAO,YAAA;AAAA,MAAA,OAAA3I,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACO4H,OAAQ,CAAAxJ,KAAAA;AAAA,OAAA,EAAA,CACjBuB,WAAY,EAAA,EAAAK,WAAA,CAAA,KAAA,EAAA;QAAA,OACDsB,EAAAA,cAAe,CAAAlD,KAAA;AAAA,QAAA,OAAA,EAAcoD,YAAa,CAAApD,KAAAA;AAAA,OAAA,EAAA,CAAA4B,WAAA,CAAA,KAAA,EAAA;QAAA,OACxCpD,EAAAA,WAAA,CAAYwB,KAAM,CAAA4K,eAAAA;AAAA,OAAA,EAAA,CAC3BtM,cAAc,SAAS,CAAA,EACvBqE,gBAAiB,EAAA,CAAA,CAAA,EAEnBiH,QAAS,CAAA5J,KAAA,EACToK,QAAS,CAAApK,KAAA,EACT8J,SAAU,CAAA9J,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KATd,CAAA;AAaL,GAAA;AACF,CAAC,CAAA;;;;"}