UNPKG

tdesign-vue-next

Version:
1 lines 42.4 kB
{"version":3,"file":"tree-select.mjs","sources":["../../../common/js/tree-select/utils.ts","../../../components/tree-select/tree-select.tsx"],"sourcesContent":["import { TreeOptionData } from '../common';\n\ntype TargetValue = string | number | object;\n\n/**\n * 递归查找指定节点的所有父节点的 value\n * @param options 树形数据\n * @param targetValue 目标节点的 value\n * @param realChildren 子节点的 key (别名)\n * @param realValue 节点的 value 的 key (别名)\n */\nexport function findParentValues(\n options: TreeOptionData[],\n targetValue: TargetValue,\n realValue: string,\n realChildren: string,\n): (TargetValue)[] {\n let currentTargetValue = targetValue;\n if (currentTargetValue != null && typeof currentTargetValue === 'object') {\n currentTargetValue = (currentTargetValue as { [key: string]: string | number })?.[realValue];\n }\n if (currentTargetValue == null) return [];\n\n function findPath(nodes: TreeOptionData[], parentPath: (TargetValue)[]): (TargetValue)[] | null {\n let result: (TargetValue)[] | null = null;\n nodes.some((node) => {\n const newPath = [...parentPath, node[realValue]];\n if (node[realValue] === currentTargetValue) {\n result = parentPath;\n return true;\n }\n if (Array.isArray(node[realChildren]) && node[realChildren].length) {\n result = findPath(node[realChildren], newPath);\n if (result !== null) {\n return true;\n }\n }\n return false;\n });\n return result;\n }\n\n return findPath(options, []) || [];\n}\n","import { defineComponent, ref, computed, watch, onMounted, toRefs } from 'vue';\nimport { isArray } from 'lodash-es';\nimport { isEmpty } from 'lodash-es';\nimport { isBoolean } from 'lodash-es';\nimport { isFunction } from 'lodash-es';\nimport { isNil } from 'lodash-es';\nimport { findParentValues } from '@tdesign/common-js/tree-select/utils';\n\nimport Tree, { TreeProps, TreeNodeModel, TreeNodeValue } from '../tree';\nimport SelectInput, { TdSelectInputProps } from '../select-input';\nimport FakeArrow from '../common-components/fake-arrow';\nimport { PopupVisibleChangeContext } from '../popup';\n\nimport { INodeOptions } from './interface';\nimport { TreeSelectValue, TdTreeSelectProps, TreeSelectValueChangeTrigger } from './type';\nimport { TreeOptionData } from '../common';\nimport props from './props';\n\n// hooks\nimport { usePrefixClass, useConfig } from '../hooks/useConfig';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { useReadonly } from '../hooks/useReadonly';\nimport { useTNodeJSX, useTNodeDefault } from '../hooks/tnode';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\n\nexport default defineComponent({\n name: 'TTreeSelect',\n props,\n setup(props: TdTreeSelectProps, { slots, expose }) {\n const renderTNodeJSX = useTNodeJSX();\n const renderDefaultTNode = useTNodeDefault();\n const classPrefix = usePrefixClass();\n const { globalConfig } = useConfig('treeSelect');\n const formDisabled = useDisabled();\n const isReadonly = useReadonly();\n\n // ref\n const treeRef = ref(null);\n\n // data\n const actived = ref([]);\n const expanded = ref([]);\n const nodeInfo = ref(null);\n const treeKey = ref(0);\n\n // model\n const { value, modelValue, popupVisible, inputValue } = toRefs(props);\n const [treeSelectValue, setTreeSelectValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const [innerVisible, setInnerVisible] = useDefaultValue(\n popupVisible,\n false,\n props.onPopupVisibleChange,\n 'popupVisible',\n );\n const [innerInputValue, setInnerInputValue] = useDefaultValue(\n inputValue,\n props.defaultInputValue,\n props.onInputChange,\n 'inputValue',\n );\n\n /**\n * 设置树的所有父节点展开\n */\n const setTreeParentsExpanded = () => {\n const getParents = (value: TreeSelectValue) =>\n findParentValues(props.data, value, realValue.value, realChildren.value);\n\n let treeParents: TreeSelectValue[] = [];\n if (treeSelectValue.value) {\n if (Array.isArray(treeSelectValue.value) && props.multiple) {\n treeParents = treeSelectValue.value.flatMap(getParents);\n } else if (!Array.isArray(treeSelectValue.value) && !props.multiple) {\n treeParents = getParents(treeSelectValue.value);\n }\n }\n expanded.value = Array.from(new Set([...expanded.value, ...treeParents]));\n };\n\n // watch\n watch(treeSelectValue, async () => {\n await changeNodeInfo();\n if (!props.multiple) {\n actived.value = nodeInfo.value ? [nodeInfo.value.value] : [];\n }\n setTreeParentsExpanded();\n });\n watch(\n () => props.data,\n async () => {\n await changeNodeInfo();\n treeRerender();\n },\n {\n deep: true,\n },\n );\n\n // computed\n /** filterByText keep pace with innerInputValue */\n const filterByText = computed(() => {\n const value = innerInputValue.value || '';\n if (value === '') {\n return null;\n }\n return (node: TreeNodeModel<TreeOptionData>) => {\n if (isFunction(props.filter)) {\n const filter: boolean | Promise<boolean> = props.filter(String(value), node);\n if (isBoolean(filter)) {\n return filter;\n }\n }\n return node.data[realLabel.value].indexOf(value) >= 0;\n };\n });\n const tDisabled = computed(() => {\n return formDisabled.value || props.disabled;\n });\n\n const inputPlaceholder = computed(\n () => (innerVisible.value && nodeInfo.value?.label) || props.placeholder || globalConfig.value.placeholder,\n );\n\n const popupClass = computed(() => {\n return [`${classPrefix.value}-select__dropdown`, 'narrow-scrollbar'];\n });\n\n const dropdownInnerSize = computed(() => {\n return {\n small: 's',\n medium: 'm',\n large: 'l',\n }[props.size];\n });\n\n const isObjectValue = computed(() => props.valueType === 'object');\n\n const checked = computed((): Array<TreeNodeValue> => {\n if (props.multiple) {\n if (isObjectValue.value) {\n return isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions).value)\n : [];\n }\n return isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => item as TreeNodeValue)\n : [];\n }\n return [];\n });\n\n const multiLimitDisabled = computed(() => {\n return (\n props.multiple &&\n !!props.max &&\n isArray(treeSelectValue.value) &&\n props.max <= (treeSelectValue.value as Array<TreeSelectValue>).length\n );\n });\n\n const realLabel = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.label || 'label';\n }\n return props.keys?.label || 'label';\n });\n\n const realValue = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.value || 'value';\n }\n return props.keys?.value || 'value';\n });\n\n const realChildren = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.children || 'children';\n }\n return props.keys?.children || 'children';\n });\n\n onMounted(async () => {\n setTreeParentsExpanded();\n if (!treeSelectValue.value && props.defaultValue) {\n change(props.defaultValue, null, 'uncheck');\n }\n if (isObjectValue.value) {\n actived.value = isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions).value)\n : [(treeSelectValue.value as INodeOptions).value];\n } else {\n (actived.value as TreeSelectValue) = isArray(treeSelectValue.value)\n ? treeSelectValue.value\n : [treeSelectValue.value];\n }\n changeNodeInfo();\n });\n\n const change = (\n valueParam: TreeSelectValue,\n node: TreeNodeModel<TreeOptionData>,\n trigger: TreeSelectValueChangeTrigger,\n ) => {\n setTreeSelectValue(valueParam, { node, trigger });\n changeNodeInfo();\n };\n\n const clear = (content: { e: MouseEvent }) => {\n const defaultValue: TreeSelectValue = props.multiple ? [] : '';\n actived.value = [];\n change(defaultValue, null, 'clear');\n props.onClear?.({ e: content.e });\n };\n\n const treeNodeChange = (\n valueParam: Array<TreeNodeValue>,\n context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n ) => {\n let current: TreeSelectValue = valueParam;\n if (isObjectValue.value) {\n current = valueParam.map(getNodeItem);\n }\n change(current, context.node, 'check');\n };\n\n const treeNodeActive = (\n valueParam: Array<TreeNodeValue>,\n context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n ) => {\n if (!props.multiple) {\n setInnerVisible(false, context);\n }\n // 多选模式屏蔽 Active 事件\n if (props.multiple) {\n return;\n }\n // 单选模式重复选择不清空\n if (treeSelectValue.value === context.node.data[realValue.value]) {\n return;\n }\n let current: TreeSelectValue = valueParam;\n if (isObjectValue.value) {\n const nodeValue = isEmpty(valueParam) ? '' : valueParam[0];\n current = getNodeItem(nodeValue);\n } else {\n current = isEmpty(valueParam) ? '' : valueParam[0];\n }\n change(current, context.node, 'check');\n actived.value = valueParam;\n };\n\n const treeNodeExpand = (valueParam: Array<TreeNodeValue>) => {\n expanded.value = valueParam;\n };\n\n const treeNodeLoad = () => {\n changeNodeInfo();\n };\n\n const inputChange = (value: string): boolean => {\n // 未打开状态不处理输入框输入\n if (!innerVisible.value) {\n props.onSearch?.(String(value));\n return;\n }\n setInnerInputValue(value);\n props.onSearch?.(String(value));\n };\n\n const tagChange: TdSelectInputProps['onTagChange'] = (value, context) => {\n const { trigger, index } = context;\n if (['tag-remove', 'backspace'].includes(trigger)) {\n isArray(treeSelectValue.value) && (treeSelectValue.value as Array<TreeSelectValue>).splice(index, 1);\n }\n props.onRemove?.({ value, data: null, e: context && (context.e as MouseEvent) });\n change(treeSelectValue.value, null, trigger as 'tag-remove' | 'backspace');\n };\n\n const handlePopupVisibleChange = (visible: boolean, context: PopupVisibleChangeContext) => {\n setInnerVisible(visible, context);\n // 在通过点击选择器打开弹窗时 清空此前的输入内容 避免在关闭时就清空引起的闪烁问题\n if (visible && context.trigger === 'trigger-element-click') setInnerInputValue('');\n };\n const changeNodeInfo = async () => {\n if (!props.multiple) {\n if (treeSelectValue.value || treeSelectValue.value === 0) {\n nodeInfo.value = getSingleNodeInfo();\n } else {\n nodeInfo.value = '';\n }\n } else if (props.multiple) {\n if (isArray(treeSelectValue.value)) {\n nodeInfo.value = getMultipleNodeInfo();\n } else {\n nodeInfo.value = [];\n }\n } else {\n nodeInfo.value = null;\n }\n };\n\n const getSingleNodeInfo = () => {\n const nodeValue = isObjectValue.value ? (treeSelectValue.value as INodeOptions).value : treeSelectValue.value;\n return getNodeItem(nodeValue);\n };\n\n const getMultipleNodeInfo = () => {\n return (treeSelectValue.value as Array<TreeSelectValue>).map((value) => {\n const nodeValue = isObjectValue.value ? (value as INodeOptions).value : value;\n return getNodeItem(nodeValue);\n });\n };\n\n const getNodeItem = (targetValue: TreeSelectValue) => {\n if (treeRef.value) {\n const node = treeRef.value.getItem(targetValue);\n if (node) {\n return {\n ...node.data,\n label: node.data[realLabel.value],\n value: node.data[realValue.value],\n };\n }\n }\n const node = getTreeNode(props.data, targetValue);\n if (node) {\n return node;\n }\n return {\n label: targetValue,\n value: targetValue,\n };\n };\n\n const getTreeNode = (data: Array<TreeOptionData>, targetValue: TreeSelectValue): TreeSelectValue | null => {\n for (let i = 0, len = data.length; i < len; i++) {\n const item = data[i];\n if (item[realValue.value] === targetValue) {\n return {\n ...item,\n label: item[realLabel.value],\n value: item[realValue.value],\n };\n }\n if (item?.[realChildren.value]) {\n const result = getTreeNode(item?.[realChildren.value], targetValue);\n if (!isNil(result)) {\n return result;\n }\n }\n }\n return null;\n };\n\n const treeRerender = () => {\n treeKey.value += 1;\n };\n\n const renderTree = () => (\n <Tree\n ref={treeRef}\n v-show={!props.loading}\n key={treeKey.value}\n value={[...checked.value]}\n hover\n keys={props.keys}\n data={props.data}\n activable={!props.multiple}\n checkable={props.multiple}\n disabled={tDisabled.value || multiLimitDisabled.value}\n size={props.size}\n filter={filterByText.value}\n icon={!filterByText.value}\n actived={actived.value}\n expanded={expanded.value}\n activeMultiple={props.multiple}\n onChange={treeNodeChange}\n onActive={treeNodeActive}\n onExpand={treeNodeExpand}\n onLoad={treeNodeLoad}\n expandOnClickNode={false}\n v-slots={{\n empty: () =>\n renderDefaultTNode('empty', {\n defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.empty}</div>,\n }),\n }}\n {...(props.treeProps as TdTreeSelectProps['treeProps'])}\n />\n );\n\n const renderSuffixIcon = () => (\n <FakeArrow\n isActive={innerVisible.value}\n disabled={props.disabled}\n overlayClassName={{\n [`${classPrefix.value}-fake-arrow--highlight`]: innerVisible.value,\n [`${classPrefix.value}-fake-arrow--disable`]: props.disabled,\n }}\n />\n );\n\n expose({\n treeRef,\n });\n\n return () => (\n <SelectInput\n class={`${classPrefix.value}-tree-select`}\n value={nodeInfo.value}\n inputValue={innerVisible.value ? innerInputValue.value : ''}\n popupVisible={innerVisible.value}\n disabled={tDisabled.value}\n multiple={props.multiple}\n loading={props.loading}\n clearable={props.clearable}\n autoWidth={props.autoWidth}\n borderless={props.borderless}\n readonly={isReadonly.value}\n placeholder={inputPlaceholder.value}\n allowInput={props.filterable || isFunction(props.filter)}\n minCollapsedNum={props.minCollapsedNum}\n collapsed-items={props.collapsedItems}\n popupProps={{\n overlayClassName: popupClass.value,\n ...(props.popupProps as TdTreeSelectProps['popupProps']),\n }}\n inputProps={{\n size: props.size,\n ...(props.inputProps as TdTreeSelectProps['inputProps']),\n }}\n tagInputProps={{\n size: props.size,\n }}\n tagProps={{\n maxWidth: 300,\n ...(props.tagProps as TdTreeSelectProps['tagProps']),\n }}\n label={() => renderTNodeJSX('prefixIcon')}\n suffix={props.suffix}\n suffixIcon={() => {\n if (props.suffixIcon || slots.suffixIcon) {\n return renderTNodeJSX('suffixIcon');\n }\n\n return renderSuffixIcon();\n }}\n onClear={clear}\n onBlur={(_: any, context) => {\n props.onBlur?.({ value: treeSelectValue.value, e: context.e as FocusEvent });\n }}\n onFocus={(_: any, context: { e: FocusEvent }) => {\n props.onFocus?.({ value: treeSelectValue.value, e: context.e });\n }}\n valueDisplay={() =>\n renderTNodeJSX('valueDisplay', {\n params: props.multiple\n ? {\n value: nodeInfo.value,\n onClose: (index: number) => {\n const value = nodeInfo.value.map((node: TreeOptionData) => node.value);\n tagChange(value, {\n trigger: 'tag-remove',\n index,\n item: value[index],\n });\n },\n }\n : {\n value: nodeInfo.value || { [realLabel.value]: '', [realValue.value]: undefined },\n },\n })\n }\n v-slots={{\n suffix: slots.suffix,\n panel: () => (\n <div\n class={[\n `${classPrefix.value}-select__dropdown-inner`,\n `${classPrefix.value}-select__dropdown-inner--size-${dropdownInnerSize.value}`,\n ]}\n >\n {renderTNodeJSX('panelTopContent')}\n <p\n v-show={props.loading && !tDisabled.value}\n class={[`${classPrefix.value}-select-loading-tips`, `${classPrefix.value}-select__right-icon-polyfill`]}\n >\n {renderDefaultTNode('loadingText', {\n defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.loadingText}</div>,\n })}\n </p>\n {renderTree()}\n {renderTNodeJSX('panelBottomContent')}\n </div>\n ),\n collapsedItems: slots.collapsedItems,\n }}\n onInputChange={inputChange}\n onTagChange={tagChange}\n onPopupVisibleChange={handlePopupVisibleChange}\n {...(props.selectInputProps as TdTreeSelectProps['selectInputProps'])}\n />\n );\n },\n});\n"],"names":["findParentValues","options","targetValue","realValue","realChildren","currentTargetValue","_typeof","_currentTargetValue","findPath","nodes","parentPath","result","some","node","newPath","concat","_toConsumableArray","Array","isArray","length","defineComponent","name","props","setup","slots","_ref","expose","renderTNodeJSX","useTNodeJSX","renderDefaultTNode","useTNodeDefault","classPrefix","usePrefixClass","_useConfig","useConfig","globalConfig","formDisabled","useDisabled","isReadonly","useReadonly","treeRef","ref","actived","expanded","nodeInfo","treeKey","_toRefs","toRefs","value","modelValue","popupVisible","inputValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","treeSelectValue","setTreeSelectValue","_useDefaultValue","useDefaultValue","onPopupVisibleChange","_useDefaultValue2","innerVisible","setInnerVisible","_useDefaultValue3","defaultInputValue","onInputChange","_useDefaultValue4","innerInputValue","setInnerInputValue","setTreeParentsExpanded","getParents","data","treeParents","multiple","flatMap","from","Set","watch","_callee","_regeneratorRuntime","wrap","_callee$","_context","prev","next","changeNodeInfo","stop","_asyncToGenerator","mark","_callee2","_callee2$","_context2","treeRerender","deep","filterByText","computed","isFunction","filter","String","isBoolean","realLabel","indexOf","tDisabled","disabled","inputPlaceholder","_nodeInfo$value","label","placeholder","popupClass","dropdownInnerSize","small","medium","large","size","isObjectValue","valueType","checked","map","item","multiLimitDisabled","max","_props2$keys","isEmpty","treeProps","keys","_props2$keys2","_props2$keys3","children","onMounted","_callee3","_callee3$","_context3","change","valueParam","trigger","clear","content","_props2$onClear","onClear","e","treeNodeChange","context","current","getNodeItem","treeNodeActive","nodeValue","treeNodeExpand","treeNodeLoad","inputChange","_props2$onSearch2","_props2$onSearch","onSearch","tagChange","_props2$onRemove","index","includes","splice","onRemove","handlePopupVisibleChange","visible","_callee4","_callee4$","_context4","getSingleNodeInfo","getMultipleNodeInfo","getItem","_objectSpread","getTreeNode","i","len","isNil","renderTree","_withDirectives","_createVNode","Tree","_mergeProps","empty","defaultNode","_vShow","loading","renderSuffixIcon","FakeArrow","_defineProperty","SelectInput","clearable","autoWidth","borderless","filterable","minCollapsedNum","collapsedItems","overlayClassName","popupProps","inputProps","maxWidth","tagProps","suffix","suffixIcon","onBlur","_","_props2$onBlur","onFocus","_props2$onFocus","valueDisplay","params","onClose","selectInputProps","panel","loadingText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,SAASA,gBACdA,CAAAC,OAAA,EACAC,WACA,EAAAC,SAAA,EACAC,YACiB,EAAA;EACjB,IAAIC,kBAAqB,GAAAH,WAAA,CAAA;EACzB,IAAIG,kBAAsB,IAAA,IAAA,IAAQC,OAAA,CAAOD,kBAAA,CAAuB,KAAA,QAAU,EAAA;AAAA,IAAA,IAAAE,mBAAA,CAAA;IACxEF,kBAAA,GAAA,CAAAE,mBAAA,GAAsBF,kBAA4D,MAAA,IAAA,IAAAE,mBAAA,KAA5DA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAA4DJ,SAAA,CAAA,CAAA;AACpF,GAAA;AACA,EAAA,IAAIE,kBAAsB,IAAA,IAAA,EAAM,OAAO,EAAC,CAAA;AAE/B,EAAA,SAAAG,QAAAA,CAASC,OAAyBC,UAAqD,EAAA;IAC9F,IAAIC,MAAiC,GAAA,IAAA,CAAA;AAC/BF,IAAAA,KAAA,CAAAG,IAAA,CAAK,UAACC,IAAS,EAAA;AACnB,MAAA,IAAMC,OAAU,GAAA,EAAA,CAAAC,MAAA,CAAAC,kBAAA,CAAIN,UAAA,CAAA,EAAA,CAAYG,KAAKV,SAAU,CAAA,CAAA,CAAA,CAAA;AAC3C,MAAA,IAAAU,IAAA,CAAKV,eAAeE,kBAAoB,EAAA;AACjCM,QAAAA,MAAA,GAAAD,UAAA,CAAA;AACF,QAAA,OAAA,IAAA,CAAA;AACT,OAAA;AACA,MAAA,IAAIO,MAAMC,OAAQ,CAAAL,IAAA,CAAKT,aAAa,CAAK,IAAAS,IAAA,CAAKT,cAAce,MAAQ,EAAA;QACzDR,MAAA,GAAAH,QAAA,CAASK,IAAK,CAAAT,YAAA,CAAA,EAAeU,OAAO,CAAA,CAAA;QAC7C,IAAIH,WAAW,IAAM,EAAA;AACZ,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACF,OAAA;AACO,MAAA,OAAA,KAAA,CAAA;AACT,KAAC,CAAA,CAAA;AACM,IAAA,OAAAA,MAAA,CAAA;AACT,GAAA;AAEA,EAAA,OAAOH,QAAS,CAAAP,OAAA,EAAS,EAAE,KAAK,EAAC,CAAA;AACnC;;;;ACjBA,kBAAemB,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,aAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAA6C;AAAA,IAAA,IAAjBE,KAAA,GAAAC,IAAA,CAAAD,KAAA;MAAOE,cAAAA;AACvC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AACnC,IAAA,IAAMC,qBAAqBC,eAAgB,EAAA,CAAA;AAC3C,IAAA,IAAMC,cAAcC,cAAe,EAAA,CAAA;AACnC,IAAA,IAAAC,UAAA,GAAyBC,SAAA,CAAU,YAAY,CAAA;MAAvCC,YAAA,GAAAF,UAAA,CAAAE,YAAA,CAAA;AACR,IAAA,IAAMC,eAAeC,WAAY,EAAA,CAAA;AACjC,IAAA,IAAMC,aAAaC,WAAY,EAAA,CAAA;AAGzB,IAAA,IAAAC,OAAA,GAAUC,IAAI,IAAI,CAAA,CAAA;AAGlB,IAAA,IAAAC,OAAA,GAAUD,GAAI,CAAA,EAAE,CAAA,CAAA;AAChB,IAAA,IAAAE,QAAA,GAAWF,GAAI,CAAA,EAAE,CAAA,CAAA;AACjB,IAAA,IAAAG,QAAA,GAAWH,IAAI,IAAI,CAAA,CAAA;AACnB,IAAA,IAAAI,OAAA,GAAUJ,IAAI,CAAC,CAAA,CAAA;AAGrB,IAAA,IAAAK,OAAA,GAAwDC,OAAOzB,MAAK,CAAA;MAA5D0B,KAAO,GAAAF,OAAA,CAAPE,KAAO;MAAAC,UAAA,GAAAH,OAAA,CAAAG,UAAA;MAAYC,uBAAAA;MAAcC,UAAW,GAAAL,OAAA,CAAXK,UAAW,CAAA;AAC9C,IAAA,IAAAC,UAAA,GAAwCC,SAAA,CAAUL,OAAOC,UAAY3B,EAAAA,MAAAA,CAAMgC,YAAchC,EAAAA,MAAAA,CAAMiC,QAAQ,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAAtGM,MAAAA,eAAiB,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,kBAAkB,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AACpC,IAAA,IAAAI,gBAAA,GAAkCC,eAAA,CACtCX,YAAA,EACA,KAAA,EACA5B,MAAM,CAAAwC,oBAAA,EACN,cACF,CAAA;MAAAC,iBAAA,GAAAN,cAAA,CAAAG,gBAAA,EAAA,CAAA,CAAA;AALOI,MAAAA,YAAc,GAAAD,iBAAA,CAAA,CAAA,CAAA;AAAAE,MAAAA,eAAe,GAAAF,iBAAA,CAAA,CAAA,CAAA,CAAA;AAM9B,IAAA,IAAAG,iBAAA,GAAwCL,eAAA,CAC5CV,UAAA,EACA7B,MAAM,CAAA6C,iBAAA,EACN7C,MAAM,CAAA8C,aAAA,EACN,YACF,CAAA;MAAAC,iBAAA,GAAAZ,cAAA,CAAAS,iBAAA,EAAA,CAAA,CAAA;AALOI,MAAAA,eAAiB,GAAAD,iBAAA,CAAA,CAAA,CAAA;AAAAE,MAAAA,kBAAkB,GAAAF,iBAAA,CAAA,CAAA,CAAA,CAAA;AAU1C,IAAA,IAAMG,yBAAyB,SAAzBA,yBAA+B;AAC7B,MAAA,IAAAC,UAAA,GAAa,SAAbA,UAAAA,CAAczB,MAAAA,EAAAA;AAAAA,QAAAA,OAClBhD,gBAAiBsB,CAAAA,MAAAA,CAAMoD,MAAM1B,MAAO,EAAA7C,SAAA,CAAU6C,KAAO,EAAA5C,YAAA,CAAa4C,KAAK,CAAA,CAAA;AAAA,OAAA,CAAA;MAEzE,IAAI2B,cAAiC,EAAC,CAAA;MACtC,IAAIjB,gBAAgBV,KAAO,EAAA;AACzB,QAAA,IAAI/B,MAAMC,OAAQ,CAAAwC,eAAA,CAAgBV,KAAK,CAAA,IAAK1B,OAAMsD,QAAU,EAAA;UAC5CD,WAAA,GAAAjB,eAAA,CAAgBV,KAAM,CAAA6B,OAAA,CAAQJ,UAAU,CAAA,CAAA;AACxD,SAAA,MAAA,IAAW,CAACxD,KAAM,CAAAC,OAAA,CAAQwC,gBAAgBV,KAAK,CAAA,IAAK,CAAC1B,MAAAA,CAAMsD,QAAU,EAAA;AACrDD,UAAAA,WAAA,GAAAF,UAAA,CAAWf,gBAAgBV,KAAK,CAAA,CAAA;AAChD,SAAA;AACF,OAAA;MACAL,QAAA,CAASK,KAAQ,GAAA/B,KAAA,CAAM6D,IAAK,gBAAA,IAAIC,GAAI,CAAAhE,EAAAA,CAAAA,MAAA,CAAAC,kBAAA,CAAI2B,QAAA,CAASK,KAAO,CAAA,EAAAhC,kBAAA,CAAG2D,WAAW,CAAC,CAAA,CAAC,CAAA,CAAA;KAC1E,CAAA;IAGAK,KAAA,CAAMtB,8EAAiB,SAAAuB,OAAA,GAAA;AAAA,MAAA,OAAAC,WAAA,CAAAC,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAF,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;YAAA,OACfC,cAAe,EAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AACjB,YAAA,IAAA,CAAClE,OAAMsD,QAAU,EAAA;AACXlC,cAAAA,OAAA,CAAAM,KAAA,GAAQJ,SAASI,KAAQ,GAAA,CAACJ,SAASI,KAAM,CAAAA,KAAK,IAAI,EAAC,CAAA;AAC7D,aAAA;AACuBwB,YAAAA,sBAAA,EAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAa,QAAA,CAAAI,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAR,OAAA,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA,CAAA,CAAA;AACDD,IAAAA,KAAA,CACE,YAAA;MAAA,OAAM1D,MAAM,CAAAoD,IAAA,CAAA;AAAA,KAAA,eAAAgB,iBAAA,cAAAR,WAAA,CAAAS,IAAA,CACZ,SAAAC,QAAA,GAAA;AAAA,MAAA,OAAAV,WAAA,CAAAC,IAAA,CAAA,SAAAU,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAR,IAAA,GAAAQ,SAAA,CAAAP,IAAA;AAAA,UAAA,KAAA,CAAA;AAAAO,YAAAA,SAAA,CAAAP,IAAA,GAAA,CAAA,CAAA;YAAA,OACQC,cAAe,EAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AACRO,YAAAA,YAAA,EAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAD,SAAA,CAAAL,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAG,QAAA,CAAA,CAAA;AAAA,KACf,CACA,CAAA,EAAA;AACEI,MAAAA,IAAM,EAAA,IAAA;AACR,KACF,CAAA,CAAA;AAIM,IAAA,IAAAC,YAAA,GAAeC,SAAS,YAAM;AAC5BlD,MAAAA,IAAAA,MAAAA,GAAQsB,gBAAgBtB,KAAS,IAAA,EAAA,CAAA;MACvC,IAAIA,WAAU,EAAI,EAAA;AACT,QAAA,OAAA,IAAA,CAAA;AACT,OAAA;MACA,OAAO,UAACnC,IAAwC,EAAA;AAC1C,QAAA,IAAAsF,UAAA,CAAW7E,MAAM,CAAA8E,MAAM,CAAG,EAAA;AAC5B,UAAA,IAAMA,SAAqC9E,MAAM,CAAA8E,MAAA,CAAOC,MAAOrD,CAAAA,MAAK,GAAGnC,IAAI,CAAA,CAAA;AACvE,UAAA,IAAAyF,SAAA,CAAUF,MAAM,CAAG,EAAA;AACd,YAAA,OAAAA,MAAA,CAAA;AACT,WAAA;AACF,SAAA;AACA,QAAA,OAAOvF,KAAK6D,IAAK,CAAA6B,SAAA,CAAUvD,KAAO,CAAA,CAAAwD,OAAA,CAAQxD,MAAK,CAAK,IAAA,CAAA,CAAA;OACtD,CAAA;AACF,KAAC,CAAA,CAAA;AACK,IAAA,IAAAyD,SAAA,GAAYP,SAAS,YAAM;AACxB,MAAA,OAAA9D,YAAA,CAAaY,SAAS1B,MAAM,CAAAoF,QAAA,CAAA;AACrC,KAAC,CAAA,CAAA;IAED,IAAMC,gBAAmB,GAAAT,QAAA,CACvB,YAAA;AAAA,MAAA,IAAAU,eAAA,CAAA;MAAA,OAAO5C,aAAahB,KAAS,KAAA4D,CAAAA,eAAA,GAAAhE,QAAA,CAASI,yDAAT4D,eAAA,CAAgBC,KAAUvF,CAAAA,IAAAA,MAAAA,CAAMwF,WAAe,IAAA3E,YAAA,CAAaa,KAAM,CAAA8D,WAAA,CAAA;AAAA,KACjG,CAAA,CAAA;AAEM,IAAA,IAAAC,UAAA,GAAab,SAAS,YAAM;MAChC,OAAO,CAAA,EAAA,CAAAnF,MAAA,CAAIgB,WAAY,CAAAiB,KAAA,EAAA,mBAAA,CAAA,EAA0B,kBAAkB,CAAA,CAAA;AACrE,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAgE,iBAAA,GAAoBd,SAAS,YAAM;MAChC,OAAA;AACLe,QAAAA,KAAO,EAAA,GAAA;AACPC,QAAAA,MAAQ,EAAA,GAAA;AACRC,QAAAA,KAAO,EAAA,GAAA;AACT,QAAE7F,MAAM,CAAA8F,IAAA,CAAA,CAAA;AACV,KAAC,CAAA,CAAA;IAED,IAAMC,aAAgB,GAAAnB,QAAA,CAAS,YAAA;AAAA,MAAA,OAAM5E,MAAAA,CAAMgG,cAAc,QAAQ,CAAA;KAAA,CAAA,CAAA;AAE3D,IAAA,IAAAC,OAAA,GAAUrB,SAAS,YAA4B;MACnD,IAAI5E,OAAMsD,QAAU,EAAA;QAClB,IAAIyC,cAAcrE,KAAO,EAAA;AACvB,UAAA,OAAO9B,OAAQ,CAAAwC,eAAA,CAAgBV,KAAK,CAAA,GAC/BU,eAAgB,CAAAV,KAAA,CAAiCwE,GAAI,CAAA,UAACC,IAAU,EAAA;YAAA,OAAAA,IAAA,CAAsBzE,KAAK,CAAA;AAAA,WAAA,CAAA,GAC5F,EAAC,CAAA;AACP,SAAA;AACO,QAAA,OAAA9B,OAAA,CAAQwC,eAAgB,CAAAV,KAAK,CAC/B,GAAAU,eAAA,CAAgBV,KAAiC,CAAAwE,GAAA,CAAI,UAACC,IAAA,EAAA;AAAA,UAAA,OAASA,IAAqB,CAAA;AAAA,SAAA,CAAA,GACrF,EAAC,CAAA;AACP,OAAA;AACA,MAAA,OAAO,EAAC,CAAA;AACV,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAC,kBAAA,GAAqBxB,SAAS,YAAM;MACxC,OACE5E,MAAM,CAAAsD,QAAA,IACN,CAAC,CAACtD,MAAM,CAAAqG,GAAA,IACRzG,OAAQ,CAAAwC,eAAA,CAAgBV,KAAK,CAAA,IAC7B1B,MAAM,CAAAqG,GAAA,IAAQjE,gBAAgBV,KAAiC,CAAA7B,MAAA,CAAA;AAEnE,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAoF,SAAA,GAAYL,SAAS,YAAM;AAAA,MAAA,IAAA0B,YAAA,CAAA;AAC3B,MAAA,IAAA,CAACC,OAAQvG,CAAAA,MAAAA,CAAMwG,SAAS,CAAA,IAAK,CAACD,OAASvG,CAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAI,CAAG,EAAA;QACtEzG,OAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAA,CAAKlB,KAAS,IAAA,OAAA,CAAA;AACtD,OAAA;AACOvF,MAAAA,OAAAA,CAAAA,CAAAA,YAAAA,GAAAA,MAAAA,CAAMyG,mCAANzG,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAYuF,KAAS,KAAA,OAAA,CAAA;AAC9B,KAAC,CAAA,CAAA;AAEK,IAAA,IAAA1G,SAAA,GAAY+F,SAAS,YAAM;AAAA,MAAA,IAAA8B,aAAA,CAAA;AAC3B,MAAA,IAAA,CAACH,OAAQvG,CAAAA,MAAAA,CAAMwG,SAAS,CAAA,IAAK,CAACD,OAASvG,CAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAI,CAAG,EAAA;QACtEzG,OAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAA,CAAK/E,KAAS,IAAA,OAAA,CAAA;AACtD,OAAA;AACO1B,MAAAA,OAAAA,CAAAA,CAAAA,aAAAA,GAAAA,MAAAA,CAAMyG,oCAANzG,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAY0B,KAAS,KAAA,OAAA,CAAA;AAC9B,KAAC,CAAA,CAAA;AAEK,IAAA,IAAA5C,YAAA,GAAe8F,SAAS,YAAM;AAAA,MAAA,IAAA+B,aAAA,CAAA;AAC9B,MAAA,IAAA,CAACJ,OAAQvG,CAAAA,MAAAA,CAAMwG,SAAS,CAAA,IAAK,CAACD,OAASvG,CAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAI,CAAG,EAAA;QACtEzG,OAAAA,MAAAA,CAAMwG,SAAwB,CAAAC,IAAA,CAAKG,QAAY,IAAA,UAAA,CAAA;AACzD,OAAA;AACO5G,MAAAA,OAAAA,CAAAA,CAAAA,aAAAA,GAAAA,MAAAA,CAAMyG,oCAANzG,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAY4G,QAAY,KAAA,UAAA,CAAA;AACjC,KAAC,CAAA,CAAA;IAEDC,SAAA,cAAAzC,iBAAA,cAAAR,WAAA,CAAAS,IAAA,CAAU,SAAAyC,QAAA,GAAA;AAAA,MAAA,OAAAlD,WAAA,CAAAC,IAAA,CAAA,SAAAkD,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAA/C,IAAA;AAAA,UAAA,KAAA,CAAA;AACef,YAAAA,sBAAA,EAAA,CAAA;YACvB,IAAI,CAACd,eAAA,CAAgBV,KAAS1B,IAAAA,MAAAA,CAAMgC,YAAc,EAAA;cACzChC,MAAAA,CAAAA,MAAAA,CAAMgC,YAAc,EAAA,IAAA,EAAM,SAAS,CAAA,CAAA;AAC5C,aAAA;YACA,IAAI+D,cAAcrE,KAAO,EAAA;AACvBN,cAAAA,OAAA,CAAQM,QAAQ9B,OAAQ,CAAAwC,eAAA,CAAgBV,KAAK,CAAA,GACxCU,gBAAgBV,KAAiC,CAAAwE,GAAA,CAAI,UAACC,IAAA,EAAA;gBAAA,OAAUA,KAAsBzE,KAAK,CAAA;AAAA,eAAA,CAAA,GAC5F,CAAEU,eAAA,CAAgBV,MAAuBA,KAAK,CAAA,CAAA;AACpD,aAAO,MAAA;AACJN,cAAAA,OAAA,CAAQM,KAA4B,GAAA9B,OAAA,CAAQwC,eAAgB,CAAAV,KAAK,IAC9DU,eAAgB,CAAAV,KAAA,GAChB,CAACU,eAAA,CAAgBV,KAAK,CAAA,CAAA;AAC5B,aAAA;AACewC,YAAAA,cAAA,EAAA,CAAA;AAAA,UAAA,KAAA,CAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA8C,SAAA,CAAA7C,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA2C,QAAA,CAAA,CAAA;AAAA,KAChB,CAAA,CAAA,CAAA,CAAA;IAED,IAAMG,MAAS,GAAA,SAATA,MAASA,CACbC,UACA,EAAA3H,IAAA,EACA4H,OACG,EAAA;MACH9E,kBAAA,CAAmB6E,UAAY,EAAA;AAAE3H,QAAAA,IAAM,EAANA,IAAM;AAAA4H,QAAAA,OAAA,EAAAA,OAAAA;AAAQ,OAAC,CAAA,CAAA;AACjCjD,MAAAA,cAAA,EAAA,CAAA;KACjB,CAAA;AAEM,IAAA,IAAAkD,KAAA,GAAQ,SAARA,KAAAA,CAASC,OAA+B,EAAA;AAAA,MAAA,IAAAC,eAAA,CAAA;MAC5C,IAAMtF,YAAgChC,GAAAA,MAAAA,CAAMsD,QAAW,GAAA,EAAK,GAAA,EAAA,CAAA;MAC5DlC,OAAA,CAAQM,QAAQ,EAAC,CAAA;AACVuF,MAAAA,MAAA,CAAAjF,YAAA,EAAc,MAAM,OAAO,CAAA,CAAA;AAClChC,MAAAA,CAAAA,eAAAA,GAAAA,OAAMuH,OAAU,MAAA,IAAA,IAAAD,eAAA,KAAA,KAAA,CAAA,IAAhBtH,eAAAA,CAAAA,IAAAA,CAAAA,QAAgB;QAAEwH,CAAG,EAAAH,OAAA,CAAQG,CAAAA;AAAE,OAAC,CAAA,CAAA;KAClC,CAAA;IAEM,IAAAC,cAAA,GAAiB,SAAjBA,cAAAA,CACJP,UAAA,EACAQ,OACG,EAAA;MACH,IAAIC,OAA2B,GAAAT,UAAA,CAAA;MAC/B,IAAInB,cAAcrE,KAAO,EAAA;AACbiG,QAAAA,OAAA,GAAAT,UAAA,CAAWhB,IAAI0B,WAAW,CAAA,CAAA;AACtC,OAAA;MACOX,MAAA,CAAAU,OAAA,EAASD,OAAQ,CAAAnI,IAAA,EAAM,OAAO,CAAA,CAAA;KACvC,CAAA;IAEM,IAAAsI,cAAA,GAAiB,SAAjBA,cAAAA,CACJX,UAAA,EACAQ,OACG,EAAA;AACC,MAAA,IAAA,CAAC1H,OAAMsD,QAAU,EAAA;AACnBX,QAAAA,eAAA,CAAgB,OAAO+E,OAAO,CAAA,CAAA;AAChC,OAAA;MAEA,IAAI1H,OAAMsD,QAAU,EAAA;AAClB,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAIlB,gBAAgBV,KAAU,KAAAgG,OAAA,CAAQnI,IAAK,CAAA6D,IAAA,CAAKvE,UAAU6C,KAAQ,CAAA,EAAA;AAChE,QAAA,OAAA;AACF,OAAA;MACA,IAAIiG,OAA2B,GAAAT,UAAA,CAAA;MAC/B,IAAInB,cAAcrE,KAAO,EAAA;AACvB,QAAA,IAAMoG,SAAY,GAAAvB,OAAA,CAAQW,UAAU,CAAA,GAAI,KAAKA,UAAW,CAAA,CAAA,CAAA,CAAA;AACxDS,QAAAA,OAAA,GAAUC,YAAYE,SAAS,CAAA,CAAA;AACjC,OAAO,MAAA;QACLH,OAAA,GAAUpB,OAAQ,CAAAW,UAAU,CAAI,GAAA,EAAA,GAAKA,UAAW,CAAA,CAAA,CAAA,CAAA;AAClD,OAAA;MACOD,MAAA,CAAAU,OAAA,EAASD,OAAQ,CAAAnI,IAAA,EAAM,OAAO,CAAA,CAAA;MACrC6B,OAAA,CAAQM,KAAQ,GAAAwF,UAAA,CAAA;KAClB,CAAA;AAEM,IAAA,IAAAa,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBb,UAAqC,EAAA;MAC3D7F,QAAA,CAASK,KAAQ,GAAAwF,UAAA,CAAA;KACnB,CAAA;AAEA,IAAA,IAAMc,eAAe,SAAfA,eAAqB;AACV9D,MAAAA,cAAA,EAAA,CAAA;KACjB,CAAA;AAEM,IAAA,IAAA+D,WAAA,GAAc,SAAdA,WAAAA,CAAevG,MAA2B,EAAA;AAAA,MAAA,IAAAwG,iBAAA,CAAA;AAE1C,MAAA,IAAA,CAACxF,aAAahB,KAAO,EAAA;AAAA,QAAA,IAAAyG,gBAAA,CAAA;AACvBnI,QAAAA,CAAAA,gBAAAA,GAAAA,MAAM,CAAAoI,QAAA,MAAA,IAAA,IAAAD,gBAAA,KAANnI,KAAAA,CAAAA,IAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAW+E,MAAOrD,CAAAA,MAAK,CAAC,CAAA,CAAA;AAC9B,QAAA,OAAA;AACF,OAAA;MACAuB,kBAAA,CAAmBvB,MAAK,CAAA,CAAA;AACxB1B,MAAAA,CAAAA,iBAAAA,GAAAA,MAAM,CAAAoI,QAAA,MAAA,IAAA,IAAAF,iBAAA,KAANlI,KAAAA,CAAAA,IAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAW+E,MAAOrD,CAAAA,MAAK,CAAC,CAAA,CAAA;KAChC,CAAA;IAEM,IAAA2G,SAAA,GAA+C,SAA/CA,SAAAA,CAAgD3G,MAAAA,EAAOgG,OAAY,EAAA;AAAA,MAAA,IAAAY,gBAAA,CAAA;AACjE,MAAA,IAAEnB,OAAS,GAAUO,OAAA,CAAnBP,OAAS;QAAAoB,KAAA,GAAUb,OAAA,CAAVa,KAAA,CAAA;MACjB,IAAI,CAAC,YAAc,EAAA,WAAW,CAAE,CAAAC,QAAA,CAASrB,OAAO,CAAG,EAAA;AACjDvH,QAAAA,OAAA,CAAQwC,gBAAgBV,KAAK,CAAA,IAAMU,gBAAgBV,KAAiC,CAAA+G,MAAA,CAAOF,OAAO,CAAC,CAAA,CAAA;AACrG,OAAA;AACAvI,MAAAA,CAAAA,gBAAAA,GAAAA,MAAAA,CAAM0I,QAAW,MAAA,IAAA,IAAAJ,gBAAA,KAAA,KAAA,CAAA,IAAjBtI,gBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAiB;AAAE0B,QAAAA,KAAAA,EAAAA,MAAAA;AAAO0B,QAAAA,IAAM,EAAA,IAAA;AAAMoE,QAAAA,CAAG,EAAAE,OAAA,IAAYA,OAAQ,CAAAF,CAAAA;AAAiB,OAAC,CAAA,CAAA;MACxEP,MAAA,CAAA7E,eAAA,CAAgBV,KAAO,EAAA,IAAA,EAAMyF,OAAqC,CAAA,CAAA;KAC3E,CAAA;IAEM,IAAAwB,wBAAA,GAA2B,SAA3BA,wBAAAA,CAA4BC,OAAA,EAAkBlB,OAAuC,EAAA;AACzF/E,MAAAA,eAAA,CAAgBiG,SAASlB,OAAO,CAAA,CAAA;MAE5B,IAAAkB,OAAA,IAAWlB,QAAQP,OAAY,KAAA,uBAAA,EAAyBlE,kBAAA,CAAmB,EAAE,CAAA,CAAA;KACnF,CAAA;AACA,IAAA,IAAMiB;kEAAiB,SAAA2E,QAAA,GAAA;AAAA,QAAA,OAAAjF,WAAA,CAAAC,IAAA,CAAA,SAAAiF,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/E,IAAA,GAAA+E,SAAA,CAAA9E,IAAA;AAAA,YAAA,KAAA,CAAA;AACjB,cAAA,IAAA,CAACjE,OAAMsD,QAAU,EAAA;gBACnB,IAAIlB,eAAgB,CAAAV,KAAA,IAASU,eAAgB,CAAAV,KAAA,KAAU,CAAG,EAAA;AACxDJ,kBAAAA,QAAA,CAASI,QAAQsH,iBAAkB,EAAA,CAAA;AACrC,iBAAO,MAAA;kBACL1H,QAAA,CAASI,KAAQ,GAAA,EAAA,CAAA;AACnB,iBAAA;AACF,eAAA,MAAA,IAAW1B,OAAMsD,QAAU,EAAA;AACrB,gBAAA,IAAA1D,OAAA,CAAQwC,eAAgB,CAAAV,KAAK,CAAG,EAAA;AAClCJ,kBAAAA,QAAA,CAASI,QAAQuH,mBAAoB,EAAA,CAAA;AACvC,iBAAO,MAAA;kBACL3H,QAAA,CAASI,QAAQ,EAAC,CAAA;AACpB,iBAAA;AACF,eAAO,MAAA;gBACLJ,QAAA,CAASI,KAAQ,GAAA,IAAA,CAAA;AACnB,eAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAqH,SAAA,CAAA5E,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA0E,QAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,SAhBM3E;;;KAgBN,EAAA,CAAA;AAEA,IAAA,IAAM8E,oBAAoB,SAApBA,oBAA0B;AAC9B,MAAA,IAAMlB,YAAY/B,aAAc,CAAArE,KAAA,GAASU,eAAgB,CAAAV,KAAA,CAAuBA,QAAQU,eAAgB,CAAAV,KAAA,CAAA;MACxG,OAAOkG,YAAYE,SAAS,CAAA,CAAA;KAC9B,CAAA;AAEA,IAAA,IAAMmB,sBAAsB,SAAtBA,sBAA4B;MAChC,OAAQ7G,eAAgB,CAAAV,KAAA,CAAiCwE,GAAI,CAAA,UAACxE,MAAU,EAAA;QACtE,IAAMoG,SAAY,GAAA/B,aAAA,CAAcrE,KAASA,GAAAA,MAAAA,CAAuBA,KAAQA,GAAAA,MAAAA,CAAAA;QACxE,OAAOkG,YAAYE,SAAS,CAAA,CAAA;AAC9B,OAAC,CAAA,CAAA;KACH,CAAA;AAEM,IAAA,IAAAF,WAAA,GAAc,SAAdA,WAAAA,CAAehJ,WAAiC,EAAA;MACpD,IAAIsC,QAAQQ,KAAO,EAAA;QACjB,IAAMnC,KAAO,GAAA2B,OAAA,CAAQQ,KAAM,CAAAwH,OAAA,CAAQtK,WAAW,CAAA,CAAA;AAC9C,QAAA,IAAIW,KAAM,EAAA;AACD,UAAA,OAAA4J,aAAA,CAAAA,aAAA,CACF5J,EAAAA,EAAAA,KAAK,CAAA6D,IAAA,CAAA,EAAA,EAAA,EAAA;YACRmC,KAAA,EAAOhG,KAAK,CAAA6D,IAAA,CAAK6B,SAAU,CAAAvD,KAAA,CAAA;AAC3BA,YAAAA,KAAA,EAAOnC,KAAK,CAAA6D,IAAA,CAAKvE,SAAU,CAAA6C,KAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAE/B,SAAA;AACF,OAAA;MACA,IAAMnC,IAAO,GAAA6J,YAAA,CAAYpJ,MAAM,CAAAoD,IAAA,EAAMxE,WAAW,CAAA,CAAA;AAChD,MAAA,IAAIW,IAAM,EAAA;AACD,QAAA,OAAAA,IAAA,CAAA;AACT,OAAA;MACO,OAAA;AACLgG,QAAAA,KAAO,EAAA3G,WAAA;AACP8C,QAAAA,KAAO,EAAA9C,WAAAA;OACT,CAAA;KACF,CAAA;IAEM,IAAAwK,YAAA,GAAc,SAAdA,WAAAA,CAAehG,IAAA,EAA6BxE,WAAyD,EAAA;AACzG,MAAA,KAAA,IAASyK,IAAI,CAAG,EAAAC,GAAA,GAAMlG,KAAKvD,MAAQ,EAAAwJ,CAAA,GAAIC,KAAKD,CAAK,EAAA,EAAA;AAC/C,QAAA,IAAMlD,OAAO/C,IAAK,CAAAiG,CAAA,CAAA,CAAA;QACd,IAAAlD,IAAA,CAAKtH,SAAU,CAAA6C,KAAA,CAAA,KAAW9C,WAAa,EAAA;AAClC,UAAA,OAAAuK,aAAA,CAAAA,aAAA,CAAA,EAAA,EACFhD,IAAA,CAAA,EAAA,EAAA,EAAA;AACHZ,YAAAA,KAAA,EAAOY,KAAKlB,SAAU,CAAAvD,KAAA,CAAA;AACtBA,YAAAA,KAAA,EAAOyE,KAAKtH,SAAU,CAAA6C,KAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAE1B,SAAA;QACI,IAAAyE,IAAA,KAAAA,IAAAA,IAAAA,IAAA,KAAAA,KAAAA,CAAAA,IAAAA,IAAA,CAAOrH,aAAa4C,KAAQ,CAAA,EAAA;AAC9B,UAAA,IAAMrC,MAAS,GAAA+J,YAAA,CAAYjD,IAAO,aAAPA,IAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,IAAO,CAAArH,YAAA,CAAa4C,QAAQ9C,WAAW,CAAA,CAAA;AAC9D,UAAA,IAAA,CAAC2K,KAAM,CAAAlK,MAAM,CAAG,EAAA;AACX,YAAA,OAAAA,MAAA,CAAA;AACT,WAAA;AACF,SAAA;AACF,OAAA;AACO,MAAA,OAAA,IAAA,CAAA;KACT,CAAA;AAEA,IAAA,IAAMoF,eAAe,SAAfA,eAAqB;MACzBlD,OAAA,CAAQG,KAAS,IAAA,CAAA,CAAA;KACnB,CAAA;AAEA,IAAA,IAAM8H,UAAa,GAAA,SAAbA,UAAaA,GAAA;AAAA,MAAA,OAAAC,cAAA,CAAAC,WAAA,CAAAC,IAAA,EAAAC,UAAA,CAAA;AAAA,QAAA,KAAA,EAEV1I,OAAA;QAAA,KAEAK,EAAAA,OAAA,CAAQG;oCACFuE,OAAA,CAAQvE,KAAK,CAAA;AAAA,QAAA,OAAA,EAAA,IAAA;QAAA,MAElB1B,EAAAA,OAAMyG,IACZ;QAAA,MAAMzG,EAAAA,MAAM,CAAAoD,IAAA;QAAA,WACD,EAAA,CAACpD,MAAM,CAAAsD,QAAA;QAAA,WACPtD,EAAAA,MAAM,CAAAsD,QAAA;AAAA,QAAA,UAAA,EACP6B,SAAA,CAAUzD,KAAS,IAAA0E,kBAAA,CAAmB1E,KAChD;QAAA,MAAM1B,EAAAA,OAAM8F,IACZ;QAAA,QAAQnB,EAAAA,YAAa,CAAAjD,KAAA;QAAA,MACf,EAAA,CAACiD,YAAa,CAAAjD,KAAA;QAAA,SACXN,EAAAA,OAAQ,CAAAM,KAAA;QAAA,UACPL,EAAAA,QAAA,CAASK,KACnB;QAAA,gBAAgB1B,EAAAA,MAAM,CAAAsD,QAAA;AAAA,QAAA,UAAA,EACZmE,cACV;AAAA,QAAA,UAAA,EAAUI,cACV;AAAA,QAAA,UAAA,EAAUE,cACV;AAAA,QAAA,QAAA,EAAQC,YACR;QAAA,mBAAmB,EAAA,KAAA;OAOdhI,EAAAA,OAAMwG,SACb,CAPW,EAAA;QACPqD,KAAA,EAAO,SAAPA,KAAAA,GAAA;UAAA,OACEtJ,kBAAA,CAAmB,OAAS,EAAA;AAC1BuJ,YAAAA,WAAA,EAAAJ,WAAA,CAAA,KAAA,EAAA;AAAA,cAAA,OAAA,EAAA,EAAA,CAAAjK,MAAA,CAA4BgB,YAAYiB,KAAwB,EAAA,gBAAA,CAAA;AAAA,aAAA,EAAA,CAAAb,YAAA,CAAaa,KAAM,CAAAmI,KAAA,CAAA,CAAA;AACrF,WAAC,CAAA,CAAA;AAAA,SAAA;AACL,OAAA,KAAAE,KAAA,EAzBQ,CAAC/J,MAAM,CAAAgK,OAAA,CAAA,CAAA,CAAA,CAAA;KA2BjB,CAAA;AAGI,IAAA,IAAAC,gBAAA,GAAmB,SAAnBA,gBAAAA,GAAA;MAAA,OAAAP,WAAA,CAAAQ,SAAA,EAAA;QAAA,UAEQxH,EAAAA,aAAahB,KACvB;QAAA,UAAU1B,EAAAA,MAAM,CAAAoF,QAAA;QAAA,kBAAA+E,EAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAA1K,MAAA,CAEVgB,WAAY,CAAAiB,KAAA,EAAgCgB,wBAAAA,CAAAA,EAAAA,YAAa,CAAAhB,KAAA,CAAA,EAAA,EAAA,CAAAjC,MAAA,CACzDgB,WAAY,CAAAiB,KAAA,EAAA,sBAAA,CAAA,EAA8B1B,MAAM,CAAAoF,QAAA,CAAA;AAAA,OAAA,EAAA,IAAA,CAAA,CAAA;KAExD,CAAA;AAGKhF,IAAAA,MAAA,CAAA;AACLc,MAAAA,OAAA,EAAAA,OAAAA;AACF,KAAC,CAAA,CAAA;IAEM,OAAA,YAAA;AAAA,MAAA,OAAAwI,WAAA,CAAAU,WAAA,EAAAR,UAAA,CAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAnK,MAAA,CAEOgB,WAAY,CAAAiB,KAAA,EAAA,cAAA,CAAA;QAAA,OACfJ,EAAAA,QAAA,CAASI,KAChB;QAAA,YAAYgB,EAAAA,YAAa,CAAAhB,KAAA,GAAQsB,gBAAgBtB,KAAQ,GAAA,EAAA;QAAA,cAC3CgB,EAAAA,YAAA,CAAahB,KAC3B;QAAA,UAAUyD,EAAAA,SAAU,CAAAzD,KAAA;QAAA,UACV1B,EAAAA,MAAAA,CAAMsD,QAChB;QAAA,SAAStD,EAAAA,MAAM,CAAAgK,OAAA;QAAA,WACJhK,EAAAA,MAAM,CAAAqK,SAAA;QAAA,WACNrK,EAAAA,MAAAA,CAAMsK,SACjB;QAAA,YAAYtK,EAAAA,MAAM,CAAAuK,UAAA;QAAA,UACRvJ,EAAAA,UAAA,CAAWU,KACrB;QAAA,aAAa2D,EAAAA,gBAAiB,CAAA3D,KAAA;QAAA,YAClB1B,EAAAA,MAAM,CAAAwK,UAAA,IAAc3F,UAAW7E,CAAAA,MAAAA,CAAM8E,MAAM,CAAA;QAAA,iBACtC9E,EAAAA,MAAAA,CAAMyK,eACvB;QAAA,iBAAiBzK,EAAAA,MAAM,CAAA0K,cAAA;AAAA,QAAA,YAAA,EAAAvB,aAAA,CAAA;UAErBwB,kBAAkBlF,UAAW,CAAA/D,KAAAA;SACzB1B,EAAAA,MAAM,CAAA4K,UAAA,CAAA;AAAA,QAAA,YAAA,EAAAzB,aAAA,CAAA;UAGVrD,MAAM9F,MAAM,CAAA8F,IAAAA;SACR9F,EAAAA,MAAM,CAAA6K,UAAA,CAAA;QAAA,eAEG,EAAA;UACb/E,MAAM9F,MAAM,CAAA8F,IAAAA;;;AAGZgF,UAAAA,QAAU,EAAA,GAAA;SACN9K,EAAAA,MAAM,CAAA+K,QAAA,CAAA;AAAA,QAAA,OAAA,EAEL,SAAAxF,KAAA,GAAA;UAAA,OAAMlF,cAAe,CAAA,YAAY;;gBAChCL,EAAAA,MAAAA,CAAMgL,MACd;QAAA,YAAY,EAAA,SAAAC,aAAM;AACZjL,UAAAA,IAAAA,MAAAA,CAAMiL,UAAc,IAAA/K,KAAA,CAAM+K,UAAY,EAAA;YACxC,OAAO5K,eAAe,YAAY,CAAA,CAAA;AACpC,WAAA;UAEA,OAAO4J,gBAAiB,EAAA,CAAA;;mBAEjB7C,KAAA;AAAA,QAAA,QAAA,EACD,SAAA8D,MAAAA,CAACC,GAAQzD,OAAY,EAAA;AAAA,UAAA,IAAA0D,cAAA,CAAA;AAC3BpL,UAAAA,CAAAA,cAAAA,GAAAA,MAAAA,CAAMkL,iDAANlL,cAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAe;YAAE0B,KAAA,EAAOU,gBAAgBV,KAAO;YAAA8F,CAAA,EAAGE,OAAQ,CAAAF,CAAAA;AAAgB,WAAC,CAAA,CAAA;SAE7E;AAAA,QAAA,SAAA,EAAS,SAAA6D,OAAAA,CAACF,CAAA,EAAQzD,OAA+B,EAAA;AAAA,UAAA,IAAA4D,eAAA,CAAA;AAC/CtL,UAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAMqL,mDAANrL,eAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAgB;YAAE0B,KAAA,EAAOU,gBAAgBV,KAAO;YAAA8F,CAAA,EAAGE,OAAQ,CAAAF,CAAAA;AAAE,WAAC,CAAA,CAAA;SAEhE;AAAA,QAAA,cAAA,EAAc,SAAA+D,YAAA,GAAA;UAAA,OACZlL,cAAA,CAAe,cAAgB,EAAA;AAC7BmL,YAAAA,MAAA,EAAQxL,OAAMsD,QACV,GAAA;cACE5B,OAAOJ,QAAS,CAAAI,KAAA;AAChB+J,cAAAA,OAAA,EAAS,SAATA,OAAAA,CAAUlD,KAAkB,EAAA;gBAC1B,IAAM7G,SAAQJ,QAAS,CAAAI,KAAA,CAAMwE,IAAI,UAAC3G,IAAA,EAAA;kBAAA,OAAyBA,KAAKmC,KAAK,CAAA;iBAAA,CAAA,CAAA;gBACrE2G,SAAA,CAAU3G,MAAO,EAAA;AACfyF,kBAAAA,OAAS,EAAA,YAAA;AACToB,kBAAAA,KAAA,EAAAA,KAAA;kBACApC,MAAMzE,MAAM,CAAA6G,KAAA,CAAA;AACd,iBAAC,CAAA,CAAA;AACH,eAAA;AACF,aACA,GAAA;cACE7G,KAAA,EAAOJ,QAAS,CAAAI,KAAA,IAAAyI,eAAA,CAAAA,eAAA,CAAYlF,EAAAA,EAAAA,SAAU,CAAAvD,KAAA,EAAQ,EAAI,CAAC7C,EAAAA,SAAU,CAAA6C,KAAA,EAAQ,KAAU,CAAA,CAAA;AACjF,aAAA;AACN,WAAC;;yBA0BYuG,WACf;AAAA,QAAA,aAAA,EAAaI;8BACSM,EAAAA,wBAAAA;OACjB3I,EAAAA,OAAM0L,gBACb,CA5BW,EAAA;QACPV,QAAQ9K,KAAM,CAAA8K,MAAA;QACdW,KAAO,EAAA,SAAPA,KAAOA,GAAA;AAAA,UAAA,OAAAjC,WAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAAA,EAEI,IAAAjK,MAAA,CACFgB,WAAY,CAAAiB,KAAA,EAAAjC,yBAAAA,CAAAA,EAAAA,EAAAA,CAAAA,MAAA,CACZgB,WAAY,CAAAiB,KAAA,EAAA,gCAAA,CAAA,CAAAjC,MAAA,CAAsCiG,iBAAkB,CAAAhE,KAAA,CAAA,CAAA;AACzE,WAAA,EAAA,CAECrB,eAAe,iBAAiB,CAAA,EAAAoJ,cAAA,CAAAC,WAAA,CAAA,GAAA,EAAA;YAAA,OAGxB,EAAA,CAAA,EAAA,CAAAjK,MAAA,CAAIgB,YAAYiB,KAA6B,EAAA,sBAAA,CAAA,EAAA,EAAA,CAAAjC,MAAA,CAAGgB,YAAYiB,KAAmC,EAAA,8BAAA,CAAA,CAAA;WAErGnB,EAAAA,CAAAA,mBAAmB,aAAe,EAAA;AACjCuJ,YAAAA,WAAA,EAAAJ,WAAA,CAAA,KAAA,EAAA;AAAA,cAAA,OAAA,EAAA,EAAA,CAAAjK,MAAA,CAA4BgB,YAAYiB,KAAwB,EAAA,gBAAA,CAAA;AAAA,aAAA,EAAA,CAAAb,YAAA,CAAaa,KAAM,CAAAkK,WAAA,CAAA,CAAA;WACpF,cALO5L,OAAMgK,OAAW,IAAA,CAAC7E,UAAUzD,KACpC,CAAA,CAAA,CAAA,EAMD8H,UAAW,EAAA,EACXnJ,eAAe,oBAAoB,CAAA,CAAA,CAAA,CAAA;SAhBrC;QAmBHqK,gBAAgBxK,KAAM,CAAAwK,cAAAA;OACxB,CAAA,CAAA;KAKF,CAAA;AAEJ,GAAA;AACF,CAAC,CAAA;;;;"}