UNPKG

tdesign-vue-next

Version:
1 lines 51.6 kB
{"version":3,"file":"DateRangePicker.mjs","sources":["../../../components/date-picker/DateRangePicker.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch, ComputedRef } from 'vue';\nimport dayjs from 'dayjs';\nimport { useDisabled, useReadonly, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { isArray, isFunction } from 'lodash-es';\n\nimport props from './date-range-picker-props';\nimport {\n DateValue,\n DateRangePickerPartial,\n DatePickerYearChangeTrigger,\n DatePickerMonthChangeTrigger,\n PickerDateRange,\n} from './type';\n\nimport { RangeInputPopup as TRangeInputPopup } from '../range-input';\nimport TRangePanel from './components/panel/RangePanel';\nimport { useRange } from './hooks/useRange';\nimport {\n parseToDayjs,\n formatTime,\n formatDate,\n isValidDate,\n getDefaultFormat,\n initYearMonthTime,\n} from '@tdesign/common-js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj, getRangeBounds } from '@tdesign/common-js/date-picker/utils';\nimport { dateCorrection, triggerMap } from './utils';\n\nexport default defineComponent({\n name: 'TDateRangePicker',\n props,\n setup(props, { slots }) {\n const COMPONENT_NAME = usePrefixClass('date-range-picker');\n\n const {\n inputValue,\n popupVisible,\n rangeInputProps,\n popupProps,\n value,\n year,\n month,\n time,\n cacheValue,\n activeIndex,\n isHoverCell,\n isFirstValueSelected,\n onChange,\n } = useRange(props);\n\n const isDisabled = useDisabled() as ComputedRef<boolean | Array<boolean>>;\n const isReadOnly = useReadonly();\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n enableTimePicker: props.enableTimePicker,\n format: props.format,\n valueType: props.valueType,\n }),\n );\n\n // 记录面板是否选中过\n const isSelected = ref(false);\n\n watch(popupVisible, (visible) => {\n // 面板展开重置数据\n if (visible) {\n if (isArray(props.disabled)) activeIndex.value = props.disabled[0] ? 1 : 0;\n\n isSelected.value = false;\n cacheValue.value = formatDate(value.value || [], {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n }) as string[];\n time.value = formatTime(\n value.value || [dayjs().format(formatRef.value.timeFormat), dayjs().format(formatRef.value.timeFormat)],\n formatRef.value.format,\n formatRef.value.timeFormat,\n props.defaultTime,\n ) as string[];\n\n // 空数据重置为当前年月\n if (!value.value.length) {\n if ((props.range && isArray(props.range)) || props.panelActiveDate) {\n let startRange = props.range as PickerDateRange;\n let endRange = props.range as PickerDateRange;\n if (isArray(props.range)) {\n const [first, second] = props.range;\n if (isArray(first) || isFunction(first) || isArray(second) || isFunction(second)) {\n startRange = first as PickerDateRange;\n endRange = second as PickerDateRange;\n }\n }\n\n const startRangeBounds = getRangeBounds(startRange);\n const endRangeBounds = getRangeBounds(endRange);\n\n const startYearFromRange = startRangeBounds.min?.getFullYear() ?? startRangeBounds.max?.getFullYear();\n const startMonthFromRange = startRangeBounds.min?.getMonth() ?? startRangeBounds.max?.getMonth();\n\n const endYearFromRange = endRangeBounds.min?.getFullYear() ?? endRangeBounds.max?.getFullYear();\n const endMonthFromRange = endRangeBounds.min?.getMonth() ?? endRangeBounds.max?.getMonth();\n\n let startPanelActiveDate = props.panelActiveDate as any;\n let endPanelActiveDate = props.panelActiveDate as any;\n if (isArray(props.panelActiveDate)) {\n [startPanelActiveDate, endPanelActiveDate] = props.panelActiveDate;\n }\n\n const leftYear = (startPanelActiveDate?.year ?? startYearFromRange) as number;\n const leftMonth = startPanelActiveDate?.month\n ? Number(startPanelActiveDate?.month) - 1\n : startMonthFromRange;\n const rightYear = (endPanelActiveDate?.year ?? endYearFromRange) as number;\n const rightMonth = endPanelActiveDate?.month ? Number(endPanelActiveDate?.month) - 1 : endMonthFromRange;\n\n // 获取默认值作为兜底\n const { year: defaultYear, month: defaultMonth } = initYearMonthTime({\n value: value.value,\n mode: props.mode,\n format: formatRef.value.format,\n enableTimePicker: props.enableTimePicker,\n });\n\n year.value = [leftYear ?? defaultYear[0], rightYear ?? defaultYear[1]];\n month.value = [leftMonth ?? defaultMonth[0], rightMonth ?? defaultMonth[1]];\n\n // 修正:如果左右面板年月完全一致且未显式指定不同范围,则偏移面板\n if (year.value[0] === year.value[1] && month.value[0] === month.value[1] && !props.enableTimePicker) {\n if (startRange === endRange) {\n if (props.mode === 'year') year.value[1] += 10;\n else if (props.mode === 'month' || props.mode === 'quarter') year.value[1] += 1;\n else month.value[1] += 1;\n }\n }\n } else {\n const { year: defaultYear, month: defaultMonth } = initYearMonthTime({\n value: value.value,\n mode: props.mode,\n format: formatRef.value.format,\n enableTimePicker: props.enableTimePicker,\n });\n year.value = defaultYear;\n month.value = defaultMonth;\n }\n } else if (value.value.length === 2 && !props.enableTimePicker) {\n // 确保右侧面板月份比左侧大 避免两侧面板月份一致\n const nextMonth = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).month());\n year.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.valueType).year());\n if (year.value[0] === year.value[1] && nextMonth[0] === nextMonth[1]) {\n nextMonth[0] === 11 ? (nextMonth[0] -= 1) : (nextMonth[1] += 1);\n }\n month.value = nextMonth;\n // 月份季度选择时需要确保右侧面板年份比左侧大\n if ((props.mode === 'month' || props.mode === 'quarter') && year.value[0] === year.value[1]) {\n year.value = [year.value[0], year.value[0] + 1];\n }\n } else {\n year.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).year());\n if (year.value.length === 1) year.value = [year.value[0], year.value[0]];\n\n month.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).month());\n if (month.value.length === 1) month.value = [month.value[0], Math.min(month.value[0] + 1, 11)];\n }\n } else {\n activeIndex.value = 0;\n isHoverCell.value = false;\n isFirstValueSelected.value = false;\n if (props.needConfirm) {\n inputValue.value = formatDate(value.value, {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n });\n } else {\n confirmValueChange();\n }\n }\n });\n\n // 日期 hover\n function onCellMouseEnter(date: Date) {\n isHoverCell.value = true;\n const nextValue = [...(inputValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n inputValue.value = nextValue;\n }\n\n // 日期 leave\n function onCellMouseLeave() {\n isHoverCell.value = false;\n inputValue.value = cacheValue.value;\n }\n\n // 日期点击\n function onCellClick(date: Date, { e }: { e: MouseEvent; partial: DateRangePickerPartial }) {\n props.onPick?.(date, { e, partial: activeIndex.value ? 'end' : 'start' });\n\n isHoverCell.value = false;\n isSelected.value = true;\n\n const nextValue = [...(inputValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n\n // 有时间选择器走 confirm 逻辑\n if (props.enableTimePicker) return;\n\n // 确保两端都是有效值\n const notValidIndex = nextValue.findIndex((v) => !v || !isValidDate(v, formatRef.value.format));\n\n // 当两端都有有效值时更改 value\n if (notValidIndex === -1 && nextValue.length === 2) {\n // 二次修改时当其中一侧不符合上次区间规范时,清空另一侧数据\n if (\n !isFirstValueSelected.value &&\n parseToDayjs(nextValue[0], formatRef.value.format).isAfter(parseToDayjs(nextValue[1], formatRef.value.format))\n ) {\n nextValue[activeIndex.value ? 0 : 1] = '';\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n } else {\n onChange?.(\n formatDate(nextValue, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n autoSwap: true,\n defaultTime: props.defaultTime,\n }) as DateValue[],\n {\n dayjsValue: nextValue.map((v, i) =>\n parseToDayjs(v, formatRef.value.format, undefined, undefined, props.defaultTime?.[i]),\n ),\n trigger: 'pick',\n },\n );\n }\n }\n\n if (Array.isArray(props.disabled)) return;\n\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n if (!isFirstValueSelected.value) {\n let nextIndex = notValidIndex;\n if (nextIndex === -1) nextIndex = activeIndex.value ? 0 : 1;\n activeIndex.value = nextIndex as 0 | 1;\n isFirstValueSelected.value = nextValue.some((v) => !!v);\n } else {\n popupVisible.value = false;\n }\n }\n\n // 头部快速切换\n function onJumperClick({\n trigger,\n partial,\n }: {\n trigger: 'prev' | 'next' | 'current';\n partial: DateRangePickerPartial;\n }) {\n const partialIndex = partial === 'start' ? 0 : 1;\n\n const monthCountMap = { date: 1, week: 1, month: 12, quarter: 12, year: 120 };\n const monthCount = monthCountMap[props.mode] || 0;\n const current = new Date(year.value[partialIndex], month.value[partialIndex]);\n\n let next = null;\n if (trigger === 'prev') {\n next = subtractMonth(current, monthCount);\n } else if (trigger === 'current') {\n next = new Date();\n } else if (trigger === 'next') {\n next = addMonth(current, monthCount);\n }\n\n let nextYear = [...year.value];\n nextYear[partialIndex] = next.getFullYear();\n let nextMonth = [...month.value];\n nextMonth[partialIndex] = next.getMonth();\n const onlyYearSelect = ['year', 'quarter', 'month'].includes(props.mode);\n\n // 头部日期切换修正\n const correctedDate = dateCorrection(partialIndex, nextYear, nextMonth, onlyYearSelect);\n nextYear = correctedDate.nextYear;\n nextMonth = correctedDate.nextMonth;\n\n const yearChanged = year.value[partialIndex] !== nextYear[partialIndex];\n const monthChanged = month.value[partialIndex] !== nextMonth[partialIndex];\n\n year.value = nextYear;\n month.value = nextMonth;\n\n // 触发年份变化事件\n if (yearChanged) {\n props.onYearChange?.({\n partial,\n year: nextYear[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: trigger === 'current' ? 'today' : (`year-${triggerMap[trigger]}` as DatePickerYearChangeTrigger),\n });\n }\n\n // 触发月份变化事件\n if (monthChanged) {\n props.onMonthChange?.({\n partial,\n month: nextMonth[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: trigger === 'current' ? 'today' : (`month-${triggerMap[trigger]}` as DatePickerMonthChangeTrigger),\n });\n }\n }\n\n // time-picker 点击\n function onTimePickerChange(val: string) {\n const { hours, minutes, seconds, milliseconds, meridiem } = extractTimeObj(val);\n\n const nextInputValue = [...(inputValue.value as DateValue[])];\n const changedInputValue = nextInputValue[activeIndex.value];\n const currentDate = !dayjs(changedInputValue, formatRef.value.format).isValid()\n ? dayjs().year(year.value[activeIndex.value]).month(month.value[activeIndex.value])\n : dayjs(changedInputValue, formatRef.value.format);\n // am pm 12小时制转化 24小时制\n let nextHours = hours;\n if (/am/i.test(meridiem) && nextHours === 12) nextHours -= 12;\n if (/pm/i.test(meridiem) && nextHours < 12) nextHours += 12;\n\n const nextDate = currentDate.hour(nextHours).minute(minutes).second(seconds).millisecond(milliseconds).toDate();\n nextInputValue[activeIndex.value] = nextDate;\n\n const nextTime = [...time.value];\n nextTime[activeIndex.value] = val;\n time.value = nextTime;\n\n isSelected.value = true;\n inputValue.value = formatDate(nextInputValue, {\n format: formatRef.value.format,\n });\n cacheValue.value = formatDate(nextInputValue, {\n format: formatRef.value.format,\n });\n }\n const confirmValueChange = (e?: MouseEvent) => {\n const nextValue = [...(inputValue.value as string[])];\n\n const notValidIndex = nextValue.findIndex((v) => !v || !isValidDate(v, formatRef.value.format));\n\n // 当两端都有有效值时更改 value\n if (notValidIndex === -1 && nextValue.length === 2) {\n // 二次修改时当其中一侧不符合上次区间规范时,清空另一侧数据\n if (\n !isFirstValueSelected.value &&\n parseToDayjs(nextValue[0], formatRef.value.format).isAfter(parseToDayjs(nextValue[1], formatRef.value.format))\n ) {\n nextValue[activeIndex.value ? 0 : 1] = '';\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n } else {\n const formattedValue = formatDate(nextValue, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n autoSwap: true,\n defaultTime: props.defaultTime,\n }) as DateValue[];\n const isSame =\n Array.isArray(formattedValue) &&\n formattedValue.length === 2 &&\n formattedValue[0] != null &&\n formattedValue[1] != null &&\n value.value[0] != null &&\n value.value[1] != null &&\n dayjs(formattedValue[0] as any).valueOf() === dayjs(value.value[0] as any).valueOf() &&\n dayjs(formattedValue[1] as any).valueOf() === dayjs(value.value[1] as any).valueOf();\n //判断传入的值和当前值是否相同,不同再触发 onChange,避免不必要的事件触发\n props?.onConfirm?.({\n date: nextValue.map((v) => dayjs(v).toDate()),\n e: e || null,\n partial: activeIndex.value ? 'end' : 'start',\n });\n if (!isSame) {\n onChange?.(formattedValue, {\n dayjsValue: nextValue.map((v, i) =>\n parseToDayjs(v, formatRef.value.format, undefined, undefined, props.defaultTime?.[i]),\n ),\n trigger: 'confirm',\n });\n }\n }\n }\n };\n // 确定\n function onConfirmClick({ e }: { e: MouseEvent }) {\n confirmValueChange(e);\n\n const nextValue = [...(inputValue.value as string[])];\n\n const notValidIndex = nextValue.findIndex((v) => !v || !isValidDate(v, formatRef.value.format));\n\n if (Array.isArray(props.disabled)) {\n popupVisible.value = false;\n } else if (!isFirstValueSelected.value) {\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n let nextIndex = notValidIndex;\n if (nextIndex === -1) nextIndex = activeIndex.value ? 0 : 1;\n activeIndex.value = nextIndex as 0 | 1;\n isFirstValueSelected.value = nextValue.some((v) => !!v);\n } else if (nextValue.length === 2) {\n popupVisible.value = false;\n }\n }\n\n // 预设\n function onPresetClick(preset: any, context: any) {\n let presetValue = preset;\n if (isFunction(preset)) {\n presetValue = preset();\n }\n if (!isArray(presetValue)) {\n console.error(`preset: ${preset} 预设值必须是数组!`);\n } else {\n onChange?.(\n formatDate(presetValue, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n autoSwap: true,\n defaultTime: props.defaultTime,\n }) as DateValue[],\n {\n dayjsValue: presetValue.map((p, i) =>\n parseToDayjs(p, formatRef.value.format, undefined, undefined, props.defaultTime?.[i]),\n ),\n trigger: 'preset',\n },\n );\n // 更新到 input,避免 needConfirm 导致值被覆盖\n inputValue.value = formatDate(presetValue, {\n format: formatRef.value.format,\n });\n popupVisible.value = false;\n props.onPresetClick?.(context);\n }\n }\n\n function onYearChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n let partialIndex = partial === 'start' ? 0 : 1;\n if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n let nextYear = [...year.value];\n let nextMonth = [...month.value];\n\n nextYear[partialIndex] = nextVal;\n const onlyYearSelect = ['year', 'quarter', 'month'].includes(props.mode);\n\n // 头部日期切换修正\n const correctedDate = dateCorrection(partialIndex, nextYear, nextMonth, onlyYearSelect);\n nextYear = correctedDate.nextYear;\n nextMonth = correctedDate.nextMonth;\n\n year.value = nextYear;\n if (!onlyYearSelect) month.value = nextMonth;\n\n props.onYearChange?.({\n partial,\n year: nextYear[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: 'year-select',\n });\n }\n\n function onMonthChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n let partialIndex = partial === 'start' ? 0 : 1;\n if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n const nextMonth = [...month.value];\n nextMonth[partialIndex] = nextVal;\n // 保证左侧时间不大于右侧\n if (year.value[0] === year.value[1]) {\n if (partialIndex === 0) {\n // 操作了左侧区间, 处理右侧区间小于或等于左侧区间的场景,交互上始终报错右侧比左侧大 1\n if (nextMonth[1] <= nextMonth[0]) {\n nextMonth[1] = nextMonth[0] + 1;\n if (nextMonth[1] === 12) {\n // 处理跨年的边界场景\n nextMonth[1] = 0;\n year.value = [year.value?.[0], year.value?.[1] + 1];\n }\n }\n }\n if (partialIndex === 1) {\n // 操作了右侧区间, 处理右侧区间小于或等于左侧区间的场景,交互上始终报错左侧比右侧小 1\n nextMonth[0] = Math.min(nextMonth[0], nextMonth[1]);\n if (nextMonth[0] >= nextMonth[1]) {\n nextMonth[0] -= 1;\n if (nextMonth[0] === -1) {\n // 处理跨年的边界场景\n nextMonth[0] = 11;\n year.value = [year.value?.[0] - 1, year.value?.[1]];\n }\n }\n }\n }\n\n month.value = nextMonth;\n\n props.onMonthChange?.({\n partial,\n month: nextMonth[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: 'month-select',\n });\n }\n\n const panelProps = computed(() => ({\n hoverValue: (isHoverCell.value ? inputValue.value : []) as string[],\n value: (isSelected.value ? cacheValue.value : value.value) as string[],\n isFirstValueSelected: isFirstValueSelected.value,\n activeIndex: activeIndex.value,\n year: year.value,\n month: month.value,\n format: formatRef.value.format,\n mode: props.mode,\n presets: props.presets,\n time: time.value,\n disableDate: props.disableDate,\n disabled: isDisabled.value,\n disableTime: props.disableTime,\n firstDayOfWeek: props.firstDayOfWeek,\n timePickerProps: props.timePickerProps,\n enableTimePicker: props.enableTimePicker,\n presetsPlacement: props.presetsPlacement,\n popupVisible: popupVisible.value,\n range: props.range,\n panelPreselection: props.panelPreselection,\n cancelRangeSelectLimit: props.cancelRangeSelectLimit,\n needConfirm: props.needConfirm,\n onCellClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onJumperClick,\n onConfirmClick,\n onPresetClick,\n onYearChange,\n onMonthChange,\n onTimePickerChange,\n cell: props.cell,\n }));\n\n return () => (\n <div class={COMPONENT_NAME.value}>\n <TRangeInputPopup\n readonly={isReadOnly.value}\n disabled={isDisabled.value}\n label={props.label}\n status={props.status}\n tips={props.tips || slots.tips}\n inputValue={inputValue.value as string[]}\n popupProps={popupProps.value}\n rangeInputProps={rangeInputProps.value}\n popupVisible={popupVisible.value}\n panel={() => <TRangePanel {...panelProps.value} v-slots={slots} />}\n />\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","setup","slots","_ref","COMPONENT_NAME","usePrefixClass","_useRange","useRange","inputValue","popupVisible","rangeInputProps","popupProps","value","year","month","time","cacheValue","activeIndex","isHoverCell","isFirstValueSelected","onChange","isDisabled","useDisabled","isReadOnly","useReadonly","formatRef","computed","getDefaultFormat","mode","enableTimePicker","format","valueType","isSelected","ref","watch","visible","isArray","disabled","formatDate","targetFormat","formatTime","dayjs","timeFormat","defaultTime","length","range","panelActiveDate","_startRangeBounds$min","_startRangeBounds$min2","_startRangeBounds$max","_startRangeBounds$min3","_startRangeBounds$min4","_startRangeBounds$max2","_endRangeBounds$min$g","_endRangeBounds$min","_endRangeBounds$max","_endRangeBounds$min$g2","_endRangeBounds$min2","_endRangeBounds$max2","_startPanelActiveDate","_startPanelActiveDate2","_startPanelActiveDate3","_startPanelActiveDate4","_endPanelActiveDate$y","_endPanelActiveDate","_endPanelActiveDate2","_endPanelActiveDate3","startRange","endRange","_props2$range","_slicedToArray","first","second","isFunction","startRangeBounds","getRangeBounds","endRangeBounds","startYearFromRange","min","getFullYear","max","startMonthFromRange","getMonth","endYearFromRange","endMonthFromRange","startPanelActiveDate","endPanelActiveDate","_props2$panelActiveDa","leftYear","leftMonth","Number","rightYear","rightMonth","_initYearMonthTime","initYearMonthTime","defaultYear","defaultMonth","_initYearMonthTime2","nextMonth","map","v","parseToDayjs","Math","needConfirm","confirmValueChange","onCellMouseEnter","date","nextValue","_toConsumableArray","onCellMouseLeave","onCellClick","_ref2","_props2$onPick","e","onPick","partial","notValidIndex","findIndex","isValidDate","isAfter","autoSwap","dayjsValue","i","_props2$defaultTime","trigger","Array","nextIndex","some","onJumperClick","_ref3","partialIndex","monthCountMap","week","quarter","monthCount","current","Date","next","subtractMonth","addMonth","nextYear","onlyYearSelect","includes","correctedDate","dateCorrection","yearChanged","monthChanged","_props2$onYearChange","onYearChange","toDate","concat","triggerMap","_props2$onMonthChange","onMonthChange","onTimePickerChange","val","_extractTimeObj","extractTimeObj","hours","minutes","seconds","milliseconds","meridiem","nextInputValue","changedInputValue","currentDate","isValid","nextHours","test","nextDate","hour","minute","millisecond","nextTime","_props2$onConfirm","formattedValue","isSame","valueOf","onConfirm","_props2$defaultTime2","onConfirmClick","_ref4","onPresetClick","preset","context","presetValue","console","error","_props2$onPresetClick","p","_props2$defaultTime3","nextVal","_ref5","_props2$onYearChange2","_ref6","_props2$onMonthChange2","_year$value","_year$value2","_year$value3","_year$value4","panelProps","hoverValue","presets","disableDate","disableTime","firstDayOfWeek","timePickerProps","presetsPlacement","panelPreselection","cancelRangeSelectLimit","cell","_createVNode","TRangeInputPopup","label","status","tips","panel","TRangePanel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,uBAAeA,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,kBAAA;AACNC,EAAAA,KAAA,EAAAA,oBAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAkB;AAAA,IAAA,IAATE,KAAA,GAAAC,IAAA,CAAAD,KAAA,CAAA;AACP,IAAA,IAAAE,cAAA,GAAiBC,eAAe,mBAAmB,CAAA,CAAA;AAEnD,IAAA,IAAAC,SAAA,GAcFC,SAASP,MAAK,CAAA;MAbhBQ,UAAA,GAAAF,SAAA,CAAAE,UAAA;MACAC,YAAA,GAAAH,SAAA,CAAAG,YAAA;MACAC,eAAA,GAAAJ,SAAA,CAAAI,eAAA;MACAC,UAAA,GAAAL,SAAA,CAAAK,UAAA;MACAC,KAAA,GAAAN,SAAA,CAAAM,KAAA;MACAC,IAAA,GAAAP,SAAA,CAAAO,IAAA;MACAC,KAAA,GAAAR,SAAA,CAAAQ,KAAA;MACAC,IAAA,GAAAT,SAAA,CAAAS,IAAA;MACAC,UAAA,GAAAV,SAAA,CAAAU,UAAA;MACAC,WAAA,GAAAX,SAAA,CAAAW,WAAA;MACAC,WAAA,GAAAZ,SAAA,CAAAY,WAAA;MACAC,oBAAA,GAAAb,SAAA,CAAAa,oBAAA;MACAC,QAAA,GAAAd,SAAA,CAAAc,QAAA,CAAA;AAGF,IAAA,IAAMC,aAAaC,WAAY,EAAA,CAAA;AAC/B,IAAA,IAAMC,aAAaC,WAAY,EAAA,CAAA;IAE/B,IAAMC,SAAY,GAAAC,QAAA,CAAS,YAAA;AAAA,MAAA,OACzBC,gBAAiB,CAAA;QACfC,MAAM5B,MAAM,CAAA4B,IAAA;QACZC,kBAAkB7B,MAAM,CAAA6B,gBAAA;QACxBC,QAAQ9B,MAAM,CAAA8B,MAAA;QACdC,WAAW/B,MAAM,CAAA+B,SAAAA;AACnB,OAAC,CAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAGM,IAAA,IAAAC,UAAA,GAAaC,IAAI,KAAK,CAAA,CAAA;AAEtBC,IAAAA,KAAA,CAAAzB,YAAA,EAAc,UAAC0B,OAAY,EAAA;AAE/B,MAAA,IAAIA,OAAS,EAAA;QACP,IAAAC,OAAA,CAAQpC,OAAMqC,QAAQ,CAAA,EAAGpB,WAAA,CAAYL,KAAQZ,GAAAA,MAAAA,CAAMqC,QAAS,CAAA,CAAA,CAAA,GAAK,CAAI,GAAA,CAAA,CAAA;QAEzEL,UAAA,CAAWpB,KAAQ,GAAA,KAAA,CAAA;QACnBI,UAAA,CAAWJ,KAAQ,GAAA0B,UAAA,CAAW1B,KAAM,CAAAA,KAAA,IAAS,EAAI,EAAA;AAC/CkB,UAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAmB,SAAA;AACxBQ,UAAAA,YAAA,EAAcd,UAAUb,KAAM,CAAAkB,MAAAA;AAChC,SAAC,CAAA,CAAA;QACDf,IAAA,CAAKH,KAAQ,GAAA4B,UAAA,CACX5B,MAAMA,KAAS,IAAA,CAAC6B,KAAM,EAAA,CAAEX,OAAOL,SAAU,CAAAb,KAAA,CAAM8B,UAAU,CAAA,EAAGD,OAAQ,CAAAX,MAAA,CAAOL,SAAU,CAAAb,KAAA,CAAM8B,UAAU,CAAC,CAAA,EACtGjB,UAAUb,KAAM,CAAAkB,MAAA,EAChBL,UAAUb,KAAM,CAAA8B,UAAA,EAChB1C,MAAM,CAAA2C,WACR,CAAA,CAAA;AAGI,QAAA,IAAA,CAAC/B,KAAM,CAAAA,KAAA,CAAMgC,MAAQ,EAAA;AACvB,UAAA,IAAK5C,OAAM6C,KAAS,IAAAT,OAAA,CAAQpC,OAAM6C,KAAK,CAAA,IAAM7C,OAAM8C,eAAiB,EAAA;AAAA,YAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,sBAAA,EAAAC,oBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA,CAAA;AAClE,YAAA,IAAIC,aAAanE,MAAM,CAAA6C,KAAA,CAAA;AACvB,YAAA,IAAIuB,WAAWpE,MAAM,CAAA6C,KAAA,CAAA;AACjB,YAAA,IAAAT,OAAA,CAAQpC,MAAM,CAAA6C,KAAK,CAAG,EAAA;AACxB,cAAA,IAAAwB,aAAA,GAAAC,cAAA,CAAwBtE,MAAM,CAAA6C,KAAA,EAAA,CAAA,CAAA;AAAvB0B,gBAAAA,KAAA,GAAAF,aAAA,CAAA,CAAA,CAAA;AAAOG,gBAAAA,MAAM,GAAAH,aAAA,CAAA,CAAA,CAAA,CAAA;AAChB,cAAA,IAAAjC,OAAA,CAAQmC,KAAK,CAAA,IAAKE,UAAW,CAAAF,KAAK,CAAK,IAAAnC,OAAA,CAAQoC,MAAM,CAAA,IAAKC,UAAW,CAAAD,MAAM,CAAG,EAAA;AACnEL,gBAAAA,UAAA,GAAAI,KAAA,CAAA;AACFH,gBAAAA,QAAA,GAAAI,MAAA,CAAA;AACb,eAAA;AACF,aAAA;AAEM,YAAA,IAAAE,gBAAA,GAAmBC,eAAeR,UAAU,CAAA,CAAA;AAC5C,YAAA,IAAAS,cAAA,GAAiBD,eAAeP,QAAQ,CAAA,CAAA;AAE9C,YAAA,IAAMS,wEAAqBH,gBAAiB,CAAAI,GAAA,cAAA9B,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,sBAAA,CAAsB+B,aAAiB,MAAAhC,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAAE,CAAAA,qBAAA,GAAAyB,gBAAA,CAAiBM,2CAAjB/B,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAsB8B,WAAY,EAAA,CAAA;AACpG,YAAA,IAAME,0EAAsBP,gBAAiB,CAAAI,GAAA,cAAA3B,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,sBAAA,CAAsB+B,UAAc,MAAAhC,IAAAA,IAAAA,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAAE,CAAAA,sBAAA,GAAAsB,gBAAA,CAAiBM,4CAAjB5B,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAAsB8B,QAAS,EAAA,CAAA;AAE/F,YAAA,IAAMC,mEAAmBP,cAAe,CAAAE,GAAA,cAAAxB,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAfA,mBAAA,CAAoByB,aAAiB,MAAA1B,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAAE,CAAAA,mBAAA,GAAAqB,cAAA,CAAeI,yCAAfzB,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAoBwB,WAAY,EAAA,CAAA;AAC9F,YAAA,IAAMK,sEAAoBR,cAAe,CAAAE,GAAA,cAAArB,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAfA,oBAAA,CAAoByB,UAAc,MAAA1B,IAAAA,IAAAA,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAAE,CAAAA,oBAAA,GAAAkB,cAAA,CAAeI,0CAAftB,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAoBwB,QAAS,EAAA,CAAA;AAEzF,YAAA,IAAIG,uBAAuBrF,MAAM,CAAA8C,eAAA,CAAA;AACjC,YAAA,IAAIwC,qBAAqBtF,MAAM,CAAA8C,eAAA,CAAA;AAC3B,YAAA,IAAAV,OAAA,CAAQpC,MAAM,CAAA8C,eAAe,CAAG,EAAA;AAAA,cAAA,IAAAyC,qBAAA,GAAAjB,cAAA,CACWtE,MAAM,CAAA8C,eAAA,EAAA,CAAA,CAAA,CAAA;AAAlDuC,cAAAA,oBAAA,GAAAE,qBAAA,CAAA,CAAA,CAAA,CAAA;AAAsBD,cAAAA,kBAAkB,GAAAC,qBAAA,CAAA,CAAA,CAAA,CAAA;AAC3C,aAAA;AAEM,YAAA,IAAAC,QAAA,GAAA7B,CAAAA,qBAAA,IAAAC,sBAAA,GAAYyB,6DAAAzB,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAAsB/C,IAAQ,MAAA,IAAA,IAAA8C,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAAkB,kBAAA,CAAA;AAChD,YAAA,IAAMY,YAAY,CAAA5B,sBAAA,GAAAwB,oBAAsB,MAAAxB,IAAAA,IAAAA,sBAAA,KAAtBA,KAAAA,CAAAA,IAAAA,sBAAA,CAAsB/C,KAAA,GACpC4E,iCAAOL,oBAAsB,MAAAvB,IAAAA,IAAAA,sBAAA,KAAtBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAAsBhD,KAAK,IAAI,CACtC,GAAAmE,mBAAA,CAAA;AACE,YAAA,IAAAU,SAAA,GAAA5B,CAAAA,qBAAA,IAAAC,mBAAA,GAAasB,wDAAAtB,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAoBnD,IAAQ,MAAA,IAAA,IAAAkD,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAAoB,gBAAA,CAAA;AAC/C,YAAA,IAAMS,aAAa,CAAA3B,oBAAA,GAAAqB,kBAAoB,MAAArB,IAAAA,IAAAA,oBAAA,KAApBA,KAAAA,CAAAA,IAAAA,oBAAA,CAAoBnD,KAAA,GAAQ4E,+BAAOJ,kBAAoB,MAAApB,IAAAA,IAAAA,oBAAA,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAoBpD,KAAK,IAAI,CAAI,GAAAsE,iBAAA,CAAA;YAGvF,IAAAS,kBAAA,GAAmDC,iBAAkB,CAAA;gBACnElF,OAAOA,KAAM,CAAAA,KAAA;gBACbgB,MAAM5B,MAAM,CAAA4B,IAAA;AACZE,gBAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;gBACxBD,kBAAkB7B,MAAM,CAAA6B,gBAAAA;AAC1B,eAAC,CAAA;cALakE,WAAA,GAAAF,kBAAA,CAANhF,IAAM;cAAoBmF,YAAA,GAAAH,kBAAA,CAAP/E,KAAO,CAAA;YAOlCD,IAAA,CAAKD,QAAQ,CAAC4E,QAAA,aAAAA,QAAA,KAAA,KAAA,CAAA,GAAAA,QAAA,GAAYO,YAAY,CAAI,CAAA,EAAAJ,SAAA,KAAA,IAAA,IAAAA,SAAA,KAAA,KAAA,CAAA,GAAAA,SAAA,GAAaI,YAAY,CAAE,CAAA,CAAA,CAAA;YACrEjF,KAAA,CAAMF,QAAQ,CAAC6E,SAAA,aAAAA,SAAA,KAAA,KAAA,CAAA,GAAAA,SAAA,GAAaO,aAAa,CAAI,CAAA,EAAAJ,UAAA,KAAA,IAAA,IAAAA,UAAA,KAAA,KAAA,CAAA,GAAAA,UAAA,GAAcI,aAAa,CAAE,CAAA,CAAA,CAAA;AAG1E,YAAA,IAAInF,IAAK,CAAAD,KAAA,CAAM,CAAO,CAAA,KAAAC,IAAA,CAAKD,MAAM,CAAM,CAAA,IAAAE,KAAA,CAAMF,KAAM,CAAA,CAAA,CAAA,KAAOE,KAAM,CAAAF,KAAA,CAAM,CAAM,CAAA,IAAA,CAACZ,OAAM6B,gBAAkB,EAAA;cACnG,IAAIsC,eAAeC,QAAU,EAAA;gBAC3B,IAAIpE,OAAM4B,IAAS,KAAA,MAAA,EAAQf,IAAA,CAAKD,MAAM,CAAM,CAAA,IAAA,EAAA,CAAA,KAAA,IACnCZ,MAAM,CAAA4B,IAAA,KAAS,OAAW5B,IAAAA,MAAAA,CAAM4B,IAAS,KAAA,SAAA,EAAWf,IAAA,CAAKD,MAAM,CAAM,CAAA,IAAA,CAAA,CAAA,KACzEE,KAAA,CAAMF,MAAM,CAAM,CAAA,IAAA,CAAA,CAAA;AACzB,eAAA;AACF,aAAA;AACF,WAAO,MAAA;YACL,IAAAqF,mBAAA,GAAmDH,iBAAkB,CAAA;gBACnElF,OAAOA,KAAM,CAAAA,KAAA;gBACbgB,MAAM5B,MAAM,CAAA4B,IAAA;AACZE,gBAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;gBACxBD,kBAAkB7B,MAAM,CAAA6B,gBAAAA;AAC1B,eAAC,CAAA;cALakE,YAAA,GAAAE,mBAAA,CAANpF,IAAM;cAAoBmF,aAAA,GAAAC,mBAAA,CAAPnF,KAAO,CAAA;YAMlCD,IAAA,CAAKD,KAAQ,GAAAmF,YAAA,CAAA;YACbjF,KAAA,CAAMF,KAAQ,GAAAoF,aAAA,CAAA;AAChB,WAAA;AACF,mBAAWpF,KAAM,CAAAA,KAAA,CAAMgC,WAAW,CAAK,IAAA,CAAC5C,OAAM6B,gBAAkB,EAAA;UAE9D,IAAMqE,SAAY,GAAAtF,KAAA,CAAMA,KAAM,CAAAuF,GAAA,CAAI,UAACC,CAAA,EAAA;AAAA,YAAA,OAAcC,YAAa,CAAAD,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAA,CAAEhB,OAAO,CAAA;WAAA,CAAA,CAAA;UAChGD,IAAA,CAAKD,KAAQ,GAAAA,KAAA,CAAMA,KAAM,CAAAuF,GAAA,CAAI,UAACC,CAAA,EAAA;AAAA,YAAA,OAAcC,YAAa,CAAAD,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMmB,SAAS,CAAA,CAAElB,MAAM,CAAA;WAAA,CAAA,CAAA;UACzF,IAAAA,IAAA,CAAKD,MAAM,CAAO,CAAA,KAAAC,IAAA,CAAKD,MAAM,CAAM,CAAA,IAAAsF,SAAA,CAAU,CAAO,CAAA,KAAAA,SAAA,CAAU,CAAI,CAAA,EAAA;AACpEA,YAAAA,SAAA,CAAU,OAAO,EAAM,GAAAA,SAAA,CAAU,CAAM,CAAA,IAAA,CAAA,GAAMA,UAAU,CAAM,CAAA,IAAA,CAAA,CAAA;AAC/D,WAAA;UACApF,KAAA,CAAMF,KAAQ,GAAAsF,SAAA,CAAA;UAETlG,IAAAA,CAAAA,MAAAA,CAAM4B,IAAS,KAAA,OAAA,IAAW5B,MAAM,CAAA4B,IAAA,KAAS,SAAc,KAAAf,IAAA,CAAKD,KAAM,CAAA,CAAA,CAAA,KAAOC,IAAK,CAAAD,KAAA,CAAM,CAAI,CAAA,EAAA;AACtFC,YAAAA,IAAA,CAAAD,KAAA,GAAQ,CAACC,IAAK,CAAAD,KAAA,CAAM,IAAIC,IAAK,CAAAD,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA;AAChD,WAAA;AACF,SAAO,MAAA;UACLC,IAAA,CAAKD,KAAQ,GAAAA,KAAA,CAAMA,KAAM,CAAAuF,GAAA,CAAI,UAACC,CAAA,EAAA;AAAA,YAAA,OAAcC,YAAa,CAAAD,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAA,CAAEjB,MAAM,CAAA;WAAA,CAAA,CAAA;UACtF,IAAAA,IAAA,CAAKD,MAAMgC,MAAW,KAAA,CAAA,EAAG/B,IAAA,CAAKD,QAAQ,CAACC,IAAA,CAAKD,MAAM,CAAI,CAAA,EAAAC,IAAA,CAAKD,MAAM,CAAE,CAAA,CAAA,CAAA;UAEvEE,KAAA,CAAMF,KAAQ,GAAAA,KAAA,CAAMA,KAAM,CAAAuF,GAAA,CAAI,UAACC,CAAA,EAAA;AAAA,YAAA,OAAcC,YAAa,CAAAD,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAA,CAAEhB,OAAO,CAAA;WAAA,CAAA,CAAA;AACxF,UAAA,IAAAA,KAAA,CAAMF,MAAMgC,MAAW,KAAA,CAAA,EAAG9B,KAAA,CAAMF,KAAQ,GAAA,CAACE,KAAM,CAAAF,KAAA,CAAM,CAAI,CAAA,EAAA0F,IAAA,CAAKxB,GAAI,CAAAhE,KAAA,CAAMF,KAAM,CAAA,CAAA,CAAA,GAAK,CAAG,EAAA,EAAE,CAAC,CAAA,CAAA;AAC/F,SAAA;AACF,OAAO,MAAA;QACLK,WAAA,CAAYL,KAAQ,GAAA,CAAA,CAAA;QACpBM,WAAA,CAAYN,KAAQ,GAAA,KAAA,CAAA;QACpBO,oBAAA,CAAqBP,KAAQ,GAAA,KAAA,CAAA;QAC7B,IAAIZ,OAAMuG,WAAa,EAAA;UACV/F,UAAA,CAAAI,KAAA,GAAQ0B,UAAW,CAAA1B,KAAA,CAAMA,KAAO,EAAA;AACzCkB,YAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAmB,SAAA;AACxBQ,YAAAA,YAAA,EAAcd,UAAUb,KAAM,CAAAkB,MAAAA;AAChC,WAAC,CAAA,CAAA;AACH,SAAO,MAAA;AACc0E,UAAAA,kBAAA,EAAA,CAAA;AACrB,SAAA;AACF,OAAA;AACF,KAAC,CAAA,CAAA;IAGD,SAASC,iBAAiBC,IAAY,EAAA;MACpCxF,WAAA,CAAYN,KAAQ,GAAA,IAAA,CAAA;AACpB,MAAA,IAAM+F,SAAY,GAAAC,kBAAA,CAAKpG,UAAA,CAAWI,KAAkB,CAAA,CAAA;MAC1C+F,SAAA,CAAA1F,WAAA,CAAYL,KAAS,CAAA,GAAA0B,UAAA,CAAWoE,IAAM,EAAA;AAC9C5E,QAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAAA;AAC1B,OAAC,CAAA,CAAA;MACDtB,UAAA,CAAWI,KAAQ,GAAA+F,SAAA,CAAA;AACrB,KAAA;IAGA,SAASE,gBAAmBA,GAAA;MAC1B3F,WAAA,CAAYN,KAAQ,GAAA,KAAA,CAAA;AACpBJ,MAAAA,UAAA,CAAWI,QAAQI,UAAW,CAAAJ,KAAA,CAAA;AAChC,KAAA;AAGA,IAAA,SAASkG,WAAYA,CAAAJ,IAAA,EAAAK,KAAA,EAAuE;AAAA,MAAA,IAAAC,cAAA,CAAA;AAAA,MAAA,IAAzDC,CAAA,GAAAF,KAAA,CAAAE,CAAA,CAAA;AACjCjH,MAAAA,CAAAA,cAAAA,GAAAA,MAAAA,CAAMkH,MAAS,MAAAF,IAAAA,IAAAA,cAAA,KAAfhH,KAAAA,CAAAA,IAAAA,cAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAe0G,IAAA,EAAM;AAAEO,QAAAA,CAAA,EAAAA,CAAA;AAAGE,QAAAA,SAASlG,WAAY,CAAAL,KAAA,GAAQ,KAAQ,GAAA,OAAA;AAAQ,OAAC,CAAA,CAAA;MAExEM,WAAA,CAAYN,KAAQ,GAAA,KAAA,CAAA;MACpBoB,UAAA,CAAWpB,KAAQ,GAAA,IAAA,CAAA;AAEnB,MAAA,IAAM+F,SAAY,GAAAC,kBAAA,CAAKpG,UAAA,CAAWI,KAAkB,CAAA,CAAA;MAC1C+F,SAAA,CAAA1F,WAAA,CAAYL,KAAS,CAAA,GAAA0B,UAAA,CAAWoE,IAAM,EAAA;AAC9C5E,QAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAAA;AAC1B,OAAC,CAAA,CAAA;MACDd,UAAA,CAAWJ,KAAQ,GAAA+F,SAAA,CAAA;MACnBnG,UAAA,CAAWI,KAAQ,GAAA+F,SAAA,CAAA;MAGnB,IAAI3G,MAAM,CAAA6B,gBAAA,EAAkB,OAAA;AAG5B,MAAA,IAAMuF,aAAgB,GAAAT,SAAA,CAAUU,SAAU,CAAA,UAACjB,CAAM,EAAA;AAAA,QAAA,OAAA,CAACA,CAAK,IAAA,CAACkB,WAAY,CAAAlB,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAC,CAAA;OAAA,CAAA,CAAA;MAG9F,IAAIsF,aAAkB,KAAA,CAAA,CAAA,IAAMT,SAAU,CAAA/D,MAAA,KAAW,CAAG,EAAA;AAElD,QAAA,IACE,CAACzB,oBAAqB,CAAAP,KAAA,IACtByF,aAAaM,SAAU,CAAA,CAAA,CAAA,EAAIlF,UAAUb,KAAM,CAAAkB,MAAM,CAAE,CAAAyF,OAAA,CAAQlB,aAAaM,SAAU,CAAA,CAAA,CAAA,EAAIlF,UAAUb,KAAM,CAAAkB,MAAM,CAAC,CAC7G,EAAA;UACU6E,SAAA,CAAA1F,WAAA,CAAYL,KAAQ,GAAA,CAAA,GAAI,CAAK,CAAA,GAAA,EAAA,CAAA;UACvCI,UAAA,CAAWJ,KAAQ,GAAA+F,SAAA,CAAA;UACnBnG,UAAA,CAAWI,KAAQ,GAAA+F,SAAA,CAAA;AACrB,SAAO,MAAA;UACLvF,QAAA,KAAA,IAAA,IAAAA,QAAA,KAAAA,KAAAA,CAAAA,IAAAA,QAAA,CACEkB,WAAWqE,SAAW,EAAA;AACpB7E,YAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;AACxBS,YAAAA,YAAA,EAAcd,UAAUb,KAAM,CAAAmB,SAAA;AAC9ByF,YAAAA,QAAU,EAAA,IAAA;YACV7E,aAAa3C,MAAM,CAAA2C,WAAAA;AACrB,WAAC,CAAA,EACD;YACE8E,YAAYd,SAAU,CAAAR,GAAA,CAAI,UAACC,CAAA,EAAGsB,CAC5B,EAAA;AAAA,cAAA,IAAAC,mBAAA,CAAA;AAAA,cAAA,OAAAtB,YAAA,CAAaD,CAAG,EAAA3E,SAAA,CAAUb,KAAM,CAAAkB,MAAA,EAAQ,KAAW,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA6F,mBAAA,GAAW3H,MAAM,CAAA2C,WAAA,MAAA,IAAA,IAAAgF,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN3H,mBAAAA,CAAoB0H,CAAE,CAAA,CAAA,CAAA;AAAA,aACtF,CAAA;AACAE,YAAAA,OAAS,EAAA,MAAA;AACX,WACF,CAAA,CAAA;AACF,SAAA;AACF,OAAA;MAEI,IAAAC,KAAA,CAAMzF,OAAQpC,CAAAA,MAAAA,CAAMqC,QAAQ,CAAA,EAAG,OAAA;AAG/B,MAAA,IAAA,CAAClB,qBAAqBP,KAAO,EAAA;QAC/B,IAAIkH,SAAY,GAAAV,aAAA,CAAA;AAChB,QAAA,IAAIU,SAAc,KAAA,CAAA,CAAA,EAAgBA,SAAA,GAAA7G,WAAA,CAAYL,QAAQ,CAAI,GAAA,CAAA,CAAA;QAC1DK,WAAA,CAAYL,KAAQ,GAAAkH,SAAA,CAAA;QACpB3G,oBAAA,CAAqBP,QAAQ+F,SAAU,CAAAoB,IAAA,CAAK,UAAC3B,CAAM,EAAA;UAAA,OAAA,CAAC,CAACA,CAAC,CAAA;SAAA,CAAA,CAAA;AACxD,OAAO,MAAA;QACL3F,YAAA,CAAaG,KAAQ,GAAA,KAAA,CAAA;AACvB,OAAA;AACF,KAAA;IAGA,SAASoH,aAAcA,CAAAC,KAAA,EAMpB;AAAA,MAAA,IALDL,OAAA,GAAAK,KAAA,CAAAL,OAAA;QACAT,OAAA,GAAAc,KAAA,CAAAd,OAAA,CAAA;MAKM,IAAAe,YAAA,GAAef,OAAY,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,CAAA;AAEzC,MAAA,IAAAgB,aAAA,GAAgB;AAAEzB,QAAAA,IAAA,EAAM,CAAG;AAAA0B,QAAAA,IAAA,EAAM,CAAG;AAAAtH,QAAAA,KAAA,EAAO,EAAI;AAAAuH,QAAAA,OAAA,EAAS,EAAI;AAAAxH,QAAAA,IAAA,EAAM,GAAA;OAAI,CAAA;MACtE,IAAAyH,UAAA,GAAaH,aAAcnI,CAAAA,MAAAA,CAAM4B,IAAS,CAAA,IAAA,CAAA,CAAA;AAC1C,MAAA,IAAA2G,OAAA,GAAU,IAAIC,IAAK,CAAA3H,IAAA,CAAKD,MAAMsH,YAAe,CAAA,EAAApH,KAAA,CAAMF,MAAMsH,YAAa,CAAA,CAAA,CAAA;MAE5E,IAAIO,IAAO,GAAA,IAAA,CAAA;MACX,IAAIb,YAAY,MAAQ,EAAA;AACfa,QAAAA,IAAA,GAAAC,aAAA,CAAcH,SAASD,UAAU,CAAA,CAAA;AAC1C,OAAA,MAAA,IAAWV,YAAY,SAAW,EAAA;AAChCa,QAAAA,IAAA,GAAO,IAAID,IAAK,EAAA,CAAA;AAClB,OAAA,MAAA,IAAWZ,YAAY,MAAQ,EAAA;AACtBa,QAAAA,IAAA,GAAAE,QAAA,CAASJ,SAASD,UAAU,CAAA,CAAA;AACrC,OAAA;AAEA,MAAA,IAAIM,QAAW,GAAAhC,kBAAA,CAAI/F,IAAA,CAAKD,KAAK,CAAA,CAAA;MACpBgI,QAAA,CAAAV,YAAA,CAAA,GAAgBO,KAAK1D,WAAY,EAAA,CAAA;AAC1C,MAAA,IAAImB,SAAY,GAAAU,kBAAA,CAAI9F,KAAA,CAAMF,KAAK,CAAA,CAAA;MACrBsF,SAAA,CAAAgC,YAAA,CAAA,GAAgBO,KAAKvD,QAAS,EAAA,CAAA;AAClC,MAAA,IAAA2D,cAAA,GAAiB,CAAC,MAAQ,EAAA,SAAA,EAAW,OAAO,CAAE,CAAAC,QAAA,CAAS9I,OAAM4B,IAAI,CAAA,CAAA;MAGvE,IAAMmH,aAAgB,GAAAC,cAAA,CAAed,YAAc,EAAAU,QAAA,EAAU1C,WAAW2C,cAAc,CAAA,CAAA;MACtFD,QAAA,GAAWG,aAAc,CAAAH,QAAA,CAAA;MACzB1C,SAAA,GAAY6C,aAAc,CAAA7C,SAAA,CAAA;AAE1B,MAAA,IAAM+C,WAAc,GAAApI,IAAA,CAAKD,KAAM,CAAAsH,YAAA,CAAA,KAAkBU,QAAS,CAAAV,YAAA,CAAA,CAAA;AAC1D,MAAA,IAAMgB,YAAe,GAAApI,KAAA,CAAMF,KAAM,CAAAsH,YAAA,CAAA,KAAkBhC,SAAU,CAAAgC,YAAA,CAAA,CAAA;MAE7DrH,IAAA,CAAKD,KAAQ,GAAAgI,QAAA,CAAA;MACb9H,KAAA,CAAMF,KAAQ,GAAAsF,SAAA,CAAA;AAGd,MAAA,IAAI+C,WAAa,EAAA;AAAA,QAAA,IAAAE,oBAAA,CAAA;AACfnJ,QAAAA,CAAAA,oBAAAA,GAAAA,OAAMoJ,YAAe,MAAA,IAAA,IAAAD,oBAAA,KAAA,KAAA,CAAA,IAArBnJ,oBAAAA,CAAAA,IAAAA,CAAAA,QAAqB;AACnBmH,UAAAA,OAAA,EAAAA,OAAA;AACAtG,UAAAA,MAAM+H,QAAS,CAAAV,YAAA,CAAA;UACfxB,IAAA,EAAM9F,KAAM,CAAAA,KAAA,CAAMuF,GAAI,CAAA,UAACC;mBAAM3D,KAAM,CAAA2D,CAAC,CAAE,CAAAiD,MAAA,EAAQ,CAAA;WAAA,CAAA;AAC9CzB,UAAAA,OAAS,EAAAA,OAAA,KAAY,SAAY,GAAA,OAAA,GAAA0B,OAAAA,CAAAA,MAAA,CAAmBC,UAAW,CAAA3B,OAAA,CAAA,CAAA;AACjE,SAAC,CAAA,CAAA;AACH,OAAA;AAGA,MAAA,IAAIsB,YAAc,EAAA;AAAA,QAAA,IAAAM,qBAAA,CAAA;AAChBxJ,QAAAA,CAAAA,qBAAAA,GAAAA,OAAMyJ,aAAgB,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,IAAtBxJ,qBAAAA,CAAAA,IAAAA,CAAAA,QAAsB;AACpBmH,UAAAA,OAAA,EAAAA,OAAA;AACArG,UAAAA,OAAOoF,SAAU,CAAAgC,YAAA,CAAA;UACjBxB,IAAA,EAAM9F,KAAM,CAAAA,KAAA,CAAMuF,GAAI,CAAA,UAACC;mBAAM3D,KAAM,CAAA2D,CAAC,CAAE,CAAAiD,MAAA,EAAQ,CAAA;WAAA,CAAA;AAC9CzB,UAAAA,OAAS,EAAAA,OAAA,KAAY,SAAY,GAAA,OAAA,GAAA0B,QAAAA,CAAAA,MAAA,CAAoBC,UAAW,CAAA3B,OAAA,CAAA,CAAA;AAClE,SAAC,CAAA,CAAA;AACH,OAAA;AACF,KAAA;IAGA,SAAS8B,mBAAmBC,GAAa,EAAA;AACjC,MAAA,IAAAC,eAAA,GAAsDC,eAAeF,GAAG,CAAA;QAAtEG,wBAAAA;QAAOC,OAAS,GAAAH,eAAA,CAATG,OAAS;QAAAC,OAAA,GAAAJ,eAAA,CAAAI,OAAA;QAASC,+BAAAA;QAAcC,QAAS,GAAAN,eAAA,CAATM,QAAS,CAAA;AAExD,MAAA,IAAMC,cAAiB,GAAAvD,kBAAA,CAAKpG,UAAA,CAAWI,KAAqB,CAAA,CAAA;AACtD,MAAA,IAAAwJ,iBAAA,GAAoBD,eAAelJ,WAAY,CAAAL,KAAA,CAAA,CAAA;MACrD,IAAMyJ,WAAc,GAAA,CAAC5H,KAAM,CAAA2H,iBAAA,EAAmB3I,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAA,CAAEwI,OAAQ,EAAA,GAC1E7H,KAAM,EAAA,CAAE5B,IAAK,CAAAA,IAAA,CAAKD,KAAM,CAAAK,WAAA,CAAYL,KAAM,CAAA,CAAA,CAAEE,KAAM,CAAAA,KAAA,CAAMF,KAAM,CAAAK,WAAA,CAAYL,KAAM,CAAA,CAAA,GAChF6B,KAAM,CAAA2H,iBAAA,EAAmB3I,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAA,CAAA;MAEnD,IAAIyI,SAAY,GAAAT,KAAA,CAAA;AAChB,MAAA,IAAI,KAAM,CAAAU,IAAA,CAAKN,QAAQ,CAAA,IAAKK,SAAc,KAAA,EAAA,EAAiBA,SAAA,IAAA,EAAA,CAAA;AAC3D,MAAA,IAAI,KAAM,CAAAC,IAAA,CAAKN,QAAQ,CAAA,IAAKK,SAAY,GAAA,EAAA,EAAiBA,SAAA,IAAA,EAAA,CAAA;MAEzD,IAAME,QAAW,GAAAJ,WAAA,CAAYK,IAAK,CAAAH,SAAS,EAAEI,MAAO,CAAAZ,OAAO,CAAE,CAAAvF,MAAA,CAAOwF,OAAO,CAAA,CAAEY,WAAY,CAAAX,YAAY,EAAEZ,MAAO,EAAA,CAAA;AAC9Gc,MAAAA,cAAA,CAAelJ,YAAYL,KAAS,CAAA,GAAA6J,QAAA,CAAA;AAEpC,MAAA,IAAMI,QAAW,GAAAjE,kBAAA,CAAI7F,IAAA,CAAKH,KAAK,CAAA,CAAA;AAC/BiK,MAAAA,QAAA,CAAS5J,YAAYL,KAAS,CAAA,GAAA+I,GAAA,CAAA;MAC9B5I,IAAA,CAAKH,KAAQ,GAAAiK,QAAA,CAAA;MAEb7I,UAAA,CAAWpB,KAAQ,GAAA,IAAA,CAAA;AACRJ,MAAAA,UAAA,CAAAI,KAAA,GAAQ0B,WAAW6H,cAAgB,EAAA;AAC5CrI,QAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAAA;AAC1B,OAAC,CAAA,CAAA;AACUd,MAAAA,UAAA,CAAAJ,KAAA,GAAQ0B,WAAW6H,cAAgB,EAAA;AAC5CrI,QAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAAA;AAC1B,OAAC,CAAA,CAAA;AACH,KAAA;AACM,IAAA,IAAA0E,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBS,CAAmB,EAAA;AAC7C,MAAA,IAAMN,SAAY,GAAAC,kBAAA,CAAKpG,UAAA,CAAWI,KAAkB,CAAA,CAAA;AAEpD,MAAA,IAAMwG,aAAgB,GAAAT,SAAA,CAAUU,SAAU,CAAA,UAACjB,CAAM,EAAA;AAAA,QAAA,OAAA,CAACA,CAAK,IAAA,CAACkB,WAAY,CAAAlB,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAC,CAAA;OAAA,CAAA,CAAA;MAG9F,IAAIsF,aAAkB,KAAA,CAAA,CAAA,IAAMT,SAAU,CAAA/D,MAAA,KAAW,CAAG,EAAA;AAElD,QAAA,IACE,CAACzB,oBAAqB,CAAAP,KAAA,IACtByF,aAAaM,SAAU,CAAA,CAAA,CAAA,EAAIlF,UAAUb,KAAM,CAAAkB,MAAM,CAAE,CAAAyF,OAAA,CAAQlB,aAAaM,SAAU,CAAA,CAAA,CAAA,EAAIlF,UAAUb,KAAM,CAAAkB,MAAM,CAAC,CAC7G,EAAA;UACU6E,SAAA,CAAA1F,WAAA,CAAYL,KAAQ,GAAA,CAAA,GAAI,CAAK,CAAA,GAAA,EAAA,CAAA;UACvCI,UAAA,CAAWJ,KAAQ,GAAA+F,SAAA,CAAA;UACnBnG,UAAA,CAAWI,KAAQ,GAAA+F,SAAA,CAAA;AACrB,SAAO,MAAA;AAAA,UAAA,IAAAmE,iBAAA,CAAA;AACC,UAAA,IAAAC,cAAA,GAAiBzI,WAAWqE,SAAW,EAAA;AAC3C7E,YAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;AACxBS,YAAAA,YAAA,EAAcd,UAAUb,KAAM,CAAAmB,SAAA;AAC9ByF,YAAAA,QAAU,EAAA,IAAA;YACV7E,aAAa3C,MAAM,CAAA2C,WAAAA;AACrB,WAAC,CAAA,CAAA;UACK,IAAAqI,MAAA,GACJnD,MAAMzF,OAAQ,CAAA2I,cAAc,KAC5BA,cAAe,CAAAnI,MAAA,KAAW,KAC1BmI,cAAe,CAAA,CAAA,CAAA,IAAM,QACrBA,cAAe,CAAA,CAAA,CAAA,IAAM,QACrBnK,KAAM,CAAAA,KAAA,CAAM,MAAM,IAClB,IAAAA,KAAA,CAAMA,KAAM,CAAA,CAAA,CAAA,IAAM,IAClB,IAAA6B,KAAA,CAAMsI,eAAe,CAAS,CAAA,CAAA,CAAEE,SAAc,KAAAxI,KAAA,CAAM7B,MAAMA,KAAM,CAAA,CAAA,CAAS,EAAEqK,OAAQ,EAAA,IACnFxI,MAAMsI,cAAe,CAAA,CAAA,CAAS,EAAEE,OAAQ,EAAA,KAAMxI,MAAM7B,KAAM,CAAAA,KAAA,CAAM,CAAS,CAAA,CAAA,CAAEqK,OAAQ,EAAA,CAAA;AAErFjL,UAAAA,mBAAAA,0CAAAA,OAAOkL,SAAY,MAAAJ,IAAAA,IAAAA,iBAAA,eAAnB9K,iBAAAA,CAAAA,IAAAA,CAAAA,QAAmB;AACjB0G,YAAAA,IAAA,EAAMC,UAAUR,GAAI,CAAA,UAACC;qBAAM3D,KAAM,CAAA2D,CAAC,CAAE,CAAAiD,MAAA,EAAQ,CAAA;aAAA,CAAA;YAC5CpC,GAAGA,CAAK,IAAA,IAAA;AACRE,YAAAA,OAAA,EAASlG,WAAY,CAAAL,KAAA,GAAQ,KAAQ,GAAA,OAAA;AACvC,WAAC,CAAA,CAAA;UACD,IAAI,CAACoK,MAAQ,EAAA;AACX5J,YAAAA,QAAA,aAAAA,QAAA,KAAA,KAAA,CAAA,IAAAA,QAAA,CAAW2J,cAAgB,EAAA;cACzBtD,YAAYd,SAAU,CAAAR,GAAA,CAAI,UAACC,CAAA,EAAGsB,CAC5B,EAAA;AAAA,gBAAA,IAAAyD,oBAAA,CAAA;AAAA,gBAAA,OAAA9E,YAAA,CAAaD,CAAG,EAAA3E,SAAA,CAAUb,KAAM,CAAAkB,MAAA,EAAQ,KAAW,CAAA,EAAA,KAAA,CAAA,EAAA,CAAAqJ,oBAAA,GAAWnL,MAAM,CAAA2C,WAAA,MAAA,IAAA,IAAAwI,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANnL,oBAAAA,CAAoB0H,CAAE,CAAA,CAAA,CAAA;AAAA,eACtF,CAAA;AACAE,cAAAA,OAAS,EAAA,SAAA;AACX,aAAC,CAAA,CAAA;AACH,WAAA;AACF,SAAA;AACF,OAAA;KACF,CAAA;IAES,SAAAwD,cAAAA,CAAAC,KAAA,EAAyC;AAAA,MAAA,IAAxBpE,CAAA,GAAAoE,KAAA,CAAApE,CAAA,CAAA;MACxBT,kBAAA,CAAmBS,CAAC,CAAA,CAAA;AAEpB,MAAA,IAAMN,SAAY,GAAAC,kBAAA,CAAKpG,UAAA,CAAWI,KAAkB,CAAA,CAAA;AAEpD,MAAA,IAAMwG,aAAgB,GAAAT,SAAA,CAAUU,SAAU,CAAA,UAACjB,CAAM,EAAA;AAAA,QAAA,OAAA,CAACA,CAAK,IAAA,CAACkB,WAAY,CAAAlB,CAAA,EAAG3E,SAAU,CAAAb,KAAA,CAAMkB,MAAM,CAAC,CAAA;OAAA,CAAA,CAAA;MAE9F,IAAI+F,KAAM,CAAAzF,OAAA,CAAQpC,MAAM,CAAAqC,QAAQ,CAAG,EAAA;QACjC5B,YAAA,CAAaG,KAAQ,GAAA,KAAA,CAAA;AACvB,OAAA,MAAA,IAAW,CAACO,oBAAA,CAAqBP,KAAO,EAAA;QAEtC,IAAIkH,SAAY,GAAAV,aAAA,CAAA;AAChB,QAAA,IAAIU,SAAc,KAAA,CAAA,CAAA,EAAgBA,SAAA,GAAA7G,WAAA,CAAYL,QAAQ,CAAI,GAAA,CAAA,CAAA;QAC1DK,WAAA,CAAYL,KAAQ,GAAAkH,SAAA,CAAA;QACpB3G,oBAAA,CAAqBP,QAAQ+F,SAAU,CAAAoB,IAAA,CAAK,UAAC3B,CAAM,EAAA;UAAA,OAAA,CAAC,CAACA,CAAC,CAAA;SAAA,CAAA,CAAA;AACxD,OAAA,MAAA,IAAWO,SAAU,CAAA/D,MAAA,KAAW,CAAG,EAAA;QACjCnC,YAAA,CAAaG,KAAQ,GAAA,KAAA,CAAA;AACvB,OAAA;AACF,KAAA;AAGS,IAAA,SAAA0K,aAAAA,CAAcC,QAAaC,OAAc,EAAA;MAChD,IAAIC,WAAc,GAAAF,MAAA,CAAA;AACd,MAAA,IAAA9G,UAAA,CAAW8G,MAAM,CAAG,EAAA;QACtBE,WAAA,GAAcF,MAAO,EAAA,CAAA;AACvB,OAAA;AACI,MAAA,IAAA,CAACnJ,OAAQ,CAAAqJ,WAAW,CAAG,EAAA;AACjBC,QAAAA,OAAA,CAAAC,KAAA,CAAA,UAAA,CAAArC,MAAA,CAAiBiC,MAAkB,uDAAA,CAAA,CAAA;AAC7C,OAAO,MAAA;AAAA,QAAA,IAAAK,qBAAA,CAAA;QACLxK,QAAA,KAAA,IAAA,IAAAA,QAAA,KAAAA,KAAAA,CAAAA,IAAAA,QAAA,CACEkB,WAAWmJ,WAAa,EAAA;AACtB3J,UAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;AACxBS,UAAAA,YAAA,EAAcd,UAAUb,KAAM,CAAAmB,SAAA;AAC9ByF,UAAAA,QAAU,EAAA,IAAA;UACV7E,aAAa3C,MAAM,CAAA2C,WAAAA;AACrB,SAAC,CAAA,EACD;UACE8E,YAAYgE,WAAY,CAAAtF,GAAA,CAAI,UAAC0F,CAAA,EAAGnE,CAC9B,EAAA;AAAA,YAAA,IAAAoE,oBAAA,CAAA;AAAA,YAAA,OAAAzF,YAAA,CAAawF,CAAG,EAAApK,SAAA,CAAUb,KAAM,CAAAkB,MAAA,EAAQ,KAAW,CAAA,EAAA,KAAA,CAAA,EAAA,CAAAgK,oBAAA,GAAW9L,MAAM,CAAA2C,WAAA,MAAA,IAAA,IAAAmJ,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN9L,oBAAAA,CAAoB0H,CAAE,CAAA,CAAA,CAAA;AAAA,WACtF,CAAA;AACAE,UAAAA,OAAS,EAAA,QAAA;AACX,SACF,CAAA,CAAA;AAEWpH,QAAAA,UAAA,CAAAI,KAAA,GAAQ0B,WAAWmJ,WAAa,EAAA;AACzC3J,UAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAAA;AAC1B,SAAC,CAAA,CAAA;QACDrB,YAAA,CAAaG,KAAQ,GAAA,KAAA,CAAA;AACrBZ,QAAAA,CAAAA,qBAAAA,GAAAA,MAAAA,CAAMsL,qDAANtL,KAAAA,CAAAA,IAAAA,qBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAsBwL,OAAO,CAAA,CAAA;AAC/B,OAAA;AACF,KAAA;AAEA,IAAA,SAASpC,YAAaA,CAAA2C,OAAA,EAAAC,KAAA,EAAmE;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAAA,MAAA,IAAhD9E,OAAA,GAAA6E,KAAA,CAAA7E,OAAA,CAAA;MACnC,IAAAe,YAAA,GAAef,OAAY,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,CAAA;MAC7C,IAAInH,MAAM,CAAA6B,gBAAA,EAAkBqG,YAAA,GAAejH,WAAY,CAAAL,KAAA,CAAA;AAEvD,MAAA,IAAIgI,QAAW,GAAAhC,kBAAA,CAAI/F,IAAA,CAAKD,KAAK,CAAA,CAAA;AAC7B,MAAA,IAAIsF,SAAY,GAAAU,kBAAA,CAAI9F,KAAA,CAAMF,KAAK,CAAA,CAAA;AAE/BgI,MAAAA,QAAA,CAASV,YAAgB,CAAA,GAAA6D,OAAA,CAAA;AACnB,MAAA,IAAAlD,cAAA,GAAiB,CAAC,MAAQ,EAAA,SAAA,EAAW,OAAO,CAAE,CAAAC,QAAA,CAAS9I,OAAM4B,IAAI,CAAA,CAAA;MAGvE,IAAMmH,aAAgB,GAAAC,cAAA,CAAed,YAAc,EAAAU,QAAA,EAAU1C,WAAW2C,cAAc,CAAA,CAAA;MACtFD,QAAA,GAAWG,aAAc,CAAAH,QAAA,CAAA;MACzB1C,SAAA,GAAY6C,aAAc,CAAA7C,SAAA,CAAA;MAE1BrF,IAAA,CAAKD,KAAQ,GAAAgI,QAAA,CAAA;AACb,MAAA,IAAI,CAACC,cAAA,EAAgB/H,KAAA,CAAMF,KAAQ,GAAAsF,SAAA,CAAA;AAEnClG,MAAAA,CAAAA,qBAAAA,GAAAA,OAAMoJ,YAAe,MAAA,IAAA,IAAA6C,qBAAA,KAAA,KAAA,CAAA,IAArBjM,qBAAAA,CAAAA,IAAAA,CAAAA,QAAqB;AACnBmH,QAAAA,OAAA,EAAAA,OAAA;AACAtG,QAAAA,MAAM+H,QAAS,CAAAV,YAAA,CAAA;QACfxB,IAAA,EAAM9F,KAAM,CAAAA,KAAA,CAAMuF,GAAI,CAAA,UAACC;iBAAM3D,KAAM,CAAA2D,CAAC,CAAE,CAAAiD,MAAA,EAAQ,CAAA;SAAA,CAAA;AAC9CzB,QAAAA,OAAS,EAAA,aAAA;AACX,OAAC,CAAA,CAAA;AACH,KAAA;AAEA,IAAA,SAAS6B,aAAcA,CAAAsC,OAAA,EAAAG,KAAA,EAAmE;AAAA,MAAA,IAAAC,sBAAA,CAAA;AAAA,MAAA,IAAhDhF,OAAA,GAAA+E,KAAA,CAAA/E,OAAA,CAAA;MACpC,IAAAe,YAAA,GAAef,OAAY,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,CAAA;MAC7C,IAAInH,MAAM,CAAA6B,gBAAA,EAAkBqG,YAAA,GAAejH,WAAY,CAAAL,KAAA,CAAA;AAEvD,MAAA,IAAMsF,SAAY,GAAAU,kBAAA,CAAI9F,KAAA,CAAMF,KAAK,CAAA,CAAA;AACjCsF,MAAAA,SAAA,CAAUgC,YAAgB,CAAA,GAAA6D,OAAA,CAAA;AAE1B,MAAA,IAAIlL,IAAK,CAAAD,KAAA,CAAM,CAAO,CAAA,KAAAC,IAAA,CAAKD,MAAM,CAAI,CAAA,EAAA;QACnC,IAAIsH,iBAAiB,CAAG,EAAA;UAElB,IAAAhC,SAAA,CAAU,CAAM,CAAA,IAAAA,SAAA,CAAU,CAAI,CAAA,EAAA;YACtBA,SAAA,CAAA,CAAA,CAAA,GAAKA,UAAU,CAAK,CAAA,GAAA,CAAA,CAAA;AAC1B,YAAA,IAAAA,SAAA,CAAU,OAAO,EAAI,EAAA;cAAA,IAAAkG,WAAA,EAAAC,YAAA,CAAA;AAEvBnG,cAAAA,SAAA,CAAU,CAAK,CAAA,GAAA,CAAA,CAAA;AACVrF,cAAAA,IAAA,CAAAD,KAAA,GAAQ,CAAA,CAAAwL,WAAA,GAACvL,IAAK,CAAAD,KAAA,MAAAwL,IAAAA,IAAAA,WAAA,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAa,IAAI,CAAA,CAAAC,YAAA,GAAAxL,IAAK,CAAAD,KAAA,MAAAyL,IAAAA,IAAAA,YAAA,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAa,MAAK,CAAC,CAAA,CAAA;AACpD,aAAA;AACF,WAAA;AACF,SAAA;QACA,IAAInE,iBAAiB,CAAG,EAAA;AAEtBhC,UAAAA,SAAA,CAAU,KAAKI,IAAK,CAAAxB,GAAA,CAAIoB,SAAU,CAAA,CAAA,CAAA,EAAIA,UAAU,CAAE,CAAA,CAAA,CAAA;UAC9C,IAAAA,SAAA,CAAU,CAAM,CAAA,IAAAA,SAAA,CAAU,CAAI,CAAA,EAAA;AAChCA,YAAAA,SAAA,CAAU,CAAM,CAAA,IAAA,CAAA,CAAA;AACZ,YAAA,IAAAA,SAAA,CAAU,OAAO,CAAI,CAAA,EAAA;cAAA,IAAAoG,YAAA,EAAAC,YAAA,CAAA;AAEvBrG,cAAAA,SAAA,CAAU,CAAK,CAAA,GAAA,EAAA,CAAA;AACVrF,cAAAA,IAAA,CAAAD,KAAA,GAAQ,CAAC,EAAA0L,YAAA,GAAAzL,IAAK,CAAAD,KAAA,MAAA,IAAA,IAAA0L,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,YAAA,CAAa,MAAK,CAAG,EAAA,CAAAC,YAAA,GAAA1L,IAAA,CAAKD,oCAAL2L,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAa,CAAE,CAAA,CAAA,CAAA;AACpD,aAAA;AACF,WAAA;AACF,SAAA;AACF,OAAA;MAEAzL,KAAA,CAAMF,KAAQ,GAAAsF,SAAA,CAAA;AAEdlG,MAAAA,CAAAA,sBAAAA,GAAAA,OAAMyJ,aAAgB,MAAA,IAAA,IAAA0C,sBAAA,KAAA,KAAA,CAAA,IAAtBnM,sBAAAA,CAAAA,IAAAA,CAAAA,QAAsB;AACpBmH,QAAAA,OAAA,EAAAA,OAAA;AACArG,QAAAA,OAAOoF,SAAU,CAAAgC,YAAA,CAAA;QACjBxB,IAAA,EAAM9F,KAAM,CAAAA,KAAA,CAAMuF,GAAI,CAAA,UAACC;iBAAM3D,KAAM,CAAA2D,CAAC,CAAE,CAAAiD,MAAA,EAAQ,CAAA;SAAA,CAAA;AAC9CzB,QAAAA,OAAS,EAAA,cAAA;AACX,OAAC,CAAA,CAAA;AACH,KAAA;IAEM,IAAA4E,UAAA,GAAa9K,SAAS,YAAA;MAAA,OAAO;QACjC+K,UAAa,EAAAvL,WAAA,CAAYN,KAAQ,GAAAJ,UAAA,CAAWI,QAAQ,EAAC;QACrDA,KAAQ,EAAAoB,UAAA,CAAWpB,KAAQ,GAAAI,UAAA,CAAWJ,QAAQA,KAAM,CAAAA,KAAA;QACpDO,sBAAsBA,oBAAqB,CAAAP,KAAA;QAC3CK,aAAaA,WAAY,CAAAL,KAAA;QACzBC,MAAMA,IAAK,CAAAD,KAAA;QACXE,OAAOA,KAAM,CAAAF,KAAA;AACbkB,QAAAA,MAAA,EAAQL,UAAUb,KAAM,CAAAkB,MAAA;QACxBF,MAAM5B,MAAM,CAAA4B,IAAA;QACZ8K,SAAS1M,MAAM,CAAA0M,OAAA;QACf3L,MAAMA,IAAK,CAAAH,KAAA;QACX+L,aAAa3M,MAAM,CAAA2M,WAAA;QACnBtK,UAAUhB,UAAW,CAAAT,KAAA;QACrBgM,aAAa5M,MAAM,CAAA4M,WAAA;QACnBC,gBAAgB7M,MAAM,CAAA6M,cAAA;QACtBC,iBAAiB9M,MAAM,CAAA8M,eAAA;QACvBjL,kBAAkB7B,MAAM,CAAA6B,gBAAA;QACxBkL,kBAAkB/M,MAAM,CAAA+M,gBAAA;QACxBtM,cAAcA,YAAa,CAAAG,KAAA;QAC3BiC,OAAO7C,MAAM,CAAA6C,KAAA;QACbmK,mBAAmBhN,MAAM,CAAAgN,iBAAA;QACzBC,wBAAwBjN,MAAM,CAAAiN,sBAAA;QAC9B1G,aAAavG,MAAM,CAAAuG,WAAA;AACnBO,QAAAA,WAAA,EAAAA,WAAA;AACAL,QAAAA,gBAAA,EAAAA,gBAAA;AACAI,QAAAA,gBAAA,EAAAA,gBAAA;AACAmB,QAAAA,aAAA,EAAAA,aAAA;AACAoD,QAAAA,cAAA,EAAAA,cAAA;AACAE,QAAAA,aAAA,EAAAA,aAAA;AACAlC,QAAAA,YAAA,EAAAA,YAAA;AACAK,QAAAA,aAAA,EAAAA,aAAA;AACAC,QAAAA,kBAAA,EAAAA,kBAAA;QACAwD,MAAMlN,MAAM,CAAAkN,IAAAA;OACZ,CAAA;AAAA,KAAA,CAAA,CAAA;IAEK,OAAA,YAAA;AAAA,MAAA,OAAAC,W